1 什么是图数据库
图数据库(Graph database)是以图这种数据结构存储和查询的数据库。与其他数据库不同,关系在图数据库中占首要地位。这意味着应用程序不必使用外键或带外处理(如 MapReduce)来推断数据连接。与关系数据库或其他 NoSQL 数据库相比,图数据库的数据模型也更加简单,更具表现力。
图数据库在社交网络、知识图谱、金融风控、个性化推荐、网络安全等领域应用广泛。
2 图数据库调研
2.1 调研背景
随着知识图谱等业务数据的不断增长,现有图数据库 JanusGraph 应对已经比较吃力,导入时间已经无法满足业务的要求。因此寻找性能更好的开源属性图数据库已经成为了当前迫切要做的事情。
新图数据库应满足以下要求:
- 能够支持 10 亿节点 100 亿边 170 亿属性的大规模图谱
- 全量导入时间不超过 10h
- 二度查询平均响应时间不超过 50ms,QPS 能够达到 5000+
- 开源且支持分布式的属性图数据库
2.2 调研过程
第一步,搜集常见的开源分布式属性图数据库,如下表:
第二步,基于美团、LightGraph、TigerGraph、GalaxyBase等图数据库测试报告,分析可得几个图数据库性能如下:
-
导入:NebulaGraph > HugeGraph > JanusGraph > ArangoDB > OrientDB
-
查询:NebulaGraph > HugeGraph > JanusGraph > ArangoDB > OrientDB
NebulaGraph不论是在导入还是在查询性能上都表现优异。
第三步,为了验证 NebulaGraph 的性能,对 NebulaGraph 和 JanusGraph 进行了一次性能对比测试,测试结果如下:
上图中,将JanusGraph性能看作 1,NebulaGraph 导入性能要比 JanusGraph 快一个数量级,查询性能是 JanusGraph 的 4-7 倍。而且随着并发量的增大,性能差距会进一步拉大,而且 JanusGraph 在从 20 个线程开始,三度邻居查询会有 error。而 NebulaGraph 没有任何error。
NebulaGraph 全量导入 10 亿节点 100 亿边只需要 10h,满足要求,目前正在调研 SST 导入,可以大幅提升导入速度。
对 NebulaGraph 使用 120 个线程进行二度邻居查询压测,最终 QPS 在 6000+,相比单机有一些提升。成功率接近 5 个 9,而且响应实践比较稳定,平均 18.81ms,p95 38ms,p99