Atlas Data Federation 支持 Azure Blob 存储容器作为联合数据库实例存储。您必须在联合数据库实例中定义到 Azure Blob 容器的映射,才能运行数据查询。
注意
虽然我们在本页中将 blob 称为文件,将分隔符分隔的前缀称为目录,但这些 blob 存储服务实际上并不是文件系统,并且在所有情况下都不具有与硬盘驱动器上的文件相同的行为。
配置文件格式
要为Azure Blob 存储容器定义联合数据库实例存储,可以指定JSON格式的配置参数。该配置包含Azure Blob 存储数据存储,并将其映射到可以查询的虚拟集合。
Azure Blob 存储容器中数据的JSON配置使用以下字段:
1 { 2 "stores" : [ 3 { 4 "name" : "<string>", 5 "provider": "<string>", 6 "region" : "<string>", 7 "serviceURL" : "<string>", 8 "containerName" : "<string>", 9 "delimiter" : "<string>", 10 "prefix": "<string>", 11 "public": <boolean> 12 } 13 ], 14 "databases" : [ 15 { 16 "name" : "<string>", 17 "collections" : [ 18 { 19 "name" : "<string>", 20 "dataSources" : [ 21 { 22 "storeName" : "<string>", 23 "path" : "<string>", 24 "defaultFormat" : "<string>", 25 "provenanceFieldName": "<string>", 26 "omitAttributes": <boolean> 27 } 28 ] 29 } 30 ], 31 "maxWildcardCollections" : <integer>, 32 "views" : [ 33 { 34 "name" : "<string>", 35 "source" : "<string>", 36 "pipeline" : "<string>" 37 } 38 ] 39 } 40 ] 41 } 42
Azure Blob 存储的JSON配置包含两个顶级对象:stores
和databases
stores
stores
对象定义与联合数据库实例关联的每个数据存储。联合数据库实例存储捕获Azure Blob 存储容器中的文件。Data Federation只能访问权限stores
对象中定义的数据存储。
stores
对象包含以下字段:
1 "stores" : [ 2 { 3 "name" : "<string>", 4 "provider" : "<string>", 5 "region" : "<string>", 6 "serviceURL" : "<string>", 7 "containerName" : "<string>", 8 "delimiter": "<string", 9 "prefix" : "<string>", 10 "public": <boolean> 11 } 12 ]
下表描述了门店对象中的字段:
字段 | 类型 | 必要性 | 说明 | ||||
---|---|---|---|---|---|---|---|
阵列 | 必需 | 对象数组,其中每个对象代表一个与联合数据库实例关联的数据存储。联合数据库实例存储捕获:
Atlas Data Federation 只能访问 | |||||
字符串 | 必需 | 联合数据库实例存储的名称。 | |||||
字符串 | 必需 | 定义数据的存储位置。对于 Azure Blob 存储容器,值必须为 | |||||
字符串 | 必需 | 用于存储数据的 Azure 区域的名称。 | |||||
字符串 | 必需 | 包含 blob 容器的 Azure Blob 存储帐户的 URL。
其中 | |||||
字符串 | 必需 | 包含文件的 Azure Blob 存储容器的名称。 | |||||
字符串 | 可选 | 在 Azure Blob 存储中搜索文件时,应用前缀 Atlas Data Federation。 例如,考虑具有以下结构的 Azure Blob 存储容器
联合数据库实例存储将 如果省略,Atlas Data Federation 将搜索 Azure Blob 存储容器的根目录中的所有文件。 | |||||
字符串 | 可选 | 在联合数据库实例存储中分隔 如果省略,则默认值为 | |||||
布尔 | 可选 | 指定 Azure Blob 存储容器是否为公共容器。 如果设置为 如果省略,则默认值为 |
databases
databases
对象定义 stores
中定义的每个联合数据库实例存储与数据库中的 MongoDB 集合之间的映射。
databases
对象包含以下字段:
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 ]
下表描述了数据库对象中的字段:
字段 | 类型 | 必要性 | 说明 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
阵列 | 必需 | 对象数组,其中每个对象均代表一个数据库、其集合以及(可选)这些集合的所有视图。每个数据库均可有多个 | |||||||||||||
字符串 | 必需 | Atlas Data Federation 将数据存储中包含的数据映射到数据库的数据库名称。 | |||||||||||||
阵列 | 必需 | 对象数组,其中每个对象代表一个集合和映射到 | |||||||||||||
字符串 | 必需 | Atlas Data Federation将每个 您可以通过为集合名称指定 | |||||||||||||
阵列 | 必需 | 对象数组,其中每个对象代表要与集合的 | |||||||||||||
字符串 | 必需 | ||||||||||||||
字符串 | 必需 | 控制Atlas Data Federation在将文件映射到 例如,考虑具有以下结构的 Azure Blob 存储容器
如果 将
请参阅为 S3 数据定义路径以了解更多信息。 指定
在指定相同类型的属性时,请执行以下任一操作:
| |||||||||||||
字符串 | 可选 | Data Federation在搜索 以下值对 defaultFormat字段有效:
有关详细信息,请参阅支持的数据格式 | |||||||||||||
字符串 | 必需 | 包含结果中文档来源的字段的名称。如果在存储配置中指定了此设置,Atlas Data Federation 则会为结果中的每个文档返回以下字段:
| |||||||||||||
布尔 | 必需 | 标志,指定是否省略Atlas Data Federation添加到集合中的属性(键和值对)。 您可以指定以下值之一:
如果省略,则默认为 示例:考虑一个名为 | |||||||||||||
整型 | 可选 | 数据库中通配符 * 集合的最大数量。每个通配符集合只能有一个数据源。值可以介于 1 和 1000(含)之间。如果省略,则默认为 100。 | |||||||||||||
阵列 | 必需 | ||||||||||||||
字符串 | 必需 | 标识视图的标签。 | |||||||||||||
字符串 | 必需 | 视图源集合的名称。如果要创建带有$sql阶段的视图,则必须省略此字段,因为SQL声明将指定源集合。 | |||||||||||||
阵列 | 可选 |
Azure Blob Storage 数据存储配置示例
例子
考虑包含从数据中心收集的数据的 Azure Blob 存储容器 datacenter-alpha
:
|--metrics |--hardware
/metrics/hardware
路径存储 JSON 文件,其中包含源自数据中心硬件的指标,每个文件名是该文件所涵盖的 24 小时周期的 UNIX 时间戳(毫秒):
/hardware/1564671291998.json
配置如下:
在
eastus2
Azure 地区中的datacenter-alpha
Azure Blob 存储容器上定义联合数据库实例存储。联合数据库实例存储被明确限制为仅包含metrics
目录路径中的数据文件。将
hardware
目录中的文件映射到 MongoDB 数据库datacenter-alpha-metrics
和集合hardware
。配置映射包括用于捕获文件名中隐含的时间戳的解析逻辑。
{ "stores" : [ { "name" : "datacenter", "provider" : "azure", "region" : "eastus2", "containerName" : "datacenter-alpha", "serviceURL" : "https://mystorageaccount.blob.core.windows.net/" } ], "databases" : [ { "name" : "datacenter-alpha-metrics", "collections" : [ { "name" : "hardware", "dataSources" : [ { "storeName" : "datacenter", "path" : "/hardware/{date date}" } ] } ] } ] }
Atlas Data Federation 解析 Azure Blob 存储容器 datacenter-alpha
,并处理 /metrics/hardware/
下的所有文件。collections
使用路径解析语法将文件名映射到每个文档中的 date
字段,即 ISO-8601 日期。如果文档中不存在匹配的 date
字段,则 Atlas Data Federation 会添加该字段。
连接到联合数据库实例的用户可以使用 MongoDB 查询语言和支持的聚合通过 datacenter-alpha-metrics.hardware
集合分析 Azure Blob 存储容器中的数据。