一、常见图数据库

代表:Neo4j、Dgraph、OrientDB、Titan,主要应用场景,有随时增长的海量数据,希望以图的方式存储这些数据,从而能在需要时顺利挖出一个子图来,那就要借助于图数据库

二、图数据库分类 

第一是原生数据库,代表数据库为neo4j、orientdb,其原生体现在查点到边或者边到点的时候,不需要走原来关系型数据库的B+索引,节点本身就有指向索引,类似于链表的指针概念。

第二是直接在关系型数据库之上构建的图数据库,代表为agens graph,以及微软的GraphView。SparkGraphX也可以基于关系型存储结构进行转化成图结构,然后完成图运算。

第三是以Titan/JanusGraph为代表的使用外置nosql存储如hbase,以及使用外置的索引生成工具如elasticsearch,olap支持外接spark等工具。

第四是在图计算上基于batch进行优化的新一代图数据库,如dgraph。dgraph的存储结构与cayley同样借鉴了google的论文,将每个节点的属性也作为一个节点与主节点产生联系,这样更有益与基于batch来设计运算方法。

就目前情况来看,第一块与第二块的项目比较成熟,运行来说相对较稳定,而第三和第四块仍然处于起步阶段。究其原因,原生数据库起步早,发展时间较长,构建于关系型数据库之上的图数据库依托于关系型数据库的稳定,效果也不会太差。titan起步也较早,但是发展缓慢,自15年被收购之后开源项目维护停滞,直到17年才有在其之上构建的JanusGraph。

二、图数据库对比

Dgraph vs. Neo4j vs. OrientDB vs. Titan Comparison

Name

Dgraph

Neo4j

OrientDB

Titan(JanusGraph)

简介

dgraph 是可扩展的,分布式的,低延迟图形数据库。DGraph 的目标是提供 Google 生产水平的规模和吞吐量,在超过TB的结构数据里,为用户提供足够低延迟的实时查询。

分社区版(免费)和商业版(收费);开源协议授权是基于AGPL,用开源版,产品也要开源。商业版比社区版多一些高级特性。

OrientDB实际上不是一个纯的GraphDB, 它是构建在DocumentDB的模型之上。 除了GraphDB, OrientDB还在基础的DocumentDB基础模型之上构建了KV, OO等类型的DB。

被收购,迁移到JanusGraph

Description

Distributed and scalable native Graph DBMS

Open source graph database

Multi-model DBMS (Document, Graph, Key/Value)

Titan is a Graph DBMS optimized for distributed clusters.

Primary database model

Graph DBMS

Graph DBMS

Document storeGraph DBMSKey-value store

Graph DBMS

Initial release

2016

2007

2010

2012

Replication

Consistent

None (only available in Enterprise)


Via underlying DB

Architecture

Distributed  底层设计支持分片,分布式可实现更大数据规模操作,16年发布,有后发优势。

Single server   暂时不支持分片。

Sharding

Layer on top of other distributed DBs
支持分片。可以构建在Hbase,Cassandra之上外加+ES或者Solr存储索引

Data movement for shard rebalancing

Automatic

Not applicable (all data lies on each server)


Via underlying DB

Protocols

Grpc / HTTP + JSON / RDF

Bolt + Cypher


Websocket / HTTP

部署

支持docker部署

支持docker部署



可视化

有图形化界面

有图形化界面



其他

出现较晚,仍在完善中。

出现较早,应用最多,文档较好。


配置使用较复杂。

三、图数据库排名

DB-Engines Ranking - popularity ranking of graph DBMS