在知识图谱相关的应用中,首选要选择的是图数据存储相关的技术。
工业界目前多使用属性图作为存储模型,也就是点-边+属性的模式。
在属性图数据库中,目前neo4j目前的市占率是遥遥领先的,可以参考专业数据库排行网站
https://db-engines.com/en/ranking 的排名,neo4j在图数据库中排名第一。
在我们构建金融知识图谱的过程中,我们选择了neo4j。
我们最开始的业务要求比较低,通过 etl以batch的方式 凌晨写数据到图中,线上的数据服务
多是查询,并没有涉及到 读写并发,我们的数据量目前大概只有3000万节点,所有的金融时序数据都存在
elasticsearch里面,访问的并发量100以内,当前业务体量下,使用社区版neo4j基本都能满足,
唯有 HA 存在问题, neo4j 的社区版本,不支持 集群, 要做 HA的话,我们只有自己实现手动的双读双写。
可扩展性比较差。
由于不愿意购买商业版本,并且考虑到马上上线在线编辑 和实时监控功能,需要底层支持大量的读写,并且对集群的build-in
支持也变得迫切起来,所以不得不转向其他开源数据库进行实现。
调研了 janusgraph,tigergraph,hugugraph等。由于tiger graph属于商业版本,不再考虑之内。
所以做的最多的比较还是 janusgraph, hugugraph, neo4j社区版。
最后选择了hugugraph,主要从以下几个方面考虑。
1. 集群可拓展性上
janusgraph 和hugugraph 都是一个基因出来的, hugugraph实现参考了很大部分的janusgraph。
两者都能支持 Cassandra,Hbase 作为底层的存储,都实现 tinkerpop标准图框架。
由于 Cassandra和hbase都有大量的商用级应用案例,所以在存储的成熟度上都是ok的。
2. 管理工具成熟
从可视化工具来看, neo4j是做的最好的,非常漂亮的UI工具。
jansugraph 官方给出了5个UI工具,试用了其中三个开源版本后,就果断放弃,
没有方便的基于 gremlin 交互式的ui工具,而 hugugraph自己实现了一个 ui工具,完成度没有neo4j高,
但是风格相似,并且是基于图语言查询的,还是有可用性的。
从数据导入等其他运维工具来看, neo4j 社区版一般,还只能冷备份;
janusgraph 和hugugraph 都依赖底层存储,相对成熟,并且hugugraph 提供了
额外的工具包进行数据的导入和其他运维工具,成熟度高一些。
3. 性能方面
hugugraph给出了详细的和neo4j的性能对比报告,
总的来说,由于neo4j使用自己开发的存储引擎,为图数据而生,性能从理论上是要高于使用 Cassandra,hbase等外接入存储的图数据库的。
hugugraph在一些多深度的查询上性能还是劣于neo4j,janusgraph同样存在这个问题。
市场上目前看到的报告, 使用原生存储的如neo4j 和 tigergraph都有比较优秀的性能。
如果对性能有追求,在选择方向上可能要考虑原生图数据库。
4. 社区活跃度
neo4j目前是遥遥领先,janusgraph文档一般,而hugegraph由于是百度开源的,只有部分国内文档,是一个隐患。
但是看hugugraph在github上的活跃度还是很高,稍微安心
综合看起来,由于只能在开源阵营选择,最后还是选择了师出同门,完成度相对较高的hugugraph,
未来有多少坑,持续更新。
网友评论