OPPO 图数据库平台建设和业务落地
1、什么是图数据库
图数据库(Graph database)是以图这种数据结构存储和查询的数据库。与其他数据库不同,关系在图数据库中占首要地位。这意味着应用程序不必使用外键或带外处理(如 MapReduce)来推断数据连接。与关系数据库或其他 NoSQL 数据库相比,图数据库的数据模型也更加简单,更具表现力。
图数据库在社交网络、知识图谱、金融风控、个性化推荐、网络安全等领域应用广泛。
2、图数据库调研
2.1、调研背景
随着知识图谱等业务数据的不断增长,现有图数据库 JanusGraph 应对已经比较吃力,导入时间已经无法满足业务的要求。因此寻找性能更好的开源属性图数据库已经成为了当前迫切要做的事情。
2.2、调研过程
第一步,搜集常见的开源分布式属性图数据库,
第二步,基于美团、LightGraph、TigerGraph、GalaxyBase 等图数据库测试报告,分析可得几个图数据库性能
第三步,为了验证 Nebula Graph 的性能,对 Nebula Graph 和 JanusGraph 进行了一次性能对比测试,测试结果如下:
2.3、调研结论
Nebula Graph 导入性能、响应时间、以及稳定性均符合需求,支持数据切分,分布式版本免费开源,使用的企业也多,中文文档,文档全面,社区活跃,是开源图数据库的理想选择。
3、Nebula Graph 简介
图片来源于 Nebula Graph 文档站
Nebula Graph 是一款开源的、分布式的、易扩展的原生图数据库,能够承载数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。
Nebula Graph 基于图数据库的特性使用 C++ 编写,采用 shared-nothing 架构,支持在不停止数据库服务的情况下扩缩容,而且提供了非常多原生工具,例如 Nebula Graph Studio、Nebula Console、Nebula Exchange 等,可以大大降低使用图数据库的门槛。
图片来源于 Nebula Graph 文档站
Nebula Graph 由三种服务构成:Graph 服务、Meta 服务和 Storage 服务,是一种存储与计算分离的架构。
4、图数据库平台建设
之前在使用 JanusGraph 的时候,遇到过导入缓慢、查询慢、高并发 OOM(JanusGraph 线程池采用无界队列导致)、FULL GC(业务 Gremlin 语句中包含 Value 导致元空间不断膨胀导致)等问题,这些在切到 Nebula Graph 后基本得到了解决。
JanusGraph 并没有好用的管理界面,如上图所示,我们开发了一套包含多图管理、Schema 管理、图可视化、图导入、权限管理的管理界面。
而 Nebula Graph Studio 提供多图管理、Schema 管理、图可视化、图导入等功能,省去了很多开发工作,降低了使用门槛。
整个图数据库平台的结构如上图所示,基于 Nebula Graph 和 Nebula Graph 官方工具,着重开发了 全量导入、增量导入、图导出、备份/还原、查询工程(图检索)等功能。
5、业务落地
5.1、知识图谱及智能问答
5.2、内容标签
5.3、数据血源
在数仓中,经常需要运行各种 ETL Job,数据表和任务非常多,如何直观的观察数据表上下游与任务之间的关系变成一个亟需解决的问题。
5.4、服务架构拓扑
6、总结
通过知识图谱等业务实践落地,完成了从 JanusGraph 向 Nebula Graph 的转变,导入性能提升了一个数量级,查询性能以及并发能力都有 3-6 倍的提升。而且,Nebula Graph 比 JanusGraph 更稳定。在实践的过程中,也遇到过很多问题,得到了 Nebula Graph 社区非常多的帮助,十分感谢社区的支持!
图数据库在最近这几年发展很快,Neo4j 今年上半年融资3.25 亿美金,刷新了数据库的融资记录。Gartner 发布的报告指出:“到 2023 年,图技术将促进全球 30% 企业的快速决策场景化。图技术应用的年增长率超过 100%。”随着 5G 和物联网的普及,图数据库将成为处理关系的基础设施。
作者简介
Qirong, OPPO 高级后端工程师, 主要从事图数据库、图计算及相关领域的工作。