图数据库(Graph Database)是一种以图结构进行存储和查询的数据库。本文总结了图数据库选型的各类因素,并对比了3个主流开源图数据库:Neo4j、JanusGraph、HugeGraph。Neo4j是老牌的图数据库,JanusGraph是非常成功的开源图数据库TitanDB的Fork版(TitanDB已经不维护了),HugeGraph是百度开源的图数据库。下面表格是具体的对比内容,共比较了30多个指标,包括生态、功能、性能、工具链等维度,分享出来给大家作为参考:

对比点Neo4jJanusGraphHugeGraph
品牌知名度最高国际知名度一般,国内知名度高
开源生态社区版开源,但较多限制, 商业版闭源开源,兼容Apache Tinkerpop生态, 主要由IBM提供云上服务开源,兼容Apache Tinkerpop生态, 由百度领头,提供本土化技术与服务
图查询语言CypherGremlinGremlin
适用场景偏向人工智能、欺诈检测、知识图谱等场景云服务商、具备技术能力深厚的厂商互联网大规模数据场景,网络安全、金融风控、广告推荐、知识图谱等
支持数据规模社区版十亿级百亿级以上千亿级以上
大规模数据写入性能在线导入速度慢,脱机导入速度较快较慢在线导入速度快,支持覆盖写
大规模数据查询性能较快,性能抖动较严重快,较稳定
功能完善程度最完善完善完善
Feature迭代速度趋于完善,新功能上线较慢Fork自Titan,主要提供后端存储的版本兼容适配,基本很少上线新Feature百度自研,2016年项目启动,开源社区新功能迭代更新快速
开放及可扩展性无法扩展可扩展,不过代码复杂导致难度较大,内置支持4种后端存储:HBase、Cassandra、Bigtable、Berkeley可扩展,插件化机制扩展容易,内置支持6种以上后端存储:RocksDB、Cassandra、HBase、ScyllaDB、MySQL、PostgreSQL等
数据导入工具支持CSV在线导入,速度在1万/秒内;支持neo4j-import脱机导入,速度在10万/秒级别,只能用于初始化导入未提供支持支持在线导入,速度在10万/秒级别,支持格式丰富:CSV、TXT、Json,支持从HDFS导入并兼任其各类压缩格式,支持从传统关系型数据库导入,包括MySQL、Oracle、PostgreSQL、SQL-Server等,支持从消息队列导入
数据备份恢复支持脱机备份与恢复,需停机状态, 商业版支持在线增量备份与脱机恢复未提供支持,需要用户手动写程序支持在线远程备份,支持在线远程恢复
数据增量备份商业版支持,且支持备份数据加密不支持不支持
API与客户端支持HTTP API,支持Java、C#、JS语言版本的Client支持HTTP API或WebSocket,支持Java、Python、C#、JS语言版本的Client支持HTTP RESTful API,原生仅支持Java语言Client; 支持Gremlin API,如果对外暴露Gremlin-Server后可支持Java、Python、C#、JS语言版本的Client
可视化界面支持,功能丰富不支持,需要用户集成第三方界面支持,功能丰富,支持可视化的数据建模、导入、分析等
内置常用图算法提供安装算法包,提供了丰富的基本图算法,包括路径搜索、相似性、中心性、社区检测、链接预测等类别的算法不支持内置提供了基本的图算法,包括路径搜索、协同推荐、中心性、社区发现等类别的算法
支持图计算平台集成未提供支持支持Spark GraphX、Giraph等支持Spark GraphX
基础功能 (属性图的增删该查、持久化存储、元数据、事务、缓存、查询优化、增量更新图)支持支持支持
ACID事务支持部分支持,根据后端存储而定,Berkeley后端可完整支持事务, Cassandra后端支持原子性提交事务,HBase后端仅支持单行原子性理解,可能导致多行数之间据不一致部分支持,根据后端存储而定,MySQL、PostgreSQL后端可完整支持事务,RocksDB、Cassandra后端支持原子性提交事务,HBase后端仅支持单行原子性;保证最终一致性
Schema约束商业版支持,包括属性非空、唯一性等约束,同时也支持Schema-Free支持,同时也支持Schema-Free支持,包括模式校验、属性非空、唯一性等约束,不允许Schema-Free
属性索引支持简单索引和复合索引,支持全文索引,依赖第三方Lucene库支持复合索引和混合索引,复合索引允许精确匹配查询,混合索引支持范围查询、全文检索和空间检索,依赖第三方系统ES或Solr支持二级索引、范围索引、联合索引、全文索引,允许精确匹配查询、范围查询、全文检索等,均为原生实现不依赖第三方系统,不支持空间检索
图存储类型本地存储非本地存储,支持分布式存储非本地存储,支持分布式存储
图分区不支持支持支持
超级点问题超级点的邻接边查询慢,十字链表存储结构难以加速部分边的查询通过Vertex-Centric索引可缓解通过Vertex-Centric索引可缓解,支持全量获取数据
多图实例版本4.0支持支持支持
主键ID、自定义ID不支持不支持主键ID,有限制的支持自定义Long ID,不过会导致数据不一致支持
顶点或边数据的TTL不支持支持,可精细到顶点属性粒度支持
用户认证与权限控制商业版支持支持用户认证支持用户认证、支持基于用户角色的权限控制
高危查询语句限制Cypher无关不支持Gremlin高危语句限制支持,可限制用户执行高危Gremlin语句,如禁止访问本地文件、退出进程、打开Socket连接等高危操作
运行中语句跟踪商业版支持,包括:列出正在运行的查询语句、中断正在运行的查询不支持同步Gremlin查询不支持跟踪,异步Gremlin查询支持状态跟踪和任务取消
LDAP集成商业版支持未提供支持未提供支持,可扩展插件
高可用HA商业版支持未提供支持商业版支持
监控商业版支持支持Metrics监控支持监控接口

参考:

  • https://neo4j.com/docs/operations-manual/current/introduction/
  • https://docs.janusgraph.org/
  • https://hugegraph.github.io/hugegraph-doc/
除非注明,否则均为风笛原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.lifd.site/tech/tu-shu-ju-ku-xuan-xing-neo4j-janus-hugegraph/

“觉得文章还不错?微信扫一扫,赏作者一杯咖啡吧~”
分类
guest

0 评论
最旧
最新 最多投票
内联反馈
查看所有评论

相关文章

TCP的三次握手与四次挥手

TCP的三次握手 TCP连接的建立时,双方需...

为什么生产环境是不建议使用Executors快捷创建线程池?

在生产环境中,使用Executors提供的快...

半包问题的根因分析

粘包和半包的来源,得从操作系统底层说起。 大...

Redisson分布式锁的watch dog自动续期机制

背景 据Redisson官网的介绍,Redi...

Ubuntu使用Certbot生成https证书

更新包列表 sudo apt update ...