HTTP URL
Atlas Data Federation 支持可公开访问的 URL作为联合数据库实例存储。 您必须在联合数据库实例中定义到HTTP数据存储的映射,才能运行数据查询。
重要
存储配置中的信息在 MongoDB 内部可见,并存储为操作数据,以监控和提高 Atlas Data Federation 的性能。 因此,我们建议您不要在配置中使用PII 。
HTTP 数据存储的配置示例
考虑包含从数据中心收集的数据的 https://www.datacenter-hardware.com/data.json
、 https://www.datacenter-software.com/data.json
和https://www.datacenter-metrics.com/data.json
的URL 。 配置如下:
指定包含作为联合数据库实例存储的文件中的数据的可公开访问的 URL。
为每个URL创建一个分区。
{ "stores" : [ { "name" : "httpStore", "provider" : "http", "allowInsecure" : false, "urls" : [ "https://www.datacenter-hardware.com/data.json", "https://www.datacenter-software.com/data.json" ], "defaultFormat" : ".json" } ], "databases" : [ { "name" : "dataCenter", "collections" : [ { "name" : "inventory", "dataSources" : [ { "storeName" : "httpStore", "allowInsecure" : false, "urls" : [ "https://www.datacenter-metrics.com/data" ], "defaultFormat" : ".json" } ] } ] } ] }
配置格式
联合数据库实例配置的格式如下:
1 { 2 "stores" : [ 3 { 4 "name" : "<string>", 5 "provider": "<string>", 6 "defaultFormat" : "<string>", 7 "allowInsecure": <boolean>, 8 "urls": ["<string>"] 9 } 10 ], 11 "databases" : [ 12 { 13 "name" : "<string>", 14 "collections" : [ 15 { 16 "name" : "<string>", 17 "dataSources" : [ 18 { 19 "storeName" : "<string>", 20 "allowInsecure" : <boolean>, 21 "urls" : ["<string>"], 22 "defaultFormat" : "<string>", 23 "provenanceFieldName": "<string>" 24 } 25 ] 26 } 27 ], 28 "views" : [ 29 { 30 "name" : "<string>", 31 "source" : "<string>", 32 "pipeline" : "<string>" 33 } 34 ] 35 } 36 ] 37 }
stores
stores
对象定义与联合数据库实例关联的每个数据存储。 联合数据库实例存储捕获存储在可公开访问的URL中的文件。 Data Federation 只能访问stores
对象中定义的数据存储。databases
databases
对象定义stores
中定义的每个联合数据库实例存储与数据库中的 MongoDB 集合之间的映射。
stores
1 "stores" : [ 2 { 3 "name" : "<string>", 4 "provider" : "<string>", 5 "allowInsecure": <boolean>, 6 "urls" : ["<string>"], 7 "defaultFormat" : "<string>" 8 } 9 ]
stores
对象数组,其中每个对象代表一个与联合数据库实例关联的数据存储。联合数据库实例存储可捕获 S3 存储桶中的文件、Atlas 集群中的文档或存储在可公开访问的 URL 中的文件。Atlas Data Federation 只能访问
stores
对象中定义的数据存储。
stores.[n].name
联合数据库实例存储的名称。
databases.[n].collections.[n].dataSources.[n].storeName
字段会引用此值以作为映射配置的一部分。
stores.[n].provider
定义数据的存储位置。值可以是以下值之一:
s3
用于Amazon Web Services S3存储桶。atlas
用于 Atlas 集群中的集合。http
用于托管在可公开访问的URL上的文件中的数据。
stores.[n].allowInsecure
可选。 验证指定URL中的模式。 值可以是以下之一:
true
允许不安全的HTTP方案false
仅允许安全的HTTPS方案(默认)
如果为 true,则 Atlas Data Federation:
不验证服务器的证书链和主机名。
接受服务器提供的具有任何主机名的任何证书。
警告:如果将其设立为
true
,您的数据可能会容易受到中间人攻击,从而损害数据的机密性和完整性。 仅在测试和开始使用Atlas Data Federation时才将其设置为true
。如果省略,则默认为
false
。 如果设置为false
,则当指定的 URL 包含不安全的HTTP模式时,Data Federation 会返回类似于以下内容的错误:The insecure HTTP scheme is not supported by default - please add a "allowInsecure: true" flag to query from such URLs.
stores.[n].defaultFormat
可选。Data Federation 在搜索
databases.[n].collections.[n].dataSources.[n].storeName
时遇到不带扩展名的文件时采用的默认格式。以下值对
defaultFormat
字段有效:.json
,.json.gz
,.bson
,.bson.gz
,.avro,
.avro.gz
,.orc
,.tsv
,.tsv.gz
,.csv
,.csv.gz
,.parquet
注意
如果您的文件格式为
CSV
或TSV
,则必须在数据中包含标题行。有关详细信息,请参阅 CSV 和 TSV。如果省略,Data Federation 将尝试处理文件的几个字节来检测文件类型。
指定的格式仅适用于 对象中指定的 URL
stores
。
databases
1 "databases" : [ 2 { 3 "name" : "<string>", 4 "collections" : [ 5 { 6 "name" : "<string>", 7 "dataSources" : [ 8 { 9 "storeName" : "<string>", 10 "allowInsecure" : <boolean>, 11 "urls" : ["<string>"], 12 "defaultFormat" : "<string>", 13 "provenanceFieldName": "<string>" 14 } 15 ] 16 } 17 ] 18 } 19 ]
databases
对象数组,其中每个对象均代表一个数据库、其集合以及(可选)这些集合的所有视图。每个数据库均可有多个
collections
和views
对象。
databases.[n].collections
对象数组,其中每个对象代表一个集合和映射到
stores
联合数据库实例存储的数据源。 对于动态生成的数据库,您只能在存储配置中定义一个通配符 (*
)集合对象。
databases.[n].collections.[n].name
Atlas Data Federation 将每个
databases.[n].collections.[n].dataSources.[n].storeName
中包含的数据映射到的集合的名称。数组中的每个对象代表集合与stores
数组中对象之间的映射。注意
无法生成通配符
*
collection。
databases.[n].collections.[n].dataSources
对象数组,其中每个对象代表要映射到集合的一个
stores
联合数据库实例存储。
databases.[n].collections.[n].dataSources.[n].allowInsecure
可选。 验证指定URL中的模式。 值可以是以下之一:
true
允许不安全的HTTP方案false
仅允许安全的HTTPS方案(默认)
如果为 true,则 Atlas Data Federation:
不验证服务器的证书链和主机名。
接受服务器提供的具有任何主机名的任何证书。
警告:如果将其设立为
true
,您的数据可能会容易受到中间人攻击,从而损害数据的机密性和完整性。 仅在测试和开始使用Atlas Data Federation时才将其设置为true
。如果省略,则默认为
false
。 如果设置为false
,则当指定的 URL 包含不安全的HTTP模式时,Data Federation 会返回类似于以下内容的错误:The insecure HTTP scheme is not supported by default - please add a "allowInsecure: true" flag to query from such URLs.
databases.[n].collections.[n].dataSources.[n].urls
可选。 以逗号分隔的存储数据的可公开访问的URL列表。 联合数据库实例为每个URL创建一个分区。 您可以指定不在
urls
中的URL ;但是,该集合将包含urls
和urls
中URL的数据的并集。 如果省略,Data Federation 将使用指定的 中的urls
storeName
}。
databases.[n].collections.[n].dataSources.[n].defaultFormat
可选。Data Federation 在搜索
databases.[n].collections.[n].dataSources.[n].storeName
时遇到不带扩展名的文件时采用的默认格式。以下值对
defaultFormat
字段有效:.json
,.json.gz
,.bson
,.bson.gz
,.avro,
.avro.gz
,.orc
,.tsv
,.tsv.gz
,.csv
,.csv.gz
,.parquet
注意
如果您的文件格式为
CSV
或TSV
,则必须在数据中包含标题行。有关详细信息,请参阅 CSV 和 TSV。如果省略,Data Federation 将尝试处理文件的几个字节来检测文件类型。
指定的格式仅适用于 对象中指定的 URL
databases.[n].collections.[n].dataSources
。
databases.[n].collections.[n].dataSources.[n].provenanceFieldName
包含结果中文档来源的字段的名称。如果在存储配置中指定了此设置,Atlas Data Federation 则会为结果中的每个文档返回以下字段:
字段名称说明provider
联合数据库实例存储配置中的提供者 (stores.[n].provider
)uri
您无法使用 Atlas 用户界面中的可视化编辑器来配置此设置。
databases.[n].views.[n].source
视图源集合的名称。 如果要创建具有
$sql
阶段的视图,则必须省略此字段,因为SQL声明将指定源集合。
databases.[n].views.[n].pipeline
要应用 集合 的聚合管道阶段
source
。您还可以使用$sql
阶段创建视图。