DynamoDB 是多区域的吗?
可以是。一张标准的 DynamoDB 表只活在一个区域里,但全局表让它变成多区域、多活的,自动在你选定的区域之间复制,于是你在其中任何一个区域都能读能写。全局表提供最高 99.999% 的可用性,一致性可以是最终一致性,也可以选择开启多区域强一致性。
标准表 vs 全局表
默认情况下,一张表只存在于单个区域。打开全局表就能在其他区域添加副本表;此后 DynamoDB 会自动让它们保持同步。
多活复制
每一个副本都同时接受读和写。写到任何一个区域都会传播到其他区域——没有主区域,某个区域不可用时也没有故障转移这一步。
一致性的选择
- 多区域最终一致性(MREC)——默认:写入异步复制,通常在一秒之内。冲突按最后写入者胜出来解决。
- 多区域强一致性(MRSC)——在创建时选定:每次写入在返回之前都会同步复制到至少一个其他区域,于是在任何副本上的强一致性读取都会返回最新的项目。MRSC 表恰好部署在三个区域(三个副本,或者两个副本加一个见证者),并且不支持 TTL、LSI 或事务 API。
第三个区域要花多少钱
每个副本都持有这张表的一份完整副本,所以存储要在每个区域按该区域自己的费率计费。这些费率并不相等,所以这个倍数永远不会是整整的 3 倍。
以 100 GB 为例,按我们同步来的 AWS 表定价:
| 区域 | 存储,100 GB / 每月 |
|---|---|
| us-east-1(北弗吉尼亚) | $25.00 |
| eu-west-1(爱尔兰) | $28.30 |
| sa-east-1(圣保罗) | $37.50 |
| 三区域全局表 | $90.80 |
这是单区域账单的 3.63 倍换来三个副本,而推动这个数字的是区域组合。把圣保罗换成东京(ap-northeast-1,$28.50),同样三份副本要 $81.80。
写入自带另一个倍数。AWS 按 "replicated write request units (rWRU) for on-demand capacity and replicated write capacity units (rWCUs) for provisioned capacity" 来计费,所以一次逻辑写入会在每一个副本区域各收一次费。
这件事你没法在本地彩排
DynamoDB Local 实现了数据平面的大部分,但没有实现复制。添加副本会被当作一次空操作接受下来,而不是作为不支持被拒绝,而这才是更危险的失败方式:
UpdateTable with ReplicaUpdates:
ValidationException: Nothing to update
CreateGlobalTable:
UnknownOperationException: An unknown operation was requested.于是一个本地集成测试可以通过,而你关于复制的那些假设从来没被检验过。冲突解决、复制延迟以及 MRSC 的区域规则,只有面对真实区域时才会显形。
为什么要用它
为分布在全球的用户提供低延迟的就近访问,外加韧性和业务连续性。
深入了解
阅读 DynamoDB 全局表指南。下载 DynoTable 可以跨你的各个副本区域工作。
参考资料
- Global tables - multi-active, multi-Region replication — Amazon DynamoDB Developer Guide
- How DynamoDB global tables work — Amazon DynamoDB Developer Guide
- Amazon DynamoDB Global Tables — AWS
- Amazon DynamoDB on-demand pricing — AWS
最后核实于 2026-07-13,依据上方链接的 AWS 官方文档;复制写入的计费措辞已于 2026-07-28 重新核对。
存储数字于 2026-07-28 依据我们同步的 AWS 定价表算出。模拟器的响应于同日通过 @aws-sdk/client-dynamodb 3.1095.0 针对 DynamoDB Local 3.3.0 复现,为原样照录。