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

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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