贝壳找房图数据库系列之贝壳分布式图数据库技术选型之路
一、背景
贝壳找房的核心业务场景主要是围绕人、房、客三者的属性与关系展开,是一个典型的图数据库应用场景。而基于此挖掘出的房产领域行业图谱已达到 500 亿三元组的量级。面对如此海量的数据,应该如何存储才能支持业务的高效查询?我们迫切需要一个高性能、高可用、可扩展的分布式图数据库平台。
二、图数据库简介
什么是图数据库
图数据库并非存储图片的数据库,而是应用图形理论存储实体之间关系信息的一种 NoSQL 数据库,以图的结果存储和查询。比如社会网络中人与人之间的关系,房产领域中客户、经纪人和房子之间的关系等。
应用场景
图数据库的应用场景非常广阔,除了我们熟知的社交网络、计算机网络外,还有比如以下各种场景:
- 道路网络、电信网络
- 关联查询、搜索推荐
- 风险预测、风控管理
- 业务流程、生物流程
- 公司或市场结构
- 事件及其之间的因果关系或其他联系
三、图数据库技术选型
图数据库的产品其实有很多,那么我们应该选择哪一款呢?
要回答上面的问题,首先我们需要知道当我们做技术选型时,我们主要关注哪些因素:
基于以上几个标准,我们对上面的图数据库进行了粗略的筛选并对主流的 5 款进行了简要对比:
通过简单调研发现,JanusGraph 和 Dgraph 是对分布式支持比较好的,因为它们从设计之初就是按分布式架构设计的,并且是完全开源免费的,所以我们主要对这两款图数据库进行了详细的评测对比。
四、JanusGraph VS Dgraph
先看一下 JanusGraph 的架构图:
可以看出 JanusGraph 的存储依赖于第三方的分布式存储系统,比如 Cassandra 或 Hbase,索引也依赖于 ES 或 Solr,运维成本较高,不可控性也更大,但其和大数据生态结合的较好,可以方便的使用 Spark 进行复杂的图计算。
Dgraph 架构图:
而 Dgraph 不依赖与任何第三方系统,只有一个 Dgraph 可执行文件,只需在启动时通过参数指定是 Zero(管理节点)还是 Alpha(数据节点)即可,Dgraph 会自动组成集群,运维部署非常简单。
单从架构上看,Dgraph 比 JanusGraph 的运维成本低很多,但是也不能只因为这一点就直接选择 Dgraph,因为如果 JanusGraph 的各方面性能都比 Dgraph 高很多,那额外的运维成本也是可以接受的,所以二者的性能对比数据又是怎样的呢?
如上,我们使用同一份数据,相同的机器,对二者在各种场景下的读写性能进行了详细的评测,最后发现对于简单查询,Dgraph 和 JanusGraph 性能差不多,但复杂查询下,Dgraph 性能远高于 JanusGraph。同时,Dgraph 的写入性能也整体高于 janusGraph。
五、 结论
总结对比一下:
通过各方面的评测,Dgraph 除了运维成本低之外,整体读写性能也优于 JanusGraph,所以最终我们选择了 Dgraph 作为贝壳图数据库平台的基础引擎。
当然也不是说 Dgraph 是一个完美无缺的图数据库,它也有不足之处,比如还不支持多重边、一个集群只支持一个图、与大数据生态兼容不足等,这些都需要靠后期不断�
- 原文作者:知识铺
- 原文链接:https://geek.zshipu.com/post/%E4%BA%92%E8%81%94%E7%BD%91/%E8%B4%9D%E5%A3%B3%E6%89%BE%E6%88%BF%E5%9B%BE%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E5%88%97%E4%B9%8B%E8%B4%9D%E5%A3%B3%E5%88%86%E5%B8%83%E5%BC%8F%E5%9B%BE%E6%95%B0%E6%8D%AE%E5%BA%93%E6%8A%80%E6%9C%AF%E9%80%89%E5%9E%8B%E4%B9%8B%E8%B7%AF/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com