DynamoDB vs Amazon DocumentDB
两者都是全托管的 AWS NoSQL 数据库,但解决的是不同的问题。 DynamoDB 是无服务器的键值与文档存储;Amazon DocumentDB 是 一款 MongoDB 兼容的文档数据库。本页从事实层面对比它们,让你 在确定数据模型之前挑对合适的那个。
DynamoDB 和 DocumentDB 有什么区别?
DynamoDB 是无服务器的键值与文档数据库,没有服务器或 集群需要管理——你按请求量或预置容量扩展。 Amazon DocumentDB 是运行在实例集群(一个主实例加只读副本)上的 MongoDB 兼容文档数据库。DynamoDB 使用自己的 API; DocumentDB 讲 MongoDB API,因此现有的 MongoDB 应用、驱动和工具 都能对它工作。
DynamoDB vs Amazon DocumentDB 速览
| 特性 | DynamoDB | Amazon DocumentDB |
|---|---|---|
| 数据模型 | 键值与文档(带类型属性的项目) | 文档(集合中的 JSON/BSON 文档) |
| 查询 API | DynamoDB API(GetItem、Query、Scan、PutItem、UpdateItem)加 PartiQL | MongoDB API——与你在 MongoDB 中使用的相同驱动、工具和 mongo/mongosh shell |
| 最大记录大小 | 每个项目 400 KB | 每个文档 16 MB(BSON,MongoDB 文档限制) |
| 索引 | 全局二级索引(GSI)和本地二级索引(LSI) | MongoDB 风格的二级索引,包括复合索引 |
| 一致性 | 默认最终一致性;可选强一致性读取;ACID 事务 | 从主实例的读取为强一致;副本读取可为最终一致(读偏好);ACID 事务 |
| 扩展 / 预置 | 无服务器——无实例或集群;按需或预置容量 | 基于实例的集群(一个主实例加最多 15 个副本)或弹性集群;也提供无服务器实例类别 |
| 定价模型 | 按请求付费(按需)或预置读/写容量,加存储 | 按实例小时计算的计算费用,加 I/O 请求、存储和备份存储 |
| 最佳适配 | 高扩展的键值与无服务器工作负载,访问模式已知 | AWS 上需要 MongoDB API 的现有 MongoDB 工作负载和文档应用 |
大小遵循各服务自己的文档。DynamoDB 以 二进制单位计量大小(1 KB = 1024 字节);DocumentDB 的 16 MB 数值 是标准的 MongoDB BSON 文档限制。
何时 DynamoDB 更合适
- 你想要零基础设施管理。 DynamoDB 没有实例、 集群或副本需要调整规模、打补丁或故障切换——你创建一张表就能 读写它。容量要么按需(按请求付费),要么预置。
- 你的工作负载是键值或单表且访问模式已知。 DynamoDB 奖励事先围绕查询做设计。参见 如何在 DynamoDB 中建模数据和 单表设计。
- 你需要在极高扩展下的可预测性能。 DynamoDB 提供 个位数毫秒的读写,且随流量增长保持平稳。
- 你在 AWS 上构建无服务器应用。 DynamoDB 与 Lambda 和按请求付费天然契合,没有空闲实例成本。
何时 DocumentDB 更合适
- 你已经在跑 MongoDB。 DocumentDB 兼容 MongoDB API,因此你 现有的驱动、工具和应用代码往往只需极小改动就能连接—— 很适合搬迁上 AWS。
- 你需要大文档或丰富的临时查询。 DocumentDB 的 16 MB 文档限制远大于 DynamoDB 的 400 KB 项目,且 MongoDB 查询语言支持灵活的过滤和聚合,无需预先设计 每一个访问模式。
- 你偏好文档优先的模型加熟悉的 API。 如果你的团队用 MongoDB 集合和文档而非分区/排序键来思考, DocumentDB 保留了那套心智模型。
两者都谈不上绝对"更好"——DynamoDB 用查询灵活性换取免运维的 无服务器扩展,而 DocumentDB 用无服务器的简洁换取 MongoDB 兼容性和更大、更灵活的文档。
使用 DynamoDB
一旦你选定 DynamoDB,DynoTable 是一款桌面 DynamoDB 客户端, 无需 AWS Console 即可浏览、编辑和查询你的表。它读取 你标准的 AWS 凭证,因此你的数据留在你的账户和 DynamoDB 中。
由于 DynamoDB 有自己的表达式语法,而非 SQL 或 MongoDB 查询语言,免费的 DynamoDB Expression Builder 帮你构建 正确的键条件、过滤表达式和更新表达式,并直接 复制进你的 SDK 代码。想在迁移前核算成本, DynamoDB 定价计算器 可估算 按需和预置容量的开销。
常见问题
DocumentDB 和 DynamoDB 是一回事吗? 不是。它们是两个独立的 AWS 数据库服务。DynamoDB 是无服务器的 键值与文档存储,有自己的 API,而 Amazon DocumentDB 是运行在 实例集群上的 MongoDB 兼容文档数据库。它们 不共享查询 API,在预置、扩展和定价上也不同。
DynamoDB 和 DocumentDB 哪个更便宜? 取决于工作负载,因此没有通用答案。DynamoDB 按 请求(按需)或按预置容量加存储计费,没有空闲 实例成本——对尖峰或低基线流量往往更便宜。DocumentDB 按 实例小时加 I/O、存储和备份计费,在规模适配的实例上, 对稳定、高吞吐量的工作负载可能更具成本效益。
DynamoDB 支持 MongoDB API 吗?
不支持。DynamoDB 使用自己的 API(GetItem、Query、Scan、PutItem、
UpdateItem),也支持 PartiQL——一种 SQL 兼容查询语言。Amazon
DocumentDB 才是提供 MongoDB API 兼容性的 AWS 服务。
相关内容
- 在建模一张表之前,先了解 DynamoDB 数据类型和 单表设计。
- 在 按需 vs 预置中对比容量模式。
- 用免费的 DynamoDB Expression Builder 快速构建查询,然后 下载 DynoTable 来操作你的表。
Last verified 2026-07-12 against the AWS DynamoDB and Amazon DocumentDB developer guides. Amazon DocumentDB 和 MongoDB 是各自所有者的商标, 此处引用仅用于标识。