使用 Amazon DocumentDB 以托管方式运行 MongoDB 工作负载 - 文档模型与查询设计

通过 MongoDB 兼容 API 管理文档数据,利用最多 15 个只读副本和全球集群实现读取扩展和 DR。解说利用弹性集群进行分片的方法。

DocumentDB 概述

Amazon DocumentDB 是与 MongoDB 兼容的全托管文档数据库服务。它与 MongoDB 3.6、4.0、5.0 的 API 兼容,可以直接使用现有的 MongoDB 驱动程序和工具。存储最多自动扩展到 128 TiB,采用在 3 个 AZ 中保留 6 份数据副本的高可用性设计。与 RDS 的关系数据库不同,它可以灵活地存储无模式的 JSON 文档,可以原样存储 / 查询包含嵌套对象和数组的复杂数据结构。DynamoDB 针对键值访问进行了优化,而 DocumentDB 适合需要丰富查询(聚合管道、文本搜索、地理空间查询)的工作负载。

集群配置与扩展

DocumentDB 的集群由 1 个主实例和最多 15 个只读副本组成。只读副本分散读取工作负载,在主实例发生故障时自动进行故障转移。故障转移的优先级可以按实例设置,可以优先提升特定的实例。弹性集群是 DocumentDB 的分片功能,支持每秒数百万次写入和 PB 规模的存储。只需指定分片键即可自动分散数据,分片的添加 / 删除也可以在线执行。全球集群在最多 5 个区域中部署只读副本,以低于 1 秒的复制延迟实现全球的读取扩展和 DR。

查询与运维

DocumentDB 支持 MongoDB 的聚合管道、文本索引和地理空间索引。可以组合 $match、$group、$sort、$lookup(集合之间的连接)等聚合阶段来执行复杂的分析查询。可以通过 Change Streams 实时检测集合的变更,触发 Lambda 函数来构建事件驱动的处理。通过 Performance Insights 分析查询的执行计划和等待事件,找出慢查询的原因。自动备份的保留期最长为 35 天,可以恢复到任意时间点(PITR)。

DocumentDB 的费用

DocumentDB 的费用由实例、存储和 I/O 三个要素构成。实例 db.r6g.large(2 vCPU、16 GiB)约为 0.277 美元/小时(东京区域)(截至 2026 年 8 月)。存储每 GB 每月约 0.11 美元,I/O 每 100 万次请求约 0.22 美元。选择 I/O 优化存储后,就不再需要 I/O 费用,在 I/O 负载高的工作负载中总成本会降低。弹性集群按 vCPU 计费,根据分片数进行扩展。只读副本会产生与主实例相同的实例费用,因此根据读取负载设置适当的副本数。

通过全球集群实现 DR

DocumentDB 的全球集群是跨多个区域复制数据的功能。对主区域的写入会以低延迟复制到其他区域,因此可以构建应对整个区域故障的灾难恢复。在复制目标区域可以进行读取,因此可以让各地的用户从就近的位置访问数据,提高全球的读取性能。万一主区域无法使用,可以提升复制目标区域来继续运营,将数据丢失降到最低。这是适合要求地理上分散的可用性的系统的配置。

通过 Elastic Clusters 进行分片

单个实例能够处理的容量和吞吐量是有限度的。DocumentDB 的 Elastic Clusters 是通过将数据分散到多个分片,突破这一限度进行水平扩展的机制。即使写入负载或数据量大幅增加,也可以通过增加分片来应对。根据分布键对集合进行分割,将负载分配到多个分片。选择分布键时,重要的是让数据不出现偏斜、均匀地分布。它为持续增长的大规模工作负载提供了可以灵活扩展容量和吞吐量的选项。

高可用性与故障转移

为了提高可用性,DocumentDB 将数据复制到多个可用区。主实例发生故障时,其中一个副本会自动提升并接管处理,因此可以将停机时间控制得短。如果部署多个负责读取的副本,就可以同时提高可用性和读取性能。应用程序端通过妥善处理连接目标,即使发生故障转移也可以重新连接并继续运行。通过跨多个可用区的冗余和自动故障转移,可以实现没有单点故障、不易停止的数据库基础。

性能的监控与优化

为了稳定地运行 DocumentDB,重要的是持续监控性能,找出瓶颈并加以改善。利用将数据库负载状况可视化的机制,就可以掌握哪些查询负载重、资源的哪个部分吃紧。找出慢查询后,添加适当的索引来加速。处理大量连接时,将连接放入池中重复使用,降低连接的开销。确认查询的执行计划、重新审视效率低的处理也很有效。通过持续进行监控和优化,可以维持经得起数据量增长的性能。

总结

Amazon DocumentDB 是与 MongoDB 兼容的全托管文档数据库,提供无模式 JSON 数据的存储和丰富的查询。通过最多 15 个只读副本、利用弹性集群进行的分片以及利用全球集群的 DR,支持从小规模到大规模的广泛工作负载。

参考资料(AWS 官方)

本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。

如本页内容与官方文档不一致,请以官方文档为准。

分享