DynamoDB 是键值存储吗?

是——DynamoDB 是键值存储,同时也是文档存储。每个项目都通过它的主键(一个分区键,可选再加一个排序键)取回,从而实现快速的基于键的查找。它还额外支持文档类型——嵌套的列表和映射——所以它既是键值数据库,也是文档数据库。

键值模型

每个项目都有一个唯一标识它的主键。对那个键执行 GetItem 是一次直接的、个位数毫秒的查找——不做扫描。这就是经典的键值访问模式。

文档的那一面

除了键之外,值可以是丰富的文档:映射(对象)和列表(数组),可嵌套至 32 层深,并受 400 KB 项目上限约束。这让 DynamoDB 成为一个值为类 JSON 文档的键值存储。

文档的那一半止步于何处

32 层的上限是真实存在的(第 33 层会被直接拒绝,准确的错误在这里),但真正咬人的很少是深度,而是寻址方式。

你是按键读取的,不是按字段。ProjectionExpression 收窄的是穿过网络的内容,而不是 DynamoDB 读取的内容。在一个约 30 KB、装着一段很长的 bio 和一个 100 元素 tags 列表的项目上,一次强一致的 GetItem 三种写法的账单完全一样:

请求返回内容ConsumedCapacity
GetItem,整个项目全部内容8
ProjectionExpression: 'status'一个 6 字节的值8
ProjectionExpression: 'profile.tags[0]'列表里的一个元素8

这就是你把文档存进键值存储所接受的取舍:访问和计费的单位都是整个项目。如果某一个属性被频繁读取而它的邻居又很大,它们就该放进不同的项目里。

键为什么这么重要

因为读取是按键进行的,一次高效的查找必须先钉住单个分区键值。设计好键正是 DynamoDB 建模的核心。

深入了解

DynamoDB 复合主键DynamoDB 分区键的工作原理里理解键。下载 DynoTable 来按键查询。

item size calculator 按照 DynamoDB 的方式对属性名称和值进行总计。

在DynoTable:复合分区键,例如USER#123在网格中解码,这样您就可以一目了然地读取实体前缀,行快速视图(Space)可以打开完整文档而不会丢失您的位置。参见Querying tables

深入了解

最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。

这些容量数字于 2026-07-28 针对 DynamoDB Local 3.3.0(amazon/dynamodb-local:latest)通过 @aws-sdk/client-dynamodb 3.1095.0 实测得出,不是估算。

深入了解

根据上面链接的官方AWS文档上次验证时间为 2026 年 7 月 13 日。

容量数据是在 2026 年 7 月 28 日通过 @aws-sdk/client-dynamodb 3.1095.0 根据 DynamoDB 本地 3.3.0 (amazon/dynamodb-local:latest) 进行测量的,未进行估计。

无需控制台即可使用 DynamoDB

一款快速的 DynamoDB 桌面客户端,可运行 DynamoDB 无法执行的真正 SQL——JOINs、GROUP BY、聚合——并支持可视化编辑和运行在你自己的 Bedrock 密钥上的 AI agent。

30 天免费试用,无需信用卡 — 之后为无时间限制的免费版。