管理全域資料表的最佳實務和要求 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

管理全域資料表的最佳實務和要求

重要

本文件適用於全域資料表 2017.11.29 版 (舊版),新的全域資料表應避免使用此文件。客戶應盡可能使用 Global Tables 2019.11.21 版 (目前),因為它提供比 2017.11.29 (舊版) 更高的彈性、更高的效率和較少的寫入容量。

若要判斷您使用的是哪個版本,請參閱 判斷您正在使用的 DynamoDB 全域資料表版本。若要將現有全域資料表從 2017.11.29 版更新至 2019.11.21 版 (目前),請參閱 升級全域資料表

使用 Amazon DynamoDB 全域資料表,您可以跨 AWS 區域複寫資料表資料。全域資料表中的複本列表和次要索引必須具有相同的寫入容量設定,才能確保資料能正確複寫。

全域資料表版本

有兩種版本的 DynamoDB 全域資料表可供使用:全域資料表版本 2019.11.21 (目前)全域資料表版本 2017.11.29 (舊版)。客戶應盡可能使用 Global Tables 2019.11.21 版 (目前),因為它提供比 2017.11.29 (舊版) 更高的彈性、更高的效率和較少的寫入容量。

若要判斷您使用的是哪個版本,請參閱 判斷您正在使用的 DynamoDB 全域資料表版本。若要將現有全域資料表從 2017.11.29 版更新至 2019.11.21 版 (目前),請參閱 升級全域資料表

新增複本資料表的要求

若想將新的複本列表新增至全域資料表,下列每一個條件都必須成立:

  • 資料表必須具備與所有其他複本相同的分割區索引鍵。

  • 資料表必須具備指定的寫入容量管理設定。

  • 資料表必須具備與所有其他複本相同的名稱。

  • 資料表必須啟用 DynamoDB Streams,並且串流同時包含項目的新映像和舊映像。

  • 全域資料表中的新或現有複本列表都不能包含任何資料。

如果指定全域次要索引,則也必須符合下列條件:

  • 全域次要索引必須具有相同的名稱。

  • 全域次要索引必須具有同樣的分割區索引鍵和排序索引鍵 (若有)。

重要

應在全域資料表的所有複本列表和相符的次要索引之間一致地設定寫入容量設定。若要更新全域資料表的寫入容量設定,強烈建議使用 DynamoDB 主控台或 UpdateGlobalTableSettingsAPI操作。 會自動將寫入容量設定的變更UpdateGlobalTableSettings套用至全域資料表中的所有複本資料表和相符的次要索引。如果使用 UpdateTableRegisterScalableTargetPutScalingPolicy 操作,您應該將變更套用至每個複本列表和個別相符的次要索引。如需詳細資訊,請參閱《Amazon DynamoDB API參考UpdateGlobalTableSettings》中的 。

我們強烈建議您啟用自動調整規模來管理佈建的寫入容量設定。如果您偏好手動管理寫入容量設定,則應為所有複本列表佈建相同的複寫寫入容量單位。此外,您還要為全域資料表中的相符次要索引佈建相同的複寫寫入容量單位。

您還必須擁有適當的 AWS Identity and Access Management (IAM) 許可。如需詳細資訊,請參閱對全域資料表使用 IAM

管理容量的最佳實務和要求

在 DynamoDB 中管理複本列表的容量設定時,請考慮下列事項。

使用 DynamoDB Auto Scaling

使用 DynamoDB Auto Scaling 功能是管理輸送容量設定的建議方式,適用於使用佈建模式的複本列表。DynamoDB 自動擴展會根據您的實際應用程式工作負載,為每個複本資料表自動調整讀取容量單位 (RCUs) 和寫入容量單位 (WCUs)。如需詳細資訊,請參閱使用 DynamoDB Auto Scaling 功能自動管理輸送容量

如果您使用 建立複本資料表 AWS Management Console,則預設會針對每個複本資料表啟用自動擴展,並使用預設的自動擴展設定來管理讀取容量單位和寫入容量單位。

透過 DynamoDB 主控台或使用 UpdateGlobalTableSettings 呼叫對複本列表或次要索引的自動調整規模設定所做的變更,會自動套用至所有複本列表,以及全域資料表中的相符次要索引。這些變更會覆寫任何現有的自動調整規模設定。這可確保佈建的寫入容量設定在全域資料表中的複本列表和次要索引之間保持一致。如果使用 UpdateTableRegisterScalableTargetPutScalingPolicy 呼叫,您應該將變更個別套用至每個複本列表,以及相符的次要索引。

注意

如果自動調整規模無法滿足應用程式的容量變更 (無法預測的工作負載),或者您不想進行其設定 (最小、最大或使用率閾值的目標設定),則可以使用隨需模式來管理全域資料表的容量。如需詳細資訊,請參閱隨需模式

如果您在全域資料表上啟用隨需模式,複寫寫入請求單位 (rWCUs) 的耗用將與 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 功能,則必須在每個複本列表和次要索引上手動設定讀取容量和寫入容量設定。

每個複本資料表上佈建的複寫寫入容量單位 (rWCUs) 應設定為應用程式寫入 rWCUs 所需的總數,乘以 2。這可容納在本地區域發生的應用程式寫入,以及來自其他區域的複寫應用程式寫入。例如,假設您預期在俄亥俄州的複本列表每秒 5 次寫入,在維吉尼亞北部複本列表每秒 5 次寫入。在此情況下,您應該 rWCUs 為每個複本資料表佈建 20 (5 + 5 = 10;10 x 2 = 20)。

若要更新全域資料表的寫入容量設定,強烈建議使用 DynamoDB 主控台或 UpdateGlobalTableSettingsAPI操作。 會自動將寫入容量設定的變更UpdateGlobalTableSettings套用至全域資料表中的所有複本資料表和相符的次要索引。如果使用 UpdateTableRegisterScalableTargetPutScalingPolicy 操作,您應該將變更套用至每個複本列表和個別相符的次要索引。如需詳細資訊,請參閱 Amazon DynamoDB API參考

注意

若要更新 DynamoDB 中全域資料表的設定 (UpdateGlobalTableSettings),您必須擁有 dynamodb:UpdateGlobalTabledynamodb:DescribeLimitsapplication-autoscaling:DeleteScalingPolicy 以及 application-autoscaling:DeregisterScalableTarget 許可。如需詳細資訊,請參閱對全域資料表使用 IAM