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

グローバルテーブルを管理するためのベストプラクティスと要件

Amazon DynamoDB グローバルテーブルを使用すると、テーブルデータを AWS リージョン間でレプリケートできます。データが適切にレプリケートされるように、グローバルテーブル内のレプリカテーブルとセカンダリインデックスにも、書き込みキャパシティーが同じように設定されていることが重要です。

新しいレプリカテーブルを追加する要件

新しいレプリカテーブルをグローバルテーブルに追加するには、以下のすべての条件が満たされている必要があります。

  • その他すべてのレプリカと同じパーティションキーがテーブルに含まれている。

  • テーブルは、同じ指定した書き込みキャパシティー管理設定である必要があります。

  • テーブルの名前が、その他すべてのレプリカと同じ名前である。

  • 項目の新しいイメージと古いイメージの両方を含むストリームで、テーブルの DynamoDB ストリーム が有効になっている。

  • このグローバルテーブルの新規または既存のレプリカテーブルにはデータを含むことはできません。

グローバルセカンダリインデックスが指定されている場合は、次の条件も満たす必要があります。

  • グローバルセカンダリインデックスにも同じ名前が設定されている。

  • グローバルセカンダリインデックスのパーティションキーとソートキー (存在する場合) にも同じ名前が設定されている。

重要

書き込みキャパシティーの設定は、すべてのグローバルテーブルのレプリカテーブルおよび一致するセカンダリインデックスに対して一貫性があるように設定する必要があります。グローバルテーブルの書き込みキャパシティーを更新するには、DynamoDB コンソールまたは UpdateGlobalTableSettings API オペレーションを使用することを強くお勧めします。UpdateGlobalTableSettings は、自動的にグローバルテーブル内のすべてのレプリカテーブルおよび一致するセカンダリインデックスに書き込みキャパシティーの設定の変更を適用します。UpdateTableRegisterScalableTarget、あるいは PutScalingPolicy オペレーションを使用する場合には、各レプリカテーブルおよび一致するセカンダリインデックスに個別に変更を適用する必要があります。詳細については、Amazon DynamoDB API Reference の「UpdateGlobalTableSettings」を参照してください。

プロビジョニングされた書き込みキャパシティー設定を管理するために、Auto Scaling を有効にすることが強く推奨されます。書き込みキャパシティー設定を手動で管理する場合は、すべてのレプリカテーブルと同等のレプリケートされた書き込みキャパシティーユニットをプロビジョニングする必要があります。また、グローバルテーブル全体で一致するセカンダリインデックスには、レプリケートされた同等の書き込みキャパシティーユニットをプロビジョニングします。

また、適切な AWS Identity and Access Management (IAM) 権限も必要です。詳細については、「グローバルテーブルで IAM を使用する」を参照してください。

キャパシティーを管理するためのベストプラクティスと要件

DynamoDB でレプリカテーブルの容量設定を管理するときは、以下の点を考慮に入れてください。

DynamoDB Auto Scaling の使用

プロビジョニングモードを使用するレプリカテーブルのスループットキャパシティー設定を管理するには、DynamoDB Auto Scaling を使用する方法をお勧めします。DynamoDB Auto Scaling は各レプリカテーブルの読み込みキャパシティーユニット (RCU) および書き込みキャパシティーユニット (WCU) を、実際のアプリケーションワークロードに基づいて、自動的に調整します。詳細については、「DynamoDB Auto Scaling によるスループットキャパシティーの自動管理」を参照してください。

AWS マネジメントコンソール を使用してレプリカテーブルを作成すると、Auto Scaling が各レプリカテーブルに対してデフォルトで有効になります。この際、読み込みキャパシティーユニットおよび書き込みキャパシティーユニットを管理するデフォルトの Auto Scaling 設定が使用されます。

DynamoDB コンソールを介して、あるいは UpdateGlobalTableSettings 呼び出しを使用して、レプリカテーブルあるいはセカンダリインデックスの Auto Scaling 設定に行う変更は、グローバルテーブルのすべてのレプリカテーブルおよび一致するセカンダリインデックスに対して自動的に適用されます。これらの変更により、すべての既存の Auto Scaling 設定が上書きされます。これによって、プロビジョニングされた書き込みキャパシティーは、グローバルテーブルのすべてのレプリカテーブルおよび一致するセカンダリインデックスを通して一貫性があるようになります。UpdateTableRegisterScalableTarget、あるいは PutScalingPolicy 呼び出しを使用する場合には、各レプリカテーブルおよび一致するセカンダリインデックスに個別に変更を適用する必要があります。

注記

Auto Scaling がアプリケーションの容量の変更を満たさない場合 (予測不可能なワークロード) や、その設定を行わない場合 (最小、最大、または使用率しきい値のターゲット設定)、オンデマンドモードを使用してグローバルテーブルの容量を管理できます。詳細については、「オンデマンドモード」を参照してください。

グローバルテーブルでオンデマンドモードを有効にした場合、レプリケートされた書き込みリクエストユニット (rWCU) の消費は、rWCU のプロビジョニング方法と整合します。たとえば、2 つの追加リージョンにレプリケートされるローカルテーブルに対して書き込みを 10 回実行した場合、書き込みリクエストユニットが 60 個消費されます (10 + 10 + 10 = 30、30 x 2 = 60)。

手動による容量管理

DynamoDB Auto Scaling を使用しない場合は、各レプリカテーブルおよびセカンダリインデックスの読み込みキャパシティーおよび書き込みキャパシティーを手動で設定する必要があります。

すべてのレプリカテーブルでレプリケートされたプロビジョンド書き込みキャパシティーユニット (rWCU) は、全リージョンにおけるアプリケーションの書き込みに必要な rWCU 合計数の 2 倍に設定する必要があります。これにより、ローカルリージョンで発生するアプリケーションの書き込みと、他のリージョンからのレプリケートされたアプリケーションの書き込みに対応できます。たとえば、オハイオ州のレプリカテーブルに 1 秒間に 5 回の書き込みを、バージニア北部のレプリカテーブルに 1 秒間に 5 回の書き込みを行うとします。この場合、各レプリカテーブルに 20 個の WCU をプロビジョニングする必要があります (5 + 5 = 10、10×2 = 20)。

グローバルテーブルの書き込みキャパシティーを更新するには、DynamoDB コンソールまたは UpdateGlobalTableSettings API オペレーションを使用することを強くお勧めします。UpdateGlobalTableSettings は、自動的にグローバルテーブル内のすべてのレプリカテーブルおよび一致するセカンダリインデックスに書き込みキャパシティーの設定の変更を適用します。UpdateTableRegisterScalableTarget、あるいは PutScalingPolicy オペレーションを使用する場合には、各レプリカテーブルおよび一致するセカンダリインデックスに個別に変更を適用する必要があります。詳細については、「Amazon DynamoDB API Reference」を参照してください。

注記

DynamoDB のグローバルテーブルの設定 (UpdateGlobalTableSettings) を更新するには、 dynamodb:UpdateGlobalTabledynamodb:DescribeLimitsapplication-autoscaling:DeleteScalingPolicy および application-autoscaling:DeregisterScalableTarget のアクセス許可が必要です。詳細については、「グローバルテーブルで IAM を使用する」を参照してください。