Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

グローバルテーブル: この機能の説明

以下のセクションは、Amazon DynamoDB におけるグローバルテーブルの概念および動作を理解するのに役立ちます。

グローバルテーブルの概念

グローバルテーブルは、1 つ以上のレプリカテーブルのコレクションであり、1 つの AWS アカウントによってすべて所有されています。

レプリカテーブル (または短縮してレプリカ) は、グローバルテーブルの一部として機能する 1 つの DynamoDB テーブルです。各レプリカには、同一のデータ項目セットが格納されています。所定のグローバルテーブルには、AWS リージョンごとにレプリカテーブルを 1 つのみ含むことができます。

以下は、グローバルテーブルの作成方法を示す概念的な概要です。

  1. DynamoDB ストリーム が有効になっている通常の DynamoDB テーブルを AWS リージョンに作成します。

  2. データをレプリケートするその他すべてのリージョンで、ステップ 1 を繰り返します。

  3. 作成したテーブルに基づき、DynamoDB のグローバルテーブルを定義します。

これらのタスクは、AWS マネジメントコンソール を使用して自動化できるため、すばやく簡単にグローバルテーブルを作成することができます。詳細については、「グローバルテーブルを作成する」を参照してください。

作成された DynamoDB グローバルテーブルは、リージョンごとに複数のレプリカテーブルで構成されています。DynamoDB はこのレプリカテーブルを単一のユニットとして扱います。レプリカのテーブル名はすべて同一であり、各レプリカには同一のプライマリキースキーマが含まれています。アプリケーションによって、1 つのリージョンのレプリカテーブルにデータが書き込まれると、DynamoDB はその書き込みを他の AWS リージョンの他のレプリカテーブルに自動的に伝達します。

重要

テーブルデータの同期を維持するため、グローバルテーブルは、各項目に対して次の属性を自動的に作成します。

  • aws:rep:deleting

  • aws:rep:updatetime

  • aws:rep:updateregion

これらの属性を変更したり、同じ名前の属性を作成したりしないでください。

レプリカテーブルをグローバルテーブルに追加すると、他のリージョンでも利用できるようになります。(そのためには、グローバルテーブルを空にする必要があります。つまり、すべてのデータを追加できるレプリカテーブルはありません。)

また、グローバルテーブルからレプリカテーブルを削除することもできます。削除すると、テーブルはグローバルテーブルから関連付けが完全に解除されます。この新しく独立したテーブルとグローバルテーブルはどちらからもアクセスすることができないため、グローバルテーブルとの間でデータが伝達されることはありません。

整合性および競合解決

レプリカテーブルにあるいずれかの項目を変更すると、同一グローバルテーブル内のその他のすべてのレプリカにレプリケートされます。グローバルテーブルで、新しく書き込まれた項目は、通常数秒以内にすべてのレプリカに伝達されます。

グローバルテーブルの各レプリカテーブルには、同一のデータ項目セットが格納されています。 DynamoDB では、一部の項目のみの部分的なレプリケーションはサポートされていません。

アプリケーションを使用して、任意のレプリカテーブルに対してデータの読み取りまたは書き込みを行うことができます。アプリケーションで、結果整合性のある読み込みのみを使用し、1 つの AWS リージョンに対する読み込みのみを行う場合、変更は不要です。ただし、アプリケーションで、強力な整合性のある読み込みが必要な場合は、強力な整合性のあるすべての読み込みおよび書き込みを同じリージョンで行う必要があります。DynamoDB では、リージョン間で強力な整合性のある読み込みはサポートされていません。そのため、1 つのリージョンに書き込み、別のリージョンから読み込む場合は、他のリージョンで最近完了した書き込みの結果が反映されていない古いデータが読み取り応答に含まれることがあります。

アプリケーションでほぼ同時に別のリージョンの同じ項目を更新すると、競合が生じる場合があります。結果整合性を確保するために、DynamoDB グローバルテーブルでは、同時更新間の最新書き込みの照合を行います。ここで、DynamoDB はできる限り、最新書き込みを採用します。この競合の解決メカニズムを使用すると、レプリカはすべて最新アップデートに対応し、すべてのレプリカに同一データが含まれる状態にコンバージされます。

可用性と耐久性

単一の AWS リージョンが分離するか、パフォーマンスが低下した場合、アプリケーションは別のリージョンにリダイレクトされ、別のレプリカテーブルに対して読み込みおよび書き込みが行われます。リクエストが他のリージョンにリダイレクトされるタイミングを判断するには、カスタムのビジネスロジックを適用します。

リージョンが分離するか、パフォーマンスが低下した場合、DynamoDB は、実行されている書き込みをすべて追跡しますが、この時点ではどのレプリカテーブルにも伝達されていません。リージョンがオンラインに戻ると、DynamoDB はそのリージョンから他のリージョンのレプリカテーブルへ、保留中の書き込みの伝達を再開します。また、他のレプリカテーブルから、オンラインに戻ったリージョンへの書き込みの伝達も再開されます。