Amazon DynamoDB テーブルに適切なプライマリキーを選択するにはどうすればよいですか?

最終更新日: 2022 年 9 月 19 日

Amazon DynamoDB テーブルのプライマリキーを選択する際の考慮事項を知りたいと考えています。

簡単な説明

DynamoDB には、2 つのタイプのプライマリキーがあります。

  • パーティションキー: これは単純なプライマリキーです。テーブルにパーティションキーしかない場合、2 つの項目が同じパーティションキー値を持つことはできません。
  • 複合プライマリキー: これは、パーティションキーとソートキーの組み合わせです。テーブルに複合プライマリキーがある場合、2 つの項目が同じパーティションキー値を持てる可能性があります。ただし、これらの項目のソートキー値は異なるようにする必要があります。

プライマリキーは、選択したプライマリキーの種類にかかわらず、テーブル内の項目ごとに一意である必要があります。適切なプライマリキーを選択しないと、データ分散が不均等になり、ホットキーによってスロットリング (ProvisionedThroughputExceededException) が発生する可能性があります。

解決方法

プライマリキーを選択するときは、次の 1 つ以上の戦略を使用します。

  • High-Cardinality 属性を使用する: パーティションキーは、ユーザー ID、E メール、電話番号など、項目ごとに一意の値を持つ属性である必要があります。
  • 複合属性を使用する: 複数の属性を組み合わせてプライマリキーを形成します。たとえば、パーティションキーの顧客 ID、製品 ID、国コードを組み合わせた「注文」テーブルがあり、注文日をソートキーとして使用するとします。これにより、各項目が一意のプライマリキーを持つ可能性が高くなります。
  • パーティションキーに乱数を追加する: 書き込みの多いユースケースの場合、事前に定義された範囲からパーティションキーに乱数を追加することを検討してください。これにより、パーティションキーのランダム性が向上します。詳細については、書き込みシャーディングを使用してワークロードを均等に分散するを参照してください。

これらの各戦略の詳細については、正しい DynamoDB パーティションキーの選択を参照してください。