管理全局表的最佳实践和要求 - Amazon DynamoDB
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

管理全局表的最佳实践和要求

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

使用 Amazon DynamoDB 全局表,您可以跨 AWS 区域复制表数据。全局表中的副本表和二级索引必须具有相同的写入容量设置,以确保数据正确地复制。

添加新副本表的要求

如果您要向全局表添加新的副本表,则以下每个条件都必须为 true:

  • 该表必须具有与所有其他副本相同的分区键。

  • 该表必须具有指定的相同写入容量管理设置。

  • 该表必须具有与所有其他副本相同的名称。

  • 该表必须已启用 DynamoDB 流,并且流同时包含项目的新旧映像。

  • 全局表中的所有新表或现有副本表均不能包含任何数据。

如果指定了全局二级索引,则还必须满足以下条件:

  • 全局二级索引必须具有相同的名称。

  • 全局二级索引必须具有相同的分区键和排序键(如果存在)。

重要

应跨所有全局表的副本表和匹配的二级索引一致地设置写入容量设置。要更新全局表的写入容量设置,我们强烈建议使用 DynamoDB 控制台或 UpdateGlobalTableSettings API 操作。UpdateGlobalTableSettings 自动将更改应用于全局表中的所有副本表和匹配的二级索引。如果您使用 UpdateTableRegisterScalableTargetPutScalingPolicy 操作,则应将更改分别应用于每个副本表并与二级索引匹配。有关更多信息,请参阅Amazon DynamoDB API Reference中的UpdateGlobalTableSettings

我们强烈建议您启用 Auto Scaling 来管理预置的写入容量设置。如果您更愿意手动管理写入容量设置,应针对所有副本表预置相等的复制写入容量单位。此外,将相等的复制写入容量单位预置到跨全局表匹配二级索引中。

您还必须拥有适当的 AWS Identity and Access Management (IAM) 权限。有关更多信息,请参阅将 IAM 用于全局表

管理容量的最佳实践和要求

在 DynamoDB 中管理副本表的容量设置时,请考虑以下事项。

使用 DynamoDB Auto Scaling

使用 DynamoDB Auto Scaling 是管理使用预置模式的副本表的吞吐容量设置的建议方法。DynamoDB Auto Scaling 根据实际应用程序工作负载自动调整每个副本表的读取容量单位 (RCU) 和写入容量单位 (WCU)。有关更多信息,请参阅使用 DynamoDB Auto Scaling 自动管理吞吐容量

如果使用 AWS 管理控制台创建副本表,则默认情况下将为每个副本表启用 Auto Scaling,其中包含用于管理读取容量单位和写入容量单位的默认 Auto Scaling 设置。

对于通过 DynamoDB 控制台或使用 UpdateGlobalTableSettings 调用创建的副本表或二级索引的 Auto Scaling 设置,更改将自动应用于全局表中的所有副本表和匹配二级索引。这些更改将覆盖任何现有的 Auto Scaling 设置。这可确保跨全局表的副本表和二级索引的预置写入容量设置保持一致。如果您使用 UpdateTableRegisterScalableTargetPutScalingPolicy 调用,则应将更改分别应用于每个副本表并与二级索引匹配。

注意

如果 Auto Scaling 无法满足应用程序的容量更改(无法预测的工作负载),或者您不想配置其设置(最小、最大或利用率阈值的目标设置),则可以使用按需模式管理全局表的容量。有关更多信息,请参阅按需模式

如果您在全局表上启用按需模式,则所复制写入请求单位 (rWCU) 的消耗将与 rWCUs 的预配置方式一致。例如,如果您对在两个其他区域中复制的本地表执行 10 次写入,则将使用 60 个写入请求单位 (10 + 10 + 10 = 30; 30 x 2 = 60)。使用的 60 个写入请求单位包括全局表版本 2017.11.29,用于更新 aws:rep:deletingaws:rep:updatetimeaws:rep:updateregion 属性的额外写入。

手动管理容量

如果您决定不使用 DynamoDB Auto Scaling,则必须手动在每个副本表和二级索引上设置读取容量和写入容量设置。

每个副本表上的预置的复制写入容量单位 (rWCU) 应设置为跨所有区域进行应用程序写入所需的 rWCUs 总数乘以 2。这适用于在本地区域发生的应用程序写入以及来自其他区域的复制应用程序写入。例如,假设您预计每秒向俄亥俄的副本表写入 5 次,向弗吉尼亚北部的副本表每秒写入 5 次。在这种情况下,您应为每个副本表预置 20 个 WCUs(5 + 5 = 10;10 x 2 = 20)。

要更新全局表的写入容量设置,我们强烈建议使用 DynamoDB 控制台或 UpdateGlobalTableSettings API 操作。UpdateGlobalTableSettings 自动将更改应用于全局表中的所有副本表和匹配的二级索引。如果您使用 UpdateTableRegisterScalableTargetPutScalingPolicy 操作,则应将更改分别应用于每个副本表并与二级索引匹配。有关更多信息,请参阅Amazon DynamoDB API Reference

注意

要在 UpdateGlobalTableSettings 中更新全局表的设置 (DynamoDB),您必须具有 dynamodb:UpdateGlobalTabledynamodb:DescribeLimitsapplication-autoscaling:DeleteScalingPolicyapplication-autoscaling:DeregisterScalableTarget 权限。有关更多信息,请参阅将 IAM 用于全局表