11 月 2 号 - 11 月 3 号,以“大爱无疆,开源无界”为主题的 2019 中国开源年会(COSCon'19)正式启动,大会以开源治理、国际接轨、社区发展和开源项目为切入点同全球开源爱好者们共同交流开源。git
做为图数据库技术的表明,Nebula Graph 总监——吴敏在本次大会上将会讲述了大规模分布式图数据库设计思考和实践。在信息爆发式增加和内容平台遍地开花的信息时代,图数据库在当中扮演了什么样的角色?同传统数据库相比,图数据库又有什么优点?图数据库开发须要哪些新技术?就此,开源社特访吴敏来分享下图数据库主题内容,从图数据 Nebula 的研发开始,就传统数据库面临的挑战,开源模式的优点,Nebula 的社区开展和产品规划等问题进行深刻解析。程序员
你们好,我是吴敏,VEsoft 总监,博士毕业于浙江大学。 曾就任于阿里云、蚂蚁金服,从事分布式图数据库以及云存储相关工做。github
随着抖音、小红书等社交内容平台的爆红诞生了一种基于社交关系网路的推荐需求,而以垂直领域做为切入点的知识图谱过去两年的“爆火”,传统数据库在处理社交推荐、风控、知识图谱方面的性能缺陷,图数据库的研发应运而生。算法
本演讲开篇将陈述图数据库行业现状,让你对图数据库存储的数据及对场景有所了解,再从开源的分布式图数据库 Nebula Graph 切入深度讲解大规模分布式图数据库应该如何设计存储、计算及架构,最后讲述开源对图数据库开发的影响。数据库
内容大纲后端
对图数据库有兴趣,或是有推荐、风控、知识图谱等业务场景需求的人。微信
Nebula 是星云的意思,很大嘛,也是漫威宇宙里面漂亮的星云小姐姐。对了,Nebula的发音是:[ˈnɛbjələ]网络
OceanBase、TiDB 这类 NewSQL 最近发展势头很强劲,他们的出现更多的是对传统单机的关系型数据库在可用性的补充。
Nebula 聚焦在图数据库这一领域,也是近年来在数据库各分支中增加最为快速的领域。图数据库使用图(或者网)的方式很直接、天然的表达现实世界的关系: 用节点来表示实体,边来表示关联关系,everything is connected。能高效的提供图检索,提供专业的分析算法、工具,好比 ShortestPath、PageRank、标签传播等等。数据结构
典型的应用场景有社交网络,金融风控,推荐引擎,知识图谱等。架构
社交网络,好比,推荐一条最短路径让我结识迪纳热巴,还能够加上筛选条件,路径中的每一个人都是单身女性。
金融风控场景,好比,去查一个信用卡反套现的网络。很典型的一个场景,A 转帐到 B,B 转帐到 C,C 又转回给 A 便是一个典型的闭环。对于这样的闭环,这类查询在图数据库大规模应用以前,大部分都是采用离线计算的方式去查找,可是离线场景很难去控制当前发生的这笔交易。一个信用卡交易或者在线贷款,整个做业流程很长,而在反套现这块的审核时间又限制在毫秒级,这就是图数据库很是大的一个应用场景。
在推荐算法中,为某我的推荐他的好友。如今的方案是去找好友的好友,判断好友的好友有没有可能成为某人的新好友,这当中涉及好友关系的亲密度,抵达好友的好友的最短路径等。业务方可能会用 MySQL 等传统数据库或是 HBase 来存各种好友关系,而后经过多个串行的 Key-Value 来作查询,但这在线上场景是很难知足性能要求的。
知识图谱这些年很是火,知识图谱结合天然语言的形式在金融,医疗,互联网等众多领域被普遍使用,常见的有语音助手、聊天机器人、智能问答等应用场景。而图数据库存储的数据结构彻底适配知识图谱数据,图谱中的实体对应图数据库的点,实体与实体的关系对应图数据库的边,拿 Nebula 为例,Nebula Graph Schema 采用属性图,点边上的属性对应图谱实体和关系中的属性,边的方向表示了关系的方向,边上的标记表示了关系的类型。
再说到最近国内很是火的区块链场景,因为区块链上的全部行为都是公开被记录的又是不可篡改的,所以全部的交易行为,无论是历史数据,仍是大概每几分钟产生的新 block,均可以对 DAT 文件解析后导入到图数据库和 GNN 中作分析。例如咱们都据说在一些数字货币场景下,洗钱、盗窃、团伙、操纵市场的各种事情不少,经过图的手段包括能够帮助咱们挖掘里面的非法行为。
Nebula 是彻底自主研发的数据库,它主要有如下的技术特色
存储计算分离
对于 Nebula Graph 来说,有这么几个技术特色:第一个就是采用了存储计算分离的架构,主要好处就是为了上云或者说弹性,方便单独扩容。业务水位老是很难预测的,一段时间存储不够了,有些时候计算不够了。在云上或者使用容器技术,计算存储分离的架构运维起来会比较方便,成本也更好控制。你们使用 HBase 那么久,这方面的感触确定不少。
查询语言 nGQL
Nebula Graph 的第二个技术特色是它的查询语言,咱们称为 nGQL,比较接近 SQL。惟一大一点的语法差别就是 不用嵌套 (embedding)。你们都知道嵌套的 SQL,读起来是很是痛苦的,要从里向外读。另外,因为图这块目前并无统一的国际标准,这对整个行业的发展并非好事,用户的学习成本很高。目前有个 ISO / IEC 组织在准备图语言的国际标准,咱们也在积极兼容标准。
支持多种后端存储
第三个特色就是 Nebula Graph 支持多种后端存储,除了原生的引擎外,也支持 HBase。
由于不少用户,对 HBase 已经至关熟悉了,并不但愿多一套存储架构。从架构上来讲,Nebula Graph 是彻底对等的分布式系统。
计算下推
和 HBase 的 CoProcessor 同样,Nebula Graph 支持数据计算下推。数据过滤,包括一些简单的聚合运算,可以在存储层就作掉,这样对于性能来说能提高会很是大。
多租户
多租户,Nebula Graph是经过多 Space 来实现的。Space 是物理隔离。
索引
除了图查询外,还有很常见的一种场景是全局的属性查询。这个和 MySQL 同样,要提高性能的主要办法是为属性创建索引 ,这个也是 Nebula Graph 原生支持的功能。
图算法
最后的技术特色就是关于图算法方面。
这里的算法和全图计算不太同样,更可能是一个子图的计算,好比最短路径。你们知道数据库一般有 OLTP 和 OLAP 两种差别很大的场景,固然如今有不少 HTAP 方面的努力。那对于图数据库来讲也是相似,咱们在设计 Nebula Graph 的时候,作了一些权衡。咱们认为全图的计算,好比 Page Rank,LPA,它的技术挑战和 OLTP 的挑战和对应的设计相差很大。因此 Nebula 的查询引擎主要针对 OLTP 类的场景。
那么,对于 OLAP 类的计算需求,咱们的考虑是经过支持和 Spark 的相互访问,来支持 Spark 上图计算,好比 graphX。这块工做正在开发中,应该在最近一两个月会发布。
存储计算分离是个很热的话题。咱们将存储模块和 Query Engine 层分开主要有如下考虑。
咱们使用 Raft 协议,Raft 一致性协议使得 share-nothing 的 kv 有一致性保障。为何选择 Raft?相对于 Paxos,Raft 更加有利于工程化实现。Nebula 存储层 Raft 使用 Multi-Raft 的模型,多个 replica 上的同一个 partition 组成一个 Raft 组,同一个集群内存在互相独立 Raft 组,在一致性保障的同时,提升了系统的并发能力。
Nebula 在数据优化方面主要作了如下工做:
Nebula 有 CSV、HDFS 批量 数据导入工具。用户能够将数仓的数据导入到 Nebula。也提供 C++,Java,Golang,Python 的客户端。另外对于市面上已有的一些产品,如今也正在开发将它的数据格式直接解析为 Nebula 的数据格式,这样就能够很是方便的迁移,包括查询语言层面的兼容。
存储层 share-nothing
的架构,理论上支持无限加机器。
目前实现较为简单,基于双向搜索,返回点边组合的路径。将来规划是计划在执行计划与优化器都完成后,完善对路径的支持,包括实现 match,支持双向 bfs、双向 dijkstra、allpair(全路径),kshortest 等。固然咱们欢迎社区的同窗们都参与完善 Nebula 的路径算法。
对于刚开始使用图数据库的用户,咱们提供了详细的文档;
对于已经在使用其余图数据库,想要试试 Nebula 的用户,咱们提供了数据导入等工具,有疑问或者任何问题,欢迎在 GitHub 上给咱们提 issue,咱们的工程师会在第一时间为您解答。
若是没 Linux,如今互联网的格局也不会是今天这样。咱们想要创建图数据库的社区,作出更好的图数据库产品,也但愿更多对 Nebula,对图数据库感兴趣的同窗成为社区的贡献者,一块儿努力,共同创建一个互助互利的社区。
不少人都想为开源作一份力,但会被开源项目的门槛“劝退”,尤为是 Nebula 是一个即便耕耘在数据库领域多年的数据库专家,若是对图数据库的不够了解的话,都会感叹“高大上”的一个项目。但技术是为业务服务的,因此 Nebula 力求本身的文档让你即便你对图数据库一无所知,经过 Nebula 的文档也可以了解到图数据库及其应用场景。
开源项目最重要的是生态的搭建,Nebula Graph 刚开源半年在社区搭建这块只能说略有心得,仅供你们参考 :) 开源社区运营主要从下面几个方面展开
最后,打个小广告:欢迎你们来参与到 Nebula 的建设中,为开源贡献一份力 :)
多看看论文,看看开源分布式系统的设计以及源代码;多关注数据库的的会议,好比,SIGMOD, VLDB,关注学术界的最新成果;多关注业界相关公司的发展和动态,好比 OsceanBase,TiDB。
以上为开源社对图数据库 Nebula 总监——吴敏的采访,欢迎你关注 Nebula GitHub:github.com/vesoft-inc/nebula 了解 Nebula 最新动态或添加 Nebula 小助手为好友进图数据库技术交流群交流,小助手微信号:NebulaGraphbot