

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

# 管理全域資料表的最佳實務和要求
<a name="globaltables_reqs_bestpractices"></a>

**重要**  
 本文件適用於全域資料表 2017.11.29 版 (舊版)，新的全域資料表應避免使用此文件。客戶應盡可能使用 [2019.11.21 版全域資料表 (目前版本)](GlobalTables.md)，因為相較於 2017.11.29 (舊版)，其提供更大的彈性、更高的效率，且消耗的寫入容量更少。  
若要判斷您使用的是哪個版本，請參閱 [判斷全域資料表版本](V2globaltables_versions.md#globaltables.DetermineVersion)。若要將現有全域資料表從 2017.11.29 版 (舊版) 更新至 2019.11.21 版 (目前版本)，請參閱 [DynamoDB 全域資料表版本](V2globaltables_versions.md)。

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

**Topics**
+ [全域資料表版本](#globaltables_version.tables)
+ [新增複本資料表的要求](#globaltables_reqs_bestpractices.requirements)
+ [管理容量的最佳實務和要求](#globaltables_reqs_bestpractices.tables)

## 全域資料表版本
<a name="globaltables_version.tables"></a>

DynamoDB 全域資料表有兩種版本可用：[2019.11.21 版全域資料表 (目前版本)](GlobalTables.md) 和 [全域資料表 2017.11.29 版 (舊版)](globaltables.V1.md)。客戶應盡可能使用 2019.11.21 版全域資料表 (目前版本)，因為相較於 2017.11.29 (舊版)，其提供更大的彈性、更高的效率，且消耗的寫入容量更少。

若要判斷您使用的是哪個版本，請參閱 [判斷全域資料表版本](V2globaltables_versions.md#globaltables.DetermineVersion)。若要將現有全域資料表從 2017.11.29 版 (舊版) 更新至 2019.11.21 版 (目前版本)，請參閱 [升級全域資料表](V2globaltables_versions.md#upgrading-to-current-version)。

## 新增複本資料表的要求
<a name="globaltables_reqs_bestpractices.requirements"></a>

若想將新的複本列表新增至全域資料表，下列每一個條件都必須成立：
+ 資料表必須具備與所有其他複本相同的分割區索引鍵。
+ 資料表必須具備指定的寫入容量管理設定。
+ 資料表必須具備與所有其他複本相同的名稱。
+ 資料表必須啟用 DynamoDB Streams，並且串流同時包含項目的新映像和舊映像。
+ 全域資料表中的新或現有複本列表都不能包含任何資料。

如果指定全域次要索引，則也必須符合下列條件：
+ 全域次要索引必須具有相同的名稱。
+ 全域次要索引必須具有同樣的分割區索引鍵和排序索引鍵 (若有)。

**重要**  
 應在全域資料表的所有複本列表和相符的次要索引之間一致地設定寫入容量設定。若要更新全域資料表的寫入容量設定，強烈建議使用 DynamoDB 主控台或 `UpdateGlobalTableSettings` API 操作。`UpdateGlobalTableSettings` 會自動將寫入容量設定的變更套用至所有複本列表和全域資料表中相符的次要索引。如果使用 `UpdateTable`、`RegisterScalableTarget` 或 `PutScalingPolicy` 操作，您應該將變更套用至每個複本列表和個別相符的次要索引。如需詳細資訊，請參閱《[Amazon DynamoDB API 參考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)》中的 [UpdateGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTableSettings.html)。  
我們強烈建議您啟用自動擴展來管理佈建的寫入容量設定。如果您偏好手動管理寫入容量設定，則應為所有複本列表佈建相同的複寫寫入容量單位。此外，您還要為全域資料表中的相符次要索引佈建相同的複寫寫入容量單位。  
您還必須擁有適當的 AWS Identity and Access Management (IAM) 許可。如需詳細資訊，請參閱[對全域資料表使用 IAM](gt_IAM.md)。

## 管理容量的最佳實務和要求
<a name="globaltables_reqs_bestpractices.tables"></a>

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

### 使用 DynamoDB Auto Scaling
<a name="globaltables_reqs_bestpractices.tables.autoscaling"></a>

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

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

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

**注意**  
 如果自動擴展無法滿足應用程式的容量變更 (無法預測的工作負載)，或者您不想進行其設定 (最小、最大或使用率閾值的目標設定)，則可以使用隨需模式來管理全域資料表的容量。如需詳細資訊，請參閱[隨需模式](capacity-mode.md#capacity-mode-on-demand)。  
如果您在全域資料表上啟用隨需模式，則複寫寫入請求單元 (rWCU) 的耗用方式會與 rWCU 的佈建方式一致。例如，如果您對在另外兩個區域中複寫的本機資料表執行 10 次寫入，則會耗用 60 個寫入要求單位 (10 \$1 10 \$1 10 = 30；30 x 2 = 60)。耗用的 60 個寫入請求單位包括全域資料表版本 2017.11.29 (舊版) 所耗用的額外寫入，以更新 `aws:rep:deleting`、`aws:rep:updatetime` 和 `aws:rep:updateregion` 屬性。

### 手動管理容量
<a name="globaltables_reqs_bestpractices.tables.manual-capacity-management"></a>

如果您決定不使用 DynamoDB Auto Scaling 功能，則必須在每個複本列表和次要索引上手動設定讀取容量和寫入容量設定。

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

 若要更新全域資料表的寫入容量設定，強烈建議使用 DynamoDB 主控台或 `UpdateGlobalTableSettings` API 操作。`UpdateGlobalTableSettings` 會自動將寫入容量設定的變更套用至所有複本列表和全域資料表中相符的次要索引。如果使用 `UpdateTable`、`RegisterScalableTarget` 或 `PutScalingPolicy` 操作，您應該將變更套用至每個複本列表和個別相符的次要索引。如需詳細資訊，請參閱《[Amazon DynamoDB API 參考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)》。

**注意**  
 若要更新 DynamoDB 中全域資料表的設定 (`UpdateGlobalTableSettings`)，您必須擁有 `dynamodb:UpdateGlobalTable`、`dynamodb:DescribeLimits`、`application-autoscaling:DeleteScalingPolicy` 以及 `application-autoscaling:DeregisterScalableTarget` 許可。如需詳細資訊，請參閱[對全域資料表使用 IAM](gt_IAM.md)。