パーティションキーを効率的に設計し、使用するためのベストプラクティス - 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 はそれぞれ 1 秒間で 50 WCU の書き込みトラフィックを受信しますが、パーティション 4 では 1 秒間で 150 WCU を受信します。このホットパーティションには書き込みトラフィックを受け入れても未使用のバーストキャパシティーがあります。しかし、最終的には 1 秒間に 100 WCU を超えるトラフィックのスロットリングとなります。

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

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

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

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

注記

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