実戦シナリオ定義問題

ある小売チェーンのデータチームがCosmosDB(Core SQL API)で店舗の商品レビューデータを管理しています。各レビューには「store_id(店舗ID)」「product_id(商品ID)」「rating(評価)」「review_text(テキスト)」「timestamp(日時)」が含まれます。「特定店舗の商品レビューを効率的に取得する」クエリが多い場合、最適なパーティションキーはどれか?

A.rating(評価:1〜5の値)
✗ ratingは1〜5の5種類しか値がない(カーディナリティが低い)。すべてのデータが5つのパーティションに偏って格納され、「特定店舗のレビュー取得」クエリでもクロスパーティションクエリが発生しやすい。
B.timestamp(日時)
✗ timestampは高カーディナリティだが、「特定店舗のレビュー取得」クエリで特定の店舗のデータが複数パーティションに分散し、クロスパーティションクエリが必要になる。また最新タイムスタンプのパーティションに書き込みが集中するホットパーティション問題が発生する。
C.store_id(店舗ID)← 正解
✓ 正解。store_idは中〜高カーディナリティで、同じ店舗のすべてのレビューが同一パーティションに格納される。「特定店舗のレビュー取得」はシングルパーティションクエリとなり高効率。書き込みも全店舗に分散する。
D.review_text(レビューテキスト)
✗ review_textはフリーテキストでカーディナリティは高いが、意味のある分散単位ではなく「特定店舗のレビュー取得」クエリでクロスパーティションが頻発する。

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