【干货分享】深度解读:StellarDB 3.0 看得见的图数据库
2021/5/13 19:25:41
本文主要是介绍【干货分享】深度解读:StellarDB 3.0 看得见的图数据库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
大家下午好,我是星环科技图数据库研发工程师黑巧香,很荣幸也很开心有这个机会给大家分享我们团队最近的研发成果:StellarDB 3.0 -- 看的见得图数据库。本次分享我主要从两个方面来为大家介绍StellarDB图数据库。进入正题之前我先简单介绍一下图数据库及其应用场景。图数据究竟是什么?又有哪些常见的应用场景呢?
维基百科中是这样介绍图数据库的,这里引用了20多年前一篇人工智能论文中的定义:在计算机科学中,图数据库是使用图结构进行语义查询的数据库,它使用点、边和属性来表示和存储数据。
其中“图结构”是图数据库的核心,“语义查询”是用户期望图数据库能够提供的功能,而“点”、“边”和“属性”这三者是图数据的表现形式和存储形式。
大部分情况下:点表示实体或实例,比如:人,企业,账户等等。边表示点与点之间的关系。属性表示点或者边的信息。就像右边这幅图一样,现在,我们一般都会称其为属性图模型。
图数据库的应用场景很多,这里我只选了三个典型的场景。
第一个是:股权穿透。通常是由高管、企业、及关联公司构成的复杂网络,以股权为纽带,向上穿透到目标企业的最终实际控制人,向下穿透到该企业任意层股权投资的所有企业及其股东。
第二个是:信贷担保圈。中小企业通过关联企业、产业链上下游客户、关系人等互相担保,形成复杂的担保网,信贷担保圈的挖掘对企业贷款风险的识别与防范有重要意义。
第三个是:反欺诈。通过账户、交易、电话、IP地址、地理位置等关键实体信息的关联关系,对风险暴露人的N层图挖掘,可以辅助筛选疑似欺诈人员,达到预防目的。
这些应用场景过去是可以通过传统数据库解决,那为什么还需要图数据库呢?
一个原因是:复杂网络问题中,多层关系的关联分析是常见场景,当数据量比较大时,N层关联查询的效率会很低,而很多很多业务场景对延迟要求却比较高。
另一个原因是:图计算与图分析也是常见的复杂网络分析方法,很多人会吐槽其在大数据量情况下执行时间太长,计算结果的可复用性差等问题。
图数据库的出现,可以从根本上解决上面的两个问题。
下面我们进入正题,介绍我们即将正式发布的StellarDB 3.0。
新版本的StellarDB的系统架构相比之前基本没有变化。最底层依赖的是星环科技的容器化操作系统。接着是分布式存储引擎,为StellarDB数据库提供数据可靠性的保障。然后就是图数据库的存储引擎,存储引擎上面是分布式图分析引擎,以及提供图算法的图计算框架。
最上面是应用层,目前我们提供了扩展的OpenCypher图查询语言,还有可以对接开源Spark的RDD和DataFrame API,以及图可视化应用和周边工具。另外,图数据库也接入了星环科技的用户认证和权限管理系统Guardian,以及管理组件服务的安装和监控的Manager。
既然系统架构没什么变化,那StellarDB 3.0有什么新特性呢?我想通过四个词来概括一下:
第一个词是:更稳。StellarDB 3.0 支持7X24小时稳定运行,同时增加了数据的备份和恢复功能。
第二个词是:更快。我们的计算引擎团队对图分析和图计算任务做了很多优化,使得图查询和图计算的性能至少提升了4倍。另外,批量数据导入是一个很重要的功能,我们也做了很多优化在里面。
第三个词是:更灵活。新版本的StellarDB支持动态修改图的Schema,也支持了多标签功能,同时增加了REST API便于用户对接。
第四个词是:更简易。简单易用是SetllarDB的一个重要目标,新版本的StellarDB增加了算法结果写回图,可视化工具和3D图展示等便捷功能。
除了StellarDB 3.0的新特性,我们简单回顾一下StellarDB大部分的核心特性。主要是4大模块。
最左边的是最底层的存储引擎,分布式、多分区、多图、多副本、索引是StellarDB 1.0就已经支持的特性,在后续的2.0和现在的3.0版本中做了很多优化和改进,使得数据存储更加稳定。缓存、备份与恢复、多标签、动态图Schema都是我们在与上层应用做对接的过程中用户比较关心的功能点,StellarDB 3.0 中这些都已经支持。
接着是与存储引擎直接交互的计算引擎,分布式图查询、分布式图算法、资源隔离、高可用、可扩展、支持用户认证与权限管理等等,其实这些功能在StellarDB 2.0中都已经支持,在StellarDB 3.0中做了很多完善和优化,使得图查询的性能有了大幅度的提升。
严格意义上来说,图查询语言其实是计算引擎的一部分,我在这里单独拎出来只是想凸显它的重要性。StellarDB 2.0 中我们支持了大概80%左右的OpenCypher语法, 在StellarDB3.0 中我们对OpenCypher的支持进行了完善,另外也拓展了很多语法,使得StellarDB更简单易用:其中包括批量导入,算法写回图,查询结果导出以及用户定制算法等等。
最后一个就是最上层的可视化应用。存储引擎和计算引擎总是显得很神秘也很高级,图查询语言看起来也有点复杂和抽象,为了让StellarDB能看的见,摸得着,我们提供了简单的图数据库集群监控页面、图查询任务和图计算任务的监控页面,也提供了界面版的数据导入工具,以及我们炫酷的3D图展示,3D图展示可以帮助我们出色的完成大图展示、多种布局切换、动态效果等核心功能。
下面我会着重对StellarDB新版本的技术点进行一定的讲解。
StellarDB的存储引擎是Master/Worker这种架构,其中,Master主要完成存储引擎的集群管理、元数据管理,通过zookeeper来保证高可用。Worker主要完成数据的存储,一致性保证、图数据的增删改查等功能。计算引擎部分我主要介绍下我们的Transwarp Extended open Cypher的执行原理。
当用户输入一条Cypher语句到计算引擎,首先会进入到OpenCypher解析器,进行词法分析和语法分析,并生成一棵语法树,接着Cypher解析器会根据语法树生成对应的逻辑执行计划,经过逻辑执行计划优化器,然后生成物理执行计划,再是物理执行计划的优化器,最终形成的物理执行计划,才会生成计算任务,提交给分布式计算引擎执行,开始图数据的读写操作。
StellarDB3.0的很多优化是在两个优化器阶段完成,包括:过滤条件下推、根据filter/label等过滤条件的命中率,以及查询结果中点/边数量的估计,来预测整个任务的计算量,还有一种优化是通过数据本地性进行任务调度,从而减少数据传输的网络开销对计算任务的影响。
StellarDB的用户访问控制和图级别的用户读写权限管理,以及大部分的访问接口在StellarDB 2.0中已经支持,在StellarDB 3.0中我们对这些功能进行了完善和补充,同时增加了REST API方便客户做应用对接。
最后,我们再来看看StellarDB的落地案例。
在我们接触的所有客户里,大体上可以分为两类:
第一类是已经有图数据库相关业务,有些客户是现有技术出现了瓶颈,有些是想在现有基础上做一些探索性的业务扩展,他们更关心图数据库如何与他们的现有系统对接。
对于这类客户,我们推荐通过JDBC或者REST API进行对接,Cypher可以帮助用户完成大部分的图匹配操作和基本图算法。对于复杂业务的算法需求,可以通过扩展Cypher语法或者StellarDB的JavaAPI和RDD API进行对接。
第二类客户是没有图相关业务,这些客户大多比较关心如何快速上手。
我的建议是可以从现有业务中寻找涉及关联分析的痛点或场景。然后建立图模型,可参考我们公司内部已经与StellarDB完成对接的Sophon KG。也可以利用StellarDB周边工具,比如StellarWeb、Stellar3D等等。
下面是StellarDB的部分客户案例。
对于科技类客户,有我们公司内部的知识图谱平台--Sophon KG。
对于金融类客户,我们对接过某银行内的知识图谱平台、移动端图展示应用。联合公司内部的AI部门实现了基于风险传播模型的3D动态图展示。还有我们最近正在和NLP小组合作的自然语言智能问答服务。
对于公安、电信类客户,一般都是数据量比较大(百亿~万亿)的业务场景,StellarDB的批量数据导入性能和实时查询性能均表现良好。
这里我想顺便感谢一下我们的客户对我们的大力支持和提供专业建议,也感谢我们整个团队的齐心协力,才让我们有机会做出这些有意思成果。
关于StellarDB的介绍和落地案例我们已经全部说的差不多了。
那么未来的StellarDB会变成什么样?
StellarDB3.0 意味着StellarDB已经3岁了,我们经历了一些磨砺,也做出了一些成果,然而在我看来:一切才刚刚开始。任何一款数据库产品都需要不断的打磨才能做得更好,走得更远,StellarDB也不例外。幸运的是我们最开始定的目标,随着时间的流逝,大方向上基本没有变化,目前看来,我们接下来的目标也不会有太大的变动。
未来的StellarDB一定会:更稳-更快-更简易-更丰富。我们希望能够得到更多新老客户的支持,通过技术专业与业务专业的合作,完成更多、更有创造性、更有价值的案例。
图数据库相关的任何内容,欢迎大家来探讨与补充。
这篇关于【干货分享】深度解读:StellarDB 3.0 看得见的图数据库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01后台管理开发学习:新手入门指南
- 2024-11-01后台管理系统开发学习:新手入门教程
- 2024-11-01后台开发学习:从入门到实践的简单教程
- 2024-11-01后台综合解决方案学习:从入门到初级实战教程
- 2024-11-01接口模块封装学习入门教程
- 2024-11-01请求动作封装学习:新手入门教程
- 2024-11-01登录鉴权入门:新手必读指南
- 2024-11-01动态面包屑入门:轻松掌握导航设计技巧
- 2024-11-01动态权限入门:新手必读指南
- 2024-11-01动态主题处理入门:新手必读指南