ある SNS プラットフォームが、ユーザー間の「フォロー」「フォロワー」「いいね」などの関係をデータとして管理し、「あるユーザーの友人の友人が購入した商品」のような複数ホップのトラバーサルクエリを高速に実行したい。最も適切なデータサービスはどれか。
- A. Azure Cosmos DB for Gremlin — グラフデータベースとしてノードとエッジで関係を表現しトラバーサルを最適化する
- B. Azure Table Storage — フォロー関係をキーバリューとしてフラットに格納する
- C. Azure SQL Database — JOIN 演算でユーザー間の関係を表現する
- D. Azure Cosmos DB for Cassandra — ワイドカラムで多対多関係を格納しクエリする
解答と解説を見る
正解: A
Azure Cosmos DB for Gremlin は Apache TinkerPop 互換のグラフデータベース API を提供し、ノード(頂点)とエッジ(辺)でエンティティと関係を表現する。フォロー関係のような多対多関係や、複数ホップのトラバーサル(友人の友人など)を効率的に処理するために最適化されている。選択肢 B の Azure Table Storage はフラットなキーバリュー構造であり、多段階のグラフ関係を表現・クエリするのに向いていない。選択肢 C の Azure SQL Database は JOIN でリレーションシップを扱えるが、フォロワー数百万人の多対多グラフを複数ホップトラバーサルするには深い再帰的 JOIN が必要となり、パフォーマンスが大幅に低下する。選択肢 D の Cosmos DB for Cassandra はワイドカラム型で時系列データやセンサーデータに適しているが、グラフトラバーサルに特化した機能は持たない。
📚 関連サービスの解説: Azure Cosmos DB