SDN
← 概念一覧へ
データベース

グラフデータベース

Graph Database

ノード(点)とエッジ(線=関係)でデータを表すNoSQL。『友達の友達』のような複雑な関係をたどる処理に圧倒的に強い。SNSやレコメンドに最適。Neo4j など。

キーポイント
  • 抽象モデルはグラフ。ノード = レコード、arc(エッジ) = ノード間の関係。
  • 多対多の関係や、多数の外部キーで結ばれたデータに最適。
  • ソーシャルネットワークのような複雑な関係を高速にたどれる。
  • 比較的新しく、ツールやリソースがまだ少なめ。多くはREST API経由でアクセスする。
トレードオフ

『関係をたどる』処理(友達の友達、推薦経路)が他のどのDBより速い。RDBMSで多段JOINすると激重になる処理を、グラフDBは自然かつ高速に表現できる。一方、まだ新しくエコシステム(ツール・人材・情報)が成熟していない。また、単純な大量データの保存や集計が主目的なら、グラフDBである必要はない。

たとえ話: 人間関係の地図

グラフデータベースは、人と人を線で結んだ相関図そのものです。

  • ノード(点) = 人、商品、場所などの『もの』。
  • エッジ(線) = 『友達』『購入した』『住んでいる』などの『関係』。
図を描画中...

この図で『田中の友達の友達は誰?』を知りたければ、田中→佐藤→鈴木と線をたどるだけ。グラフDBはこの『たどる』処理が極めて高速です。

RDBMSとの決定的な差

同じことをRDBMSでやると、friendsテーブルを何回もJOINする必要があります。『友達の友達の友達』なら3回JOIN。階層が深くなるほどJOINが増え、爆発的に遅くなります。

グラフDBは関係を直接たどれるので、何段たどっても性能が崩れにくい。だからこそSNSの『知り合いかも』、ECの『この商品を買った人はこれも』、不正検知の『つながりの怪しさ』などに使われます。

図を描画中...

つまずきポイント

  • グラフDBが輝くのは『関係をたどる』処理。単純な『この1件を取る』『合計を出す』だけなら、他のDBで十分(むしろ適している)。
  • まだ新しい技術カテゴリで、ツールや日本語情報が他のDBほど豊富ではない。多くはREST API経由でアクセスする。
  • 『多対多』『つながりの深さが重要』というキーワードが出たらグラフDBを思い出す。

関連する概念

この概念で腕試し

関連する 0 問のクイズに挑戦できます。

クイズを解く