7种图数据库简单比较

1 图数据库排名

图数据库排名:https://db-engines.com/en/ranking/graph+dbms

 

7种图数据库简单比较

 

 

2 图数据库比较表格

初次release 2007 2010 2012 2017 2018 2016 2017
是否开源 社区版开源 开源版限制数据库规模 开源 开源 开源 开源 闭源
是否收费 企业版收费 webUI管理模块收费 企业版收费 免费 免费 免费 收费
数据模型 graph doc/graph/kv doc/graph/kv graph graph graph graph
实施语言 Java/Scala Java C/C++/JavaScript Java Java Go C++
SQL 不支持 类SQL 不支持 不支持 不支持 不支持 类SQL
查询语言 cypher     gremlin gremlin GraphQL GSQL
是否支持在线备份 社区版不支持 主主备份 主从备份 后端框架支持 后端框架支持    
存储系统 原生 原生 RockDB Cassanda Hbase Cassanda Hbase 原生  
分布式 企业版支持 后期支持 后期支持 原生支持 原生支持 原生支持 支持
应用场景 人工智能、欺诈检测、知识图谱等场景     云服务商、具备技术能力深厚的厂商 互联网大规模数据场景,网络安全、金融风控、广告推荐、知识图谱等    
相关文档 非常多   多  
文档地址           https://dgraph.io/docs/ http://docs.tigergraph.com.cn/

3 各种图数据库属性

3.1 Neo4j(主流)

历史悠久,且长期处于图数据库领域的龙头地位,主流。 缺点:企业版付费。开源的社区版本只支持单机,不支持分布式。

3.2 OrientDB(不推荐)

OrientDB是第二代分布式图数据库,以混合数据模型为特点,它包括可以在最复杂的场景中使用复制和分片,并以Apache2许可证提供开放源代码。ORIENTDB工作速度快,能够在最常见的硬件上每秒存储220000条记录,并且支持无模式、完整和混合模式,可以使用SQL作为查询语言之一。ORIENTDB使用身份验证、密码和静态数据加密等方式为所有机密数据提供安全保护。OrientDB为确保更好的性能,最近引入了节点的快速重新同步,即使处理数十亿条记录,遍历速度也不会受到影响。 OrientDB 是分布式多模型数据库,支持图数据模型,支持 sharding 机制,大规模查询情况下性能比较好; 缺点:它们起步比较早,最初的时候都是一个单机的图数据库,然后随着用户数据量的不断增加,后期增加了分布式模式,支持集群和副本,但是经过调研发现,可能是由于后加的功能,他们的分布式支持的不是很好。OrientDB因为是商用版,所以没怎么用过,虽然有社区版本,但是没有Neo4j好用。

3.3 ArangoDB(不推荐)

Arangodb以一种非常创造性和灵活的方式安排数据。数据可以存储为键或值对、图或文档,所有这些都可以通过一种查询语言访问。为了更安全的选择,查询中可以使用声明性模型。用户可以在一个查询中组合不同的模型及其特性的原因是,ArangoDB对所有数据模型都使用相同的核心和相同的查询语言。

Arangodb独特的特性是它能够在一个查询中组合不同的数据模型。这使得其展示方式令人印象深刻且美观。它比其他数据库具有更灵活的扩展性、增强的容错性、大容量的存储能力和更低的成本。arangodb最突出的特性是foxx,这是一个用于编写数据库中以数据为中心的javascript框架。

它们起步比较早,最初的时候都是一个单机的图数据库,然后随着用户数据量的不断增加,后期增加了分布式模式,支持集群和副本,但是经过调研发现,可能是由于后加的功能,他们的分布式支持的不是很好。

3.4 JanusGraph(推荐)

  • JanusGraph是可扩展的图数据库,底层依赖于大数据组件,所以可以很好的和企业的大数据平台进行结合,并且能够支持实时图遍历和分析查询。对分布式支持的非常好,也都是完全的开源免费,存储数据模型也都是专为图数据而设计。JanusGraph 使用 NoSQL (如 Cassandra+ES) 来构建图数据库,用 Cassandra 来存储图片,用 Elasticsearch/Solr 构建索引引擎。
  • 优点:JanusGraph的存储系统依赖于像Cassandra、HBase(HBase又依赖于Zookeeper和HDFS)、BerkelyDB等等这样的存储系统,索引系统依赖于Elasticsearch、Solr、Lucene等等;也基于这些原因,它和大数据生态结合的非常好,可以很好地和Spark结合做一些大型的图计算。
  • 缺点:但是存储需要依赖于其他存储系统,例如JanusGraph多数使用HBase作为底层存储系统,而HBase又依赖于Zookeeper和HDFS,另外JanusGraph的索引又依赖于ES,所以想要搭建一套完整的JanusGraph,需要同时搭建维护好几套系统,维护成本非常大.从设计之初就考虑了分布式和扩展性,就是它的维护成本会非常高,依赖于这么多的外部系统,搭建一套JanusGraph系统的同时需要搭建好几套依赖系统;另一方面就是稳定性,根据经验来看,系统越复杂,依赖系统越多,整体可控性就越差,稳定性风险就越大。JanusGraph是开源的分布式图数据库,可以用于企业级的应用服务,但是开源的性能上要比付费的差很多,并且三方的一些工具也存在一些问题,所以要用肯定要低于底层(读写)进行性能优化,所以目前国内宣传的大部分自家的分布式图数据库基本上都是从JanusGraph优化而来的。

3.5 HugeGraph(推荐)

百度基于JanusGraph开源了HugeGraph,增加了很多特性,提高了易用性及性能,增加了一些图分析算法。HugeGraph百度在2018年中旬开源的一款图数据库(Graph Database)系统,可以存储海量的顶点(Vertex)和边(Edge)。实现了Apache ThinkerPop 3框架,支持Gremlin图查询语言。HugeGraph支持多用户并行操作,用户可输入Gremlin查询语句,并及时得到图查询结果。也可以再用户程序中调用hugeGraph API进行图分析或查询。

3.6 Dgraph(推荐)

上,他们发展的比较晚,从设计之初就考虑了分布式和扩展性,所以对分布式支持的非常好,也都是完全的开源免费,存储数据模型也都是专为图数据而设计。他们有一个比较大的区别就是,而 优点:Dgraph 不依赖与任何第三方系统,只有一个 Dgraph 可执行文件,只需在启动时通过参数指定是 Zero(管理节点)还是 Alpha(数据节点)即可,Dgraph 会自动组成集群,运维部署非常简单。Dgraph使用自身的存储系统,这就造成了前面提到的运维成本的问题。而Dgraph这些都是原生支持的,所以相对来说,Dgraph维护成本低很多。Dgraph 和 JanusGraph 性能差不多,但复杂查询下,Dgraph 性能远高于 JanusGraph。同时,Dgraph 的写入性能也整体高于 janusGraph. 缺点:比如还不支持多重边、一个集群只支持一个图、与大数据生态兼容不足等,这些都需要靠后期不断完善

3.7 TigerGraph(不推荐)

优点:TigerGraph可以通过GSQL实现类存储过程的算法封装,而且已经实现了很多图算法,但是语法结构要比Neo4j复杂的多。 缺点:目前就已知的情况来说,会买付费的图数据库的公司不多,毕竟每一家的付费都挺贵的,Neo4j按照cpu收费,TigerGraph按照数据容量(G)来收费,其他的也是license授权收费,反正都不便宜,所以未来的趋势还是趋向于免费,除非是那种必须的

4 选型结论

  • 推荐一:Neo4j使用起来相当的方便,入门门槛很低,基本上拿来就能用,并且有很好的社区支持,三方库、第三方工具的支持,社区版本也可以支撑到不错的数据量(亿级没问题),如果只是玩玩练练手熟悉一下,Neo4j肯定是最好的选择。
  • 推荐二:Dgraph。 JanusGraph 和 Dgraph 是对分布式支持比较好的,因为它们从设计之初就是按分布式架构设计的,并且是完全开源免费的,所以我们主要对这两款图数据库进行了详细的评测对比。Dgraph 除了运维成本低之外,整体读写性能也优于 JanusGraph
  • 推荐三:JanusGraph或HugeGraph

参考资料

[1] 贝壳找房—【图数据库系列】之 JanusGraph VS Dgraph:贝壳分布式图数据库技术选型之路 https://www.6aiq.com/article/1586913224622 [2]  
上一篇:JZ32 把数组排成最小的数


下一篇:DQL-2.6.开始Dgraph-高级文本搜索