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

あるSNS企業がユーザー同士の「フォロー」「フレンド」関係を管理するDBを設計しています。主な操作は「友達の友達を3ホップ以内で検索」「共通の知人を持つユーザーのレコメンデーション」「最短経路探索」です。最適なCosmos DBのAPIはどれか?

A.Cosmos DB(Core SQL API)― ネストしたJSONでフレンドリストを表現
✗ Core SQL APIはJSON操作に優れるが、ホップ数が増えるほどグラフトラバーサルのクエリが複雑になりパフォーマンスが劣化する。
B.Cosmos DB(Cassandra API)― ワイドカラムで関係テーブルを管理
✗ Cassandra APIはワイドカラムモデルでグラフトラバーサルに最適化されていない。IoT時系列データが得意。
C.Cosmos DB(Gremlin API)← 正解
✓ 正解。Gremlin APIはApache TinkerPopグラフトラバーサル言語を使用し、ノード(ユーザー)とエッジ(フォロー関係)で構成されるグラフの多段探索・最短経路計算を効率的に実行できる。
D.Cosmos DB(MongoDB API)― ドキュメント形式でフレンドリストを配列管理
✗ MongoDB APIはドキュメントモデルでフレンドリストを配列で表現できるが、多段グラフトラバーサルはアプリ側での再帰ループが必要で効率が悪い。

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