【ねおふぉーじぇい】
Neo4j とは?
💡 「誰と誰がつながっている?」を爆速で答えるデータベース
📌 このページのポイント
リレーショナルDBはデータを表(テーブル)で管理するけど、グラフDBはノード(点)とリレーションシップ(線)で管理するんだ。「AさんはBさんの友達で、BさんはCさんの同僚」みたいな関係をそのまま格納できるよ。
浅い関係なら大丈夫だけど、「友達の友達の友達の…」と深くたどると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年に登場したんだよ