“我该用什么技术?”一直是开发人员心中纠结的困惑点之一。
结合现实,一般开发人员大都会选择自己熟悉的工具,而不是最佳的工具。除个人当前的知识、技术等限制因素之外,还有影响决策者的其他因素,其中包括需要同事的支持、管理层的批准以及新方案带来的分配学习成本,或是对投入产出比未知的“恐惧”……
当然,如果以上均不是问题,你又非常愿意甚至想深入地了解图数据库在什么场景下能够成为更好的工具,那么在本篇文章中,笔者将重点进行对比介绍,以帮你评估出针对于你的业务实际,是否适合使用图数据库。
图数据库何时适合使用?当脑海中闪现出这个问题时,我们不妨先分析一下图数据库在什么情况下是不适合使用的。
1 业务场景数据量少
虽然需要Join多张表,但因为数据量少,传统关系型数据库也可以很快地进行查询和分析。假设你只需查“你的朋友的朋友 ”,在这种基数比较小的情况下,仅仅需要Join两张表,那么采用传统关系型数据库即可。
从技术的角度来说,在关系型数据库中,涉及到多表的关联查询会造成计算的效率指数级下降,其背后的原因即笛卡尔乘积问题的存在。举例来说,两张表table-join实际造成的计算的复杂度其实是乘积的关系,如果是三张表,每个表都有1万行,10000×10000×10000,这已经是1万亿的复杂度。
2 业务场景数据仅为1步、2步邻居
虽然业务的数据量大,但因涉及的关联关系非常浅层,所以也可以不用图数据库。但如果涉及关联到10步的邻居(hop),那就要Join 10次、甚至更多,这也意味着对计算的要求很高,耗时变长的同时成本亦上升。相信很多开发人员经历过这种Join到“奔溃”的时刻。
例如用关系型数据库与图数据库做一个深度穿透,从第2-5层,性能的差异已经是指数级上升的。如在1层的时候,两者可能并没有本质区别,但从2层开始,就会出现指数级的变化。一般来说,业务人员选择用传统数据库做4-5层的穿透,通常不能完成复杂查询这个任务。
图:从关系型数据库(SQL)到图数据库(GQL)
3 业务场景无需数据的关联、下钻以及查询分析
如果只需查单表,那就不需要使用到图技术。比如,你只需要设定查看游览过你公司官网的人数,从技术的操作上来讲,只需在表中存储 ID、姓名和电话号码,而无需保留来自客户的更多信息,因此表格上的列就不会更改,这是关系型数据库中的一个常例。而图非常适合查集合了多元素类型且可以轻松适应不断变化的业务场景需求的复杂场景。
如,你有很多交易数据,但对其的人员、转账、时间、设备、行为轨迹等关系并没有连接、关联或继续深钻和查询分析的需求,那图技术就不适于你的解决方案。但我们知道,很多业务场景,如银行账户之间的交易行为,其本身就是一种复杂多层的嵌套关系,在这种嵌套关系网络当中,实际上有更多的信息值得被挖掘,更多的行为亦待被抽取,这即需要图这种具备高维数据计量的技术来解决。
图:图数据库可实现迅捷的数据关联价值抽取
4 业务场景对实时性要求不高
如果业务场景对实时性要求不高,可以进行离线分析,不需要覆盖深度的业务,那么采用关系型数据库即可。与此相区别,图数据库可以快速地遍历数据,并在毫秒内检索分析出结果。所以开发人员对于某一技术的选择前提,仍然在于你对业务场景需求和技术优势的研判。
比如对时效性要求非常高的电信反欺诈场景,它即需要一套能够实时在线决策系统的解决方案,能够处理每一笔交易的拦截,包括实时的构图、实时的规则的运行、风控引擎规则的运行等等,且都要在20毫秒之内完成。实际上,在20毫秒之内,图数据库可能已经跑了几十个QPS,因为几十个子查询完成了各个维度、规则的运行,从而最终构成了这笔交易是放行还是拦截的决策。
图:图数据库实时风控交易之可视化
此外,绝大多数技术认为业务没有实时性要求的时候,恰恰是因为技术限制了业务——技术架构过去因无法实现实时计算而不得不以批处理的方式进行。在同等投入的情况下,实时性永远比T+1系统更具价值,也更能赋能业务。
综上所述,希望能够为大家在评估某些业务场景中,对是否选择图技术有一个直观的了解。虽然以上并不全面,但它基本涵盖了最常见也最容易识别的情况。当然,如果图是你评估后的选择,希望它能帮你达到事半功倍的效果——工欲善其事必先利其器!
图:Gartner 5层数据模型分析
5 总结
什么是图数据库?
· 图数据库是基于数学里图论的思想和算法而实现的高效处理复杂关系网络的新型数据库系统;
·图数据库善于高效处理大量的、复杂的、互联的、多变的数据。其计算效率远远高于传统的关系型数据库;
· 图数据库在社交网络、金融领域、人工智能等领域均有着广泛的应用。
为什么要使用图数据库?
· 世界本身就是由各种关系关联而成;
· 图本身所具备的高维的独特能力;
· 可解释AI(白盒化);
· 架构发展的必然;
· 企业发展的核心需求。