2018-12-21 15:27:4013126人阅读
在很多人的印象中,关系型数据库仍是市场的主流,甲骨文、Teradata、IBM、微软都是这个领域的主要玩家。而与以往用表格处理数据相比,图是没有表的概念的,就是数学上的点和边的关系,所有的数据可以汇集在一起。从存储角度来说,图是存储数据最自然的关联模型。从计算角度来说,则合适大数据和人工智能。由于早年间计算性能和架构的局限,使得图数据库这个在计算机科学领域较为高阶的研究成果在近几年才开始显露威力。
一图胜千言。从最近十年的表现来看图数据库已经成为关注度最高,发展趋势最明显的数据库类型。从图数据库的优势和趋势上来看前景很好,特别是图数据库在处理大数据方面的优势,会让图数据库越来越像关系型数据库一样流行。
与传统数据库相比,图数据库有何差异?
较传统关系型数据库,图数据库的差异体现在四个层面。首先是存储模型不同,表格化和图形化对于关键信息的筛选和联系有着本质区别,并且压缩率和对CPU Cache的利用度也不一样;其次是计算模型不同,图可以从特定节点出发定向去寻找关联的数据,而非“大海捞针”;再有就是查询功能,一些厂商会将语言设计成类似SQL的GSQL高级语言,便于二次开发时实现各种复杂的功能;最后是数学理论不同,可以理解为关系型数据库是二维的,图的维度没有限制,在图里任何东西都可以是一个节点,各种维度可以关联起来做大规模的并行处理。
如果是用图能解决问题,可以看作是关系型数据库的一个超集,任何用关系型数据库能表达的商业逻辑、表达的问题都用图都能表达出来,至于以前为何用图不行一点是因为性能不够,另一点是没有合适的工具。
得益于对关系型数据库场景的支持,任何用关系型数据库能表达的商业逻辑和业务,用图也可以表达出来,并且后者在大数据时代的并行计算等方面有着天然的优势。最直观的一个例子是,图不用去海量的非结构化数据中盲目寻找两个人的关系,而是会直接从两个人潜在的关联性出发以最短路径找到行为联系。
例如,如电信反欺诈方面,每天全球数以万计的骚扰电话可能存在较高的误报率,而图并不会直接对电话号码做出鉴别,而是会寻找通话者与其他联系人的通话规律,通过机器学习多重验证来大幅降低误报率。
再如,银行放贷时,可以根据用户关联的电话号码、通讯录成员的贷款行为、过往记录、黑白名单等信息通过机器学习来实时计算出放贷风险。当客户遇到欺诈团伙时,表面上看起来没有任何风险的交易,当与别的信息关联起来后就有可能发现诈骗的蛛丝马迹了。
因此,不同于关系型数据库,一修改便容易“牵一发而动全身”图数据库可实现数据间的“互联互通”,与传统的关系型数据库相比,图数据库更擅长建立复杂的关系网络。
图数据库的优势所在?
事实上,图数据库目前已经俘获了大量客户,且客户数量和应用领域还在不断增长中,包含社交、金融、保险、广告、安全等行业都是图数据库的主流客户群体,那么,相比传统数据存储和计算方式,图数据库的优势究竟体现在何处呢?
我们简单归结为以下五点:
1、使用图(或者网)的方式来表达现实世界的关系很直接、自然,易于建模。比如某人喜欢看某电影,就可以建立一条边连接这个人和这部电影,这条边就叫做“喜欢”边,同时这个人还可以有其它边,比如“朋友”边、“同学”边等,同样这个电影也可以有其它边,比如“导演”边、“主演”边等,这样就构建了自然的关系网。
2、图数据库可以很高效的插入大量数据。图数据库面向的应用领域数据量可能都比较大,比如知识图谱、社交关系、风控关系等,总数据量级别一般在亿或十亿以上,有的甚至达到百亿边。mysql不做分表分库的情况下插入百万数据基本就慢到不行,图数据库基本能胜任亿级以上的数据,比如neo4j、titan(janus)、hugegraph等图数据库,持续插入十亿级的数据基本还能保持在一个较高的速度。
3、图数据库可以很高效的查询关联数据。传统关系型数据库不擅长做关联查询,特别是多层关联(比如查我的好友的好友有哪些人),因为一般来说都需要做表连接,表连接是一个很昂贵的操作,涉及到大量的IO操作及内存消耗。图数据库对关联查询一般都进行针对性的优化,比如存储模型上、数据结构、查询算法等,防止局部数据的查询引发全部数据的读取。
4、图数据库提供了针对图检索的查询语言,比如Gremlin、Cypher等图数据库语言。图查询语言大大方便了关联分析业务的持续开发,传统方案在需求变更时往往要修改数据存储模型、修改复杂的查询脚本,图数据库已经把业务表达抽象好了,比如上面的2层好友查询,Gremlin实现为g.V(me).out('friend').out('friend'),如果需要改为2层同学查询,那调整一下把好友换为同学即可g.V(me).out('classmate').out('classmate')。
5、图数据库提供了专业的分析算法、工具。比如ShortestPath、PageRank、PersonalRank、Louvain等等,不少图数据库还提供了数据批量导入工具,提供了可视化的图显示界面,使得数据的分析结果更加直观展示出来。
在NoSQL领域,从最近十年的表现来看图数据库已经成为关注度最高,发展趋势最明显的数据库类型。从图数据库的优势和趋势上来看前景很好,特别是图数据库在处理大数据方面的优势,会让图数据库越来越像关系型数据库一样流行。
近几年来,包括百度、阿里、华为在内的国内公司也在积极投入和研发图数据库,由百度安全开发的HugeGraph,是一款开源图数据库。可以存储海量的顶点(Vertex)和边(Edge), 实现了Apache TinkerPop 3框架,支持Gremlin查询语言。 HugeGraph支持多用户并行操作,用户可输入Gremlin查询语句,并及时得到图查询结果,也可在用户程序中调用HugeGraph API进行图分析或查询。
更多图数据库优势,且听下回分解。了解更多HugeGraph接入信息,请点击https://anquan.baidu.com/page/27
参考资料:
1、《图形数据库、NOSQL和Neo4j》https://kb.cnblogs.com/page/74127/
2、《知识图谱红利 图数据库在AI时代新生》http://cloud.zol.com.cn/701/7017430.html