本文为微众银行大数据平台工程师——邸帅在 nMeetup 深圳场的演讲文字稿,演讲视频参见:B站(戳「阅读原文」观看)

Hello,我是微众银行大数据平台的邸帅,下面我来介绍下 WeDataSphere 到底是个什么。

WeDataSphere 的目标是做一套一站式金融级的大数据平台套件,让大数据变得更加容易。

这是套件的总览图,它是一个比较完整的数据平台套件,分为三层:底层是计算存储引擎,中间是连接上、下两层的中间件,最上层则是各种功能工具系统。底层主要做计算、存储,中间层可以做各种扩展、管控,复用等操作,上层则是面向用户的工具系统,像 IDE 系统、可视化系统、调度、数据质量管控、交换都在上层,也包括一些机器学习的开发工具。
左边是面向整个平台的运营管控,安全增强、数据治理等等模块,可以看到 Nebula Graph 是几经选择之后引入的图数据库引擎,放置在交互式计算模块作为图数据库标准引擎去提供底层的图数据存储和计算能力,上层工具系统则会逐渐对接 Nebula Graph 工具系统。在《Nebula GraphDB 在微众银行的实践》演讲中主讲人周可会对这块做详细介绍,这里不作赘述。

下面初步地讲解下为什么微众需要图数据库,这个需求触发点便是数据治理、数据血缘相关业务。这是一个简化的数据血缘示意图。在微众内部的生产环境中有各种底层的计算存储引擎,例如:HBase、Hive、Hadoop、Nebula 等等,而微众数据血缘的场景,包括:权限管控,上游数据流入下游哪些表、哪些库,需要有个识别整个数据平台数据流向图,实际上就是一个关系网络。
这是个简化的 4 层关系数据血缘的关系网络图,在未使用 Nebula Graph 之前,微众大数据平台的操作是这样的:做一个关系型数据模型、二维表,自关联,然后 INNER JOIN。像下面的这个 Lineage 表结构就是很简单:Source 源是哪个表,Process 中间做了哪些处理,Dest 目标是哪个表。4 层 INNER JOIN 之后就可以将刚才血缘图中的关系 Join 出来。
举个例子,找到 CA Class.A 中的 Table 1(Slides 中的 CA.T1)下游到底有哪些表,从下图中可以看到是 CB.T2 和 CB.T3。
但这相当麻烦,一堆 JOIN 语句等着你,上面的例子是最简化场景,如果一个大数据平台集群中(数据量约 10 PB)有几十万张表,该怎么办?上面的例子仅仅是数据表级别的数据血缘关系,如果后期需要字段级血缘关系该怎么办?

是时候引入图数据库了,刚才 4 层 INNER JOIN 语句在 Nebula Graph 中的图查询语言 nGQL 中就这么简单。

CA.T1.VID 是一个 Vertex ID,再沿着 process 这个关系 / 边,就完事了。

经微众测试,图数据库 Nebula Graph 独特的数据组织的方式和查询的方式可以极大地提升关系网络的查询性能,比如:点和边的存储根据 Vertex ID 做 Hash,将相邻、有关系的点和边存储在一起,即在物理存储上一起存储。
Nebula Graph 底层目前是基于 RocksDB,之前是支持 HBase,而后期 Nebula Graph 自己实现自己的 KV 存储。可以说底层 KV 存储本身,它的血液里,原生的这个设计血液里,就是针对海量的这个数据的快速地查找定位以及读取。因此图数据库的整个查询效率比关系数据库或者基于关系数据模型要快很多。
See?这就是微众为什么要引入图数据库——简单、快、省成本!

针对关系网络问题的解决,目前在微众银行暂时只是数据治理和 AI OPS 场景,但其实在银行业务中,风控、反欺诈、营销审计等等关键业务场景,也是很需要这种关系网络的技术解决方案。

为什么选用 Nebula Graph?这里暂时不赘述,在《Nebula Graph 在微众银行的实践》演讲中主讲人周可会对这块做详细介绍。
简单来说,最直接决定微众选择 Nebula Graph 一点是性能,之前微众使用过 JanusGraph,大多数时候查询跑不出来或者是很慢。Nebula Graph 很好地解决了性能问题。
另外一块就是 Nebula Graph 的工程完备度,比如,在线扩展、扩容用户无感,多图空间设计,在工程上让微众觉得是一个比较完善、可应对生产环境需求的图数据库。
所以微众银行选择了这个 Nebula Graph。上图隐掉了两个 Tag,实际是两个商业化的软件,微众也没有测过性能,这里就隐掉了。

再回头提下 WeDataSphere,刚才介绍过了 WeDataSphere 是一套一站式金融级大数据的平台套件,微众目前已经将其中部分组件开源,像上面微众使用了开源的分布式图数据库 Nebula Graph,微众这边也要回馈开源社区。
上图带有 s 球图标的组件都是微众已经开源的组件,你可以去 GitHub / Gitee 了解详细资料,GitHub 传送门:https://github.com/WeBankFinTech/WeDataSphere

在 WeDataSphere 开源组件中比较有特色的便是 Linkis 和 DataSphereStudio,两层横向设计的联通框架,可灵活地对接上层的功能工具和底层的计算存储引擎,同时提供统一的架构和管控的能力。

再来介绍下微众开源参与情况,微众银行从成立开始并没有使用 IOE 相关的技术 ,而是基于开源软件技术和 x86 / ARM 这些基础硬件成功建成自主安全可控的分布式银行核心系统。通过自身实践,打破了金融科技不可能三角:大容量 + 高可用 + 低成本。微众银行通过科技手段有效改变成本结构,具体表现在每个 IT 账户成本小于 ¥ 3/年。

对应的微众开源的布局便是:ABCD。A 是 AI,B 是 Blockchain,C 是 Cloud Computing 云计算,D 是 Big Data,上图可以看到 ABCD 4 大方面,微众银行已经开源不少项目。比如:AI 的 FATE ,Blockchain 的 FISCO BCOS 还有 WeDataSphere ,目前开源社区累计了不少用户。同时,微众也积极参与了各大国际和国内的标准的制定,去推动这些标准去成为一个成为一个行业的事实标准。

微众银行对于开源文化和开源社区的开放、共建精神是非常的认同的。
所以后续微众银行会持续地去拥抱开源社区,促进开源文化的发展,同时更多地通过微众对开源社区的回馈、合作伙伴相关的连接,共建更加良好的开源生态。
OK,微众大数据平台的邸帅演讲到此为止。

喜欢这篇文章?来来来,给我们的 GitHub:https://github.com/vesoft-inc/nebula 点个 star 表鼓励啦~~ 🙇♂️🙇♀️ [手动跪谢]
交流图数据库技术?交个朋友,Nebula Graph 官方小助手微信:NebulaGraphbot 拉你进交流群~~


