Azure非リレーショナル定義問題

Cosmos DBのGremlin APIとMongoDB APIを比較したとき、「e-コマースの商品レコメンデーションエンジンで、ユーザーAが購入した商品を購入したユーザーBが次に購入した商品を探す多段トラバーサル」に最適なのはどれか?

A.Cosmos DB(MongoDB API)― 集計パイプラインで類似ユーザーを検索
✗ MongoDB APIの集計パイプラインで関係性クエリは可能だが、多段トラバーサル(ユーザー→商品→ユーザー→商品)はアプリ側での複数ラウンドトリップが必要になり効率が悪い。
B.Cosmos DB(Gremlin API)← 正解
✓ 正解。Gremlin APIのグラフトラバーサルクエリ(g.V().has('userId','A').out('purchased').in('purchased').where(neq(userA)).out('purchased'))で多段関係の探索を1クエリで効率的に実行できる。レコメンデーションエンジンにおけるグラフ活用の典型例。
C.Cosmos DB(Core SQL API)― JOINで関係性を表現
✗ Core SQL APIのJOINはCosmos DBでは同一コンテナ内のネストした配列へのJOINのみ。別ドキュメント間の多段関係探索には不向き。
D.Cosmos DB(Cassandra API)― ユーザーIDでパーティション化
✗ Cassandra APIはワイドカラムモデルでグラフトラバーサルに最適化されていない。

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