【ねおふぉーじぇい】
Neo4j とは?
最終更新:
💡 「誰と誰がつながっている?」をたどるデータベース
Neo4jは、データをノードとリレーションシップ、その属性で表すグラフデータベース。人のつながりや商品の関係をたどる検索を、Cypherという言語で記述できる。
📌 このページのポイント
- 人や商品をノード、つながりをリレーションシップで表す
- ノードと関係に名前や日時などの属性を持たせられる
- Cypherで探したい関係のパターンを記述する
- 検索速度は関係の数・探索範囲・クエリ設計などで変わる
普通のデータベースと何が違うの?
表の行として扱う代わりに、人や商品をノード、友人関係や購入などをリレーションシップとして表すんだ。「田中さんは鈴木さんを知っている」のようなつながりを、データとして持てるよ。
つながり以外の情報も保存できる?
できるよ。人のノードに名前、購入の関係に日時などの属性を持たせられる。関係には種類と向きもあるので、「誰が何を買ったか」と「誰から紹介されたか」を分けて表せるんだ。
友達の友達を探すのも簡単?
Cypherでは、ノードと矢印を並べるように関係のパターンを書けるよ。たとえば田中さんから「知っている」という関係を2回たどる、という条件を表す。何段たどるか、どの種類の関係かを決めて探すんだ。
関係が深くても、いつも同じ速さ?
一定速度とは限らないよ。分岐や探索する範囲が増えると、調べる関係も増える。公式も、必要なデータへ早めに絞り込み、長さが変わる探索には上限を設けるよう勧めているんだ。RDBとの速さの比較も、実際のデータとクエリで確認しよう。
どんな用途で選ぶとよい?
まとめ:ざっくりこれだけ覚えればOK!
「Neo4j」って出てきたら「データ同士のつながりをたどるグラフデータベース」と思えばだいたいOK!
📖 おまけ:英語の意味
「Neo4j」 = Javaの組み込みデータベースとして始まった製品名
💬 公式は「4j」を、当初Javaの組み込みデータベースだった歴史に結び付けて説明しているよ。「4つのJava技術」という意味ではないんだ。