DynamoDB vs MongoDB

你该用 DynamoDB 还是 MongoDB?

如果你需要一个在 AWS 上、全托管、无服务器的键值和文档存储,具有可预测的基于键的访问模式和省心的扩展,就选 DynamoDB。如果你需要一个文档数据库,支持灵活的即席查询、丰富的聚合管道,并可选择自托管或在任意主流云上以托管方式运行,就选 MongoDB。你的访问模式决定了答案。

DynamoDB vs MongoDB 速览

特性DynamoDBMongoDB
数据模型NoSQL 键值与文档;项目分组在表中,每个项目最大 400 KB文档数据库;BSON(类 JSON)文档最大 16 MB,分组在集合中
查询语言 / API原生 API(GetItemQueryScanPutItem……)外加 PartiQL,一种兼容 SQL 的查询语言MongoDB Query API (MQL) 外加用于多阶段转换、连接($lookup)和分组的聚合管道
主要访问模式基于分区键(及可选排序键)的键式查找;模式围绕已知访问模式提前设计对任意字段的灵活查询;由索引支撑的即席过滤和聚合
二级索引全局二级索引(自有吞吐量,任意键)和本地二级索引(同一分区键,单分区上限 10 GB)对任意字段的二级索引,包括复合、多键、文本、地理空间和通配符索引
一致性模型默认最终一致性读取;可按请求使用强一致性读取(在单个 AWS 区域内)可调的读/写关注级别;默认从主节点读取为强一致性
扩展模型由 AWS 管理的自动分区;无需预置服务器即可扩展吞吐量和存储通过在集群中分片实现横向扩展;副本集提供高可用和故障转移
事务跨多个项目的 ACID 事务,作用范围限于单个 AWS 区域多文档 ACID 事务(自 4.0 起),包括跨分片(自 4.2 起)
定价模型按请求付费(按需)或预置容量,外加存储;无需运行服务器Atlas 基于集群(实例规格/时长),带有低成本的 Flex 层;自托管的社区版仅需承担基础设施成本
托管 / 无服务器选项完全无服务器且全托管;仅在 AWS 上提供Atlas 托管服务可在 AWS、Google Cloud 或 Azure 上运行;也可自托管。Atlas Serverless 实例已退役,由 Flex 层取代
最佳适用工作负载具有可预测键式访问、需要一致低延迟和最少运维的大规模应用模式不断演进、需要即席查询和丰富聚合,或需要多云 / 本地可移植性的应用

什么时候 DynamoDB 是更好的选择

  • 你在 AWS 上并希望零数据库运维。 DynamoDB 是无服务器的——没有实例、集群或容量需要打补丁。按需模式会自动随流量扩展(容量模式)。
  • 你的访问模式已知且基于键。 当你能围绕数据的读取方式设计键时,DynamoDB 在几乎任意规模下都能提供一致的低延迟查找。这正是单表设计大显身手的地方。
  • 你想要按请求付费的定价。 使用按需容量,你只为发生的读写付费,没有空闲集群成本。
  • 你需要与 AWS 紧密集成。 与 IAM、Lambda、Streams 及更广泛的 AWS 生态的原生联系可减少胶水代码。

什么时候 MongoDB 是更好的选择

  • 你的查询是即席或探索性的。 MongoDB 允许你对任意字段过滤和建索引,并运行丰富的服务端聚合——包括跨集合的连接——而无需预先规划每个访问模式。
  • 你需要跨云或本地的可移植性。 MongoDB 可自托管,或在 AWS、Google Cloud 和 Azure 上通过 Atlas 运行。DynamoDB 仅限 AWS。
  • 你的文档很大或嵌套很深。 MongoDB 的 16 MB 文档上限远大于 DynamoDB 的 400 KB 项目上限(DynamoDB constraints)。
  • 你的模式变化很快。 灵活的文档加上一流的二级索引,适合快速变化的模型,无需僵硬的前期键设计。

使用 DynamoDB

一旦你选定了 DynamoDB,你日常仍然需要一种快速浏览表、运行查询和编辑项目的方式。DynoTable 是一个面向 DynamoDB 的原生桌面 GUI:浏览并内联编辑项目、构建键条件和过滤器,并用 SQL 工作台和 AI 助手查询。如果你带着 MongoDB「什么都能查」的思维方式过来,SQL 工作台能帮你在遵守 DynamoDB 访问模式规则的前提下表达关系型的查询。

要在不离开文档的情况下构建表达式,免费的 DynamoDB Expression Builder 能生成键条件、过滤和更新表达式,并提供可直接粘贴的 SDK、CLI 和 PartiQL 输出。如果你刚接触为键值存储建模,如何在 DynamoDB 中建模数据指南会带你把实体和访问模式转换成键。

FAQ

DynamoDB 比 MongoDB 快吗?

没有哪个是普遍更快的——这取决于工作负载和数据的建模方式。DynamoDB 的设计目标是在大规模下为键式访问提供一致的低延迟性能,而 MongoDB 对于建了索引的查询和即席查询可以非常快。对于真实世界的延迟,合适的数据模型比引擎本身更重要。

DynamoDB 能取代 MongoDB 吗?

有时可以。如果你的访问模式可预测且基于键,DynamoDB 可以取代 MongoDB 并消除大部分运维负担。如果你依赖跨多个字段的即席查询或服务端聚合,那么迁移意味着要先围绕 DynamoDB 的键重新建模你的数据——参见如何在 DynamoDB 中建模数据

DynamoDB 是基于 MongoDB 的吗?

不是。它们是来自不同公司的、彼此无关的产品。DynamoDB 是 AWS 托管的数据库,其设计渊源可追溯到 Amazon 内部的 Dynamo 工作,而 MongoDB 是一个独立的、源于开源的文档数据库。它们共享「NoSQL」这个标签,但没有共同的代码库。

相关内容

Last verified 2026-07-12 against the official AWS DynamoDB Developer Guide and MongoDB documentation. MongoDB 是其各自所有者的商标;此处引用仅用于标识目的。

无需控制台即可使用 DynamoDB

DynoTable 是面向 DynamoDB 的快速桌面客户端 —— 浏览表、运行 SQL 风格的查询,并在本地编辑项。