代表的な製品と選び方

グラフ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 AGEPostgreSQL の拡張として動作するグラフ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 / GQLNeo4j, Memgraph, AGE, Neptune低い
Gremlin手続き型Apache TinkerPopNeptune, 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
セマンティックウェブ / RDFAmazon Neptune(SPARQL), Virtuoso

まとめ

次章「はじめの一歩」では、Neo4j を使った実際のセットアップと基本クエリを体験します。