DynamoDB グローバルテーブルのスループットキャパシティプランニング
リージョン間でトラフィックを移行する場合は、キャパシティに関する DynamoDB テーブルの設定を慎重に考慮する必要があります。
書き込みキャパシティの管理に関する考慮事項は以下のとおりです。
グローバルテーブルは、オンデマンドモードにするか、自動スケーリングを有効にしてプロビジョニングする必要があります。
自動スケーリングでプロビジョニングした場合、書き込み設定 (最小使用率、最大使用率、およびターゲット使用率) はリージョン間でレプリケートされます。自動スケーリングの設定は同期されますが、実際にプロビジョニングされた書き込みキャパシティは、リージョン間で独立して変動する可能性があります。
プロビジョニングされた書き込みキャパシティが異なる場合がある理由の 1 つは、TTL 機能によるものです。DynamoDB で TTL を有効にすると、項目の有効期限を秒単位の Unix エポック時間形式の値として示す属性名を指定できます。その後、DynamoDB は書き込みコストを発生させずに項目を削除できます。グローバルテーブルを使用すると、任意のリージョンで TTL を設定でき、その設定はグローバルテーブルに関連付けられている他のリージョンに自動的にレプリケートされます。項目が TTL ルールで削除の対象となった場合、削除はどのリージョンでも実行できます。削除オペレーションはソーステーブルの書き込みユニットを消費せずに実行されますが、レプリカテーブルは削除オペレーションのレプリケートされた書き込みを受け取るため、レプリケートされた書き込みユニットのコストが発生します。
自動スケーリングを使用する場合は、プロビジョニングされた最大書き込みキャパシティの設定が、すべての書き込みオペレーションとすべての潜在的な TTL 削除オペレーションを処理するのに十分な大きさであることを確認してください。自動スケーリングは、書き込み消費量に応じて各リージョンを調整します。オンデマンドテーブルには、プロビジョニングされた最大書き込みキャパシティの設定はありませんが、テーブルレベルの最大書き込みスループット制限により、オンデマンドテーブルが許可する最大持続書き込みキャパシティが指定されます。デフォルトの制限は 40,000 ですが、調整可能です。オンデマンドテーブルに必要となるすべての書き込みオペレーション (TTL 書き込みオペレーションを含む) を処理できるように、この値を十分に高く設定することをお勧めします。グローバルテーブルを設定する場合、この値は参加しているすべてのリージョンで同じでなければなりません。
読み取りキャパシティの管理に関する考慮事項は以下のとおりです。
読み取りキャパシティの管理に関する設定は、リージョンごとに読み取りパターンが異なることが想定されているため、リージョン間で異なることが許容されます。グローバルレプリカを初めてテーブルに追加すると、ソースリージョンのキャパシティが反映されます。作成後、読み取りキャパシティの設定は調整できますが、この調整した設定は反対側には転送されません。
DynamoDB 自動スケーリングを使用するときは、プロビジョニングされた最大読み取りキャパシティの設定が、すべてのリージョンのすべての読み取りオペレーションを処理するのに十分な大きさであることを確認してください。標準的なオペレーション時には、読み取りキャパシティがリージョン全体に分散される可能性がありますが、フェイルオーバー時には、テーブルが読み取りワークロードの増大に自動的に対応できなければなりません。オンデマンドテーブルにはプロビジョニングされた最大読み取りキャパシティの設定はありませんが、テーブルレベルの最大読み取りスループット制限により、オンデマンドテーブルが許容する最大持続読み取りキャパシティが指定されます。デフォルトの制限は 40,000 ですが、調整可能です。すべての読み取りオペレーションをこの単一のリージョンにルーティングする場合、テーブルが必要とするすべての読み取りオペレーションを処理できるように、この値を十分に高く設定することをお勧めします。
あるリージョンのテーブルが通常は読み取りトラフィックを受信しないが、フェイルオーバー後に大量の読み取りトラフィックを吸収しなければならない場合は、テーブルのプロビジョニングされた読み取りキャパシティを増やし、テーブルの更新が完了するのを待ってから、テーブルを再度プロビジョニングできます。テーブルをプロビジョニングモードのままにすることも、オンデマンドモードに切り替えることもできます。これにより、テーブルが事前にウォームアップされ、より高いレベルの読み取りトラフィックを受け入れることができます。
ARC には、準備状況チェック機能があり、Route 53 を使用してリクエストをルーティングするかどうかにかかわらず、DynamoDB リージョン間でテーブル設定とアカウントクォータが同じであることを確認するのに役立ちます。準備状況チェックは、アカウントレベルのクォータを調整して相互に一致させる場合にも役立ちます。