Amazon DynamoDB グローバルテーブルは、フルマネージド型、サーバーレス、マルチリージョン、マルチアクティブデータベースです。グローバルテーブルにより、99.999% の可用性、アプリケーションの耐障害性の向上、およびビジネス継続性の向上を実現できます。グローバルテーブルは選択した AWS リージョンにわたって Amazon DynamoDB テーブルを自動的にレプリケートするので、ローカルで高速な読み取りと書き込みのパフォーマンスを実現できます。
グローバルテーブルのマルチアクティブアーキテクチャにより、お客様はどのレプリカテーブルに対しても読み取りと書き込みができるため、まれに単一リージョンで障害が発生した場合でも、データベースのフェイルオーバーは必要ありません。また、グローバルテーブルを使用すると、リージョン間でデータをレプリケートしたり、マルチアクティブワークロードの更新コンフリクトを解決したりするという難しい作業もなくなります。さらに、グローバルテーブルを使用すると、1 つのリージョン全体の隔絶や不具合が万が一発生した場合でも、アプリケーションの可用性が高い状態に維持できます。
グローバルテーブルは、AWS コマンドラインインターフェイス (AWS CLI) または AWS CloudFormation を使用して AWS マネジメントコンソールで設定できます。グローバルテーブルは単一リージョンテーブルと同じ DynamoDB API を使用するため、グローバルテーブルの読み取りまたは書き込み時にアプリケーションを変更する必要はありません。
グローバルテーブルの使用には初期費用や契約は不要で、使用したリソースに対してのみお支払いいただきます。グローバルテーブルの設定の詳細については、Amazon DynamoDB デベロッパーガイドをご覧ください。グローバルテーブルの料金の詳細については、「オンデマンドとプロビジョニングの Amazon DynamoDB 料金オプション」を参照してください。
仕組み
DynamoDB グローバルテーブルは複数のレプリカテーブルで構成されています。各レプリカテーブルは異なるリージョンに存在しますが、すべてのレプリカの名前とプライマリキーは同じです。データがいずれかのレプリカテーブルに書き込まれると、DynamoDB はそのデータをグローバルテーブル内の他のすべてのレプリカテーブルに自動的にレプリケートします。
たとえば、アプリケーションが、米国の東海岸、カナダ、欧州西部の 3 つの地域にまたがる大規模な顧客ベースにサービスを提供しているとします。グローバルテーブルがなければ、各 AWS リージョンにテーブルを作成し、各リージョンの各テーブルにデータ変更をレプリケートするコードを記述する必要があります。
グローバルテーブルを使用すると、各地理的領域に最も近い 3 つのリージョンにレプリカテーブルを含むグローバルテーブルを作成できます。DynamoDB は、任意のレプリカの変更を他のリージョンのレプリカに自動的にレプリケートします。
グローバルテーブルを使用すると、アプリケーションのユーザーは、どこにいてもデータに低レイテンシーでデータにアクセスできます。万が一、ある AWS リージョンが一時的に利用できなくなった場合でも、顧客は他のリージョンのレプリカテーブルに引き続きアクセスできます。
メリット
ローカルの読み取りと書き込みで、グローバルなデータアクセスを実現
マルチアクティブ、マルチリージョンレプリケーションにより、あるリージョンのレプリカテーブルに対して実行された更新が、他のリージョンのレプリカテーブルにも確実にレプリケートされます。リージョンにわたるテーブルレプリカ間のレプリケーションは、最終的には一貫性があります。つまり、アプリケーションと同じリージョン内のレプリカテーブルをローカルに読み書きすることで、高い一貫性を実現できます。ただし、リージョン内の他のレプリカテーブルにあるアイテムへの読み取りは、最終的には一貫しています。
パフォーマンス
グローバルテーブルではデータをローカルで読み書きすることができ、世界各地に分散されるアプリケーションの規模に関わらず、1 桁ミリ秒のレイテンシーが提供されます。これにより、大規模にスケールされたグローバルアプリケーションのパフォーマンスを向上させることができます。
設定と操作が簡単
グローバルテーブルにより、Amazon DynamoDB でのマルチアクティブ、マルチリージョンのレプリケーションのデプロイと管理に伴う複雑さと運用上の負担がなくなります。データをレプリケートするリージョンを選択すると、残りの処理は DynamoDB に任せることができます。アプリケーションでは、既存の DynamoDB API およびエンドポイントを使用してグローバルテーブルにアクセスできます。
可用性、耐久性、マルチリージョンの耐障害性
グローバルテーブルは 99.999% の可用性を実現するように設計されています。単一のリージョンが分離または機能低下した場合、アプリケーションは別のリージョンにリダイレクトし、別のレプリカテーブルに対して読み取りと書き込みを実行できます。カスタムビジネスロジックを適用して、リクエストを他のリージョンにリダイレクトするタイミングを決定できます。
さらに、Amazon DynamoDB は、実行されたがまだすべてのレプリカテーブルに伝播していない書き込みを追跡します。リージョンがオンラインに戻ると、Amazon DynamoDB はそのリージョンと他のリージョンのレプリカテーブルとの間の保留中の書き込みの伝播を再開します。その逆も同様です。
一貫性と競合の解決
レプリカテーブルのアイテムに加えられた変更は、同じグローバルテーブル内の他のすべてのレプリカにレプリケートされます。グローバルテーブルでは、新しく書き込まれた項目は通常、1 秒以内にすべてのレプリカテーブルに伝播されます。 グローバルテーブルでは、各レプリカテーブルに同じデータ項目のセットが格納されます。Amazon DynamoDB は、一部の項目のみの部分レプリケーションをサポートしていません。 アプリケーションが異なるリージョンの同じ項目をほぼ同時に更新すると、競合が発生する可能性があります。
競合を解決するために、Amazon DynamoDB グローバルテーブルでは、同時更新間で最終書き込み者が優先されるという調整が行われます。Amazon DynamoDB は、最後の書き込み者を決定するために最善を尽くします。この競合の解決メカニズムにより、すべてのレプリカは最新の更新に同意し、すべてが同じデータを持つ状態となります。
開始方法
既存のテーブルをグローバルテーブルに変換するか、新しいグローバルテーブルを作成することから始めるには、Amazon DynamoDB コンソール、AWS CLI、または AWS CloudFormation を使用してください。Amazon DynamoDB を初めて使用する場合は、DynamoDB 入門ページをご覧ください。開始する前に、アプリケーションのニーズに応じて、オンデマンド、またはプロビジョニングされた容量に対する Global Tables の料金を確認してください。
よくある質問
Amazon DynamoDB のグローバルテーブルとは何ですか?
グローバルテーブルは 1 つ以上のレプリカテーブルの集まりで、すべて単一の AWS アカウントが所有しています。単一の Amazon DynamoDB グローバルテーブルには、AWS リージョンごとに 1 つのレプリカテーブルしか含めることができません。
Amazon DynamoDB のレプリカテーブルとは何ですか?
レプリカテーブルは単一の DynamoDB テーブルです。各レプリカテーブルには、同じデータ項目のセット、同じテーブル名、同じプライマリキースキーマが格納されます。アプリケーションがあるリージョンのレプリカテーブルにデータを書き込むと、Amazon DynamoDB は自動的に他の AWS リージョンのレプリカテーブルに書き込みをレプリケートします。
ビジネス継続戦略として Amazon DynamoDB グローバルテーブルを検討すべきですか?
はい。Amazon Dynamo グローバルテーブルは、アプリケーションの耐障害性を高め、単一リージョンの一貫性を高めるため、ビジネスの継続性を強化します。グローバルテーブルはマルチアクティブなので、アプリケーションは任意のレプリカテーブルに対して読み取りまたは書き込みを行うことができます。まれに、予定外のリージョンイベントが発生して、アプリケーションが別のレプリカにリダイレクトすることがあります。
Amazon DynamoDB テーブルをグローバルにするにはどうすればよいですか?
このステップバイステップガイドでは、Amazon DynamoDB コンソール、AWS CLI、または AWS CloudFormation を使用してグローバルテーブルを作成できます。
Amazon DynamoDB グローバルテーブルの前提条件にはどのようなものがありますか?
Amazon DynamoDB のグローバルテーブルに別リージョンのレプリカを追加するには、DynamoDB Streams が有効になっていること、他のレプリカと同じ名前であること、他のレプリカと同じパーティションキーであること、同じ書き込み容量が設定されていることが必要です。
Amazon DynamoDB のテーブル名はグローバルに一意ですか?
Amazon DynamoDB グローバルテーブルのすべてのレプリカテーブルは同じ名前でなければなりません。
Amazon DynamoDB テーブルとグローバルテーブルにはどのような違いがありますか?
他のデータベースと同様に、Amazon DynamoDB はデータをテーブルに保存します。テーブルは項目の集まりで、各項目は属性の集まりです。Amazon DynamoDB はプライマリキーを使用してテーブル内の各項目を一意に識別し、セカンダリインデックスを使用してクエリの柔軟性を高めています。
これに対し、Amazon DynamoDB グローバルテーブルは、単一の AWS アカウントが所有する 1 つ以上のレプリカテーブルの集まりです。各レプリカテーブルは、通常の Amazon DynamoDB テーブルと構造的に同じです。
Amazon DynamoDB グローバルテーブルでポイントインタイムリカバリを利用できますか?
はい。グローバルテーブルの各レプリカでポイントインタイムリカバリを有効にできます。
ベストプラクティス
お客様事例
「COVID-19 パンデミックが始まったとき、私たちの音声、動画サービスには膨大な需要がありました。2020 年初頭には、仮想的な接続を必要とする新規および既存のお客様、1 日のミーティング参加数 1,000 万から 3 億へと、かつてないほど利用が増加しました。バックエンドでは、Zoom Meetings 用の Amazon DynamoDB を使ってこの急増を管理することができました。DynamoDB のグローバルテーブルとオンデマンドモードを併用することで、利用が急増してもパフォーマンスに問題はなく、ほぼ無限にスケールすることができました」。
Zoom Video Communications, Inc.、クラウドオペレーション担当エンジニアリングマネージャー、Yasin Mohammed 氏
「異なるリージョン間でデータをレプリケートするのはかなり難しい問題ですが、Amazon DynamoDB グローバルテーブルを使用すると簡単に行うことができます」。
Snap Inc.、エンジニアリング担当ディレクター兼インフラストラクチャ責任者、Saral Jain 氏
Disney+
Disney+ を背後で支える Content Discovery チームは、途中から視聴する機能、ウォッチリスト、パーソナライズされた推奨事項などの人気のある機能をスケールおよび提供するために、DynamoDB グローバルテーブルを使用しています。