DynamoDB 是多區域的嗎?
可以是。一張標準的 DynamoDB 資料表住在單一區域,但全域資料表能讓它成為多區域、多主動的,會自動在你選定的區域之間複寫,讓你在其中任一個區域都能讀寫。全域資料表提供高達 99.999% 的可用性,並可選擇最終一致或選用的多區域強一致性。
標準資料表與全域資料表
預設情況下,一張資料表只存在於單一區域。開啟全域資料表就能在其他區域加上複本資料表;DynamoDB 接著會自動讓它們保持同步。
多主動複寫
每個複本都同時接受讀取與寫入。對任一區域的寫入都會傳播到其他區域 — 沒有主要區域,某個區域無法使用時也沒有容錯移轉的步驟。
一致性的選擇
- 多區域最終一致性(MREC)— 預設值:寫入以非同步方式複寫,通常在一秒之內。衝突以最後寫入者勝出的方式解決。
- 多區域強一致性(MRSC)— 在建立時選定:每次寫入在回傳之前都會同步複寫到至少一個其他區域,所以在任一複本上的強一致性讀取都會回傳最新的項目。MRSC 資料表剛好部署在三個區域(三個複本,或兩個複本加一個見證者),且不支援 TTL、LSI 或交易 API。
第三個區域要花多少錢
每個複本都持有資料表的一份完整副本,所以儲存費用會在每個區域依該區域自己的費率計費。那些費率並不相等,所以那個倍數永遠不會是漂亮的 3 倍。
以 100 GB 為例,依我們同步下來的 AWS 費率表計價:
| 區域 | 儲存,100 GB/月 |
|---|---|
| us-east-1(北維吉尼亞) | $25.00 |
| eu-west-1(愛爾蘭) | $28.30 |
| sa-east-1(聖保羅) | $37.50 |
| 三區域全域資料表 | $90.80 |
那是單一區域帳單的 3.63 倍,換得三個複本,而移動這個數字的是區域組合。把聖保羅換成東京(ap-northeast-1,$28.50),同樣三份副本要價 $81.80。
寫入帶著它自己的倍數。AWS 把它們計費為 "replicated write request units (rWRU) for on-demand capacity and replicated write capacity units (rWCUs) for provisioned capacity",所以一次邏輯上的寫入會在每個複本區域各收一次費。
這件事你無法在本機預演
DynamoDB Local 實作了大部分的資料平面,但沒有複寫。加入一個複本會被當成沒有作用的操作接受,而不是被當成不支援而拒絕,那反而是更危險的失敗方式:
UpdateTable with ReplicaUpdates:
ValidationException: Nothing to update
CreateGlobalTable:
UnknownOperationException: An unknown operation was requested.所以一個本機整合測試可以通過,而你的複寫假設卻從來沒有被驗證過。衝突解決、複寫延遲與 MRSC 的區域規則,只有在面對真實區域時才會現形。
為什麼要用它
替全球分散的使用者提供低延遲的就近存取,外加韌性與營運持續性。
深入了解
閱讀 DynamoDB 全域資料表指南。下載 DynoTable 就能跨你的複本區域工作。
參考資料
- Global tables - multi-active, multi-Region replication — Amazon DynamoDB Developer Guide
- How DynamoDB global tables work — Amazon DynamoDB Developer Guide
- Amazon DynamoDB Global Tables — AWS
- Amazon DynamoDB on-demand pricing — AWS
最後查證於 2026-07-13,對照上方連結的官方 AWS 文件;複寫寫入的計費用語已於 2026-07-28 重新核對。
儲存費用數字於 2026-07-28 依我們同步的 AWS 定價表計算。模擬器的回應在同一天透過 @aws-sdk/client-dynamodb 3.1095.0,對照 DynamoDB Local 3.3.0 重現,並為逐字原文。