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

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

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

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

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

バースト容量を効率的に使用する

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

現在、DynamoDB は、未使用の読み込みおよび書き込み容量を最大 5 分 (300 秒) 保持します。読み込みまたは書き込みアクティビティが時折バーストする間、これらの余分な容量ユニットをすばやく消費できます。これは、テーブルに対して定義した 1 秒あたりのプロビジョンドスループット性能よりも高速です。

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

これらのバースト容量の詳細は将来変更される可能性があります。

DynamoDB アダプティブ容量を理解する

アダプティブ容量は、DynamoDB で不均等なワークロードを無限に実行することを可能にする機能です。この機能を使用すると、スループットの例外によるスロットリングを最小限に抑えることができます。また、この機能では、必要な容量にのみスループットをプロビジョニングできるため、コスト削減にもつながります。

アダプティブ容量はすべての DynamoDB テーブルで自動的に有効化されます。追加料金はありません。アダプティブ容量を明示的に有効化または無効化する必要はありません。

スループット容量を高トラフィックのパーティションに増加させる

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

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

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

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

アクセス頻度の高い項目を分離する

お使いのアプリケーションが 1 つ以上の項目に偏った高いトラフィックを送る場合、アクセス頻度の高い項目が同一パーティション内に存在しないように、アダプティブ容量によってパーティションのバランスが再調整されます。アクセス頻度の高い項目を分離することで、ワークロードが単一のパーティションのスループットクォータを超えることから生じるリクエストのスロットリングの可能性が低くなります。

お使いのアプリケーションが単一の項目に一貫して高いトラフィックを送る場合、アクセス頻度の高いその単一項目のみがパーティションに含まれるように、アダプティブ容量によってデータのバランスが再調整される場合があります。この場合、DynamoDB では、単一項目のプライマリキーに対して、最大 3,000 RCU または 1,000 WCU のパーティションのスループットを提供できます。

注記

この機能は、以下では使用できません。