性能远超 Neo4j,专访图数据库 Nebula Graph 创始人

大东BE 发布于 2020/12/15 18:42
阅读 10K+
收藏 27

本月初,DB-Engines 如期发布了最新的全球数据库管理系统排行榜,传统关系型数据库依然雄踞榜单前几位,蚕食了绝大部分数据库市场。 

对于大部分中小型厂商来说,在数据量少、并发量小的情况下,公司内部使用的管理型系统的首选依然是关系型数据库,包括 MySQL、Oracle、SQL Server、PostgreDB 等等,这些也都是我们平时接触得最多的数据库系统。 

但随着互联网流量爆发式增长,越来越多的公司业务需要支撑海量数据存储,对高并发、高可用、高可扩展性等特性提出了更高的要求,传统的关系型数据库在应付这些情况时已经显得力不从心。由此,各种各样的 NoSQL(Not Only SQL)数据库作为传统关系型数据库的补充得到迅猛发展。

其中,图数据库(Graph DBMS)是一种基于图论存储实体之间关系信息的 NoSQL 数据库。最常见例子就是社会网络中人与人之间的关系。传统关系型数据库在存储“关系”数据的效果并不好,其查询逻辑复杂、缓慢、超出预期,而图数据库的独特设计恰恰弥补了这个缺陷,解决了关系型数据库存储和处理复杂关系数据功能较弱的问题。

但由于图数据库应用场景较为垂直,相关技术在国内起步较晚,与之相关的讨论和技术文档在国内也相对较少,社区很多朋友对图数据库技术的相关信息不甚了解。为此,我们邀请到了开源图数据库项目 Nebula Graph 的创始人叶小萌,请他为我们分享了图数据库在国内的应用情况与市场前景。

什么是图数据库 ?

图,计算机相关专业的同学应该都学过,是一种点和边构成的网状数据结构,而图数据库就是存储图数据并以此为基础进行语义查询的数据库。

本身图数据库存储的就是实体(和关系(边),所以擅长处理数据间关系,相对应的一些典型场景就呼之欲出了:社交网络,金融风控,推荐引擎,知识图谱,区块链等。

社交网络,比如,推荐一条最短路径让结识迪丽热巴,还可以加上筛选条件,路径中的每个人都是单身女性。

金融风控,举个例子,去查一个信用卡反套现的网络。很典型的一个场景,A 转账到 B,B 转账到 C,C 又转回给 A 即是一个典型的闭环。对于这样的闭环,这类查询在图数据库大规模应用之前,大部分都是采用离线计算的方式去查找,但是离线场景很难去控制当前发生的这笔交易。一个信用卡交易或者在线贷款,整个作业流程很长,而在反套现这块的审核时间又限制在毫秒级,这就是图数据库非常大的一个应用场景。 

在推荐算法中,为某个人推荐他的好友。现在的方案是去找好友的好友,判断好友的好友有没有可能成为某人的新好友,这当中涉及好友关系的亲密度,抵达好友的好友的最短路径等。业务方可能会用 MySQL 等传统数据库或是 HBase 来存各类好友关系,然后通过多个串行的 Key-Value 来做查询,但这在线上场景是很难满足性能要求的。 

知识图谱这些年非常火,知识图谱结合自然语言的形式在金融医疗互联网等众多领域被广泛使用,常见的有语音助手、聊天机器人、智能问答等应用场景。而图数据库存储的数据结构完全适配知识图谱数据,图谱中的实体对应图数据库的点,实体与实体的关系对应图数据库的边,拿 Nebula 为例,Nebula Graph Schema 采用属性图,点边上的属性对应图谱实体和关系中的属性,边的方向表示了关系的方向,边上的标记表示了关系的类型。

再说到最近国内非常火的区块链场景,由于区块链上的所有行为都是公开被记录的又是不可篡改的,因此所有的交易行为,不管是历史数据,还是大概每几分钟产生的新 block,都可以对 DAT 文件解析后导入到图数据库和 GNN 中做分析。例如我们都听说在一些数字货币场景下,洗钱、盗窃、团伙、操纵市场的各类事情很多,通过图的手段包括可以帮助我们挖掘里面的非法行为。

图数据库与传统关系型数据库的关系

社区不少朋友曾讨论过,包括图数据库在内的 NoSQL 数据库未来是否会取代传统关系型数据库? 

叶小萌认为,二者不是谁取代谁,或者谁干掉谁的关系,而是一种相辅相成的互补关系。不可否认,传统关系型数据库存储数据结构欠灵活,性能不佳等问题,但是相对应的,它们使用同一表结构的比较容易维护。至于企业要采用哪种类型的数据库,还要从业务本身出发,毕竟技术还是要服务于业务。一般 NoSQL 数据库是基于 CAP 模型,主要解决传统关系型数据库应对不了的大数据量,而传统的关系型数据库是基于 ACID 模型,主要解决数据一致性问题。

而且根据 Bloor 2020 年的图数据库报表所说:越来越多的关系型数据库厂商开始提供图查询和图处理功能,兼容图查询语言,这种趋势表明,数据库厂商意识到,客户的需求越来越难完全用关系型数据库或者图数据库解决,很多场景下需要融合几种方案。可见,NoSQL 数据库和传统关系型数据库还是相辅相成的。

Nebula Graph 的特性

据悉,Nebula Graph一个由叶小萌的团队完全自主研发的数据库系统,主要有以下的技术特性:

  • 存储计算分离

对于 Nebula Graph 来讲,有这么几个技术特点:第一个就是采用了存储计算分离的架构,主要好处就是为了上云或者说弹性,方便单独扩容。业务水位总是很难预测的,一段时间存储不够了,有些时候计算不够了。在云上或者使用容器技术,计算存储分离的架构运维起来会比较方便,成本也更好控制。

  • 海量数据存储

Nebula Graph 擅长处理千亿节点万亿条边的超大数据集,并提供优秀的性能,这是 Neo4j 这样的传统图数据库做不到的。

 Nebula Graph VS Neo4j  

提到图数据库,Neo4j 自然是绕不过去的标杆,这是一个在开源社区中知名度非常高的图数据库项目,同时也是 DB-Engines 榜单中排名最高的图数据库产品。那么作为后来者,Nebula Graph 与 Neo4j 等市场上的主流图数据库相比,在性能上孰优孰劣? 

关于 Nebula Graph 与 Neo4j 等知名图数据库的性能对比,有使用图数据库的开发者进行了专业的测试,我们直接找来了这份测试的详情: 

由于图数据库在挖掘黑灰团伙以及建立安全知识图谱等安全领域有着天然的优势,为了能更好的服务业务,选择一款高效并且贴合业务发展的图数据库就变得尤为关键。来自腾讯云安全团队的工程师挑选了几款业界较为流行的开源图数据库(Neo4j 社区版,HugeGraph) 与 Nebula Graph 进行了多角度的对比。 

  • 比较对象:

Neo4j:Neo4j 是目前业界广泛使用的图数据库,包含社区版本和商用版本,本文中使用社区版本。

HugeGraph:HugeGraph 是百度基于 JanusGraph 改进而来的分布式图数据库,主要应用场景是解决百度安全事业部所面对的反欺诈、威胁情报、黑产打击等业务的图数据存储和图建模分析需求。具有良好的读写性能。

  • 测试硬件环境:

  • 性能对比:

使用不同量级的图从入库时间,一度好友查询,二度好友查询,共同好友查询几个方面进行了对比,结果如下:

可以看到在导入性能上,数据量小的时候 Nebula Graph 的导入效率稍慢于 Neo4j,但在大数据量的时候 Nebula Graph 的导入明显优于其他两款图数据库;在 3 种查询场景下,Nebula Graph 的效率都明显高于 Neo4j,与 HugeGraph 相比也有一定的优势。

  • 查询语言对比:

从查询语句的角度出发,HugeGraph 所使用的 Gremlin 比较复杂,Nebula Graph 的 nGQL 和 Neo4j 的 Cypher 比较简练,从可读性角度来看,nGQL 比较类 SQL 化,比较符合大家的使用习惯。

  • 可视化对比:

在可视化方面,所有的平台都还只处于可用状态,Nebula Graph 的选择性扩展在团伙挖掘中是一个加分项,但是在二度结果展示流畅度,展示结果自定义展示方面还有优化空间。

在比较了多款业内主要使用的开源数据库后,测试团队从性能,学习成本和与业务的贴合程度多个角度考虑,最终选择了 Nebula Graph 图数据库。

本测试结果由腾讯云安全团队李航宇、邓昶博撰写

图数据库在国内的发展情况

包括开源中国社区在内,我们发现国内与图数据库相关的讨论和学习文档都相对较少,了解图数据库相关技术的人才其实并不多,那么图数据库在中国如何普及,目前的市场情况发展得怎么样了呢?叶小萌与我们分享了 Nebula Graph 项目团队推广图数据库技术的亲身经历。

前面说到,在 Nebula Graph 之前叶小萌做过两款图数据库,可以说在这块的从业经验还是很丰富的,而且也深知业务方的痛点在哪里,基于此,他带领团队创建了 Nebula Graph。 

在 19 年 5 月将 Nebula 项目开源之后,这一年多时间里,Nebula Graph 在微信、美团、小红书、360 数科、企查查等用户的多个业务场景生产使用,在这个过程中,项目团队积累了宝贵的业务经验;同时,由于 Nebula Graph 是开源产品,很多用户在自己的业务场景下使用时遇到困难,就会到项目的社区论坛上来提问,这也成为了项目团队了解用户反馈的一个重要途径。在此基础上,开发和产品团队不断地优化 Nebula Graph。

谈到图数据库技术在国内的推广,叶小萌与我们分享了他们推广 Nebula Graph 的经验。在推广的过程中,主要分为四个重点:一是,国内的用户对图数据库的概念相对陌生,需要输出相关的图数据库的知识,为此团队专门召集了一群国内做图数据库的专组建了图数据库交流群,对图数据库技术感兴趣的朋友提供一个探讨的平台;二是,产品本身如何推广,团队定期产出一些产品特性讲解文,和用户交流 Nebula 为什么这样设计,这个功能点背后的原理又怎样,拉近和用户的距离,降低他们使用图数据库的门槛。“当然,也亏了开源中国这样的开放平台让我们这些新技术能得到关注。”三是,团队会定期举办线下的图数据库交流会,受疫情影响今年也转向了线上直播。最后一点,国内比较知名的 QCon、DAMS 顶级技术大会,还有国外的 OCS 峰会,都会有 Nebula Graph 的身影,与国内开发者分享图数据库技术。

Nebula Graph 的开源建设

最后,叶小萌与我们聊到了个人对开源的看法,叶小萌认为,如果没 Linux,现在互联网的格局也不会是今天这样。我们想要建立图数据库的社区,做出更好的图数据库产品,也希望更多对 Nebula Graph,对图数据库感兴趣的同学成为社区的贡献者,一起努力,共同建立一个互助互利的社区。叶小萌说。 

目前,Nebula Graph 的项目仓库开放了 21 个 Repo,Contributor 人数超过 70,一共提交了超过 5kcommit。团队内部和外部的 Contributor 的比例约 1:1。 

叶小萌介绍,在社区互动方面,未来他们会将重心放在对外的开发者生态搭建上,让开发者参与到社区建设、产品设计中,也会定期举办一些 Hackathon 之类的活动彼此交流下想法,欢迎广大对图数据库技术感兴趣的朋友前来交流学习

采访嘉宾介绍

Hello,开源中国的各位读者好,我是叶小萌,开源的分布式图数据库 Nebula Graph 的创始人。目前我们团队有 40+ 人,开发人员占比 70% 左右,核心开发团队均来自于 Facebook、阿里巴巴、华为等国内外各大知名公司。

当然,我本人也是技术出身,只不过这个“老码农” 从硅谷的 Facebook 到杭州的蚂蚁,再出来自己开发新一代的分布式图数据库 Nebula Graph,可以说我一直在从事图数据库开发相关工作。欢迎对图数据库或者 Nebula Graph 感兴趣的开源中国小伙伴来交流技术。

 

加载中
2
vikon
vikon

niubila DB

1
攻城达瓦里什
攻城达瓦里什

我觉得标题头可以改一改,

沙发迪
沙发迪
改了每人看
1
万事通
万事通

国产数据库加紧优化提升啊,不要让老外卡脖子。

0
开源海哥
开源海哥

性能爆棚,不过名字是最大的败笔。

鬼面书生灬
鬼面书生灬
名字很好啊,“牛不啦 DB”有什么问题么?:laughing:
0
loveczp
loveczp

图数据库很难大火。应用范围太窄。Neo4j做了这么多年还是一副要死不活的样子。

Nickhahaha
Nickhahaha
回复 @爱吃白菜_lz : 是啊
爱吃白菜_lz
爱吃白菜_lz
贵~
0
o
osc_50751058

SQL Server 也支持图数据库,支持以传统 SQL 形式插入和查询图数据库数据,性能也还不错。

0
IanaiP
IanaiP

mysql数据库

0
梅开源
梅开源

我作为门外汉,其实没有到关心性能差异的阶段。主要感兴趣这个是否好上手,可视化是否容易用且好看,是否单机容易玩。

WeyGu
WeyGu
部署用docker-compose的话就是几行的指令 https://github.com/vesoft-inc/nebula-docker-compose 可视化 nebula 提供了web UI,也是 docker-compose部署,之后直接就可以用了,默认用户名密码 user/password https://github.com/vesoft-inc/nebula-web-docker
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部