グラフデータベースの選定

グラフデータベースは頂点間の関連性をデータ構造として保持し実用的な時間内にグラフとしてレポートするタイプのデータベース。

使い倒す前にどういうデータベースがあるのか調べた。

グラフデータベース一覧

製品名アクセス方法無償
Open
商用可
RDF
構造
操作言語
AllegroGraphWEBNONOYESProlog
/SPARQL
Amazon NeptuneWEB/GremlinNONOYESTinkerPop
/Gremlin/SPARQL
AnzoGraph DBWEBYES
NOYESYESCypher
/SPARQL
ArangoDBWEBYESYESYES未記載AQL
/JavaScript
DataStax Enterprise GraphWEB
(DataStax Studio)
NONO未記載Gremlin
/Tinkerpop
DgraphWEBYESYESYESYESDQL
/GraphQL
Grakn CoregRPCYESYESYES未記載Graql
InfiniteGraph未確認NONO未記載未確認
JanusGraphGremlinYESYESYES未記載Gremlin
LEMONライブラリYESYESYES未記載
MarkLogic未確認NONOYES未確認
Microsoft SQL Server 2017未確認未確認NO未確認Transact-SQL ?
Nebula GraphWEB
Nebula Graph Studio利用
YESYESYES未記載nGQL
Neo4jWEBYES
NO未記載Cypher
NetworkXWEBYESYESYES未記載Python
OpenLink VirtuosoWEBYES
両版有
YES
両版有
YES
両版有
YESSPARQL
/XQuery
/XPath 1.0のみ/XSLT 1.0のみ 
Oracle RDF Graph; part of Oracle Database未確認未確認未確認未確認YES未確認
Oracle Property Graph; part of Oracle Database未確認未確認未確認未確認未確認未確認
OrientDBWEB/AppYESYESYES未記載Gremlin
/TinkerPop
RedisGraph未確認YESYESYES未記載Cypher
SAP HANA未確認未確認NO未記載Cypher
Sones GraphDB未確認未確認未確認未確認未確認未確認
Sparksee未確認YES
NO未確認未確認
Sqrrl Enterprise未確認未確認未確認未確認未確認未確認
Teradata Aster未確認未確認未確認未確認未確認未確認
TerminusDBWEBYESYESYESYESWOQL
TigerGraphWEB
GraphStudio UI
NONO未記載GSQL
Trinity Graph Engine未確認未確認未確認未確認未確認未確認
list of graph databases

幅が狭すぎてエクセル資料の情報を結構削ってしまったが、何か一つグラフデータベースを使って学んでみるという段階で重要なのは有償か無償か、次にオープンソースか否か、更に商用利用可能かどうかというところだと思う。

次に必要なのは実装方法か。Javaで出来ているか否かはまあまあ重要で、もともとサーバー上でJavaを使っているなら「しめしめJVMに間借り出来るぞ」という気持ちになるだろうし、使っていなければ「無暗にミドルウェア増やさなきゃいけないしメモリが無駄になるではないか」という気持ちにもなるだろう。

  • Grakn Core, JanusGraph, Neo4j, OrientDB, Sqrrl Enterprise はJava実装
  • Sqrrl Enterpriseは破産により開発終了
  • Trinity Graph Engine はMicrosoft Graph Engineが承継?

HAや細かい認証機能、ドキュメント・RDFのストアに対応しているかなどの考慮は後回し。

操作言語

言語概要利用言語例
AQLArangoDBでドキュメント・グラフに用いるSQL風クエリ言語ArangoDB
CypherアドホックやSQL風なプログラミングの処理を実現する宣言型グラフクエリ言語 
DQLDgraph Query Language. GraphQLのDgraph拡張機能への対応Dgraph
GraphQLオープンソースのAPI向けデータクエリ&処理言語。ISOなのでSQLのグラフデータベース版の立ち位置。GQLとも。Dgraph
GraqlGrakn’s declarative reasoning (through OLTP) and analytics (through OLAP) query languageの略。Grakn Core
GremlinApache TnkerPopのオープンソースプロジェクトの一部である、グラフプログラミング言語 
nGQLnebula Graph Database 独自のSQL風処理言語nebula graph database
SPARQLRDF向けのクエリ言語。RDFフォーマットデータの処理に利用する 
GSQLSQL風のGraph Query Language。TigerGraph
WOQLWeb Object Query Languageの略。WOQLは強力で洗練されたクエリ言語であり、任意のデータ構造で複雑なパターンを簡潔に表現できる。コアとなる基本的概念が簡素なため表現力豊かで使いやすいTerminusDB
list of languages

もう一つ重要な要素が操作言語である。グラフデータベースはそれぞれデータ構造・実装昨日が異なるためか、データ操作用の言語が乱立している印象がある。

その中でも汎用性が高そうなのはCypher、GraphQL、Gremlin, SPARQL。以下のような棲み分けになるのだろう。

  • GraphQLはISO標準のSQL風クエリ
  • Cypherは先駆者Neo4j作のため利用が多いSQL風クエリ
  • Gremlinはプログラミング時の標準コマンド
  • SPARQLはRDF処理の標準クエリ

選定結果

Java なし派だからDgraph, Nebula Graph, TerminusDBが良いと思った。しかしまだ最後まで絞り切れていないのだ。

試しにDgraphを使ってみようと思っている。