我是靠谱客的博主 感性大象,最近开发中收集的这篇文章主要介绍图数据库选型对比:HugeGraph、JanusGraph、Neo4j分析结果,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

图数据库选型对比:HugeGraph、JanusGraph、Neo4j

​ 图数据库是NoSQL Database的一种类型,它应用图形理论存储实体之间的关系信息。它应用图形理论存储实体之间的关系信息。最常见例子就是社会网络中人与人之间的关系。关系型数据库用于存储“关系型”数据的效果并不好,其查询复杂、缓慢、超出预期,而图形数据库的独特设计恰恰弥补了这个缺陷。

​ 现在市面上经常有的图库有: Titan、neo4j、OrientDB、JanusGraph、HugeGraph、Trinity、TigerGraph 等。随着业务场景的增多,现在图数据库在市面上变得越来越火爆。

​ 个人因为公司业务需要曾对相关图库进行选型调研,主要工作是对HugeGraph、JanusGraph、Neo4jj 三种图数据库在各个维度进行的分析包括功能和性能方面,现总结一下希望对大家有一定的参考价值。

​ 从性能的方面考虑(涉及到数据量大小、是否为集群等因素)

​ 1、Neo4j:单机性能明显,企业版是集群模式(非分布式)

​ 2、hugegraph:单机性能(rocksdb后端)和neo4j相近甚至较好;同时还可以通过配置存储引擎,适用集群存储可支持大数据超千亿级以上(性能相对单机会有所降低)。

​ 3、 JanusGraph:开源的分布式图数据库,单机性能较差。但是分布式可支持大数据超千亿级以上,和apache下的spark、hbase等结合度高

​ 从功能的完备度、易用性等方面考虑

​ 1、Neo4j:功能比较齐全,但是功能都比较独立。和别的存储引擎耦合性低,不能相互组合使用。有可视化操作系统,简单功能可以实现。支持灾备,支持事务锁等。

​ 2、huegraph:功能支持健最齐全,导入组件支持各种数据源。可视化操作组件 hubble 支持功能齐全,存储后端引擎支持宽泛,能和相关的数据库搭配使用,更适合刚上手的用户。整体上常用算法都进行封装过,易用性强。有HA组件支持灾备,事务方面的支持较弱

​ 3、JanusGraph:功能方面支持(不支持可视化界面、HA灾备)其他相关功能都具备。整体上各功能使用没有hugegraph便捷易用。

分析结果

​ 接下来会从功能的支持方面和性能测试方面对neo4j 、 janusgraph 、hugegraph 图数据库进行详尽的说明,把一些它们的优缺点以表格的形式呈现,话不多说请看下表。

功能实现分析

图存储Neo4jJanusGraphHugeGraph
容量在线水平扩展不支持支持支持
后端存储引擎自己独立的存储模式,自定义存储,无法使用集群存储。支持持后端存储转换(hbase、cassandra、Berkeley DB等)支持持后端存储转换(hbase、rocksdb、cassandra、postgreSQL、mysql、ScyllaDB)
是否支持事务支持支持支持RC级别事务
图分区不支持支持支持
全文检索功能Neo4j用的搜索引擎是Lucene。通过ES实现,集成操作复杂。内置支持全文索引,不依赖额外存储,易维护。
全内存式存储(效率快)不支持不支持支持
持久化存储支持支持支持
二级索引支持支持支持
范围索引支持不支持支持
高级索引(联合索引、全文索引)支持支持支持
图模型Neo4jJanusGraphHugeGraph
图查询语言cyphergremlin图存储Neo4j gremlin
shcema管理手动编写支持自动创建schema,但是自动创建中相关属性、label的数据类型是固定的。一旦自动创建后在一张图里边变不能进行修改,建议用户不使用自动化创建schema。1、 支持手动gremlin语言编写。 2、 可以使用可视化界面进行创建和复用。
多图实例不支持不支持一个server配置多个图,可以同时应用,互不影响。
多ID类型(自增、主键、自定义ID)不支持不支持支持
属性类型(数字、字符串、日期、集合)支持支持支持
图查询Neo4jJanusGraphHugeGraph
RESTFUL API支持支持支持
图处理独立的图处理引擎使用Tinkerpop3使用Tinkerpop3
高频图算法通过cypher代码自行实现通过Gremlin 代码自行实现封装了(ShortestPath、k-out、k-neighbor等),使用更友好
大规模查询单机查询,数据到达一定规模,性能会降低支持千亿级数规模查询支持千亿级数据规模查询; 支持 大规模分页查询
属性图支持支持支持
工具链Neo4jJanusGraphHugeGraph
可视化工具可视化工具,可以创建图,删除图,可以支持图数据查询。不支持数据导入等操作,不支持多图管理。无可视化界面,但是可集成Cytoscape、[Gephi](http://link.zhihu.com/?target=http://tinkerpop.apache.org/docs/current/reference/" l "gephi-plugin) 等(集成操作复杂)。提供原生的可视化界面,支持多图管理、图查询、数据导入、schema复用。易用性强,新手更容易使用。
高可用及容灾备份支持灾备不支持支持灾备 原生HA组件
数据导入本地csv文件支持本地csv等文件、hdfs导入。支持本地csv,json,text,hdfs文件导入;也支持常用的数据库mysql、oracle、sqlServer等数据导入
图管理可实现可视化界面图管理方便从配置文件创建不同的图 1.ConfiguredGraphFactory 2.JanusGraphFactory方式两种方案:1、有tools组件可以实现图的管理 2、可视化界面进行图管理
Spark GraphX不支持支持支持
Neo4jJanusGraphHugeGraph
部署方式部署较复杂(配置项多)单节点部署简单,多节点部署复杂(依赖hadoop、hbase /zookeeper )可以一键部署(修改配置可以更换存储引擎)
发展模式开源版和企业版共存开源版有开源版和商业版共存
社区支持Neo4j公司IBM百度

Benchmark测试

测试数据集均为在网上公开数据集,测试结果仅为本人的特定服务器的情况下得到的结果。

插入测试

对表中的数据集进行导入操作,然后得到其所用时间。
在这里插入图片描述

查询测试

1、测试场景:在现有数据集中,通过某些点的信息查询和他直接相连的点的所用的时间。比如:图库中为一批电话通联数据集,想通过某些重点人的信息查询出所有和这些重点人的有通联的人
在这里插入图片描述
2、测试场景:在现有数据集中,通过某些顶点的信息,查询所有和这些顶点相连的边。例如:有一批员工的相关的数据信息,我们可以通过某个人ID查询出所有与其相关的信息。
在这里插入图片描述
3、测试场景:查询数据集中的任意两个顶点之间的最短路径。比如图库中的信息为所有中国铁路火车停靠站信息,我们可以查询任意两个城市之间停靠站最少的火车班次。
在这里插入图片描述

最后

以上就是感性大象为你收集整理的图数据库选型对比:HugeGraph、JanusGraph、Neo4j分析结果的全部内容,希望文章能够帮你解决图数据库选型对比:HugeGraph、JanusGraph、Neo4j分析结果所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部