Amazon DynamoDB グローバルテーブル

Amazon DynamoDB グローバルテーブルを使用すべき理由

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 リージョンが一時的に利用できなくなった場合でも、顧客は他のリージョンのレプリカテーブルに引き続きアクセスできます。

仕組み

Amazon DynamoDB グローバルテーブルの利点

グローバルテーブルにより、Amazon DynamoDB でのマルチアクティブ、マルチリージョンのレプリケーションのデプロイと管理に伴う複雑さと運用上の負担がなくなります。データをレプリケートするリージョンを選択すると、残りの処理は DynamoDB に任せることができます。アプリケーションでは、既存の DynamoDB API およびエンドポイントを使用してグローバルテーブルにアクセスできます。

マルチアクティブ、マルチリージョンレプリケーションにより、あるリージョンのレプリカテーブルに対して実行された更新が、他のリージョンのレプリカテーブルにも確実にレプリケートされます。リージョンにわたるテーブルレプリカ間のレプリケーションは、最終的には一貫性があります。つまり、アプリケーションと同じリージョン内のレプリカテーブルをローカルに読み書きすることで、高い一貫性を実現できます。ただし、リージョン内の他のレプリカテーブルにあるアイテムへの読み取りは、最終的には一貫しています。

レプリカテーブルのアイテムに加えられた変更は、同じグローバルテーブル内の他のすべてのレプリカにレプリケートされます。グローバルテーブルでは、新しく書き込まれた項目は通常、1 秒以内にすべてのレプリカテーブルに伝播されます。  グローバルテーブルでは、各レプリカテーブルに同じデータ項目のセットが格納されます。Amazon DynamoDB は、一部の項目のみの部分レプリケーションをサポートしていません。 アプリケーションが異なるリージョンの同じ項目をほぼ同時に更新すると、競合が発生する可能性があります。

競合を解決するために、Amazon DynamoDB グローバルテーブルは、同時更新間で最後に書き込んだユーザーを優先するための調整を行います。Amazon DynamoDB は、最後に書き込んだユーザーを特定するために最善を尽くします。この競合の解決メカニズムにより、すべてのレプリカは最新の更新に同意し、すべてが同じデータを持つ状態となります。

グローバルテーブルは 99.999% の可用性を実現するように設計されています。単一のリージョンが分離または機能低下した場合、アプリケーションは別のリージョンにリダイレクトし、別のレプリカテーブルに対して読み取りと書き込みを実行できます。カスタムビジネスロジックを適用して、リクエストを他のリージョンにリダイレクトするタイミングを決定できます。 

さらに、Amazon DynamoDB は、実行されたがまだすべてのレプリカテーブルに伝播していない書き込みを追跡します。リージョンがオンラインに戻ると、Amazon DynamoDB はそのリージョンと他のリージョンのレプリカテーブルとの間の保留中の書き込みの伝播を再開します。その逆も同様です。

グローバルテーブルではデータをローカルで読み書きすることができ、世界各地に分散されるアプリケーションの規模に関わらず、1 桁ミリ秒のレイテンシーが提供されます。これにより、大規模にスケールされたグローバルアプリケーションのパフォーマンスを向上させることができます。

ページトピック

全般

全般

グローバルテーブルは 1 つ以上のレプリカテーブルの集まりで、すべて単一の AWS アカウントが所有しています。単一の Amazon DynamoDB グローバルテーブルには、AWS リージョンごとに 1 つのレプリカテーブルしか含めることができません。

レプリカテーブルは単一の DynamoDB テーブルです。各レプリカテーブルには、同じデータ項目のセット、同じテーブル名、同じプライマリキースキーマが格納されます。アプリケーションがあるリージョンのレプリカテーブルにデータを書き込むと、Amazon DynamoDB は自動的に他の AWS リージョンのレプリカテーブルに書き込みをレプリケートします。

はい。Amazon Dynamo グローバルテーブルは、アプリケーションの耐障害性を高め、単一リージョンの一貫性を高めるため、ビジネスの継続性を強化します。グローバルテーブルはマルチアクティブなので、アプリケーションは任意のレプリカテーブルに対して読み取りまたは書き込みを行うことができます。まれに、予定外のリージョンイベントが発生して、アプリケーションが別のレプリカにリダイレクトすることがあります。

このステップバイステップガイドでは、Amazon DynamoDB コンソール、AWS CLI、または AWS CloudFormation を使用してグローバルテーブルを作成できます。

Amazon DynamoDB のグローバルテーブルに別リージョンのレプリカを追加するには、DynamoDB Streams が有効になっていること、他のレプリカと同じ名前であること、他のレプリカと同じパーティションキーであること、同じ書き込み容量が設定されていることが必要です。

Amazon DynamoDB グローバルテーブルのすべてのレプリカテーブルは同じ名前でなければなりません。

他のデータベースと同様に、Amazon DynamoDB はデータをテーブルに保存します。テーブルは項目の集まりで、各項目は属性の集まりです。Amazon DynamoDB はプライマリキーを使用してテーブル内の各項目を一意に識別し、セカンダリインデックスを使用してクエリの柔軟性を高めています。

これに対し、Amazon DynamoDB グローバルテーブルは、単一の AWS アカウントが所有する 1 つ以上のレプリカテーブルの集まりです。各レプリカテーブルは、通常の Amazon DynamoDB テーブルと構造的に同じです。

はい。グローバルテーブルの各レプリカでポイントインタイムリカバリを有効にできます。

  • Zoom

    COVID-19 パンデミックが始まったとき、当社の音声および動画サービスには膨大な需要がありました。2020 年初頭には、仮想的な接続を必要とする新規および既存のお客様、1 日のミーティング参加数 1,000 万から 3 億へと、かつてないほど利用が増加しました。バックエンドでは、Zoom Meetings 用の Amazon DynamoDB を使ってこの急増を管理することができました。DynamoDB のグローバルテーブルとオンデマンドモードを併用することで、利用が急増してもパフォーマンスに問題はなく、ほぼ無限にスケールすることができました。

    Zoom Video Communications, Inc.、クラウドオペレーション担当エンジニアリングマネージャー、Yasin Mohammed 氏
  • Disney

    Disney+ は、Amazon DynamoDB を使用して、コンテンツ、メタデータ、および数十億の顧客アクションを毎日取り込みます。これにより、視聴者はコンテンツをウォッチリストに追加し、動画の視聴を開始して別のデバイスでピックアップしたり、次に何を視聴するかについてのレコメンデーションを取得したりできます。

    1 日に数十億件のブックマークが Amazon Kinesis 経由で Amazon DynamoDB に取り込まれます。

    Disney+、Director of Content Discovery、Attilio Giue 氏
    プレスリリースを読む »
  • Snap Inc.

    Snap Inc. は、Amazon DynamoDB を利用することで、年間のインフラストラクチャコストを大幅に削減し、マルチメディアメッセージングアプリケーションである Snapchat のために、高速で信頼性の高いインフラストラクチャを実現しました。

    Amazon DynamoDB が提供する機能と、同サービスにおける継続的なイノベーションは、今後も DynamoDB を利用してイノベーションを続けられるという自信を当社が持てるようにしてくれます。

    Snap Inc.、エンジニアリング担当ディレクター兼インフラストラクチャ責任者、Saral Jain 氏
    導入事例を読む »