Neo4j (グラフDB)(ネオフォージェイ)
Neo Technology (現Neo4j Inc.) 2007年公開のグラフデータベース。Cypher 言語・Nodes / Relationships でソーシャルグラフ・推薦・知識グラフに特化、グラフDB 最大手。
概要
Neo4j はNeo Technology (現Neo4j Inc.・スウェーデン・Emil Eifrem 創業) が2007年に公開した、世界初の本格的グラフデータベース。Nodes (頂点) と Relationships (辺) で構成、Cypher (Neo4j 開発の宣言型グラフクエリ言語) でSQL のような書きやすさを実現。ソーシャルグラフ・推薦システム・知識グラフ・不正検知・サプライチェーン・薬学研究等のRDBMS では困難な「関係性主体」クエリで圧倒的性能、世界500社以上のFortune 500 企業が採用するグラフDB 最大手。
グラフDB の基本概念
[Node A: "Alice"]
|
[Relationship: "FRIENDS_WITH" 確立日 2020-01-01]
|
[Node B: "Bob"]
- Node (頂点・Vertex): 実体 (人・場所・物・概念)
- Relationship (辺・Edge): 関係 (友人・購入・所属)
- Property (属性): キー値ペア
- Label (ラベル): Nodeの型 (Person / Product / City)
- Direction (方向): Relationship は方向あり (a → b)
Cypher クエリ言語
Neo4j 独自のクエリ言語 (SQL風):
// Node 作成
CREATE (alice:Person {name: 'Alice', age: 30})
CREATE (bob:Person {name: 'Bob', age: 32})
// Relationship 作成
MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'})
CREATE (a)-[:FRIENDS_WITH {since: '2020-01-01'}]->(b)
// クエリ: Alice の友人の友人
MATCH (alice:Person {name: 'Alice'})-[:FRIENDS_WITH]->(friend)-[:FRIENDS_WITH]->(fof)
WHERE fof <> alice
RETURN fof.name AS friends_of_friend
直感的・パターンマッチング指向で「2 ホップ友達」「最短経路」等のクエリが圧倒的に書きやすい。
主要マイルストーン
| 年月 | 出来事 |
|---|---|
| 2007 | Neo Technology 設立 |
| 2010-02 | Neo4j 1.0 公開 |
| 2015-09 | Neo4j 2.3 (Cypher 強化) |
| 2017-09 | Neo4j 3.3 (Multi-DC) |
| 2019-09 | Neo4j 4.0 (Multi-database) |
| 2020-04 | Neo4j AuraDB Cloud 公開 |
| 2022-11 | Neo4j 5.0 |
| 2023-04 | $200M ファンディング ($2B 評価) |
| 2024 | Neo4j 5.x シリーズ |
グラフDB vs RDBMS
| ワークロード | RDBMS | Neo4j |
|---|---|---|
| 単純行検索 | ◎ | ○ |
| JOIN 1段 | ◎ | ◎ |
| JOIN 3-5段 | △ (遅) | ◎ |
| JOIN 7-10段 | ✕ (実用不可) | ◎ |
| 最短経路 | ✕ | ◎ |
| 関係性集計 | △ | ◎ |
| 集計 (SUM/AVG) | ◎ | ○ |
| 取引 (OLTP) | ◎ | ◎ |
主要採用先
| 企業 | 用途 |
|---|---|
| プロフェッショナルネットワーク | |
| eBay | 商品レコメンド |
| NASA | 宇宙ミッション知識グラフ |
| Marriott | 顧客関係 |
| Airbnb | ホスト/ゲスト関係 |
| 米国DoD | 諜報分析 |
| GSK / Pfizer | 薬物発見 |
| Walmart | サプライチェーン |
| eBay | リアルタイム推薦 |
| Cisco | ネットワーク管理 |
主要ユースケース
ソーシャルグラフ
// 「友人の友人」推薦
MATCH (me:User {id: $userId})-[:FRIENDS_WITH]->(friend)-[:FRIENDS_WITH]->(fof)
WHERE NOT (me)-[:FRIENDS_WITH]->(fof) AND me <> fof
RETURN fof, COUNT(*) AS mutual_friends
ORDER BY mutual_friends DESC LIMIT 10
推薦システム
// 「この本買った人はこれも買っている」
MATCH (me:User)-[:BOUGHT]->(book:Book)<-[:BOUGHT]-(other:User)-[:BOUGHT]->(rec:Book)
WHERE NOT (me)-[:BOUGHT]->(rec)
RETURN rec.title, COUNT(*) AS frequency
ORDER BY frequency DESC LIMIT 5
不正検知
// 不審な金融取引パターン
MATCH path = (a:Account)-[:TRANSFER*1..5]-(b:Account)
WHERE a.flagged = true OR b.flagged = true
RETURN path
グラフDB 競合
| DB | 主要特徴 |
|---|---|
| Neo4j | グラフDB 最大手 / Cypher |
| ArangoDB | Multi-Model (Document/Graph/KV) |
| Amazon Neptune | AWSマネージド・openCypher / SPARQL |
| TigerGraph | 高速分散・GSQL |
| JanusGraph | 分散版TinkerPop |
| Memgraph | Neo4j互換高速版 (C++) |
| OrientDB | Multi-Model |
AuraDB (Cloud)
2020年4月公開のマネージドサービス:
- AWS / GCP / Azure
- Free Tier (50MB)
- $65-2,000+ / 月
- 自動スケール・バックアップ
- データ可視化付き
関連用語との違い
- vs PostgreSQL Recursive CTE: 限定的 / 専門
- vs MongoDB: 関係性 / Document
- vs ベクトルDB (pgvector): ノード関係 / ベクトル類似
FAQ
Q1: ソーシャルアプリで必要? A: 「友人推薦」「フォロー関係分析」「コミュニティ検出」等のグラフクエリ多いなら絶対必要。100万ユーザ以上のSNSではほぼ必須。
Q2: 個人で学ぶ価値? A: 高い。Knowledge Graph / Recommendation Engine の理解・LLM の Retrieval / RAG ・ソーシャルグラフ分析等の現代AI 技術の前提知識。
Q3: GraphQL との違い? A: 別概念。GraphQL は API クエリ言語・Neo4j はDB。両者組合せで使うことも (Apollo + Neo4j 等)。