Amazon DynamoDB
开发人员指南 (API 版本 2012-08-10)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

要求和最佳实践

通过使用 Amazon DynamoDB 全局表,可跨 AWS 区域复制表数据。全局表中的副本表和二级索引具有完全相同的写入容量设置才能确保正确地复制数据,这一点很重要。

添加新副本表的要求

如果要在全局表中添加一个新的副本表,必须满足下列所有条件:

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

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

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

  • 该表必须启用了 DynamoDB 流,而流中同时包含项目的新旧映像。

  • 全局表中的副本表均不包含任何数据。

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

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

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

重要

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

我们强烈建议启用 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,并且带有用于管理 RCU 和 WCU 的默认 Auto Scaling 设置。

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

注意

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

如果您对全局表启用按需模式,则您对复制的写入请求单元 (rWCU) 的使用将与预置 rWCU 的方式一致。例如,如果您对在两个其他区域中复制的本地表执行 10 次写入,您将使用 60 个写入请求单位(10 + 10 + 10 = 30;30 x 2 = 60)。

手动管理容量

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

每个副本表上配置的复制写入容量单位 (rWCU) 应设置为应用程序跨所有区域写入所需的 rWCU 总数乘以二。这将容纳本地区域出现的应用程序写入和来自其他区域的复制应用程序写入。例如,如果预计俄亥俄州的副本表每秒 5 个写入,弗吉尼亚北部的副本表每秒 5 个写入,则应为每个副本表配置 20 个 WCU (5 + 5 = 10; 10 x 2 = 20)。

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

注意

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