图数据库选型

做图谱不可避免需要到图数据库,但是如何选择一个适合的图数据库,是一个问题,这篇文章是基于前人做的对比评测,希望能让大家对目前主流的图数据库由大致了解 。仅为一家之言,如有偏驳,请指正 。
文章会出现横向扩展和纵向扩展概念,横向扩展也叫水平扩展,用更多的节点支撑更大量的请求,如成千上万的蚂蚁完成一项搬运工作,也就是多增加几台服务器一起服务 。纵向扩展也叫垂直扩展,扩展一个点的能力支撑更大请求,如蜘蛛侠逼停火车,也就是把服务器换成性能更好的机器 。
美团评测 1.1前言
美团图谱业务数据量点边总数可达千亿以上,吞吐量可达数万QPS(每秒查询率),结合业务现状,制定了选型的基本条件:
1.开源项目 。
2.支持集群模式,具备存储和计算的横向扩展能力 。
3.具备毫秒级多跳查询能力 。
4.具备批量导入数据能力 。
但Neo4j、、等一些数据库不支持多节点,不能横向扩展存储 。无法满足大规模图谱数据的需求 。对比实验选择了(原阿里团队创业开发)、(原团队创业开发)、(百度团队开发) 。
1.2硬件配置
数据库实例:运行在不同物理机上的容器
单实例资源:32核心、64G内存,1TB SSD存储 。【Intel? Xeon? Gold 5218 CPU @ 2.30GHz】
实例数量:3
1.3测评数据集
实体情况:4类实体、总数26亿
关系情况:19类关系、总数177亿
数据格式:csv
1.4导入测试结果
1.4.1数据分析
:数据存储分布方式是主键哈希,各节点存储分布基本均衡 。导入速度快,存储放大比最优 。
:数据存储分布为三元组谓词,同一种关系只能保存在一个数据节点上,导致存储和计算严重偏斜 。
:导入数据,先写满了一个节点1000G的磁盘,造成导入失败,无法导入全量数据 。存储放大比最大,同时有严重的数据倾斜 。
【图数据库选型】1.5实时写入测试
1.5.1数据分析
:数据存储分布方式是主键哈希,各节点存储分布基本均衡 。写入请求可以由多个存储节点分担,因此响应时间和吞吐量大幅领先
:数据存储分布为三元组谓词,同一种关系只能保存在一个数据节点上,吞吐量较差 。
:存储后端基于HBase,实时并发读写能力低于()和(),因此性能最差 。(这里的、均为数据仓库)
1.6 数据查询测试
N跳返回ID
N跳返回属性
1.7讨论
有人提到的数据仓库HBase表需要做预分区 。经过预分区处理之后,使用比美图评测较差的配置,单task顶点都有几千的QPS(每秒查询率) 。
2.腾讯云评测 2.1前言
比较对象:Neo4j,Neo4j是目前业界广泛使用的图数据库,包含社区版和商用版本,测评使用的是社区版 。,是百度基于改进而来的分布式图数据库,具有良好的读写性能 。,原阿里团队开发,数据负载均衡,读写速度快 。
2.2测试硬件配置
2.3性能对比
使用不同量级的图从入库时间,一度好友查询,二度好友查询,共同好友查询几个方面进行对比 。
2.4讨论
Q:数据集是什么?
A:腾讯云所用的数据集为内部脱敏关系数据,分布如下(将50度以上的结果截断) 。
Q:neo4j延迟怎么会这么慢?1000w条边,260G内存,都可以全缓存,为什么一度查询需要6s?
A:测试neo4j的时候使用推荐内存大小,但是测试几次仍稳定在6s左右,可能解释说查询时间是指图中的37ms,实验中记录的都是控制台显示结果的时间,故记录6s
3.Neo4j性能测评 3.1前言
测试的查询和修改均为查询出一条边和修改一条边,并且数据的量级也是基于边的关系,而节点是从这些边中抽取出来之后加上随机属性 。以下结果都是基于一度查询,并没有做复杂查询 。