テックカリキュラム

グラフDB理論入門:リレーショナルの限界を超えるデータモデル

グラフDB理論入門:リレーショナルの限界を超えるデータモデル

SNS、レコメンド、ナレッジグラフ、サプライチェーン、ネットワーク監視など、関係性(Relation)そのものがデータの本質となる領域では、RDBでは表現が複雑化し、JOINが肥大化し、性能が急激に低下します。

そこで注目されるのが グラフデータベース(Graph Database) です。本記事では、グラフDBを支える理論モデル、クエリパターン、アルゴリズム、RDBとの違いを体系的に解説します。


グラフDBとは?

グラフDBは、ノード(頂点)とエッジ(辺)で構成される「グラフ理論」に基づくデータモデルです。

(User A) ---friend---> (User B) ---liked---> (Product C) 
  • ノード(Node):人、商品、場所などの実体
  • エッジ(Edge):実体間の関係(friend, follow, buy, route)
  • プロパティ(Property):ノードやエッジに付属する属性

RDBのようにJOINを多用せず、関係を直接オブジェクトとして保持する点が最大の違いです。


データモデル:Property Graph と RDF Graph

① Property Graph(Neo4j, TigerGraph, JanusGraph)

  • ノード・エッジに自由な属性を付けられる
  • ラベル(Label)で分類可能

例:Neo4jのモデル

(user:User {id: 1, name: "Alice"})-[:FRIEND {since: 2021}]->(user:User {id: 2, name: "Bob"}) 

② RDF Graph(SPARQL, Triple Store)

RDFは以下の「三つ組」で世界を表現します:

Subject – Predicate – Object

<Alice> <knows> <Bob> 

知識表現・セマンティックウェブ、Google検索のナレッジグラフで利用。


クエリ言語:Cypher / Gremlin / SPARQL

① Cypher(Neo4j)

グラフパターンをそのまま書ける直感的な構文。

// Alice の友達を取得 MATCH (a:User {name: "Alice"})-[:FRIEND]->(friends) RETURN friends; 

② Gremlin(Apache TinkerPop)

トラバーサル(経路移動)中心のDSL。

g.V().has("name", "Alice").out("FRIEND") 

③ SPARQL(RDF)

SELECT ?friend WHERE { ?alice <name> "Alice" . ?alice <knows> ?friend . } 

グラフの中心概念:トラバーサル(Traversal)

グラフクエリの本質は 再帰的探索(Traversal) です。

  • 隣接(1-hop)探索
  • n-hop探索
  • パス探索(最短経路など)
  • コミュニティ検出(クラスタリング)

最短経路(Shortest Path)

代表的には Dijkstra法、BFS、A* が使われます。

MATCH p = shortestPath((a:City {id:1})-[:ROAD*]-(b:City {id:99})) RETURN p; 

グラフアルゴリズム:Graph Analyticsの核心

グラフDBの最大の価値は、グラフ固有のアルゴリズムが高速に実行できる点です。

① PageRank(ページ重要度)

Google検索の基礎アルゴリズム。

[ PR(v) = (1 – d) + d \sum_{u \in In(v)} \frac{PR(u)}{Out(u)} ]

② 中心性(Centrality)

  • Degree Centrality
  • Closeness Centrality
  • Betweenness Centrality

ネットワークの重要ノードを見つける。

③ Community Detection(コミュニティ検出)

  • Louvain法
  • Label Propagation

④ Path Finding(経路探索)

  • Dijkstra
  • A*
  • Bidirectional Search

RDBとグラフDBの比較

項目RDBグラフDB
JOINテーブル横断JOIN、増えるほど遅くなるエッジを直接探索するため高速
モデル表形式(リレーショナル)ノード&エッジ(グラフ理論)
用途集計・トランザクションネットワーク解析・関係探索
スケールテーブルが増えるほど複雑化関係が増えるほど強くなる

グラフDBが活きるユースケース

  • ソーシャルグラフ(友達・フォロー関係)
  • レコメンデーション(同じ商品を見たユーザー)
  • ナレッジグラフ(検索エンジン、生成AI基盤)
  • 不正検知(多数の関連から異常なパターンを検出)
  • ネットワーク管理(ルーティング、依存関係)
  • サプライチェーン管理(依存関係追跡)

特に最近は 生成AI × ナレッジグラフ が急成長しています。


高度トピック:グラフストレージとインデックス構造

  • 隣接リスト(Adjacency List)
  • 隣接行列(Adjacency Matrix)
  • Compressed Sparse Row(CSR)
  • エッジリスト(Edge List)
  • ラベルインデックス
  • パスインデックス(最短経路高速化)

多くのグラフDBは CSR + ラベルインデックス を内部に持ち、トラバーサルを高速化しています。


まとめ

  • グラフDBは「関係性」を高速に計算するためのデータモデル
  • Property Graph と RDF Graph の2系統が存在
  • Cypher / Gremlin / SPARQL は用途で使い分け
  • 最短経路、中心性、コミュニティなどグラフ固有の分析が可能
  • ナレッジグラフ・レコメンド・不正検知などで強力

RDBが苦手とする「関係の深いデータ」を扱う際、グラフDBはデータ基盤の新たな選択肢になります。