DynamoDB 是内存数据库吗?
不是。DynamoDB 不是内存数据库——每一次写入都会被持久化到持久存储上,并自动跨三个可用区复制。当你需要内存级速度时,DynamoDB Accelerator(DAX)会加上一层全托管的内存缓存,把最终一致性读取从个位数毫秒压到微秒。
从设计上就是持久的
DynamoDB 是一个持久化的操作型数据库:写入被存放在持久介质上,并默认跨三个可用区复制,支撑着 99.99% 的可用性 SLA。这与纯内存存储的取舍正好相反——在后者里数据活在 RAM 中,持久性是可选的。
不加缓存它也很快
基础的 DynamoDB 在任何规模下都提供稳定的个位数毫秒级读写,因为每次读取都直接命中一个分区键,而不是去扫描。大多数工作负载压根不需要缓存。
唯一「内存版」的 DynamoDB 是那个模拟器
混淆通常从 DynamoDB Local 开始,它确实有一个内存模式。启动它,横幅就这么写着:
docker run -p 8000:8000 amazon/dynamodb-local -jar DynamoDBLocal.jar -inMemory -sharedDbInitializing DynamoDB Local with the following configuration:
Port: 8000
InMemory: true
Version: 3.3.0写入一个项目,重启容器,然后再去找它:
after write: {"total":{"N":"42"},"pk":{"S":"ORDER#1"}}
tables after restart: []
read after restart: ResourceNotFoundException | Cannot do operations on a non-existent table跟着一起没的是整张表,不只是那个项目。这个参数属于测试用的模拟器。托管服务没有对应的设置,也没有任何一种模式会让一次已确认的写入只活在 RAM 里。
DAX:那层内存
当微秒真的要紧时——实时竞价、游戏排行榜、热门商品页——DAX 就是 AWS 的答案:一个与 DynamoDB 兼容的写穿式内存缓存,用极少的代码改动把最终一致性读取的性能提升一个数量级。它不适合强一致性读取或写密集型工作负载。
深入了解
在一致性指南里理解一致性上的取舍,反过来的问题见 DynamoDB 能当缓存用吗?,用定价计算器估算读取成本,并下载 DynoTable 来查看你的表。
在 DynoTable: 查询预览标签 Scan 与 Query 并在表元数据允许时显示 RCU 估计,因此您可以在运行之前查看完整读取的成本。普通分区键 Query 调用不会显示 RCU 线路。参见SQL Workbench — preview the query cost。
深入了解
- In-memory acceleration with DynamoDB Accelerator (DAX) — Amazon DynamoDB Developer Guide
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- DynamoDB read consistency — Amazon DynamoDB Developer Guide
- Setting up DynamoDB local (downloadable version) — Amazon DynamoDB Developer Guide
最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。
2026-07-28 针对 DynamoDB Local 3.3.0,经由 @aws-sdk/client-dynamodb 3.1095.0、Node v24.18.0 复现。上方的横幅与三行输出均为原样照录。
深入了解
- In-memory acceleration with DynamoDB Accelerator (DAX) — Amazon DynamoDB Developer Guide
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- DynamoDB read consistency — Amazon DynamoDB Developer Guide
- Setting up DynamoDB local (downloadable version) — Amazon DynamoDB Developer Guide
根据上面链接的官方AWS文档上次验证时间为 2026 年 7 月 13 日。
于 2026 年 7 月 28 日在 Node v24.18.0 上通过 @aws-sdk/client-dynamodb 3.1095.0 针对 DynamoDB Local 3.3.0 复制。横幅和三个输出行是逐字记录的。