DynamoDB 全域資料表版本
DynamoDB 全域資料表有兩種版本可用:全域資料表 2019.11.21 版 (目前版本) 和全域資料表 2017.11.29 版 (舊版)。建議您使用全域資料表 2019.11.21 版 (目前版本),因為其比 2017.11.29 版 (舊版) 更易於使用、支援更多區域,且大多數的工作負載成本更低。
判斷全域資料表版本
使用 AWS CLI 判斷版本
識別全域資料表 2019.11.21 版 (目前版本) 複本
若要判斷資料表是否為全域資料表 2019.11.21 版 (目前版本) 複本,請針對資料表調用 describe-table 命令。如果輸出的 GlobalTableVersion 屬性含 "2019.11.21" 值,則資料表為 2019.11.21 版 (目前版本) 全域資料表複本。
describe-table 範例 CLI 命令:
aws dynamodb describe-table \ --table-name users \ --region us-east-2
(簡略版) 輸出的 GlobalTableVersion 屬性包含 "2019.11.21" 值,因此這個資料表是 2019.11.21 版 (目前版本) 全域資料表複本。
{ "Table": { "AttributeDefinitions": [ { "AttributeName": "id", "AttributeType": "S" }, { "AttributeName": "name", "AttributeType": "S" } ], "TableName": "users", ... "GlobalTableVersion": "2019.11.21", "Replicas": [ { "RegionName": "us-west-2", "ReplicaStatus": "ACTIVE", } ], ... } }
識別全域資料表 2017.11.29 版 (舊版) 複本
全域資料表 2017.11.29 版 (舊版) 使用一組專用命令進行全域資料表管理。若要判斷資料表是否為全域資料表 2017.11.29 版 (舊版) 複本,請針對資料表調用 describe-global-table 命令。如果您收到成功回應,則資料表是 2017.11.29 版 (舊版) 全域資料表複本。如果 describe-global-table 命令傳回 GlobalTableNotFoundException 錯誤,則資料表不是 2017.11.29 版 (舊版) 複本。
describe-global-table 範例 CLI 命令:
aws dynamodb describe-global-table \ --table-name users \ --region us-east-2
命令傳回成功回應,因此這個資料表是 2017.11.29 版 (舊版) 全域資料表複本。
{ "GlobalTableDescription": { "ReplicationGroup": [ { "RegionName": "us-west-2" }, { "RegionName": "us-east-2" } ], "GlobalTableArn": "arn:aws:dynamodb::123456789012:global-table/users", "CreationDateTime": "2025-06-10T13:55:53.630000-04:00", "GlobalTableStatus": "ACTIVE", "GlobalTableName": "users" } }
使用 DynamoDB 主控台判斷版本
若要識別全域資料表複本的版本,請執行下列動作:
-
在 https://console.aws.amazon.com/dynamodb/home
開啟 DynamoDB 主控台。 -
在主控台左側的導覽窗格中,選擇 Tables (資料表)。
-
選擇您要識別全域資料表版本的資料表。
-
選擇 Global Tables (全域資料表) 標籤。
摘要區段會顯示所使用的全域資料表版本。
舊版和目前版本之間的行為差異
下列清單說明全域資料表舊版和目前版本之間的行為差異。
-
相較於 2017.11.29 版 (舊版),2019.11.21 版 (目前版本) 進行數個 DynamoDB 操作時耗用的寫入容量較少,因此,對大多數客戶來說更具成本效益。這些 DynamoDB 操作的差異如下:
-
針對區域中的 1KB 項目調用 PutItem 並複寫到其他區域時,2017.11.29 版 (舊版) 每個區域需要 2 個 rWRU,但 2019.11.21 版 (目前版本) 只需要 1 個 rWRU。
-
針對 1KB 項目調用 UpdateItem 時,2017.11.29 版 (舊版) 來源區域需要 2 個 rWRU,且每個目的地區域需要 1 個 rWRU,但在 2019.11.21 版 (目前版本) 的來源和目的地區域都只需要 1 個 rWRU。
-
針對 1KB 項目調用 DeleteItem 時,2017.11.29 版 (舊版) 來源區域需要 1 個 rWRU,且每個目的地區域需要 2 個 rWRU,但在 2019.11.21 版 (目前版本) 的來源或目的地區域都只需要 1 個 rWRU。
下表列出針對兩個區域中 1KB 項目 2017.11.29 版 (舊版) 和 2019.11.21 版 (目前版本) 資料表耗用的 rWRU。
作業 2017.11.29 (舊版) 2019.11.21 (目前版本) 節省 PutItem 4 個 rWRU 2 個 rWRU 50% UpdateItem 3 個 rWRU 2 個 rWRU 33% DeleteItem 3 個 rWRU 2 個 rWRU 33% -
-
2017.11.29 版 (舊版) 僅適用於 11 個 AWS 區域。不過,2019.11.21 版 (目前版本) 可在所有 AWS 區域 中使用。
-
您可以先建立一組空白區域資料表,然後調用 CreateGlobalTable API 構成全域資料表,藉此建立 2017.11.29 版 (舊版) 全域資料表。您可以調用 UpdateTable API 將複本新增至現有區域資料表,藉此建立 2019.11.21 版 (目前版本) 全域資料表。
-
使用 2017.11.29 版 (舊版) 時,您必須先清空資料表中的所有複本,才能在新區域中新增複本 (包括建立期間)。若使用 2019.11.21 版 (目前版本),即使資料表已包含資料,仍支援將複本新增至區域,或移除複本。
-
2017.11.29 版 (舊版) 使用下列專用控制平面 API 來管理複本:
2019.11.21 版 (目前版本) 使用 DescribeTable 和 UpdateTable API 來管理複本。
-
針對每個寫入,2017.11.29 版 (舊版) 會發布兩個 DynamoDB Streams 記錄;2019.11.21 版 (目前版本) 只會發布一個 DynamoDB Streams 記錄。
-
2017.11.29 版 (舊版) 會填入並更新
aws:rep:deleting、aws:rep:updateregion和aws:rep:updatetime屬性。2019.11.21 版 (目前版本) 不會填入或更新這些屬性。 -
2017.11.29 版 (舊版) 不會跨複本同步 使用 DynamoDB 的存留時間 (TTL) 功能 設定。2019.11.21 版 (目前版本) 會跨複本同步 TTL 設定。
-
2017.11.29 版 (舊版) 不會將 TTL 刪除複寫至其他複本。2019.11.21 版 (目前版本) 會將 TTL 刪除複寫至所有複本。
-
2017.11.29 版 (舊版) 不會跨複本同步自動擴展設定。2019.11.21 版 (目前版本) 會跨複本同步自動擴展設定。
-
2017.11.29 版 (舊版) 不會跨複本同步全域次要索引 (GSI) 設定。2019.11.21 版 (目前版本) 會跨複本同步 GSI 設定。
-
2017.11.29 版 (舊版) 不會跨複本同步靜態加密設定。2019.11.21 版 (目前版本)會跨複本同步靜態加密設定。
-
2017.11.29 版 (舊版) 發布
PendingReplicationCount指標。2019.11.21 版 (目前版本) 不會發布此指標。
升級到目前版本
全域資料表升級所需的許可
若要升級至 2019.11.21 版 (目前版本),您必須擁有所有複本區域的 dynamodb:UpdateGlobalTableversion 許可。除了存取 DynamoDB 主控台和檢視資料表的必要許可,您還需要這些許可。
下列 IAM 政策會授予許可,將任何全域資料表更新至 2019.11.21 版 (目前版本)。
{ "version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:UpdateGlobalTableversion", "Resource": "*" } ] }
下列 IAM 政策會授予許可,只將 Music 全域資料表 (在兩個區域中具有複本) 升級為 2019.11.21 版 (目前版本)。
{ "version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:UpdateGlobalTableversion", "Resource": [ "arn:aws:dynamodb::123456789012:global-table/Music", "arn:aws:dynamodb:ap-southeast-1:123456789012:table/Music", "arn:aws:dynamodb:us-east-2:123456789012:table/Music" ] } ] }
升級期間預期會發生的情況
-
升級時,所有全域資料表複本會繼續處理讀取和寫入流量。
-
升級程序需要幾分鐘到幾個小時,取決於資料表大小和複本數量而定。
-
在升級過程中,TableStatus 的值會從
ACTIVE變更為UPDATING。您可以調用 DescribeTable API 或使用資料表檢視,來檢視資料表的狀態。 -
在升級資料表時,自動擴展不會調整全域資料表的佈建容量設定。強烈建議您在升級期間將資料表設為隨需容量模式。
-
如果您選擇在升級期間使用佈建容量搭配自動擴展,則必須提高政策的讀取和寫入輸送量下限,以容納升級期間預期增加的流量,以免限流情況發生。
-
在升級過程中,
ReplicationLatency指標可以暫時回報延遲峰值,或停止回報指標資料。如需詳細資訊,請參閱 ReplicationLatency。 -
升級程序完成時,資料表狀態會變更為
ACTIVE。
升級前、中、後的 DynamoDB Streams 行為
| 作業 | 複本區域 | 升級前的行為 | 升級期間的行為 | 升級後的行為 |
|---|---|---|---|---|
Put 或 Update |
來源 |
使用 UpdateItem 時會發生時間戳記填入。 | 使用 PutItem 時會發生時間戳記填入。 | 不會產生客戶可見的時間戳記。 |
會產生兩個 Streams 記錄。第一個記錄包含客戶撰寫的屬性。第二個記錄包含 aws:rep:* 屬性。 |
會產生兩個 Streams 記錄。第一個記錄包含客戶撰寫的屬性。第二個記錄包含 aws:rep:* 屬性。 |
會產生單一 Streams 記錄,其中包含客戶撰寫的屬性。 | ||
| 每個客戶寫入會耗用兩個 rWCU。 | 每個客戶寫入會耗用兩個 rWCU。 | 每個客戶寫入會耗用一個 rWCU。 | ||
ReplicationLatency 和 PendingReplicationCount 指標會發布至 CloudWatch。 |
ReplicationLatency 和 PendingReplicationCount 指標會發布至 CloudWatch。 |
ReplicationLatency 指標會發布至 CloudWatch。 |
||
目的地 |
複寫會使用 PutItem 進行。 | 複寫會使用 PutItem 進行。 | 複寫會使用 PutItem 進行。 | |
會產生單一 Streams 記錄,其中包含客戶撰寫的屬性和 aws:rep:* 屬性。 |
會產生單一 Streams 記錄,其中包含客戶撰寫的屬性和 aws:rep:* 屬性。 |
會產生單一 Streams 記錄,其中僅包含客戶撰寫的屬性,而沒有複寫屬性。 | ||
| 如果項目存在於目的地區域中,會耗用一個 rWCU。如果項目不存在於目的地區域中,則會耗用兩個 rWCUs。 | 如果項目存在於目的地區域中,會耗用一個 rWCU。如果項目不存在於目的地區域中,則會耗用兩個 rWCUs。 | 每個客戶寫入會耗用一個 rWCU。 | ||
ReplicationLatency 和 PendingReplicationCount 指標會發布至 CloudWatch。 |
ReplicationLatency 和 PendingReplicationCount 指標會發布至 CloudWatch。 |
ReplicationLatency 指標會發布至 CloudWatch。 |
||
刪除 |
來源 |
使用 DeleteItem 刪除時間戳記較小的任何項目。 | 使用 DeleteItem 刪除時間戳記較小的任何項目。 | 使用 DeleteItem 刪除時間戳記較小的任何項目。 |
會產生單一 Streams 記錄,其中包含客戶撰寫的屬性和 aws:rep:* 屬性。 |
會產生單一 Streams 記錄,其中包含客戶撰寫的屬性和 aws:rep:* 屬性。 |
會產生單一 Streams 記錄,其中包含客戶撰寫的屬性。 | ||
| 每個客戶刪除會耗用一個 rWCU。 | 每個客戶刪除會耗用一個 rWCU。 | 每個客戶刪除會耗用一個 rWCU。 | ||
ReplicationLatency 和 PendingReplicationCount 指標會發布至 CloudWatch。 |
ReplicationLatency 和 PendingReplicationCount 指標會發布至 CloudWatch。 |
ReplicationLatency 指標會發布至 CloudWatch。 |
||
目的地 |
刪除按下列兩個階段進行:
|
使用 DeleteItem 刪除項目。 | 使用 DeleteItem 刪除項目。 | |
會產生兩個 Streams 記錄。第一個記錄包含 aws:rep:deleting 欄位的變更。第二個記錄包含客戶撰寫的屬性和 aws:rep:* 屬性。 |
會產生單一 Stream 記錄,其中包含客戶撰寫的屬性。 | 會產生單一 Stream 記錄,其中包含客戶撰寫的屬性。 | ||
| 每個客戶刪除會耗用兩個 rWCUs。 | 每個客戶刪除會耗用一個 rWCU。 | 每個客戶刪除會耗用一個 rWCU。 | ||
ReplicationLatency 和 PendingReplicationCount 指標會發布至 CloudWatch。 |
ReplicationLatency 指標會發布至 CloudWatch。 |
ReplicationLatency 指標會發布至 CloudWatch。 |
升級到 2019.11.21 版(目前版本)
請執行下列步驟,使用 AWS 管理主控台 升級 DynamoDB 全域資料表版本。
將全域資料表升級至 2019.11.21 版 (目前版本)
-
在 https://console.aws.amazon.com/dynamodb/home
開啟 DynamoDB 主控台。 -
在主控台左側的導覽窗格中,選擇資料表,然後選取您要升級至 2019.11.21 版 (目前版本) 的全域資料表。
-
選擇 Global Tables (全域資料表) 標籤。
-
選擇 Update version (更新版本)。
-
閱讀並同意新的要求,然後選擇 Update version (更新版本)。
-
升級程序完成之後,主控台上出現的全域資料表版本會變更為 2019.11.21。