難問・アンチパターン定義問題

Azure Cosmos DBのコンテナ設計で「ホットパーティション」を防ぐための正しいアプローチはどれか?

A.パーティションキーの値がすべて同じになるようにして管理を簡単にする
✗ すべて同じパーティションキー値 = 全データが1パーティションに集中 = 最大のホットパーティション。パフォーマンスの最悪ケース。
B.パーティションキーにはカーディナリティが高く(値の種類が多い)、データと書き込み負荷が均等に分散する列を選ぶ← 正解
✓ 正解。ホットパーティションを防ぐにはパーティションキーのカーディナリティが高く(多数の異なる値)、データと書き込み負荷が複数の物理パーティションに均等に分散するキーを選ぶ。ユーザーID・デバイスID・注文IDなどが典型例。
C.パーティション数を最小(1つ)に設定してデータを集中管理する
✗ パーティション数を最小にするのはホットパーティションを悪化させる。Cosmos DBはパーティション数は自動管理(パーティションキーのカーディナリティで自然に決まる)。
D.すべてのドキュメントに同じPartitionKeyを設定してクロスパーティションクエリを排除する
✗ 全ドキュメントに同じPartitionKeyを設定するのは最悪のパターン。全データが1パーティションに集中してスケールアウト不可。

DP-900:Microsoft Azure Data Fundamentals の問題一覧