一、常见图数据库
代表: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 |
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