実戦シナリオ定義問題

あるECサイトが「商品ページの閲覧履歴・カートに入れた商品・購入履歴を組み合わせて、各ユーザーにパーソナライズされた商品レコメンデーションを表示する」機能を開発します。データ量は1億ユーザー×数千商品、リコメンド応答は100ms以内が要件です。最適なデータストアはどれか?

A.Azure SQL Database(Hyperscale)― 全履歴をリレーショナルで管理、JOINで類似ユーザーを検索
✗ 1億ユーザーの全履歴をリレーショナルで管理し、JOINで類似ユーザーをリアルタイム探索すると100ms以内の応答は困難。スケールとレイテンシの両立が難しい。
B.Azure Synapse Analytics(Dedicated SQL Pool)― 全ユーザーデータを集計してバッチでレコメンド生成
✗ バッチでのレコメンド生成(例:毎日更新)は可能だが、リアルタイムの100ms以内の応答要件にはバッチジョブは不適。
C.Cosmos DB(Core SQL API)― ユーザーIDをパーティションキーにしてプロファイルを管理← 正解
✓ 正解。Cosmos DBはユーザーIDをパーティションキーにすることで一桁ミリ秒の読み取りレイテンシを保証。スキーマレスJSONで閲覧履歴・カート・購入履歴などの可変データを1ドキュメントに格納でき、100ms以内のレコメンドAPI応答が可能。
D.Azure Table Storage ― ユーザーIDをPartitionKeyに、商品IDをRowKeyに設定
✗ Table StorageはCosmos DB Table APIよりパフォーマンスSLAが弱く、複雑なプロファイルデータの管理や1億ユーザー規模では限界がある。

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