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

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

对比点 Neo4j JanusGraph HugeGraph
品牌知名度 最高 国际知名度一般,国内知名度高
开源生态 社区版开源,但较多限制,商业版闭源 开源,兼容Apache Tinkerpop生态,主要由IBM提供云上服务 开源,兼容Apache Tinkerpop生态,由百度领头,提供本土化技术与服务
图查询语言 Cypher Gremlin Gremlin
适用场景偏向 人工智能、欺诈检测、知识图谱等场景 云服务商、具备技术能力深厚的厂商 互联网大规模数据场景,网络安全、金融风控、广告推荐、知识图谱等
支持数据规模 社区版十亿级 百亿级以上 千亿级以上
大规模数据写入性能 在线导入速度慢,脱机导入速度较快 较慢 在线导入速度快,支持覆盖写
大规模数据查询性能 较快,性能抖动较严重 快,较稳定
功能完善程度 最完善 完善 完善
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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章