Docs 菜单
Docs 主页
/
MongoDB 阿特拉斯
/ /

Azure Blob 存储

在此页面上

  • Azure Blob Storage 数据存储配置示例
  • 配置格式
  • stores
  • databases

Atlas Data Federation 支持 Azure Blob 存储容器作为联合数据库实例存储。您必须在联合数据库实例中定义到 Azure Blob 容器的映射,才能运行数据查询。

注意

虽然我们在本页中将 blob 称为文件,将分隔符分隔的前缀称为目录,但这些 blob 存储服务实际上并不是文件系统,并且在所有情况下都不具有与硬盘驱动器上的文件相同的行为。

例子

考虑包含从数据中心收集的数据的 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 存储容器中的数据。

联合数据库实例配置的格式如下:

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
stores
stores对象定义与联合数据库实例关联的每个数据存储。联合数据库实例存储捕获AWS S 3存储桶或 Azure Blob 存储容器中的文件、Atlas 集群中的文档或存储在可公开访问的URL中的文件。 Data Federation 只能访问stores对象中定义的数据存储。
databases
databases 对象定义 stores 中定义的每个联合数据库实例存储与数据库中的 MongoDB 集合之间的映射。
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 ]
stores

对象数组,其中每个对象代表一个与联合数据库实例关联的数据存储。联合数据库实例存储捕获:

  • Azure Blob 存储容器中的文件

  • Atlas 集群中的文档

  • 存储在可公开访问的 URL 上的文件。

Atlas Data Federation 只能访问 stores 对象中定义的数据存储。

stores.[n].name

联合数据库实例存储的名称。databases.[n].collections.[n].dataSources.[n].storeName 字段会引用此值以作为映射配置的一部分。

stores.[n].provider

定义数据的存储位置。对于 Azure Blob 存储容器,值必须为 azure

stores.[n].region

用于存储数据的 Azure 区域的名称。

stores.[n].serviceURL

包含 blob 容器的 Azure Blob 存储帐户的 URL。serviceURL 必须采用以下格式:

https://<storage-account-name>.blob.core.windows.net/

其中 storage-account-name 是 Azure Blob 存储帐户的名称。

stores.[n].containerName

包含文件的 Azure Blob 存储容器的名称。

stores.[n].prefix

可选。在 Azure Blob 存储中搜索文件时,应用前缀 Atlas Data Federation。

例如,考虑具有以下结构的 Azure Blob 存储容器 metrics

metrics
|--hardware
|--software
|--computed

联合数据库实例存储将 prefix 的值预先添加到 databases.[n].collections.[n].dataSources.[n].path 以创建要引入的文件的完整路径。将 prefix 设置为 /software 会将使用联合数据库实例存储的任何 databases 对象限制为只能使用子路径 /software

如果省略,Atlas Data Federation 将搜索 Azure Blob 存储容器的根目录中的所有文件。

stores.[n].delimiter

可选。 在联合数据库实例存储中用于分隔databases.[n].collections.[n].dataSources.[n].path段的分隔符。 Data Federation使用分隔符有效地遍历具有分层目录结构的Azure Blob 存储容器。

如果省略,则默认值为 "/"

stores.[n].public

可选。指定 Azure Blob 存储容器是否为公共容器。

如果设置为 true,Atlas Data Federation 将不使用已配置的 Azure 服务主体来访问 Azure Blob 存储。如果设置为 false,则配置的服务主体必须包含访问 blob 容器的权限,即使该容器是公共的。

如果省略,则默认值为 false

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]
databases

对象数组,其中每个对象均代表一个数据库、其集合以及(可选)这些集合的所有视图。每个数据库均可有多个 collectionsviews 对象。

databases.[n].name

Atlas Data Federation 将数据存储中包含的数据映射到数据库的数据库名称。

databases.[n].collections

对象数组,其中每个对象代表一个集合和映射到 stores 联合数据库实例存储的数据源。

databases.[n].collections.[n].name

Atlas Data Federation 将每个 databases.[n].collections.[n].dataSources.[n].storeName 中包含的数据映射到的集合的名称。数组中的每个对象代表集合与 stores 数组中对象之间的映射。

您可以通过为集合名称指定*并在path字段中指定collectionName()函数,从文件路径动态生成集合名称。

databases.[n].collections.[n].dataSources

对象数组,其中每个对象代表要映射到集合的一个 stores 联合数据库实例存储。

databases.[n].collections.[n].dataSources.[n].storeName

要映射到 <collection> 的联合数据库实例存储的名称。必须与 stores 数组中对象的 name 相匹配。

databases.[n].collections.[n].dataSources.[n].path

控制 Atlas Data Federation 在将文件映射到<collection> storeName中搜索和解析文件。 Atlas Data Federation 将stores.[n].prefix附加到path之前,以构建内部搜索的完整路径。指定/以捕获prefix路径中的所有文件和目录。

例如,考虑具有以下结构的 Azure Blob 存储容器 metrics

metrics
|--hardware
|--software
|--computed

/path 指示 Atlas Data Federation 搜索 metrics 存储桶中的所有文件和目录。

/hardwarepath 指示 Atlas Data Federation 仅搜索该路径下的文件进行摄取。

如果 prefixsoftware,Atlas Data Federation 仅搜索路径 /software/computed 中的文件。

* 通配符附加到该路径将指示 Atlas Data Federation 包含该路径中从此点起的所有文件和目录。例如,/software/computed* 将匹配 /software/computed-detailed/software/computedArchive/software/computed/errors 等文件。

path 支持用于解析文件名的其他语法,包括:

  • 从文件名生成文档字段

  • 使用正则表达式控制字段生成。

  • 设置按时间戳分桶文件名的界线。

请参阅为 S3 数据定义路径以了解更多信息。

指定 path 时:

  • 指定分区属性的数据类型。

  • 确保分区属性类型与要解析的数据类型相匹配。

  • 使用 delimiter 中指定的分隔符。

在指定相同类型的属性时,请执行以下任一操作:

  • 在属性之间添加常量分隔符。

  • 使用正则表达式来描述搜索模式。要了解更多信息,请参阅不支持的解析函数

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

注意

如果您的文件格式为 CSVTSV,则必须在数据中包含标题行。有关详细信息,请参阅 CSV 和 TSV

如果省略,Data Federation 将尝试处理文件的几个字节来检测文件类型。

提示

另请参阅:

databases.[n].collections.[n].dataSources.[n].provenanceFieldName

包含结果中文档来源的字段的名称。如果在存储配置中指定了此设置,Atlas Data Federation 则会为结果中的每个文档返回以下字段:

字段名称
说明
provider
联合数据库实例存储配置中的提供商 ( stores.[n].provider )。
region
Azure 地区 (stores.[n].region)。
serviceURL
包含 blob 容器的 Azure Blob 存储帐户的URL ( stores.[n].serviceURL )。
containerName
Azure Blob 存储容器的名称 ( stores.[n].containerName )
key

您无法使用 Atlas 用户界面中的可视化编辑器来配置此设置。

databases.[n].collections.[n].dataSources.[n].omitAttributes

可选。标志,指定是否省略 Atlas Data Federation 添加到集合中的属性(键和值对)。您可以指定以下值之一:

  • false - 添加属性

  • true - 省略属性

如果省略,则默认为false ,Atlas Data Federation 会添加属性。

例子

以一个名为/employees/949-555-0195.json的文件为例,您要为其配置path /employees/{phone string} 。如果您将omitAttributes设置为false ,则 Atlas Data Federation 会将phone: 949-555-0195属性添加到文档。如果将omitAttributes设置为true ,Atlas Data Federation 不会将该属性添加到虚拟集合中的文档。

databases.[n].maxWildcardCollections

可选。数据库中通配符 * 集合的最大数量。每个通配符集合只能有一个数据源。值可以在 11000 之间(含)。如果省略,默认为 100

databases.[n].views

对象数组,其中的每个对象代表一个集合上的一个聚合管道。要了解有关视图的更多信息,请参阅视图

databases.[n].views.[n].name

标识视图的标签。

databases.[n].views.[n].source

视图源集合的名称。如果要创建具有$sql阶段的视图,则必须省略此字段,因为 SQL 语句将指定源集合。

databases.[n].views.[n].pipeline

要应用于 集合source 的聚合管道阶段 。您还可以使用$sql 阶段创建视图。

后退

限制