DynamoDB 是开源的吗?
不是。DynamoDB 是一项专有的、全托管的 AWS 服务——源代码不公开,你也无法自托管生产引擎。对于本地开发,AWS 提供了 DynamoDB Local,一个免费的可下载模拟器;另外有一些第三方数据库宣称提供 DynamoDB 兼容的 API,你可以自己运行它们。
这在实践中意味着什么
DynamoDB 只在 AWS 内部运行。你以 API 的方式消费它——没有服务端软件可下载、可授权、可审查或可运维,也没有社区版。这同时也是它的卖点:AWS 负责搭建、打补丁、复制、扩缩和备份,而这项服务没有版本,也没有维护窗口。
DynamoDB Local 是免费的,不是开源的
AWS 提供了 DynamoDB Local,一个可下载的 DynamoDB 版本,能以 Docker 镜像、Java 归档或 Apache Maven 依赖的形式在你的电脑上运行。它免费可用,也能离线工作,但它是给开发和测试用的模拟器——不是生产引擎,同样也不是开源的。
模拟器不是引擎
这里的差距比许可证更要紧,因为模拟器从不强制容量。创建一张 1 RCU 的表,存一个略小于 4 KB 的项,然后在顺序循环里用强一致读把它读回来:
for (let i = 0; i < 500; i++) {
await client.send(
new GetItemCommand({TableName: 'demo', Key: {pk: {S: 'HOT'}}, ConsistentRead: true})
);
}500 次读取在 353 毫秒内跑完,没有任何限流。那大约是每秒 1,400 次强一致读,而这张表只预置了一个单位。模拟器接受 ProvisionedThroughput,然后无视它。
针对真实服务,同样形状的循环会在第 49 次读取时被限流,也就是攒下来的突发额度用完的时候。
所以一次在本地全绿的压测,对容量什么都说明不了。对重试和退避的本地测试同样如此,因为根本没有东西会被限流、进而触发重试。
兼容的替代品
因为 DynamoDB 的 API 有完善的文档,一些开源和第三方数据库实现了 DynamoDB 兼容的端点。兼容程度因功能而异,所以在把它们中的任何一个当作即插即用的替代品之前,先验证你依赖的那些操作(事务、流、二级索引)。
深入了解
用 DynamoDB Local 指南在本地跑起模拟器,在表达式构建器里可视化地构建查询,然后下载 DynoTable——它同时能连 AWS 和本地端点。
参考资料
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- Setting up DynamoDB local (downloadable version) — Amazon DynamoDB Developer Guide
- Fast NoSQL Key-Value Database — Amazon DynamoDB — AWS
最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。
2026-07-28 在 Node v24.18.0 上通过 @aws-sdk/client-dynamodb 3.1095.0 针对 DynamoDB Local 3.3.0 测量。第 49 次读取那个线上服务的数字,来自我们此前针对 us-east-1 的 DynamoDB 所做的复现。