全局表 - DynamoDB 的多区域复制 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

全局表 - DynamoDB 的多区域复制

Amazon DynamoDB 全局表是一个完全托管式、多区域和多活跃数据库选项,可为大规模的全局应用程序提供快速、本地化的读取/写入性能。

全局表为部署多区域、多活跃数据库提供了完全托管式解决方案,而不必构建和维护您自己的复制解决方案。您可以指定您希望表可用且 DynamoDB 将持续数据更改传播到所有这些表的 Amazon 区域。

使用全局表的具体优势包括:

  • 跨您选择的 Amazon 区域自动复制 DynamoDB 表

  • 消除在区域之间复制数据以及解决更新冲突等艰巨的工作,这样您就可以专注于应用程序的业务逻辑。

  • 帮助您的应用程序保持高可用性,即使在整个区域出现孤立或降级的情况下,也能保持高可用性。

DynamoDB 全局表非常适合用户遍布全球各地的大规模应用程序。在此类环境中,用户需要非常快的应用程序性能。全局表向全球各地的 Amazon 区域提供自动的多活跃复制。这使得您可以向用户提供低延迟的数据访问,而无论他们身在何处。

以下视频将向您介绍全局表。

您可以在 Amazon 管理控制台或 Amazon CLI 中设置全局表。全局表使用现有的 DynamoDB API,因此无需更改应用程序。您只需为预调配的资源付费,而无需支付任何前期费用,也没有任何承诺。

使用全局表跨区域无缝复制数据

假设您有一个大型客户群跨越三个地理区域:美国东海岸、美国西海岸和西欧。这些客户可以使用您的应用程序更新其配置文件信息。为了满足该使用案例,您需要在客户所在的三个不同的 Amazon 区域中创建三个名为 CustomerProfiles 的完全相同的 DynamoDB 表。这三个表将完全彼此独立 — 对一个表中数据进行的更改不会反映在其他表中。如果没有托管式复制解决方案,您将不得不编写代码以复制数据更改。但是,这会是一个非常耗时的劳动密集型工作。

现在,您可以创建由三个特定于区域的 CustomerProfiles 表组成的全局表,而无需编写自己的代码。然后,DynamoDB 会自动在这些表中复制数据更改,这样一个区域的 CustomerProfiles 数据更改将无缝传播到其他区域。此外,如果某个 Amazon 区域临时变得不可用,您的客户仍可以在其他区域中访问相同的 CustomerProfiles 数据。

注意
  • 对全局表 全局表格版本 2017.11.29(旧版) 的区域支持仅限于美国东部(弗吉尼亚北部)、美国东部(俄亥俄)、美国西部(加利福尼亚北部)、美国西部(俄勒冈)、欧洲(爱尔兰)、欧洲(伦敦)、欧洲(法兰克福)、亚太地区(新加坡)、亚太地区(悉尼)、亚太地区(东京)和亚太地区(首尔)。

  • 事务操作仅在最初写入的区域内提供原子性、一致性、隔离性和持久性 (ACID) 保证。全局表中不支持跨区域的事务。例如,如果您有一个包含美国东部(俄亥俄州)和美国西部(俄勒冈)区域副本的全局表,并在美国东部(弗吉尼亚北部)区域执行 TransactWriteItems 操作,则在复制更改时,您可能会观察到美国西部(俄勒冈)区域已部分完成的交易。更改仅在源区域中提交后才会复制到其他区域。

  • 如果您禁用 Amazon 区域,DynamoDB 将在检测到 Amazon 区域为无法访问 20 小时后从复制组删除此副本。复制副本将不会被删除,将停止与此区域之间复制。

  • 在添加只读副本后,您必须等待 24 小时才能成功删除源表。如果在添加只读副本后的前 24 小时内尝试删除表,您将收到一条错误消息,指出:“无法删除副本,因为它已作为过去 24 小时内添加到表中的新副本的源区域”。

  • 添加新副本时,对源区域的性能没有影响。

  • 当您更改副本的读取和写入容量时,新的写入容量会反映到其他同步副本上,但新的读取容量则不会。

有关 Amazon 区域可用性和定价的信息,请参阅 Amazon DynamoDB 定价

使用 Amazon KMS 为全局表提供安全性和访问权限

  • 您可以对用于加密复制副本的客户托管式密钥Amazon 托管式密钥使用 AWSServiceRoleForDynamoDBReplication 服务相关角色,从而对全局表执行 Amazon KMS 操作。

  • 如果用于加密复制副本的客户托管式密钥无法访问,DynamoDB 将从复制组中删除此复制副本。复制副本将不会被删除,并且将在检测到 KMS 密钥为无法访问 20 小时后停止在此区域之间复制。

  • 如果希望禁用用于加密副本表的客户托管密钥,则只有当密钥不再用于加密副本表时,才必须执行此操作。发出删除副本表的命令后,必须等待删除操作完成并使全局表变为 Active,之后才能禁用密钥。不这样做可能会导致与副本表之间部分复制数据

  • 如果要修改或删除副本表的 IAM 角色策略,则必须在副本表位于 Active 状态。如果不执行此操作,则创建、更新或删除副本表可能会失败。

  • 默认情况下,全局表是在禁用删除保护的情况下创建的。即使为全局表启用了删除保护,默认情况下,该表的任何副本在一开始也会禁用删除保护。

  • 虽然对表禁用了删除保护,但它可能会被意外删除。当表启用了删除保护时,任何人都无法将其删除。

  • 更改一个副本表的删除保护设置不会更新组中的其他副本。

注意

全局表格版本 2017.11.29(旧版) 中不支持客户管理的密钥。如果要在 DynamoDB 全局表中使用客户托管密钥,则需要将该表升级到全局表版本 2019.11.21(当前),然后将其启用。