DynamoDB Global Tables(グローバルテーブル)とは|複製の仕組み・強整合性・料金
Amazon DynamoDB Global Tablesは、1つのテーブルを複数のAWSリージョンへ自動複製し、どのリージョンからでも読み書きできるマルチアクティブ構成を作る機能です。従来は結果整合性のみでしたが、2025年6月にリージョン間で強い整合性を保証するマルチリージョン強整合性(MRSC)が正式提供され、整合性の選択肢が広がりました。ここでは複製の仕組み、結果整合性とMRSCの使い分け、設定手順、rWRU課金までを実装目線で整理します。
まとめ:先に押さえる要点
- Global Tablesはマルチアクティブ複製。全リージョンで書き込みができ、DynamoDB Streamsを介して他リージョンへ非同期に伝播する。
- 既定は結果整合性で、同一キーの同時更新はLast Writer Wins(最後の書き込みが有効)で解決される。
- 2025年6月GAのMRSCを選ぶと、書き込みは他リージョンへ同期複製されRPO=0になる。ただし構成はちょうど3リージョンに固定される。
- 現行版は2019.11.21。レガシーの2017.11.29より複製の書き込み効率が高く、無償で更新できる。
- 課金はレプリカ書き込みのrWRU/rWCUとリージョン間データ転送が中心。書き込みリージョンの集約とTTLでコストを抑える。
以下、仕組みと整合性モデルの違いから順に見ていきます。
Global Tablesの複製の仕組みとバージョン
Global Tablesは、指定した各リージョンに同一スキーマのレプリカを作り、いずれのレプリカへの書き込みも他リージョンへ伝播させます。伝播にはテーブルの変更履歴を記録するDynamoDB Streamsを使い、既定では非同期で反映されるため、複製が届くまでの短い時間差が生じます。単一リージョンのDynamoDBの基礎はAWS DynamoDBとは?特徴・使い方・料金・RDSとの違いを実装目線で解説で確認できます。
現行版2019.11.21とレガシー版2017.11.29の違い
Global Tablesには2つの版があります。新規作成される2019.11.21は、既存の単一リージョンテーブルに後からレプリカを追加でき、複製時の書き込み消費も抑えられます。旧2017.11.29は全リージョンを空テーブルで揃えてから有効化する必要があり、複製の書き込みが割高です。たとえば1KBのPutItemを他リージョンへ複製する際、レガシーは2rWRUを消費しますが、現行版は1rWRUで済みます。レガシーからの更新はコンソールから無償で行え、機能・課金の両面で現行版が推奨されます。
結果整合性とマルチリージョン強整合性(MRSC)の使い分け
Global Tablesの整合性は2つのモデルから選びます。ここが設計の分岐点です。
既定は結果整合性です。書き込みは自リージョンで即座に完了し、他リージョンへは遅れて届きます。同一キーが複数リージョンでほぼ同時に更新されると、タイムスタンプが最新の書き込みだけが残るLast Writer Winsで競合を解決します。書き込み負荷を待たせないためレイテンシーは低く保てますが、複製が届く前に別リージョンを読むと古い値を返す可能性があります。
MRSC(マルチリージョン強整合性)は2024年のプレビューを経て2025年6月30日にGAとなった新しいモードです。書き込みは成功応答を返す前に少なくとも1つの他リージョンへ同期複製されるため、障害時のデータ損失がゼロ(RPO=0)になり、どのレプリカへの強整合読み取りも常に最新値を返します。制約として構成はちょうど3リージョンに固定され、3レプリカ、または2レプリカ+1ウィットネス(データのみ保持しフル複製の代替となる低コスト構成)で組みます。GA時点で東京・大阪・ソウルを含むリージョンが対象です。
判断基準は明確です。決済・在庫・残高管理など、古い値を読むと業務が破綻する用途はMRSCを選びます。SNSのタイムラインや行動ログの集計のように、短時間の不整合を許容できて低レイテンシーと多リージョン書き込みを優先する用途は、結果整合性のままにします。3リージョン固定とコスト増を許容できない場合、無理にMRSCへ寄せる必要はありません。「データ整合とコストのどちらを優先するか」を先に決めてからモードを選ぶのが失敗しない順序です。
導入が向くユースケース(DR・低遅延・グローバル配信)
Global Tablesが効くのは、地理的に分散したアクセスと可用性要件が同居する場面です。第一に災害対策(DR)で、あるリージョンが停止しても別リージョンのレプリカで読み書きを継続でき、切り替え時のデータ損失もMRSCならゼロに抑えられます。リージョン障害の影響と確認手順はAWS障害の確認方法と原因・対策|2025年10月の大規模障害から学ぶ実務ガイドが参考になります。第二に低レイテンシー配信で、利用者に近いリージョンのレプリカを読ませることで応答時間を短縮します。第三にグローバル展開で、SaaSやECのように各地域の利用者へ同一データを提供する基盤として使えます。逆に、単一リージョンで完結し可用性要件が高くないシステムでは、複製コストに見合わないため通常のDynamoDBで十分です。
Global Tablesの設定手順(コンソール・CLI・Terraform)
現行版では既存テーブルにレプリカを追加する形で有効化します。コンソールならDynamoDBのテーブル詳細から「グローバルテーブル」でリージョンを追加するだけです。CLIではupdate-tableの--replica-updatesでレプリカを作成します。事前に対象テーブルでDynamoDB Streams(NEW_AND_OLD_IMAGES)を有効化しておく必要があります。
aws dynamodb update-table \
--table-name MyGlobalTable \
--replica-updates '[{"Create":{"RegionName":"ap-northeast-1"}}]'
Infrastructure as Codeで管理するなら、Terraformのaws_dynamodb_tableにreplicaブロックを追加します。現行版のレプリカはStreamsを前提とするため、stream_enabledとstream_view_typeの指定が必要です。
resource "aws_dynamodb_table" "my_table" {
name = "MyGlobalTable"
billing_mode = "PAY_PER_REQUEST"
hash_key = "id"
stream_enabled = true
stream_view_type = "NEW_AND_OLD_IMAGES"
attribute {
name = "id"
type = "S"
}
replica {
region_name = "ap-northeast-1"
}
}
本番適用の前に、別リージョンへ書き込んだ値が想定時間内に伝播するか、片リージョンを停止したときにフェイルオーバーが機能するかをテスト環境で確認します。複製遅延はCloudWatchのReplicationLatencyで監視できます。
料金体系とコスト最適化(rWRU・データ転送・TTL)
Global Tablesの追加コストは主に2つです。1つはレプリカへの書き込みで、オンデマンドは複製書き込みリクエスト単位(rWRU)、プロビジョンドは複製書き込みキャパシティ単位(rWCU)として、複製先リージョンごとに課金されます。2リージョン構成なら書き込み側の費用はおおむね倍増する前提で見積もります。もう1つはリージョン間のデータ転送で、複製トラフィックに対して課金されます。読み取りは各リージョンで通常どおり課金されます。
| コスト要素 | 課金対象 | 抑え方 |
|---|---|---|
| 複製書き込み | rWRU / rWCU(複製先ごと) | 書き込みを主要リージョンへ集約 |
| データ転送 | リージョン間の複製通信 | 不要なレプリカを削減 |
| ストレージ | 各レプリカの保存データ | TTLで期限切れデータを自動削除 |
コスト最適化の要点は、全リージョンで無秩序に書き込まず主要リージョンへ集約すること、アクセスの少ないレプリカを削ること、そして不要データをTTLの基本概念とDynamoDBにおける役割で自動削除してストレージと複製量を減らすことです。MRSCでフル複製が過剰なら、3リージョン目をウィットネスにするとレプリカ1つ分のコストを抑えられます。
導入前に押さえる制限と注意点
Global Tablesには設計段階で確認すべき制約があります。
- MRSCは3リージョン固定。2リージョンや4リージョン以上では構成できず、後からの増減も柔軟ではない。
- MRSCは空テーブルからの作成が前提。既存データ入りのテーブルはMRSCへ変換できず、整合性モードは作成時に指定して以降は変更できない。強整合が要る場合は設計初期にMRSCで作る。
- 結果整合モードの書き込み競合。複数リージョンの同時更新はLast Writer Winsで一方が失われる。バージョン番号による楽観ロックや書き込みリージョンの限定で回避する。
- リージョン追加は計画的に。既存データの初期複製で転送が発生するため、低トラフィック時間帯に実施する。
- スキーマの一致。全レプリカで同じキー設計が必要。ホットパーティションを避けるパーティションキー設計は複製環境で影響が拡大する。
これらは「マルチアクティブで自由に書ける」という利点の裏返しです。書き込み経路と整合性モデルを先に固定しておくと、運用開始後の競合トラブルを大きく減らせます。
よくある質問
DynamoDB Global Tablesとは何ですか?
1つのDynamoDBテーブルを複数リージョンへ自動複製し、どのリージョンからも読み書きできるマルチアクティブなマネージド複製機能です。可用性・災害対策・低レイテンシー配信のために使います。
DynamoDBはリージョン間で強い整合性を確保できますか?
できます。2025年6月にGAとなったMRSC(マルチリージョン強整合性)を使うと、書き込みが他リージョンへ同期複製され、どのレプリカでも強整合読み取りで最新値を取得できます。既定モードは結果整合性です。
Global Tablesには最低何リージョン必要ですか?
結果整合モードは2リージョン以上で構成できます。MRSCはちょうど3リージョン(3レプリカ、または2レプリカ+1ウィットネス)が必須です。
Global Tablesにすると書き込み料金は倍になりますか?
複製先リージョンごとにrWRU/rWCUが課金されるため、2リージョン構成では書き込みコストはおおむね倍増する前提で見積もります。加えてリージョン間のデータ転送費用が発生します。
既存のDynamoDBテーブルをGlobal Tableに変換できますか?
現行版2019.11.21なら、既存テーブルに後からレプリカリージョンを追加して有効化できます。レガシーの2017.11.29はコンソールから無償で現行版へ更新できます。ただしMRSC(強整合)構成にする場合は、既存データ入りテーブルの変換はできず、空テーブルからの新規作成が必要です。