Atlas Data Federation 概述
关于 Atlas Data Federation
Atlas Data Federation 是一个分布式查询引擎,允许您在 MongoDB Atlas 内部和外部的各种源之间以原生方式查询、转换和移动数据。
关键概念
Federated Database Instance
联合数据库实例是 Atlas Data Federation 的部署。每个联合数据库实例都包含虚拟数据库和集合,这些虚拟数据库和集合映射到数据存储中的数据。
Data Store
数据存储是指数据所在的位置。Atlas Data Federation 支持以下数据存储:
Atlas 集群
Atlas 在线存档
AWS S3 存储桶
Azure Blob 存储
HTTP 和 HTTPS 端点
Atlas Data Federation 架构
上图中的 数据平面 是数据所在的位置。您可以配置 Atlas Data Federation 来访问各种存储服务中的数据。具体来说,您可以配置 Atlas Data Federation,以跨 AWS 区域、Azure Blob 存储容器、Atlas 集群、 HTTP 和 HTTPS URL 以及 Atlas Online Archive 访问 AWS S3 存储桶中的数据。要了解有关配置 Atlas Data Federation 以访问数据存储的更多信息,请参阅 为联合数据库实例定义数据存储。
然后,您可以为联合数据库实例设置基于角色的访问控制。您可以通过全局连接选项或将其固定到特定区域来控制客户端连接到联合数据库实例的方式。要了解详情,请参阅为联合数据库实例配置连接。
Atlas Data Federation 保留数据局部性并最大限度地利用本地计算,从而最大限度地减少数据传输并优化性能。 上图中的计算平面显示了 Atlas Data Federation 处理所有请求的位置。 Atlas Data Federation 在距离您的数据最近的区域提供一个弹性代理池,Atlas Data Federation 可以在其中处理您的查询数据。 要了解有关支持区域的更多信息,请参阅 Atlas Data Federation 区域。
Atlas Data Federation 不会将数据持久保留在系统内,一旦处理完您的查询,它只会将元数据存储在您的联合数据库实例中。这使您能够遵守数据主权法规,并确保您的数据的存储和处理符合法律要求。
上图中的控制平面与 Atlas 控制平面相同,是 Atlas Data Federation 平衡用户请求并聚合最终结果的地方。
Atlas Data Federation 直接在底层存储服务上执行查询的某些部分,而不是将所有数据都传输到计算节点进行处理。此外,当您执行查询时,它首先由 Data Federation 前端组件处理,该组件负责规划查询,然后将其分发到后端的节点。之后,后端节点会直接访问您的数据存储以执行查询逻辑并将结果返回给前端。此过程减少了需要移动的数据量,从而使整个过程的速度更快、成本更低。要了解详情,请参阅查询联合数据库实例。
为了优化查询性能,Atlas Data Federation 会执行以下操作:
对于云对象存储,它使用数据分区来根据查询参数选择需要处理的文件。要了解详情,请参阅为 S3 数据定义路径和使用分区属性类型。此外,它还使用 Parquet 元数据来减少通过行组选择或列投影从 Parquet 文件扫描的数据量。要了解详情,请参阅Parquet 数据格式。
对于 Atlas 集群,它会尝试将尽可能多的查询“下推”到集群。例如,如果您的聚合管道有一个
$match
阶段,并且可以在本地处理,则 Atlas Data Federation 会尝试在 Atlas 集群中处理该阶段,并且仅将生成的文档返回到联合层以处理后续阶段。要了解更多信息,请参阅在 Atlas 集群中查询数据。
要了解更多信息,请参阅优化查询性能。
您可以使用 MongoDB 语言特定的驱动程序、 mongosh
和Atlas SQL连接到 Atlas Data Federation。 要了解更多信息,请参阅连接到您的联合数据库实例。
用途示例
您可以使用 Atlas Data Federation 执行以下操作:
将 Atlas 集群数据复制到已写入 AWS S3 存储桶的 Parquet 或 CSV 文件中。
跨多个 Atlas 集群和在线归档进行查询,以获得 Atlas 数据的整体视图。
将 Atlas 集群和 AWS S3 存储桶的聚合结果物化为数据。
从 AWS S3 存储桶读取数据并将其导入到 Atlas 集群中。
Atlas Data Federation 区域
注意
为了防止产生过多费用,请在与 S3 或 Azure Blob Storage 数据源相同的 AWS 或 Azure 区域中创建 Atlas Data Federation。只能使用在 AWS 中创建的联合数据库实例来查询 AWS S3,并且只能使用在 Azure 中创建的联合数据库实例来查询 Azure Blob Storage。
Atlas Data Federation 通过以下区域之一路由您的联合数据库请求:
Data Federation 区域 | AWS 区域 |
---|---|
美国弗吉尼亚州 | us-east-1 |
美国俄勒冈州 | us-west-2 |
巴西圣保罗 | sa-east- 1 |
爱尔兰 | eu-west- 1 |
英国伦敦 | eu-west- 2 |
德国法兰克福 | eu-central- 1 |
日本东京 | ap-northeast-1 |
印度孟买 | ap-south-1 |
新加坡 | ap-southeast-1 |
澳大利亚悉尼 | 亚太东南部-2 |
加拿大蒙特利尔 | ca-central-1 |
Data Federation 区域 | Azure 地区 |
---|---|
美国弗吉尼亚州 | US_EAST_2 |
荷兰 | EUROPE_WEST |
注意
运行联合查询时将产生费用。更多信息,请参阅 Data Federation 成本。