从Hadoop诞生之日起,大数据的发展走过了十余年,期间像存储、离线处理等基础问题已经得到了解决。随着深度学习、机器学习等AI技术的逐级深入,人们开始思考如何通过挖掘大数据的关联性去探索“隐藏”在背后的商业价值,这种诉求也将一个15年前的技术再次推到了台前——图数据库。当然,这里指的图并不是图片,而是欧拉图和知识图谱的“图”。
在很多人的印象中,关系型数据库仍是市场的主流,甲骨文、Teradata、IBM、微软都是这个领域的主要玩家。而与以往用表格处理数据相比,图是没有表的概念的,就是数学上的点和边的关系,所有的数据可以汇集在一起。从存储角度来说,图是存储数据最自然的关联模型。从计算角度来说,则合适大数据和人工智能。由于早年间计算性能和架构的局限,使得图数据库这个在计算机科学领域较为高阶的研究成果在近几年才开始显露威力。
对于传统的关系型数据库来说,虽然其具有灵活的特点,可以做各种复杂计算,但在大数据时代对于并行计算、多机版的支持是缺乏的,而像MongoDB这种文档数据库、关键字、内存数据库,牺牲了业务的一些表达能力,得到的好处就是可扩充,但很多以前用关系型数据库能表达的问题却表达不了。
较传统关系型数据库,图数据库的差异体现在四个层面。首先是存储模型不同,表格化和图形化对于关键信息的筛选和联系有着本质区别,并且压缩率和对CPU Cache的利用度也不一样;其次是计算模型不同,图可以从特定节点出发定向去寻找关联的数据,而非“大海捞针”;再有就是查询功能,一些厂商会将语言设计成类似SQL的GSQL高级语言,便于二次开发时实现各种复杂的功能;最后是数学理论不同,可以理解为关系型数据库是二维的,图的维度没有限制,在图里任何东西都可以是一个节点,各种维度可以关联起来做大规模的并行处理。
如果是用图能解决问题,可以看作是关系型数据库的一个超集,任何用关系型数据库能表达的商业逻辑、表达的问题都用图都能表达出来,至于以前为何用图不行一点是因为性能不够,另一点是没有合适的工具。
得益于对关系型数据库场景的支持,任何用关系型数据库能表达的商业逻辑和业务,用图也可以表达出来,并且后者在大数据时代的并行计算等方面有着天然的优势。最直观的一个例子是,图不用去海量的非结构化数据中盲目寻找两个人的关系,而是会直接从两个人潜在的关联性出发以最短路径找到行为联系。
例如,当医药公司研制出新药后,可以基于社区的页面排名、搜索推荐找出医院、医生、病人的关联性,像患者某天看过主治医生后,如果这个医生把他/她推荐给一个专科医生,那么这个专科医生跟主科医生就可能就有关系,这是通过图能发掘出来的。再如电信反欺诈方面,每天全球数以万计的骚扰电话可能存在较高的误报率,而图并不会直接对电话号码做出鉴别,而是会寻找通话者与其他联系人的通话规律,通过机器学习多重验证来大幅降低误报率。
再如,银行放贷时,可以根据用户关联的电话号码、通讯录成员的贷款行为、过往记录、黑白名单等信息通过机器学习来实时计算出放贷风险。当客户遇到欺诈团伙时,表面上看起来没有任何风险的交易,当与别的信息关联起来后就有可能发现诈骗的蛛丝马迹了。
简而言之,图数据库的不同之处主要有两点:第一,把两个点的关系路径找出来,例如两个独立的人,他们之间的联系可能不止一条路径,要是以前的关系型数据库,程序员会说做不了,因为要么是通过手机号码找,要么是通过公司关系找,或者是通过其他东西去找,没有确切信息是找不到的。而对于图来说,会把相关的各个点连成网,找的是这两个点在网络之间的关系,这是能够带给大数据、人工智能的一个突破。
第二,比如大家都在一个办公室上班,公司数十名员工中有5-6个微信群,同事之间会有一个人同时在若干个群的情况。如果你是管理者,可以把微信的关系群提取出来,就会发现有一个人出现在所有群里面。这样一来,就能够找到某一群体中关键的那个人是谁。由此引伸出的场景是金融动态征信,如果这是一个企业的网,其中有一家企业失信,当把图上这个点拿掉的话,因为大家都有公共关系,那么在数据分析上类似于病毒传染,这个公司的信用就会出问题,所牵扯的上下游都会受到影响。由此,可以在出现问题之前做更为全面的风险控制。
当然或许有人会说,既然图数据图是最适合的存储和计算互联数据模型,为什么现在还没有在商业界、工业界得到广泛应用?毕竟当前最大的市场还是关系数据库,甲骨文借此已经做到了千亿美元的市值。要知道,欧拉图理论有两百多年的历史,因此理念并不新鲜。不过从计算机科学的角度来看,图是较为高级的研究方向,任何一个高深的理论到真正商业化都有经过长时间的试验,即使像甲骨文做关系型数据库有四十多年了,其实在刚开始的十几年,甲骨文的产品也是不可用的。
大约在15年前,业内有人开始尝试做图数据库,但当时还没有大数据、没有并行技术、没有多核计算机,所以是生不逢时的。像一些专门做图数据库的公司,开始的图计算能力也很差,一般只能计算到两步,做不到深度关联。直到后来,像TigerGraph用C++从头到尾做了一套基于对图的存储引擎,并在其上做了大规模并行的图计算引擎,以及针对图的高级开发语言,配备了可视化的开发环境,开发出原生并行的图数据库平台。
所谓“并行”,举个例子,还是把图里的元素看成是节点和边,这些都是并行的存储单元,每个节点、每个边都有存储属性。最核心的是计算,比如某个人有100个朋友,每个人还有100个朋友,那就是10000个人,如果是关系型数据库,想找到两步某人的朋友要做一些信息过滤,如前文提到的爱好、人际关系等等,全部顺序取回来做计算,这就没有并行的概念了。
而并行的特点在于,可以想像有足够多的CPU和足够多的线程,从一个人出发,可以顺着100条边,每条边走过去时自动过滤信息,从每个人出发,每个人要走100个共10000个边,若有10000个CPU和10000个线程,那么这10000步就能并行处理了。如果是单线程,没有这种并行的能力,即使有性能再好的机器,从一个人(节点)出发去找到100个人,一个一个去过滤,从这100个人里的每个人去调用API,再去调用100个,对这100个做单独处理,显然是复杂的。
近几年,图数据库是数据库技术中发展速度最快的,未来五年仍将是十倍速的增长。随着知识图谱在中国市场越来越流行,为各行各业提供知识图谱通用图引擎的数据库企业也将迎来高速的发展机遇。无论是亚马逊还是IBM,都在逐渐将目光投向下一代数据库技术,这在一定程度上也加速了该领域新兴企业的技术进程。
图可以说是机器学习、人工智能的数据库,关系型数据库或者文档数据库都不是为AI而生的,像文档数据库本身是一个个文档,每个文档之间没有关联,但是一个人在网站上买了十个产品、买了二十件衣服,不希望打乱放在不同的表里再合并起来显示,文档在写进取出的时候是没有关联的,而图可以把所有的数据都关联起来。随着知识图谱的概念和应用越来越火热,图数据库也将迎来又一个春天。
本文属于原创文章,如若转载,请注明来源:知识图谱红利 图数据库在AI时代新生//cloud.zol.com.cn/701/7017430.html