Amazon DynamoDB 全局表 为部署多区域、多主机数据库提供了完全托管的解决方案,而不必构建和维护您自己的复制解决方案。在创建全局表时,指定要在其中提供表的 AWS 区域。DynamoDB 执行在这些区域中创建相同的表并将持续数据更改传播到所有这些表所必需的所有任务。
为说明全局表的一个使用案例,假设您有一个大型客户群跨越三个地理区域 — 美国东海岸、美国西海岸和西欧。客户在使用您的应用程序时需要更新其配置文件信息。为满足这些需求,您可以在三个不同的 AWS 区域中创建三个名为 CustomerProfiles 的完全相同的 DynamoDB 表。这三个表完全相互独立,并且一个表中的数据更改不会反映在其他表中。如果没有托管复制解决方案,您可以编写代码在这些表之间复制数据更改;但是,这会是一个非常耗时的劳动密集型工作。
现在,您可以创建由三个特定于区域的 CustomerProfiles 表构成的全局表,而无需编写自己的代码。DynamoDB 随后会自动在这些表之间复制数据更改,因此一个区域中的 CustomerProfiles 数据的更改会无缝传播到其他区域。此外,如果某个 AWS 区域临时变得不可用,您的客户仍可以在其他区域中访问相同的 CustomerProfiles 数据。
DynamoDB 全局表非常适合用户遍布全球各地的大规模应用程序。在此类环境中,用户需要非常快的应用程序性能。全局表向全球的 AWS 区域提供自动多主机复制,因此您可以向用户提供低延迟数据访问,无论他们位于何处。
副本表(简称副本)是作为全局表的一部分运行的单个 DynamoDB 表。每个副本存储相同的一组数据项。任何给定的全局表在每个区域只能有一个副本表。
以下是如何创建全局表的概念性概述。
-
在 AWS 区域中创建启用了 DynamoDB 流 的普通 DynamoDB 表。
-
对要将您的数据复制到的每个其他 AWS 区域重复步骤 1。
-
根据您创建的表定义 DynamoDB 全局表。
AWS 管理控制台 会自动执行这些任务,因此您可以快速轻松地创建全局表。
生成的 DynamoDB 全局表包含多个副本表,每个区域一个,DynamoDB 将每个副本表视为单个单元。各个副本具有相同的表名和相同的主键架构。当应用程序将数据写入一个区域中的副本表时,DynamoDB 会自动将写入传播到其他 AWS 区域中的其他副本表中。
重要
Global Tables 会为每个项目自动创建以下属性,以保持您的表数据同步:
-
aws:rep:deleting
-
aws:rep:updatetime
-
aws:rep:updateregion
您不应修改这些属性或使用相同名称创建属性。
您可以将副本表添加到全局表,以便它可在其他 AWS 区域中使用。(为此,全局表必须为空。换句话说,任何副本表中都不能具有任何数据。)