全局表基于 Amazon DynamoDB 的全球覆盖范围构建,为您提供一个完全托管的多区域、多主控数据库,该数据库为大规模的全局应用程序提供快速的本地读写性能。全局表会在您选择的 AWS 区域中自动复制您的 DynamoDB 表。
全局表消除了在区域之间复制数据和解决更新冲突的困难工作,使您能够专注于应用程序的业务逻辑。此外,全局表使您的应用程序能够保持高度可用,即使在偶尔发生整个区域被隔离或降级的情况下也是如此。
您可以在 AWS 管理控制台或 AWS CLI 中设置全局表。由于全局表使用的是现有 DynamoDB API,因此不需要更改应用程序。使用全局表不涉及预付费用,也无需签订合同,您仅需为预置的资源付费。有关设置全局表的更多信息,请参阅 DynamoDB 开发人员指南。
工作原理
当您创建 DynamoDB 全局表时,它由多个副本表(每个 AWS 区域一个)组成,DynamoDB 将它们视作一个单元。每个副本都有相同的表名称和相同的主键 Schema。当应用程序将数据写入一个区域中的副本表时,DynamoDB 会将写操作自动传播到其他 AWS 区域中的其他副本表。

例如,假设您有一个庞大的客户群,他们分布在三大地理区域——美国东海岸、美国西海岸和西欧。客户可以使用您的应用程序来更新他们的配置文件信息。如果没有托管复制解决方案,您可以编写代码以在每个区域的表之间复制数据更改。然而,这些工作非常耗时耗力。
优势
多主复制可确保将在任何区域中执行的更新传播到其他区域,并且所有区域的数据最终一致。这意味着全局分布式应用程序在本地访问的表始终都是最新的。
全局表使您能够在本地读取和写入数据,从而使任何规模的全局分布式应用程序都只有个位数的毫秒延迟。
全局表消除了在 DynamoDB 中部署和管理全局可用表的复杂性和操作负担。您仅需选择需要复制数据的区域,DynamoDB 将处理剩下的事情。应用程序通过现有的 DynamoDB API 和终端节点访问全局表。
全局表可以帮助应用程序保持可用性和高性能,从而实现业务连续性。如果一个 AWS 区域被隔离或降级,您的应用程序可以重定向到另一个区域,并对另一个副本表执行读写操作。您可以应用自定义业务逻辑,以确定何时将请求重定向到其他区域。 DynamoDB 会跟踪已经执行但尚未传播到所有副本表的任何写入操作。当区域恢复上线时,DynamoDB 会继续将任何待处理的写入操作从该区域传播到其他区域的副本表中,反之亦然。
对任何副本表中的任何项目进行的更改都将复制到相同全局表内的所有其他副本中。在全局表中,新写入的项目通常会在一秒钟内传播到所有副本表中。 使用全局表,每个副本表可以存储同一组数据项目。DynamoDB 不支持仅对某些项目进行部分复制。 如果应用程序几乎同时在不同区域中更新相同项目,可能会引起冲突。为帮助确保最终一致性,DynamoDB 全局表在并发更新之间采用保留最后更新协调功能,DynamoDB 在其中尽最大努力确定最后的写入。使用此冲突解决机制,所有副本都同意最后的更新,并汇聚到拥有相同数据的状态。
开始使用
首先将现有的表转换为全局表,或使用 DynamoDB 控制台或 AWS CLI 创建新的全局表。
最佳实践
客户案例

“当新冠大流行开始时,我们的语音和视频服务出现了巨量需求。在 2020 年初,我们看到来自需要虚拟连接的新老客户的每日会议参与者的使用量前所未有地从 10M 增加到 300M。在后端,我们能够使用 Amazon DynamoDB for Zoom Meetings 管理这种激增。将 DynamoDB 全局表与按需模式结合使用,使我们能够几乎无限地扩展而不会出现性能问题,即使我们的使用量突然激增。”
Zoom Video Communications, Inc. 云运维工程经理 Yasin Mohammed