代表的な製品と選び方
グラフDB の世界にはオープンソースからクラウドマネージドまで多様な製品があります。この章では主要な製品の特徴とクエリ言語を比較し、用途に応じた選び方を整理します。
製品ランドスケープ
グラフDB 製品は大きく3つのカテゴリに分けられます。
| カテゴリ | 特徴 | 代表製品 |
|---|---|---|
| ネイティブグラフDB | グラフ専用のストレージエンジンを持つ。トラバーサル性能が最も高い | Neo4j, TigerGraph |
| マルチモデルDB | グラフ以外のモデル(ドキュメント、KVS等)も扱える | ArangoDB, Azure Cosmos DB |
| クラウドマネージド | インフラ管理不要。従量課金で始められる | Amazon Neptune, Neo4j Aura |
Neo4j
グラフDB の代名詞ともいえる存在です。2007年に公開され、最も広く使われているグラフDB です。
| 項目 | 内容 |
|---|---|
| タイプ | ネイティブグラフDB |
| グラフモデル | ラベル付きプロパティグラフ |
| クエリ言語 | Cypher(独自開発 → openCypher として標準化) |
| ライセンス | Community Edition: GPLv3(無料)/ Enterprise: 商用ライセンス |
| マネージド | Neo4j Aura(クラウド) |
| 可視化 | Neo4j Browser / Bloom(組み込みの優れた可視化ツール) |
| 得意分野 | 幅広い用途。エコシステムとコミュニティが最も充実 |
RDB 経験者へ: Neo4j は「グラフDB 界の PostgreSQL」のような存在です。学習リソースが豊富で、始めやすく、本番運用の実績も多いため、最初に触れるグラフDB として最も推奨されます。
Amazon Neptune
AWS が提供するフルマネージドのグラフDB サービスです。プロパティグラフと RDF の両方をサポートします。
| 項目 | 内容 |
|---|---|
| タイプ | クラウドマネージド |
| グラフモデル | プロパティグラフ + RDF |
| クエリ言語 | Gremlin(プロパティグラフ)/ SPARQL(RDF)/ openCypher |
| ライセンス | AWS の従量課金 |
| 得意分野 | AWS エコシステムとの統合、高可用性 |
選ぶ場面: 既に AWS を使っていて、インフラ管理を最小化したい場合に適しています。ただし、Neo4j ほど可視化ツールやコミュニティリソースは充実していません。
Azure Cosmos DB(Gremlin API)
Microsoft Azure のマルチモデルDB で、Gremlin API を通じてグラフDB として利用できます。
| 項目 | 内容 |
|---|---|
| タイプ | マルチモデル(クラウドマネージド) |
| グラフモデル | プロパティグラフ |
| クエリ言語 | Gremlin |
| ライセンス | Azure の従量課金 |
| 得意分野 | グローバル分散、マルチリージョン、Azure 統合 |
ArangoDB
ドキュメント、グラフ、キーバリューを1つのエンジンで扱えるマルチモデルDB です。
| 項目 | 内容 |
|---|---|
| タイプ | マルチモデル |
| グラフモデル | プロパティグラフ |
| クエリ言語 | AQL(ArangoDB Query Language) |
| ライセンス | Community: Apache 2.0(無料)/ Enterprise: 商用 |
| 得意分野 | 1つの DB でドキュメント + グラフを併用したいケース |
マルチモデルのメリット: 「商品カタログはドキュメントとして、商品間の関連はグラフとして」のように、1つの DB 内でモデルを使い分けられるため、システム構成がシンプルになります。
TigerGraph
大規模データの高速分析に特化したネイティブグラフDB です。数十億ノード規模のグラフ分析で高い性能を発揮します。
| 項目 | 内容 |
|---|---|
| タイプ | ネイティブグラフDB(分析特化) |
| グラフモデル | プロパティグラフ |
| クエリ言語 | GSQL(独自言語) |
| ライセンス | Community: 無料(制限あり)/ Enterprise: 商用 |
| 得意分野 | 大規模グラフ分析、リアルタイム不正検知、深いトラバーサル |
その他の注目製品
| 製品 | 特徴 |
|---|---|
| JanusGraph | オープンソース(Linux Foundation)。バックエンドに Cassandra や HBase を利用。大規模分散に強い |
| Memgraph | インメモリのネイティブグラフDB。リアルタイムストリーミング処理に強い。Cypher 対応 |
| NebulaGraph | 分散ネイティブグラフDB。大規模データに対応。独自クエリ言語 nGQL |
| Apache AGE | PostgreSQL の拡張として動作するグラフDB。既存の PostgreSQL に追加可能。openCypher 対応 |
Apache AGE は RDB 経験者に最適な入口かもしれません。既存の PostgreSQL にグラフ機能を追加する拡張のため、RDB の知識をそのまま活かしながらグラフクエリを試せます。SQL と Cypher を同じ DB 内で併用できます。
クエリ言語の比較
グラフDB のクエリ言語は主に3つの系統があります。
Cypher / openCypher
Neo4j が開発し、openCypher として標準化された宣言型クエリ言語です。ISO 標準 GQL のベースにもなっています。
// パターンマッチングで直感的に記述
MATCH (a:Person)-[:KNOWS]->(b:Person)-[:KNOWS]->(c:Person)
WHERE a.name = "Alice" AND c.age > 30
RETURN c.name, c.age
特徴: SQL に近い宣言型。ASCII アートのような直感的なパターン記述。学習コストが低い。
Gremlin
Apache TinkerPop プロジェクトのトラバーサル言語です。手続き型のチェーン記法で記述します。
// メソッドチェーンでトラバーサルを記述
g.V().has('Person','name','Alice')
.out('KNOWS').out('KNOWS')
.has('age', gt(30))
.values('name','age')
特徴: プログラマに馴染みやすいメソッドチェーン。多くの製品がサポート。やや冗長。
SPARQL
W3C 標準の RDF クエリ言語です。トリプル(主語-述語-目的語)パターンで検索します。
SELECT ?name ?age WHERE {
?alice foaf:name "Alice" .
?alice foaf:knows ?b .
?b foaf:knows ?c .
?c foaf:name ?name .
?c foaf:age ?age .
FILTER (?age > 30)
}
特徴: 標準化された厳密な仕様。セマンティックウェブ・ナレッジグラフ向け。学習コストはやや高い。
言語比較表
| 言語 | スタイル | 標準化 | 主な対応製品 | 学習コスト |
|---|---|---|---|---|
| Cypher | 宣言型 | openCypher / GQL | Neo4j, Memgraph, AGE, Neptune | 低い |
| Gremlin | 手続き型 | Apache TinkerPop | Neptune, Cosmos DB, JanusGraph | 中程度 |
| SPARQL | 宣言型 | W3C 標準 | Neptune, Virtuoso, GraphDB | やや高い |
GQL(Graph Query Language): 2024年に ISO/IEC 39075 として発行された国際標準です。Cypher をベースにしており、将来的にはグラフDB の「SQL」に相当する共通言語となることが期待されています。
選定の判断基準
グラフDB を選ぶ際のチェックポイントを整理します。
| 判断基準 | 推奨 |
|---|---|
| 初めてグラフDB を試したい | Neo4j Community(無料、学習リソース豊富) |
| 既存 PostgreSQL に追加したい | Apache AGE(拡張として導入) |
| AWS 上でマネージドがいい | Amazon Neptune |
| Azure 上でマネージドがいい | Azure Cosmos DB(Gremlin API) |
| グラフ + ドキュメントを1つで | ArangoDB |
| 数十億ノードの大規模分析 | TigerGraph, NebulaGraph |
| リアルタイムストリーミング | Memgraph |
| セマンティックウェブ / RDF | Amazon Neptune(SPARQL), Virtuoso |
まとめ
- Neo4j がエコシステム・学習リソースともに最も充実しており、最初の選択として推奨
- クラウドファーストなら Neptune(AWS)や Cosmos DB(Azure)が選択肢
- 既存 PostgreSQL への追加なら Apache AGE が最も低リスク
- クエリ言語は Cypher が最も学習しやすく、GQL として標準化が進んでいる
- 用途・規模・既存インフラに応じて適切な製品を選ぶことが重要
次章「はじめの一歩」では、Neo4j を使った実際のセットアップと基本クエリを体験します。