Overview
Atlas Data Federation 支持 AWS S3 存储桶作为联合数据库实例存储。您必须在联合数据库实例中定义到 AWS S3 存储桶的映射,才能运行数据查询。
配置文件格式
要为 AWS S3 存储桶定义联合数据库实例存储,您可以在 JSON 中指定配置参数。该配置包含 AWS 数据存储,并将其映射到您可以查询的虚拟集合。
AWS S3 存储桶中数据的 JSON 配置使用以下字段:
1 { 2 "stores" : [ 3 { 4 "name" : "<string>", 5 "provider": "<string>", 6 "region" : "<string>", 7 "bucket" : "<string>", 8 "additionalStorageClasses" : ["<string>"], 9 "prefix" : "<string>", 10 "includeTags": <boolean>, 11 "delimiter": "<string>", 12 "public": <boolean> 13 } 14 ], 15 "databases" : [ 16 { 17 "name" : "<string>", 18 "collections" : [ 19 { 20 "name" : "<string>", 21 "dataSources" : [ 22 { 23 "storeName" : "<string>", 24 "path" : "<string>", 25 "defaultFormat" : "<string>", 26 "provenanceFieldName": "<string>", 27 "omitAttributes": true | false 28 } 29 ] 30 } 31 ], 32 "maxWildcardCollections" : <integer>, 33 "views" : [ 34 { 35 "name" : "<string>", 36 "source" : "<string>", 37 "pipeline" : "<string>" 38 } 39 ] 40 } 41 ] 42 }
Amazon Web Services S3 数据存储的JSON配置包含两个顶级对象:stores
和databases
。
stores
stores
对象定义与该联合数据库实例关联的每个数据存储。此存储可在 AWS S3 存储桶中捕获文件。Data Federation 只能访问 stores
对象中定义的数据存储。
stores
对象包含以下字段:
1 "stores" : [ 2 { 3 "name" : "<string>", 4 "provider" : "<string>", 5 "region" : "<string>", 6 "bucket" : "<string>", 7 "additionalStorageClasses" : ["<string>"], 8 "prefix" : "<string>", 9 "delimiter" : "<string>", 10 "includeTags": <boolean>, 11 "public": <boolean> 12 } 13 ]
下表描述了 stores
对象中的字段:
字段 | 类型 | 必要性 | 说明 |
---|---|---|---|
阵列 | 必需 | 对象数组,其中每个对象代表一个与联合数据库实例关联的数据存储。存储可在 AWS S3 存储桶中捕获文件。Atlas Data Federation 只能访问 | |
字符串 | 必需 | 联合数据库实例存储的名称。 | |
字符串 | 必需 | 定义数据的存储位置。AWS S3 存储桶的值必须为 | |
字符串 | 必需 | 托管 AWS S3 存储桶的 AWS 区域的名称。有关有效区域名称的列表,请参阅 Amazon Web Services (AWS)。 | |
字符串 | 必需 | AWS S3 存储桶的名称。必须与 Atlas Data Federation 可使用配置的 AWS IAM 凭证来访问的 AWS S3 存储桶的名称完全匹配。 | |
阵列 | 可选 | ||
字符串 | 可选 | 为 AWS S3 存储桶中的文件搜索路径添加前缀。Atlas Data Federation 会将 如果省略,Atlas Data Federation 会从 AWS S3 存储桶的根目录搜索所有文件。 | |
字符串 | 可选 | 设置用于分隔联合数据库实例存储中的路径段的分隔符。Data Federation使用分隔符有效地遍历具有分层目录结构的Amazon Web Services S3 存储桶。您可以将Amazon Web Services S3 对象键支持的任何字符指定为分隔符。示例,您可以指定下划线 ( 如果省略,则默认值为 | |
布尔 | 可选 | 决定是否在给定路径中的文件上使用 AWS S3 标签作为附加分区属性。有效值为 如果省略,则默认值为 如果设为
警告:如果设置为 | |
布尔 | 可选 | 指定存储桶是否公开。 如果设置为 如果省略,则默认值为 |
databases
databases
对象定义 stores
中定义的每个联合数据库实例存储与数据库中的 MongoDB 集合之间的映射。
database
对象包含以下字段:
1 "databases" : [ 2 { 3 "name" : "<string>", 4 "collections" : [ 5 { 6 "name" : "<string>", 7 "dataSources" : [ 8 { 9 "storeName" : "<string>", 10 "defaultFormat" : "<string>", 11 "path" : "<string>", 12 "provenanceFieldName": "<string>", 13 "omitAttributes": <boolean> 14 } 15 ] 16 } 17 ], 18 "maxWildcardCollections" : <integer>, 19 "views" : [ 20 { 21 "name" : "<string>", 22 "source" : "<string>", 23 "pipeline" : "<string>" 24 } 25 ] 26 } 27 ]
下表描述了 database
对象中的字段:
字段 | 类型 | 必要性 | 说明 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
阵列 | 必需 | 对象数组,其中每个对象均代表一个数据库、其集合以及(可选)这些集合的所有视图。每个数据库均可有多个 | |||||||||||||
字符串 | 必需 | Atlas Data Federation 将数据存储中包含的数据映射到数据库的数据库名称。 | |||||||||||||
阵列 | 必需 | 对象数组,其中每个对象代表一个集合和映射到 | |||||||||||||
字符串 | 必需 | Atlas Data Federation将每个 通过为集合名称指定 | |||||||||||||
阵列 | 必需 | 对象数组,其中每个对象代表要与集合的 | |||||||||||||
字符串 | 必需 | ||||||||||||||
字符串 | 必需 | 控制 Atlas Data Federation 在将文件映射到 例如,某一 S3 存储桶的
如果 将
请参阅为 S3 数据定义路径以了解更多信息。 指定
在指定相同类型的属性时,请执行以下任一操作:
Data Federation在搜索 以下值对
重要:如果您的文件格式为 如果省略,Data Federation 将尝试处理文件的几个字节来检测文件类型。 提示 | |||||||||||||
字符串 | 可选 | 包含结果中文档来源的字段的名称。如果在存储配置中指定了此设置,Atlas Data Federation 则会为结果中的每个文档返回以下字段:
您无法使用 Atlas 用户界面中的可视化编辑器来配置此设置。 | |||||||||||||
布尔 | 可选 | 指定是否省略 Atlas Data Federation 添加到集合中的文档的属性(键和值对)的标志。您可以指定以下值之一:
如果省略,则默认为 例如: 考虑一个名为 | |||||||||||||
整型 | 可选 | 可选。数据库中通配符 | |||||||||||||
阵列 | 可选 | ||||||||||||||
字符串 | 必需 | 视图名称。 | |||||||||||||
字符串 | 必需 | 视图源集合的名称。如果要创建带有$sql阶段的视图,则必须省略此字段,因为SQL声明将指定源集合。 | |||||||||||||
阵列 | 可选 |
S3 数据存储配置示例
例子
假设某个 S3 存储桶 datacenter-alpha
包含从数据中心收集的数据:
|--metrics |--hardware
/metrics/hardware
路径存储 JSON 文件,其中包含源自数据中心硬件的指标,每个文件名是该文件所涵盖的 24 小时周期的 UNIX 时间戳(毫秒):
/hardware/1564671291998.json
配置如下:
对
us-east-1
AWS 地区的datacenter-alpha
S3 存储桶定义一个联合数据库实例存储。该联合数据库实例存储被明确限制为仅包含metrics
文件夹路径中的数据文件。将
hardware
文件夹中的文件映射到 MongoDB 数据库datacenter-alpha-metrics
和集合hardware
。配置映射包括用于收集文件名中隐含的时间戳的解析逻辑。
{ "stores" : [ { "name" : "datacenter-alpha", "provider" : "s3", "region" : "us-east-1", "bucket" : "datacenter-alpha", "additionalStorageClasses" : [ "STANDARD_IA" ], "prefix" : "/metrics", "delimiter" : "/" } ], "databases" : [ { "name" : "datacenter-alpha-metrics", "collections" : [ { "name" : "hardware", "dataSources" : [ { "storeName" : "datacenter-alpha", "path" : "/hardware/{date date}" } ] } ] } ] }
Atlas Data Federation 解析 S3 存储桶 datacenter-alpha
,并处理 /metrics/hardware/
下的所有文件。collections
使用路径解析语法将文件名映射到每个文档中的 date
字段,即 ISO-8601 日期。如果文档中不存在匹配的 date
字段,则会添加该字段。
连接到联合数据库实例的用户可以使用 MongoDB 查询语言和支持的聚合通过 datacenter-alpha-metrics.hardware
集合分析 AWS S3 存储桶中的数据。