全局表 - DynamoDB 的多区域复制
Amazon DynamoDB 全局表是一个完全托管式、多区域和多活跃数据库选项,可为大规模的全局应用程序提供快速、本地化的读取/写入性能。
全局表为部署多区域、多活跃数据库提供了完全托管式解决方案,而不必构建和维护您自己的复制解决方案。您可以指定您希望表可用且 DynamoDB 将持续数据更改传播到所有这些表的 AWS 区域。全局表在所有区域中都可用。
使用全局表的具体优势包括:
跨您选择的 AWS 区域自动复制 DynamoDB 表
消除在区域之间复制数据以及解决更新冲突等艰巨的工作,这样您就可以专注于应用程序的业务逻辑。
帮助您的应用程序保持高可用性,即使在整个区域出现孤立或降级的情况下,也能保持高可用性。
DynamoDB 全局表非常适合用户遍布全球各地的大规模应用程序。在此类环境中,用户需要非常快的应用程序性能。全局表向全球各地的 AWS 区域提供自动的多活跃复制。这使得您可以向用户提供低延迟的数据访问,而无论他们身在何处。
以下视频将向您介绍全局表。
您可以在 AWS 管理控制台或 AWS CLI 中设置全局表。全局表使用现有的 DynamoDB API,因此无需更改应用程序。您只需为预调配的资源付费,而无需支付任何前期费用,也没有任何承诺。
主题
使用全局表跨区域无缝复制数据
假设您有一个大型客户群跨越三个地理区域:美国东海岸、美国西海岸和西欧。这些客户可以使用您的应用程序更新其配置文件信息。为了满足该使用案例,您需要在客户所在的三个不同的 AWS 区域中创建三个名为 CustomerProfiles
的完全相同的 DynamoDB 表。这三个表将完全彼此独立 — 对一个表中数据进行的更改不会反映在其他表中。如果没有托管式复制解决方案,您将不得不编写代码以复制数据更改。但是,这会是一个非常耗时的劳动密集型工作。
现在,您可以创建由三个特定于区域的 CustomerProfiles
表组成的全局表,而无需编写自己的代码。然后,DynamoDB 会自动在这些表中复制数据更改,这样一个区域的 CustomerProfiles
数据更改将无缝传播到其他区域。此外,如果某个 AWS 区域临时变得不可用,您的客户仍可以在其他区域中访问相同的 CustomerProfiles
数据。
注意
-
对全局表 全局表版本 2017.11.29(旧版) 的区域支持仅限于美国东部(弗吉尼亚州北部)、美国东部(俄亥俄州)、美国西部(北加利福尼亚)、美国西部(俄勒冈州)、欧洲地区(爱尔兰)、欧洲地区(伦敦)、欧洲地区(法兰克福)、亚太地区(新加坡)、亚太地区(悉尼)、亚太地区(东京)和亚太地区(首尔)。
-
事务操作仅在最初写入的区域内提供原子性、一致性、隔离性和持久性 (ACID) 保证。全局表中不支持跨区域的事务。例如,如果您有一个全局表,该表在美国东部(俄亥俄州)和美国西部(俄勒冈州)区域中具有副本,并且在美国东部(弗吉尼亚州北部)区域中执行 TransactWriteItems 操作,则在复制更改时,可能会在美国西部(俄勒冈州)区域观察到部分完成的事务。更改仅在源区域中提交后才会复制到其他区域。
-
如果您禁用 AWS 区域,DynamoDB 将在检测到 AWS 区域为无法访问 20 小时后从复制组删除此副本。复制副本将不会被删除,将停止与此区域之间复制。
-
在添加只读副本后,您必须等待 24 小时才能成功删除源表。如果在添加只读副本后的前 24 小时内尝试删除表,您将收到一条错误消息,指出:“无法删除副本,因为它已作为过去 24 小时内添加到表中的新副本的源区域”。
-
添加新副本时,对源区域的性能没有影响。
-
当您更改副本的读取和写入容量时,新的写入容量会反映到其他同步副本上,但新的读取容量则不会。
有关 AWS 区域可用性和定价的信息,请参阅 Amazon DynamoDB 定价
使用 AWS KMS 为全局表提供安全性和访问权限
-
您可以对用于加密复制副本的客户托管式密钥或 AWS 托管式密钥使用
AWSServiceRoleForDynamoDBReplication
服务相关角色,从而对全局表执行 AWS KMS 操作。 -
如果用于加密复制副本的客户托管式密钥无法访问,DynamoDB 将从复制组中删除此复制副本。复制副本将不会被删除,并且将在检测到 KMS 密钥为无法访问 20 小时后停止在此区域之间复制。
-
如果希望禁用用于加密副本表的客户托管密钥,则只有当密钥不再用于加密副本表时,才必须执行此操作。发出删除副本表的命令后,必须等待删除操作完成并使全局表变为
Active
,之后才能禁用密钥。不这样做可能会导致与副本表之间部分复制数据 -
如果要修改或删除副本表的 IAM 角色策略,则必须在副本表位于
Active
状态。如果不执行此操作,则创建、更新或删除副本表可能会失败。 -
默认情况下,全局表是在禁用删除保护的情况下创建的。即使为全局表启用了删除保护,默认情况下,该表的任何副本在一开始也会禁用删除保护。
-
虽然对表禁用了删除保护,但它可能会被意外删除。当表启用了删除保护时,任何人都无法将其删除。
-
更改一个副本表的删除保护设置不会更新组中的其他副本。
注意
全局表版本 2017.11.29(旧版) 中不支持客户管理的密钥。如果您要在 DynamoDB 全局表中使用客户管理的密钥,则需要将表升级到全局表版本 2019.11.21(当前版),然后启用它。