DynamoDB vs Amazon RDS

DynamoDB 和 Amazon RDS 都是托管的 AWS 数据库,但它们代表两个不同的世界。DynamoDB 是一款无服务器 NoSQL 键值和文档数据库,围绕已知访问模式和横向扩展设计。Amazon RDS 是一项用于运行基于实例的关系型引擎的托管服务——MySQL、PostgreSQL、MariaDB、SQL Server、Oracle 和 Db2——支持完整 SQL、连接和强制模式。

你应该用 DynamoDB 还是 RDS?

如果你的工作负载是高规模、访问可预测且基于键的运营型负载,并且希望获得无服务器扩展、无需管理实例,那就选 DynamoDB。如果你需要完整 SQL——跨规范化表的连接、临时查询、事务——运行在熟悉的关系型引擎上,且你的数据适合一个可通过只读副本纵向扩展的实例,那就选 Amazon RDS。核心取舍在于查询灵活性对无需操心的扩展。

DynamoDB 与 Amazon RDS 速览

特性DynamoDBAmazon RDS
数据模型NoSQL 键值与文档;每个项目模式灵活,项目最大 400 KB关系型——带强制模式的表、行和列,运行在你选择的引擎上
查询语言原生 API(GetItemQueryScan)以及 SQL 兼容语言 PartiQL底层引擎的完整 SQL(MySQL、PostgreSQL、MariaDB、SQL Server、Oracle、Db2)
连接与关系无 JOIN 运算符;AWS 建议围绕访问模式做反范式化完整的跨表关系型连接、外键和约束
索引基于备用键的全局和本地二级索引引擎自带的索引类型(B 树、哈希和引擎特有),部分引擎还支持部分/表达式索引
一致性默认最终一致性;可按请求做强一致性读;ACID 事务默认强一致性;完整的多语句 ACID 事务
扩展模型横向——自动分区;无服务器按需可上下伸缩(可到零)纵向——你调整预置实例的规格,另加只读副本以扩展读
预置 / 运维无服务器;无需调整规格或打补丁的实例基于实例;你选择实例类别和存储,AWS 负责打补丁、备份和故障转移(可选 Multi-AZ)
定价模型按请求付费(按需)或预置容量加存储;空闲时缩至零按数据库类别的实例小时加存储计费(部分选项还有 I/O),实例运行期间持续计费
最适合的工作负载访问键已知的高规模运营型应用(购物车、会话、事件、排行榜)需要连接、临时查询和强数据完整性的关系型及分析型工作负载

何时 DynamoDB 是更好的选择

  • 你的访问模式已知且基于键。 围绕读取来设计键,无论你有几百还是数亿用户,都能获得稳定的个位数毫秒延迟。
  • 你想要无服务器、无实例。 按需容量没有需要调整规格或打补丁的东西,空闲时缩至零——没有全天候运行的实例。
  • 你需要横向扩展写入。 DynamoDB 自动分区;你不必像扩展单个关系型主库那样添加分片工具。
  • 你的工作负载面向项目(资料、会话、购物车、事件),而非一张相互连接的表网。

何时 Amazon RDS 是更好的选择

  • 你需要完整 SQL 和连接。 RDS 运行真正的关系型引擎,支持连接、聚合、外键和跨规范化表的临时查询。
  • 你的访问模式持续演变。 带灵活查询的关系型模式无需重新设计键即可适应新问题。
  • 你想要熟悉的引擎。 MySQL、PostgreSQL、MariaDB、SQL Server、Oracle 和 Db2 让团队复用既有的技能、工具和 SQL。
  • 你的数据集适合一个纵向扩展的实例加只读副本,且稳定的查询密集流量适合一个常开的实例。

使用 DynamoDB 工作

如果 DynamoDB 是这道选择题里合适的一边,DynoTable 是一款面向它的原生桌面客户端,支持 macOS、Windows 和 Linux。它读取你标准的 AWS 凭证链,因此你的数据仍留在 DynamoDB 中,无需迁移。对于从 RDS 转过来的团队尤为关键的是,它的 SQL Workbench 可以在 DynamoDB 的访问模式规则内表达关系型形态的查询——连接、GROUP BY、聚合——方法是将它们编译成 DynamoDB 自己的 Query/Scan 操作,而它的 AI 助手运行在你自己的 AWS Bedrock 凭证之上。

如果你怀念写 SQL,SQL for DynamoDBPartiQL vs SQL 指南解释了哪些能映射过来、哪些不能,DynamoDB JOIN 指南 则介绍了如何在没有原生连接的情况下建模关系。免费的 DynamoDB Expression Builder 可以生成 SDK、CLI 和 PartiQL 形式的正确键条件、过滤器和更新表达式。DynoTable 是一款闭源商业应用;本页描述它做什么,而非它如何构建。

常见问题

DynamoDB 能替代 Amazon RDS 吗?

对某些工作负载而言可以。如果你的访问模式可预测且基于键,DynamoDB 可以替代一个 RDS 实例,并省去大部分扩展和打补丁的工作。但在你依赖连接、临时关系型查询或不断变化的查询面时,它并不合适——而这些正是 RDS 的强项。许多团队两者并用:RDS 承担关系型工作,DynamoDB 承担高吞吐量的键访问。

DynamoDB 支持像 RDS 那样的 SQL 和连接吗?

DynamoDB 支持 PartiQL——一种用于 SELECT、INSERT、UPDATE 和 DELETE 的 SQL 兼容语言——但它没有 JOIN 运算符;AWS 建议改为做反范式化。RDS 背后的引擎支持包括跨表连接在内的完整 SQL。关于如何在没有连接的情况下建模关系,参见 DynamoDB 中的连接

DynamoDB 比 RDS 便宜吗?

这取决于工作负载,所以两者都要建模测算。DynamoDB 按请求(或预置容量)加存储计费,并在空闲时缩至零,适合尖峰或低基线流量。RDS 按运行类别的实例小时加存储计费,对于稳定、查询密集的工作负载可能更具成本效益。在决定之前,请对照你真实的访问模式进行估算。

相关内容

Last verified 2026-07-12 against the official AWS DynamoDB and Amazon RDS documentation. Amazon RDS 和 DynamoDB 是 Amazon Web Services 的服务;此处引用仅用于标识。

无需控制台即可使用 DynamoDB

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