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

要求和最佳实践

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

添加新副本表的要求

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

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

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

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

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

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

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

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

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

重要

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

DynamoDB 强烈建议启用自动扩展来管理已配置的写入容量设置。如果您更加喜欢手动管理写入容量设置,应为所有副本表配置相等的复制写入容量单位。还应配置相等的复制写入容量单位以跨全局表匹配二级索引。

此外,您还必须具有适当的 IAM 权限。有关更多信息,请参阅将 IAM 用于全局表

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

使用 DynamoDB 自动扩展 (建议)

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

如果使用 AWS 管理控制台 创建副本表,则默认情况下会为每个副本表启动自动扩展,并且带有用于管理 RCU 和 WCU 的默认自动扩展设置。

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

手动管理容量

如果决定不使用 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 用于全局表