あるソーシャルメディア企業が、ユーザー間の「フォロー」「友達申請」「グループメンバーシップ」などの関係性データを管理するデータベースを設計しています。 主な要件は以下の通りです。 ・「ユーザー A から3ホップ以内の繋がり」を高速にクエリする ・共通の友人数をもとにした「知り合いかも」レコメンデーション機能 ・数億ノード・数十億エッジ規模のデータを扱う この要件に最も適した AWS マネージドデータベースサービスはどれですか? ※ ホップ:グラフ上でノードからノードへの1ステップの移動を指す
Amazon Neptune はグラフデータベースに特化したマネージドサービスで、Property Graph(Gremlin / openCypher)と RDF(SPARQL)の両クエリ言語をサポートしています。ホップ数を指定したグラフトラバーサルや共通ノードのパターンマッチングをネイティブに処理でき、ソーシャルグラフやレコメンデーションエンジンのユースケースに最適です。 選択肢BのDynamoDBは隣接リストパターンでグラフ構造を表現することは可能ですが、マルチホップのトラバーサルはアプリケーション側で複数のクエリを繰り返す必要があり、深い探索では非効率です。 選択肢CのRDS PostgreSQL+再帰CTEはグラフ探索を記述できますが、リレーショナルエンジンは数億ノード・数十億エッジ規模のトラバーサルに対するスケーラビリティが限定されます。 選択肢DのOpenSearch Serviceは全文検索・ログ分析・集計に優れますが、グラフトラバーサルや関係性の多段探索には対応していません。