グラフデータベース
Graph Database
ノード(点)とエッジ(線=関係)でデータを表すNoSQL。『友達の友達』のような複雑な関係をたどる処理に圧倒的に強い。SNSやレコメンドに最適。Neo4j など。
たとえ話: 人間関係の地図
グラフデータベースは、人と人を線で結んだ相関図そのものです。
- ノード(点) = 人、商品、場所などの『もの』。
- エッジ(線) = 『友達』『購入した』『住んでいる』などの『関係』。
図を描画中...
この図で『田中の友達の友達は誰?』を知りたければ、田中→佐藤→鈴木と線をたどるだけ。グラフDBはこの『たどる』処理が極めて高速です。
RDBMSとの決定的な差
同じことをRDBMSでやると、friendsテーブルを何回もJOINする必要があります。『友達の友達の友達』なら3回JOIN。階層が深くなるほどJOINが増え、爆発的に遅くなります。
グラフDBは関係を直接たどれるので、何段たどっても性能が崩れにくい。だからこそSNSの『知り合いかも』、ECの『この商品を買った人はこれも』、不正検知の『つながりの怪しさ』などに使われます。
図を描画中...
つまずきポイント
- グラフDBが輝くのは『関係をたどる』処理。単純な『この1件を取る』『合計を出す』だけなら、他のDBで十分(むしろ適している)。
- まだ新しい技術カテゴリで、ツールや日本語情報が他のDBほど豊富ではない。多くはREST API経由でアクセスする。
- 『多対多』『つながりの深さが重要』というキーワードが出たらグラフDBを思い出す。