あるEコマース企業が、商品カタログをDynamoDBに保存している。商品IDはランダムなUUID形式で、1日に数百万件の読み取りが均等に分散して発生する。テーブル設計においてパーティションキーとして最も適切な属性はどれか。
- A. カテゴリID(商品カテゴリごとに100〜1000件の商品が存在する)
- B. 商品ID(ランダムなUUID形式)
- C. 登録日(1日に数万件の商品が登録される)
- D. ブランドID(ブランドごとに10〜5000件の商品が存在する)
解答と解説を見る
正解: B
DynamoDBのパーティションキーは、データが各パーティションに均等に分散されるよう高カーディナリティの値を選ぶ必要がある。ランダムなUUIDは事実上すべて異なる値であるため、ホットパーティション(特定パーティションへのアクセス集中)が生じず、スロットリングのリスクが最小になる。Aのカテゴリ IDは低カーディナリティで、人気カテゴリへのアクセスが集中するホットパーティション問題が発生する。Cの登録日では同日登録の全商品が同一パーティションに集中し、書き込みスロットリングが起きやすい。DのブランドIDもカテゴリ同様に人気ブランドへのアクセスが偏り、スループットが不均等になる。