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

全局表 - DynamoDB 的多区域复制

DynamoDB 全局表有两种版本:版本 2019.11.21(当前)版本 2017.11.29。要找出正在使用的版本,请参阅 确定版本

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

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

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

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

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

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

如果不同区域的副本具有不同的访问模式,则每个副本可以使用不同的表类别来优化成本和性能。例如,不经常访问的副本可以使用 DynamoDB 标准-不经常访问表类别,而其他副本使用 DynamoDB 标准表类别来获取经常访问的数据,其中吞吐量占据主要成本。

注意
  • 对全局表 版本 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 中不支持客户托管式密钥 (CMK)。如果您想在 DynamoDB 全局表中使用 CMK,则需要将表升级到版本 2019.11.21(当前),然后启用它。