图计算(graph computing)与图数据库(graph database)之间的差异是很多刚接触图的人不容易厘清的。尽管在很多情况下,图计算可以和图数据库混用、通用。但是,它们之间存在很多不同,笔者认为有必要单独做个介绍。
图计算可以简单地等同于图处理框架(graph processing frameworks)、图计算引擎(graph computing engines),它的主要工作是对已有的数据进行计算和分析。图计算框架多数都出自学术界,这个和图论自20世纪60年代与计算机学科发生学科交叉并一直不断演化有关。
图计算框架在过去20年中的主要发展是在OLAP(Online Analytical Processing,联机分析处理)场景中进行数据批处理。
图数据库的出现要晚得多,最早可以称之为图数据库的也要到20世纪90年代,而真正的属性图或原生图技术在2011年后才出现。
图数据库的框架主要功能可以分为三大部分:存储、计算与面向应用的服务(例如数据分析、决策方案提供、预测等)。其中计算部分,包含图计算,但是图数据库通常可以处理AP与TP类操作,也就是说可以兼顾OLAP与OLTP(Online Transactional Processing,在线事务处理),两者的结合也衍生出了新的HTAP类型的图数据库,第3章会详细介绍它的原理。简言之,从功能角度上看,图数据库是图计算的超集。
但是,图计算与图数据库有个重要的差异点:图计算通常只关注和处理静态的数据,而图数据库则能处理动态的数据。换言之,图数据库在数据动态变化的同时能保证数据的一致性,并能完成业务需求。这两者的区别基本上也是AP和TP类操作的区别之所在。
多数图计算框架都源自学术界,其关注的要点和场景与工业界的图数据库有很大的不同。前者在创建之初大都面向静态的磁盘文件,通过预处理、加载入磁盘或内存后进行处理;而后者,特别是在金融、通信、物联网等场景中,其数据是不断流动、频繁更新的。静态的计算框架不可能满足各类业务场景的需求,这也催化了图数据库的不断迭代,从以OLAP为主的场景开始,直至发展到可以实现OLTP类型的实时、动态数据处理。
另一方面,由于历史原因,图计算框架所面对的数据集通常都是一些路网数据、社交网络数据。在社交网络中的关系类型非常简单(例如:关注),任何两个用户间只存在一条边,这种图也称为单边图(simple graph),而在金融交易网络中,两个账户之间的转账关系可以形成非常多的边(每一条边代表一笔交易),这种图称为多边图(multi-graph)。显然,用单边图来表达多边图会造成信息缺失,或者通过增加大量点、边来实现从而达到同样的效果(得不偿失,且会造成图上处理效率低下)。
再者,图计算框架一般只关注图本身的拓扑结构,并不需要理会图上的点和边的复杂属性问题,而这对于图数据库而言则是必须关注的。例如在上一节提到的9个“不可能”的场景中,几乎都需要面向点、边进行过滤、剪枝。
图计算与图数据库的另外两个差异点如下:
1)图计算框架中能提供的算法一般都比较简单,换言之,在图中的处理深度都比较浅,例如PageRank、LPA标签传播、联通分量、三角形计数等算法,图计算框架可能会面向海量的数据,并且在高度分布式的集群框架上运行,但是每个算法的复杂度并不高。图数据库所面对的查询复杂度、算法丰富度远超图计算框架,例如5层以上的深度路径查询、K邻查询、复杂的随机游走算法、大图上的鲁汶社区识别算法、图嵌入算法、复杂业务逻辑的实现与支持等。
2)图计算框架的运行接口通常是API调用,而图数据库则需要提供更丰富的编程接口,例如API、各种语言的SDK,可视化的图数据库管理及操作界面,以及最重要的图查询语言。熟悉关系型数据库的读者一定不会对SQL陌生,而图数据库对应的查询语言是GQL,通过GQL可以实现复杂的查询、计算、算法调用和业务逻辑。
图计算与图数据库的差异梳理见表1-1。
表1-1 图计算与图数据库的差异
通过本章的背景介绍,希望读者能够做好准备,更好地进入图数据库的世界。