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

パーティションキーを効率的に設計し、使用するためのベストプラクティス

DynamoDB テーブルの各項目を一意に識別する主キーは、シンプル (パーティションキーのみ)、または複合 (パーティションキーとソートキーの組み合わせ) で構成できます。

一般的に言えば、テーブルとそのセカンダリインデックスの論理的なすべてのパーティションキー全体でアクティビティが均一になるようにアプリケーションを設計する必要があります。アプリケーションが必要とするアクセスパターンを決定し、各テーブルとセカンダリインデックスが必要とする RCU と WCU の合計を予想することができます。

トラフィックが流れ始めると、指定されたパーティションキーのトラフィックが 3,000 RCU または 1,000 WCU を超えない限り、DynamoDB はプロビジョニングしたスループットを使用してアクセスパターンを自動的にサポートします。

バーストキャパシティーを効率的に使用する

DynamoDB は、バーストキャパシティーを以下のように設定することで、パーティションごとのスループットプロビジョニングに柔軟性をもたらします。パーティションのスループット利用率が高くない場合、DynamoDB は、スループットの利用率がバーストした場合に備えて、未使用のキャパシティーの一部を予約して利用率のスパイクに対応します。

現在 DynamoDB では、未使用の読み込みおよび書き込みキャパシティーは最大 5 分 (300 秒) 保持されます。 読み込みや書き込みのアクティビティの急激なバーストが頻繁に発生しない場合は、このような追加のキャパシティーユニットがすぐに消費される場合があります (テーブルに対して定義した 1 秒あたりのプロビジョンドスループット性能よりも速く消費されます)。

また、DynamoDB はバックグラウンドメンテナンスやその他のタスクのために予告なしにバーストキャパシティーを消費する場合があります。

これらのバーストキャパシティーの詳細は将来変更される可能性があります。

DynamoDB アダプティブキャパシティーを理解する

読み書きアクティビティは常に均等に分散できるとは限りません。データアクセスが不均等の場合は、他のパーティションと比較して、「ホット」パーティションに大容量の読み書きトラフィックが送信されることがあります。極端なケースでは、1 つのパーティションに 3,000 個以上の RCU または 1,000 個の WCU が送信され、スロットルが発生します。

不均等なアクセスパターンに対応できるように、DynamoDB アダプティブキャパシティーを使用することで、スロットリングすることなく、アプリケーションでホットパーティションに対して読み書きを継続することができます。ただし、トラフィックは、プロビジョニングされた合計キャパシティーまたはパーティションの最大キャパシティーを超えないものとします。アダプティブキャパシティーでは、さらに多くのトラフィックを受け取るパーティションのスループットキャパシティーを自動的に増加させます。

また、アダプティブキャパシティーは、すべての DynamoDB テーブルに対して自動的に有効になるため、明示的に有効または無効にする必要はありません。

注記

ホットパーティションのスロットリングが開始してから、アダプティブキャパシティーがアクティベートされるまでには、通常 5 分から 30 分の間隔があります。

次の図は、アダプティブキャパシティーの機能を示しています。例に示すテーブルのプロビジョニングでは、4 つのパーティション間で 400 書き込みキャパシティーユニット (WCU) が均等に共有されることで、各パーティションで 1 秒間に最大 100 WCU を維持できます。パーティション 1、2、3 はそれぞれ 1 秒間で 50 WCU の書き込みトラフィックを受信しますが、パーティション 4 は 1 秒間で 150 WCU を受信します。このホットパーティションには書き込みトラフィックを受け入れても未使用のバーストキャパシティーがあります。しかし、最終的には 1 秒間に 100 WCU を超えるトラフィックのスロットリングとなります。

DynamoDB アダプティブキャパシティーはパーティション 4 のキャパシティーを増大して応答するため、このパーティションはスロットリングされることなく、150 WCU/秒 の高度なワークロードを維持できます。