Amazon DynamoDB Global Tables
DynamoDB テーブルを複数リージョンにアクティブ-アクティブでレプリケーションする機能
何ができるか
Amazon DynamoDB Global Tables は、DynamoDB テーブルを複数の AWS リージョンに自動的にレプリケーションする機能です。各リージョンで読み書きが可能なアクティブ-アクティブ構成を実現し、グローバルアプリケーションに低レイテンシのデータアクセスを提供します。
どのような場面で使うか
グローバルに展開するモバイルアプリやゲームのデータ同期、マルチリージョンの災害復旧、地理的に分散したユーザーへの低レイテンシアクセスの提供に利用されます。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
世界各地に支店を持つ銀行に例えられます。どの支店 (リージョン) でも口座の残高 (データ) を確認・更新でき、変更は自動的に全支店に同期されます。
Global Tables とは
この記事は約 2 分で読めます。 DynamoDB Global Tables は、テーブルのマルチリージョンレプリケーションを提供する機能です。レプリカテーブルを追加するリージョンを指定するだけで、データが自動的に双方向で同期されます。各リージョンのレプリカは読み書き可能で、通常 1 秒以内にデータが伝播します。
コンフリクト解決と整合性
複数のリージョンで同じ項目が同時に更新された場合、Global Tables は「最後の書き込みが勝つ (Last Writer Wins)」方式でコンフリクトを解決します。タイムスタンプが最も新しい更新が最終的な値になります。アプリケーション側でコンフリクトを避ける設計 (リージョン固有のデータ分割など) も有効です。
はじめかた
DynamoDB コンソールで既存のテーブルを選択し、「グローバルテーブル」タブから「レプリカの作成」でリージョンを追加します。DynamoDB Streams が自動的に有効化され、レプリケーションが開始されます。レプリカの追加・削除はオンラインで実行でき、ダウンタイムは発生しません。
Azure・オンプレミスとの比較
AWS の優位点
- 既存の DynamoDB テーブルにレプリカを追加するだけで、ダウンタイムなしにマルチリージョン構成を実現
- 各リージョンで読み書き可能なアクティブ-アクティブ構成を標準提供し、フェイルオーバーの設計が不要
- DynamoDB の全機能 (オンデマンドモード、TTL、Streams など) がレプリカテーブルでもそのまま利用可能
注意点
- レプリカリージョンごとに書き込みキャパシティユニットの料金が発生する。レプリケーションのデータ転送料金も加算される
- コンフリクト解決は Last Writer Wins 方式のため、同一項目の同時更新が頻繁に発生するワークロードでは設計上の考慮が必要
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。