近年来,在大数据处理过程中,有一种数据库被广泛提及和使用,那就是图数据库。那么图数据库到底是什么?图形数据库,如果您是新手,可能会被它们的字面意思误导。实际上,图数据库不是指存储图片和图像的数据库,而是存储图等数据结构的数据库。那么图是什么呢?什么是图表让我们通过下面的例子来认识一下。东汉末年,孙权、刘备联军在赤壁一带以火攻敌舰,大败曹军。如果我们把阵营之间的关系抽象出来,把阵营看成点,把阵营之间的关系看成边,那么我们可以用下面的图来形象地表示上面的关系:以上就是这里所谓的图(直观展示).我们把这种存储实体与实体之间关系的数据结构称为图,Graph。图由点和边组成。一个点就是一个实体,比如上例中的营地。两个实体之间的关系用有向或无向边来表示,比如刘备和孙权的联盟关系。这种通用结构可以模拟现实中的各种场景,从交通系统到组织结构管理,从流程设计到社交网络。什么是图数据库知道了图的概念,就明白什么是图数据库了。简单来说,图数据库就是处理图等数据结构的工具。与传统关系型数据库使用二维表存储数据不同,图数据库在传统上被归类为NoSQL(NotOnlySQL)数据库的一种,也就是说图数据库是非关系型数据库。一个通用的图数据库至少包括三个功能:图存储、图查询和图分析。为什么要用图数据库那我们为什么要用图数据库呢?我们还是用东汉末年的例子来说明图数据库相对于关系数据库的优势。假设一个关系数据库中有三张表,分别是东汉末年人物表、东汉末年征战表和东汉末年人物表。当我们想知道“樊城之战谁是守军”时,查询速度一般较快,可以直接从表2中得到,但是当我们想知道“刘备集团发动了哪些战争?”时,虽然我们也可以从表2中得到答案,但是我们可能需要遍历整个表2,查询效率会瞬间降低。而当我们要查询比如“刘备集团发动过哪些战争,关羽打过哪些仗”的时候,我们来看看关系型数据库是如何做这个查询的:东汉末年文行文字。然后用东汉末年字表找出他们参加过哪些战役C.最后用东汉末年字表找出他们参加过哪些战役攻方是刘备团体。我们会发现这个查询太麻烦了。而如果我们把上面的表转换成下面的关系图,那么谁和谁有什么关系就一目了然了。那么也许你还没有真正体会到图数据库的强大,让我们来看看在一个最经典的社交网络中查询性能的对比数据。在《Neo4j in Action》一书中,作者做了一个测试:在一个包含100万人的社交网络中,每个人大约有50个好友,找最大深度为5个好友的好友,实验结果如下:测试结果表明,当深度为2时,两个数据库的性能相差不大,都非常快;当深度为3时,关系数据库需要半分钟完成查询,而图数据库仍然在1秒内完成查询;当深度为4时,关系数据库用了将近半个小时才返回结果,而图数据库用了不到2秒;而当深度达到5时,关系型数据库长时间无法响应,但图数据库仍能“秒杀”,表现非常出色。表现。基于此,我们可以从以下几个方面来理解为什么要使用图数据库:关系数据库不擅长处理数据之间的关系,而图数据库在处理数据之间的关系方面灵活且高性能。不可否认,关系型数据库天生就是20世纪80年代以来,一直是数据库领域发展的主力军。目前,随着社交网络、物联网、金融、电子商务等领域的快速发展,由此产生的数据呈指数级增长,而传统的关系型数据库在处理复杂关系的数据上表现不佳,因为关系型数据库数据库使用外键约束来实现多个表之间的关系引用。查询实体之间的关系需要JOIN操作,而JOIN操作通常非常耗时。图数据库最初的设计动机是为了更好地描述实体之间的关系。图数据库和关系数据库最大的区别是无索引邻接。图数据模型中的每个节点都会维护与其相邻节点的关系,这意味着查询时间与图的整体规模无关,而只与每个节点的邻居数量有关,这使得图数据库复杂的处理大量的关系时,它也保持良好的性能。另外,图的结构决定了它易于扩展的特性。我们不必在模型设计之初就考虑所有细节,因为后面很容易添加新节点、新??关系、新属性甚至新标签,而且不会破坏现有的查询和应用功能。数据之间的关系变得越来越重要。当我们问为什么图数据库如此重要时,其实是在问,为什么数据之间的关系如此重要?就像大家都知道人际关系的价值一样,数据的价值也在于人与人之间的关系。例如。直播带货最近很火。如果某个主播在微博上有数百万的粉丝,如果他不使用,这个数据就没有什么价值。当前来他直播间购物的顾客连线时,数据立刻展现出巨大的商业价值。用图来表达现实世界中的很多东西更直接、更直观、更容易理解自然界中存在着各种各样的关系,而关系型数据库只能将这些扁平化为表格形式的行列数据,而图的数据是基于图模型以直观的方式模拟这些关系,因此更加形象。此外,现在大多数图数据库都提供了可视化的图形展示,使得查询和分析更加直观。专业的图分析算法为实际场景提供解决方案。图数据库起源于图论。借助专业的图分析算法,针对实际场景提供合适的解决方案。图数据库如何存储、查询和分析图存储图数据库如何存储图对于查询和分析效率至关重要。图数据库使用图模型来操作图数据。所谓图模型是指图数据库描述和组织图数据的方式。目前主流的图数据库选择的图模型是属性图。属性图由点、边、标签和属性组成。我们来看一个具体的属性图实例。上面的属性图可以帮助我们理解一些相关的概念:1)可以给点设置标签,比如人物,战争等。我们认为标签相同的点属于一个组,也就是一个集合,所以刘备和曹操属于一个集团;2)还可以给边设置标签,标签可以是relation等;3)节点可以有很多属性,比如样式名、年份等,这些属性值以键值对的形式表示,例如:刘备的样式名是宣德;4)边也可以有属性,比如军队等;5)边允许方向,例如刘备与汉中之战的边方向是从刘备到汉中之战;6)元数据用于描述点和边的属性信息,元数据由若干个标签组成,每个标签由若干个属性组成。图查询如果我们想知道刘备的籍贯在哪里,刘备和曹操有什么关系,发起汉中之战等等,这些都属于图查询的范畴。我们知道SQL是关系型数据库的查询语言,但是图数据库的查询语言并没有复用SQL。这是因为图数据库本质上处理的是高维数据,而SQL适用于二维数据结构,不擅长关系查询和操作。使用专门的图查询语言比SQL更高效。目前主流的图查询语言包括Gremlin和Cypher。图分析图分析是指通过各种图算法挖掘图信息的技术。核心图算法可以分为三类:路径搜索、中心性分析和社区发现。路径搜索是探索图中节点通过边建立的直接或间接连接。比如下图中,通过路径查找,我们找到了这样一条路径:孙策-[夫妻]-大乔-[姐姐]-小乔-[夫妻]-周瑜,从中我们知道孙策和周瑜是姐夫。路径搜索算法广泛应用于物流配送、社会关系分析等场景。中心性分析是指分析图中特定节点的重要性和影响力。比如上图中,直觉上,孙权是重要人物,因为与他直接相连的边数最多。中心性分析算法一般用于网页排名、意见领袖挖掘、流感传播等场景。社区检测旨在发现图中连接更紧密的组结构。如果我们在上图中加入更多的三国人物和关系,并使用Louvain等社区挖掘算法,我们很容易发现这些人物属于三个阵营,如下图所示。社区发现算法可用于犯罪团伙挖矿等场景。图数据库有什么用?介绍完图数据库的主要功能,我们再来看看图数据库的应用场景。图数据库擅长的应用领域包括:社交领域:Facebook、Twitter用于社交关系管理、好友推荐我们熟悉的好友推荐。您可以使用推荐朋友的朋友的方法。徐庶、司马徽向刘备推荐诸葛亮。电商领域可以通过下图形象化:华为商城用它来实现实时商品推荐。通过分析目标用户和其他用户的喜好,找到其他类似的用户,并向这些用户进行购买。向目标用户推荐产品。金融领域:中国工商银行和摩根大通将其用于风控管理目前,金融领域对图数据库的需求非常迫切。以贷款为例,图数据库可以在整个贷款周期中发挥巨大的作用。安平场:警方借此侦查嫌疑人关系和犯罪团伙,深挖东汉末年。曹操刺杀董卓,貂蝉挑拨董卓父子关系,吕布杀董卓。但董卓并不知道,这些事件的幕后黑手之一就是王允,如下所示。现实中也可能是这样。幕后真凶与目标案件未必有直接关系,只有间接关系。什么样的场景适合使用图数据库?你可以根据以下几点来判断你的问题是否需要图数据库:如果你的问题中经常出现多对多关系,建议选择图数据库;关系很重要,建议选择图数据库;如果需要处理大规模数据集之间的关系,建议选择图数据库。
