グローバルテーブル – DynamoDB の複数リージョンレプリケーション
Amazon DynamoDB グローバルテーブルにより、フルマネージドで、マルチリージョン、マルチアクティブなデータベースオプションが提供されます。このオプションでは、大規模に拡張されたグローバルアプリケーションからの読み込み/書き込みのパフォーマンスが高速に、かつローカルに実現されます。
グローバルテーブルは、マルチリージョン、マルチアクティブデータベースをデプロイするためのフルマネージドソリューションです。独自のレプリケーションソリューションを構築および管理する必要はありません。テーブルを利用したい AWS リージョンを指定すると、DynamoDB が進行中のデータ変更をそれらすべてに伝播します。グローバルテーブルは、すべてのグローバルリージョンで使用できます。
グローバルテーブルを使用する具体的な利点は次のとおりです。
選択する AWS リージョン全体で DynamoDB テーブルを自動的にレプリケートする
リージョン間でデータをレプリケートし、更新の競合を解決するという困難な作業が不要になるため、アプリケーションのビジネスロジックに集中できます。
可能性は低いものの、リージョン全体が分離またはパフォーマンスが低下した場合でも、アプリケーションの可用性を高く保つのに役立ちます。
DynamoDB グローバルテーブルは、グローバルに分散したユーザーがいる場合など、大規模にスケールされたアプリケーションを使用する場合に最適です。このような環境では、ユーザーは、非常に高速なアプリケーションパフォーマンスを期待します。グローバルテーブルでは、マルチアクティブレプリケーションを世界中の AWS リージョンに自動的に提供できます。ユーザーがどこにいても、低レイテンシーでデータを提供することができます。
次の動画では、グローバルテーブルの概要を紹介します。
グローバルテーブルは、AWS 管理コンソールまたは AWS CLI で設定できます。グローバルテーブルは既存の DynamoDB API を使用するため、アプリケーションを変更する必要はありません。プロビジョニングされたリソースに対してのみ料金が発生します。前払い料金や契約はありません。
トピック
グローバルテーブルを使用してリージョン間でシームレスにデータをレプリケートする
米国東海岸、米国西海岸、西ヨーロッパという 3 つの地域領域にわたる大規模な顧客ベースがあるとします。これらのユーザーは、アプリケーションの使用中に自分のプロファイル情報を更新できます。このユースケースを満たすには、ユーザーが所在する 3 つの異なる CustomerProfiles
リージョンで、AWS という名前の同一の DynamoDB テーブルを 3 つ作成する必要があります。これらの 3 つのテーブルは互いに完全に分離され、1 つのテーブルのデータを変更しても他のテーブルに反映されることはありません。マネージド型のレプリケーションソリューションを使用しない場合、コードを書き込んで、データ変更をレプリケートする必要があります。ただし、これを行うには時間も労力もかかります。
独自のコードを書き込む代わりに、3 つのリージョン固有の CustomerProfiles
テーブルで構成されるグローバルテーブルを作成できます。DynamoDB は、これらのテーブル間でデータの変更を自動的にレプリケートし、1 つのリージョンの CustomerProfiles
データへの変更が他のリージョンにシームレスに伝播されるようにします。さらに、いずれかの AWS リージョンが一時的に利用できない場合は、顧客は他のリージョンの同じ CustomerProfiles
データにアクセスできます。
注記
-
グローバルテーブル グローバルテーブルバージョン 2017.11.29 (レガシー) のリージョンのサポートは、米国東部 (バージニア北部)、米国東部 (オハイオ)、米国西部 (北カリフォルニア)、米国西部 (オレゴン)、欧州 (アイルランド)、欧州 (ロンドン)、欧州 (フランクフルト)、アジアパシフィック (シンガポール)、アジアパシフィック (シドニー)、アジアパシフィック (東京)、アジアパシフィック (ソウル) に制限されています。
-
トランザクションオペレーションは、書き込みが最初に行われたリージョン内でのみ、不可分性、一貫性、分離性、および耐久性 (ACID) を保証します。グローバルテーブルのリージョン間では、トランザクションはサポートされていません。たとえば、米国東部(オハイオ)および米国西部(オレゴン)リージョンにレプリカを持つグローバルテーブルがあり、米国東部(バージニア北部)リージョンで TransactWriteItems オペレーションを実行する場合、変更がレプリケートされると米国西部(オレゴン)で部分的に完了したトランザクションを確認できます。変更は、ソースリージョンでコミットされると、他のリージョンにのみレプリケートされます。
-
AWS リージョンを無効にすると、DynamoDB は、AWS リージョンにアクセスできないことが検出されてから 20 時間後に、このレプリカをレプリケーショングループから削除します。レプリカは削除されず、このリージョンとの間でレプリケーションが停止します。
-
ソーステーブルを正常に削除するには、リードレプリカを追加してから 24 時間待つ必要があります。リードレプリカを追加してから最初の 24 時間以内にテーブルを削除しようとすると、「過去 24 時間以内にテーブルに追加された新しいレプリカのソースリージョンとして機能しているため、レプリカを削除できません」というエラーメッセージが表示されます。
-
新しいレプリカを追加しても、ソースリージョンのパフォーマンスへの影響はありません。
-
レプリカの読み取りキャパシティと書き込みキャパシティを変更すると、新しい書き込みキャパシティは他の同期レプリカに反映されますが、新しい読み取りキャパシティは反映されません。
AWS リージョンの対応状況と料金については、「Amazon DynamoDB 料金
AWS KMS を使用してグローバルテーブルにセキュリティとアクセスを提供する
-
カスタマーマネージドキーまたはレプリカの暗号化に使用される AWS マネージドキー に対して
AWSServiceRoleForDynamoDBReplication
サービスにリンクされたロールを使用して、グローバルテーブルの AWS KMS オペレーションを実行できます。 -
レプリカの暗号化に使用されるカスタマーマネージドキーにアクセスできない場合、DynamoDB はこのレプリカをレプリケーショングループから削除します。KMS キーにアクセスできないことが検出されてから 20 時間後に、レプリカは削除されず、このリージョンとの間でレプリケーションが停止します。
-
レプリカテーブルの暗号化に使用されるカスタマーマネージドキー を無効にする場合は、キーがレプリカテーブルの暗号化に使用されなくなった場合にのみ無効にする必要があります。レプリカテーブルを削除するコマンドを発行した後、キーを無効にする前に、削除オペレーションが完了し、グローバルテーブルが
Active
になるのを待つ必要があります。そうしないと、レプリカテーブルとの間で部分的なデータレプリケーションが行われる可能性があります。 -
レプリカテーブルの IAM ロールポリシーを変更または削除する場合は、レプリカテーブルが
Active
状態のときに行う必要があります。この操作を行わないと、レプリカテーブルの作成、更新、削除が失敗する可能性があります。 -
グローバルテーブルは、作成時、デフォルトで削除保護が無効になっています。グローバルテーブルで削除保護が有効になっている場合でも、そのテーブルのレプリカの最初の状態ではデフォルトで削除保護が無効になっています。
-
テーブルの削除保護が無効になっている間は、誤って削除される可能性があります。テーブルの削除保護が有効になっている間は、誰も削除できません。
-
1 つのレプリカテーブルの削除保護設定を変更しても、グループ内の他のレプリカは更新されません。
注記
カスタマーマネージドキーは、グローバルテーブルバージョン 2017.11.29 (レガシー) でサポートされていません。DynamoDB グローバルテーブルでカスタマーマネージドキーを使用する場合は、テーブルをグローバルテーブルバージョン 2019.11.21 (現行) にアップグレードしてから有効にする必要があります。