【ねおふぉーじぇい】

Neo4j とは?

💡 「誰と誰がつながっている?」を爆速で答えるデータベース
📌 このページのポイント
グラフDB(Neo4j)vs リレーショナルDB グラフDB 田中 鈴木 佐藤 映画A 友達 同僚 友達 好き リレーショナルDB users テーブル id name 1 田中 2 鈴木 friendships テーブル user_id friend_id 1 2 1 3 深い関係の探索には 多重JOINが必要 → 低速 グラフをたどるだけ → 高速
グラフDB(ノード+エッジ)とRDB(テーブル+JOIN)の違い
ひよこ ひよこ

グラフデータベースって普通のデータベースと何が違うの?

ペンギン先生 ペンギン先生

リレーショナルDBはデータを表(テーブル)で管理するけど、グラフDBはノード(点)とリレーションシップ(線)で管理するんだ。「AさんはBさんの友達で、BさんはCさんの同僚」みたいな関係をそのまま格納できるよ。

ひよこ ひよこ

テーブルJOINでも同じことできない?

ペンギン先生 ペンギン先生

浅い関係なら大丈夫だけど、「友達の友達の友達の…」と深くたどるとJOINが何重にもなって爆発的に遅くなるんだ。Neo4jならグラフをたどるだけだから、何段階でも一定速度で検索できるよ。

ひよこ ひよこ

Cypherってどんな感じで書くの?

ペンギン先生 ペンギン先生

たとえば「MATCH (a)-[:FRIEND]->(b)-[:FRIEND]->(c) RETURN c」と書けば、友達の友達を一発で取得できるんだ。矢印でグラフの形を描くような直感的な文法だよ。

ひよこ ひよこ

どんなところで使われているの?

ペンギン先生 ペンギン先生

大手だとLinkedInの人脈検索、eBayの商品推薦、金融機関の不正送金検知なんかで使われているよ。最近はLLMと組み合わせたGraph RAGで、AIが構造化された知識をたどって正確な回答を返す用途でも注目されているんだ。

ひよこ ひよこ

RDBから乗り換えるべきなの?

ペンギン先生 ペンギン先生

全部を置き換える必要はないよ。RDBが得意な集計や一覧表示はRDBに任せて、関係性の探索が必要な部分だけNeo4jを使うポリグロットパーシステンス(複数DB併用)が現実的だね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Neo4j」って出てきたら「データ同士の"つながり"を得意とするグラフデータベース」と思えればだいたいOK!
📖 おまけ:英語の意味
「Neo4j」 = 新しい4つのJ(Java)技術
💬 「Neo」は新しいという意味で、Java製のグラフDBとして2007年に登場したんだよ
← 用語集にもどる