图数据库是一种基于图结构的数据库,它可以帮助组织和处理具有复杂关系的数据,例如社交网络、知识图谱、网络安全、物联网等领域中的数据。与传统的关系型数据库不同,图数据库强调节点和边之间的关系,从而更方便地处理和查询具有复杂关系的数据。
一、图数据库的基本概念
1. 节点(Node)
在图数据库中,节点是指数据的基本单元,用于表示一个实体或对象。每个节点都可以有多个属性,描述该节点的各种特征。
2. 边(Edge)
边是节点之间的关系,用于表示节点之间的联系。每条边都有一个起始节点和一个结束节点,可以有多个属性,描述节点之间的关系。
3. 属性(Property)
属性是节点和边的特征,用于描述它们的各种属性。例如,节点可以有名称、类型、年龄等属性,边可以有权重、类型等属性。
4. 图(Graph)
图是节点和边的组合,用于表示复杂的数据结构。在图中,节点和边可以有各种不同的关系,可以形成复杂的数据结构。
二、图数据库的应用场景
1. 社交网络
社交网络是图数据库的一个常见应用场景。在社交网络中,用户之间有各种不同的关系,如好友、关注、点赞等。使用图数据库可以方便地处理这些复杂的关系,例如查找某个用户的所有好友或关注者,或者查找两个用户之间的最短路径等。
2. 知识图谱
知识图谱是一种用于表示知识的图形化数据结构,它可以帮助人们更方便地理解和查询知识。使用图数据库可以方便地构建和管理知识图谱,例如建立实体之间的关系、查询相关实体等。
3. 网络安全
网络安全是另一个重要的应用场景。在网络安全中,需要处理大量的网络拓扑结构和流量数据。使用图数据库可以方便地处理这些数据,例如查找网络中的恶意节点、分析网络攻击路径等。
4. 物联网
物联网是指通过物理设备和传感器收集和交换数据的网络。在物联网中,需要处理大量的传感器数据和设备之间的关系。使用图数据库可以方便地处理这些数据,例如查找各个设备之间的关系、分析传感器数据等。
三、图数据库的优点
1. 处理复杂关系
图数据库的优点之一是可以处理具有复杂关系的数据,例如社交网络、知识图谱等。与传统的关系型数据库不同,图数据库更强调节点和边之间的关系,从而更方便地处理和查询具有复杂关系的数据。
2. 快速查询
由于图数据库的数据结构是基于图的,因此它可以通过快速遍历节点和边来进行查询。这种查询方式比传统的关系型数据库更快速和高效。
3. 可扩展性
图数据库的另一个优点是可扩展性。由于图数据库的数据结构是基于图的,因此可以方便地添加和删除节点和边,从而更好地适应不断变化的数据需求。
4. 数据可视化
由于图数据库的数据结构是基于图的,因此可以通过可视化方式更方便地展示和理解数据结构。这对于一些需要可视化处理的应用场景非常有帮助,例如知识图谱、网络安全等领域。
四、图数据库的缺点
1. 学习成本高
与传统的关系型数据库相比,图数据库的学习成本更高。由于它的数据结构和查询方式与传统数据库有所不同,因此需要一定的学习和训练才能熟练掌握。
2. 不适用于所有场景
图数据库适用于处理具有复杂关系的数据,但并不一定适用于所有场景。在一些简单的应用场景中,使用传统的关系型数据库可能更加高效。
3. 数据复杂性增加时性能下降
虽然图数据库可以处理具有复杂关系的数据,但当数据复杂性增加时,查询性能可能会出现下降。这可能需要更高的硬件要求、更优化的查询算法等来提高性能。
五、图数据库的未来发展
随着社交网络、知识图谱、物联网等领域的不断发展,图数据库的应用前景非常广阔。未来,图数据库将继续发展并成为处理具有复杂关系的大规模数据的重要工具。同时,随着图数据库技术的不断成熟和普及,其学习成本也将逐渐降低,更多的人将能够掌握和应用这种技术。
数据之间的自然关系是一个大金矿,能为企业用户提供洞察力。 不幸的是,传统数据库存储数据的方式打破了数据之间的关系,隐藏了有价值的洞察,所以尽管专注于数据分析方面的数据库很多,但真正有价值的洞察却很少被发现。
在保留数据关系这方面,图数据库可谓是天赋异禀,它从头开始设计数据,帮助用户从大型,复杂的相互关联的数据网络中理解和推断细微的洞察。图数据库由一系列结点和边界组成;每一个结点代表了一个实体,每一个边界代表了两个结点之间的一种连接或者关系,为了更详细的描述数据间的关系,结点和边界的属性也会存储在内。
为了更好地解释图形数据库的工作原理,下面我们使用IBM Graph来演示一下。
IBM Graph是什么
IBM Graph基于构建高性能图形应用程序的Apache TinkerPop框架,旨在通过完全托管的图形数据库服务启用强大的应用程序。 反过来,也为用户提供了简化的HTTP API,Apache TinkerPop v3兼容的API和完整的Apache TinkerPop v3查询语言。 这种类型的数据库更易于利用结点,边和属性发现图中的无索引邻接关系。换句话说,图中的每个元素都直接连接到相邻的元素,从而不需要索引查找来遍历图。
通过基于图的NoSQL存储,IBM Graph可以更轻松地创建丰富的数据表示,无论是开发人员还是业务分析师,所以的团队成员都可以创建和绘制。
图形数据库(如IBM Graph)的灵活性和易用性意味着分析复杂关系不再是一项艰巨的任务。 图形数据库在新应用和服务中可以以指数级的高速率生成数据,可用来产生推荐结果、社交网络,位置或项目之间的有效路由、欺诈检测等。 它允许用户执行以下操作:
1.分析事物之间的相互关系
2.分析数据以跟踪人,产品等之间的关系
3.处理大量原始数据并将结果生成为图形
4.处理复杂关系和动态模式的数据
5.在迭代开发周期中适应不断变化的业务需求
图数据库是如何工作的
索引模式:IBM Graph可以使用模式来创建用于查询数据的索引。模式定义将要使用的属性的数据类型,并为属性创建索引。 在IBM Graph中查询访问的第一个属性需要索引,该模式最好事先完成(尽管后面可以附加),这样能够确保沿途引入的结点和边界可以按预期工作。
模式应定义图的属性,标签和索引。例如,如果分析Twitter数据,则数据将被划分为人,标签和Tweet,并且要确认它们之间的关系是entions, hashes, tweets,还是favorites。 此外,为了方便查询还要创建索引。
加载数据:虽然批量上传是可用的,但Gremlin可以上传任意多的数据,无疑是将数据上传到服务器的最佳选择。此外,使用批量上传时,服务器会自动为图元素分配ID,从而防止单独批量上传的结点和边之间建立连接。另外,上传之后系统会做出相应的响应,告知用户Gremlin脚本中是否有错误,并返回脚本上的最后一个表达式。如若导入成功应该如图所示:
查询数据:IBM Graph提供了用于查询数据的各种API端点。 例#FormatImgID_2#如,/ vertices和/ edge端点可以通过属性或标签查询图形元素。/ Gremlin端点可以执行更复杂的查询,甚至可以在单个请求中执行多个查询。 下图是一个查示例,用于返回Twitter用户Kamal最喜欢的tweets:
为了提高查询性能,避免Gremlin查询代码每次都被编译,可以采用绑定的方式。绑定允许用户保持脚本相同(缓存),每次改变调用的数据。例如,如果有查询,检索特定的一组离散数据点可以在绑定中分配名称。因为代码只需编译一次,所以绑定可以减少运行类似查询所需的时间。
值得注意的是这里没有直接访问Gremlin二进制协议。而是在与HTTP API进行互动。用户在进行Curl请求或HTTP请求,仍然可以操作图形或向端点发出请求。
为IBM Graph配置应用程序
在创建IBM图形服务的实例时,应用程序与服务交互的必要详细信息要以JSON格式。
服务实例通常可以由一个或多个应用程序使用,并且可以通过IBM Bluemix或其外部访问。如果是Bluemix应用程序,则该服务可与用于创建它的凭据绑定,可以在VCAP_SERVICES环境变量中找到它。
为了确保应用程序可用,要进行以下配置:
IBM图形端点,由apiURL值标识
服务实例用户名由用户名值标识
服务实例密码由密码值标识
在文档中,Curl示例使用$username,$password和$apiURLw引用服务凭据中的字段。
Bluemix 和 IBM Graph
IBM Graph是通过IBM Bluemix提供服务。IBM Bluemix是一种服务平台,支持多种编程语言和服务,构建,运行,部署和管理基于云的应用程序集成DevOps。 IBM Graph使用Bluemix服务有三个步骤:
通过请求新的服务实例在Bluemix中创建服务实例,或者在命令行界面,使用IBM Graph作为服务名称,使用Standard作为服务计划。
(可选)标识将使用服务的应用程序。如果是Bluemix应用程序,则可以在创建服务实例时标识,如果是外部的,可以不绑定该服务。
在应用程序中编写与服务交互的代码。
学习像IBM Graph这样的新工具的最好方法是构建一个解决现实问题的应用程序。想构建一个图形数据库实例,其实有很多方向,它可用于社交图,欺诈检测和推荐引擎,并且这些应用程序的简化版本也可以基于现已存在的数据集进行构建。
图数据库是下一个大趋势。首先,图数据库是一个产品,但成为产品前,经历了很长时间的理论期。比如欧拉图其实已有超过 200 年历史,数学理论很完整,在图中有很多经典算法,像这两个点之间最短路径是?物流该怎么去优化?社区该怎么划分?它已有很多现成、成熟的算法和科学理论,但从理论到工业界的产品,这里一直存在巨大空白。
直到 2002 年时,出现一家公司,做了第一代“图数据库”,但他们不想把数据打乱,放到几个表里,而就想存成一个真正的图,所以一个词叫 Native(汉语翻译成“原生图”),就是说:我就是真正用一种图的数据结构来存图,这样我性能会好很多。
但因为是 2002 年前的老技术,那时还没有大数据概念,还没有分布式系统的进展,这家公司做的就是单机版,数据只能在一台机器里跑,你数据量一大,它就没办法。但这个公司十几年来就做这么一件事,然后不断教育市场,它现在还很有名,叫 Neo4j。这是图数据库一代,也叫图 1.0。
然后大概 6、7 年前,因为有 hadoop/MapReduce 和其他开源的分布式系统,又有人做了些开源工具,做了些分布式图数据库,相当是有了一个捷径:你不用从头到尾做一个图数据库了,我用现有分布式存储系统来存数据,但在上头,我做个中间件,模仿一下图的 API,然后给终端用户终端开发者一个图的 API 概念。比如说:我朋友的朋友是谁?朋友是谁有哪些类型的节点?有哪些类型的边?这样就号称可以存很多数据,不受一台机器限制,但缺点是性能差,整个过程很慢。
也就是说:第一种性能好,但数据量一大,就没办法;第二种是多机版,它跑得过来,但性能差,没实时处理数据的能力;之后是图 3.0,像全球首家实时图分析平台 TigerGraph 在干的事。
图 3.0 需要设计既是分布式、又是原生图,跟第一代一样,存储全是自己做,这样性能好,但设计时又是分布式的,所以数据量大也没问题,1 台或几十台机器去跑,没有限制,你都可以跑,这样就可以解决一些数据量超级大的公司,比如以前像支付宝,“单机版”不可能有能力处理,因为数据量实在太大,但是如果你突破到“多机版”,性能还非常好,就解决了很多以前根本没法用图数据库的一些应用场景。
简单说,图数据库是大数据能给到客户最多价值的一个方向,也是行业发展的新方向,以前能从数据挖掘里看到的商业价值、洞察,可能只是将来用“深度链接”分析能得到的冰山一角。
以上内容参考硅发布关于图数据库的跨境直播《Uber 和蚂蚁金服的共同点?》。
数据关系图的作用:
用图形表示主从关系,并可以直接设置外键。
对于任何
数据库
,都可以创建任意多个数据库
关系图;每个数据库
表都可以出现在任意数量的关系图中。这样,便可以创建不同的关系图使数据库的不同部分可视化,或强调设计的不同方面。
例如: 可以创建一个大型关系图来显示所有表和列,并且可以创建一个较小的关系图来显示所有表但不显示列。
适合数据库程序员很快的掌握数据库表之间的关系。
近些年来,在大数据处理过程中有一种被广泛提及和使用的数据库,那就是图数据库。那么图数据库究竟是什么呢?
图数据库,如果是刚接触的人,可能会被其字面意思所误导。其实,图数据库并不是指存储图片、图像的数据库,而是指存储图这种数据结构的数据库。那么图又是什么呢?
什么是图
我们通过下面的例子来认识一下。
东汉末年,孙权、刘备联军曾在赤壁一带以火攻敌船之计大破曹军。
如果我们把各阵营之间的关系抽象一下,以阵营作为点,阵营之间的关系作为边,这样我们就可以用如下的图来形象地表示上述关系:
以上就是这里所谓的图(的可视化展示)。
我们把这种存储实体和实体之间关系的数据结构,称为图,Graph,图由点和边组成,一个点就是一个实体,比如上述实例中的阵营,两个实体之间的关系则用有方向或无方向的边来表示,比如刘备和孙权之间的联盟关系等。这种通用的结构可以对现实中的各种场景进行建模,从交通运输系统到组织架构管理,从工艺流程设计到社交网络。
什么是图数据库
知道了图的概念,你就可以理解什么是图数据库了。简单来说,图数据库就是用来处理图这种数据结构的工具。
不同于传统的使用二维表格存储数据的关系型数据库,图数据库在传统意义上被归类为NoSQL(Not Only SQL)数据库的一种,也就是说图数据库属于非关系型数据库。
一般的图数据库至少包含图存储、图查询、图分析这三种功能。
为什么要用图数据库
那我们为什么要用图数据库呢?我们还是用东汉末年的例子来讲解一下图数据库相对于关系型数据库的优势。
假设某关系型数据库中有三张表,分别是东汉末年人物表、东汉末年战役表和东汉末年人物参战表。
当我们想知道“樊城之战的守方是谁”,查询一般会比较快,从表2可以直接得到,但当我们想知道“刘备集团发动了哪些战争”的时候,尽管我们也可以从表2查到答案,但是我们可能需要遍历整个表2,查询效率会瞬间降低。而当我们要查询诸如“关羽出战过刘备集团发动的哪些战争”的时候,我们来看一下执行这条查询时关系型数据库是怎么做的:
A. 首先通过东汉末年人物表找到关羽对应的人物ID
B. 再使用东汉末年人物参战表找到其参战的战役
C. 最后通过东汉末年战役表找到其参战的哪些战役的攻方是刘备集团
我们会发现,这个查询实在是太繁琐了。
而如果我们将以上表格转化为如下的一张关系图谱,那么谁和谁是什么关系就一目了然了。
这么说也许你还没有真正领略到图数据库的巨大威力,我们再来看一个最经典的社交网络中查询性能对比的数据。
在《Neo4j in Action》这本书中,作者做了一个测试:在一个包含100万人,每个人约有50个朋友的社交网络中找最大深度为5的朋友的朋友,得到的实验结果如下:
测试结果表明,深度为2时两种数据库的性能差别不大,都很迅速;当深度为3时,关系型数据库需要半分钟完成查询,图数据库依旧在1秒内搞定;当深度为4时,关系型数据库耗费了接近半小时返回结果,图数据库不到2秒;而当深度达到5以后,关系型数据库就迟迟无法响应了,图数据库却依旧可以「秒杀」,表现出了非常良好的性能。
据此,我们可以从以下几个方面理解为什么要用图数据库:
- 关系型数据库不擅长处理数据之间的关系,而图数据库在处理数据之间关系方面灵活且高性能
我们不可否认关系型数据库自上世纪80年代以来一直都是数据库领域发展的主力,当前,随着社交、物联网、金融、电商等领域的快速发展,由此产生的数据呈现指数级的增长,而传统的关系型数据库在处理复杂关系的数据上表现很差,这是因为关系型数据库是通过外键的约束来实现多表之间的关系引用的。查询实体之间的关系需要JOIN操作,而JOIN操作通常非常耗时。
而图数据库的原始设计动机就是更好地描述实体之间的关系。图数据库与关系型数据库最大的不同就是免索引邻接。图数据模型中的每个节点都会维护与它相邻的节点关系,这就意味着查询时间与图的整体规模无关,只与每个节点的邻点数量有关,这使得图数据库在处理大量复杂关系时也能保持良好的性能。
另外,图的结构决定了其易于扩展的特性。我们不必在模型设计之初就把所有的细节都考虑到,因为在后续增加新的节点、新的关系、新的属性甚至新的标签都很容易,也不会破坏已有的查询和应用功能。
- 数据之间的关系越来越重要
当我们在问图数据库为什么如此重要时,其实就是在问,数据之间的关系为何如此重要?正如大家都知道人际关系的价值,其实数据的价值也在于它们之间的关联关系上。
举个例子。最近直播带货非常火,假如某个主播在微博上有几百万的粉丝,这个数据如果不利用起来,价值并不大,但如果他直播带货,把关注他的粉丝和可能来他直播间购物的顾客联系起来时,这些数据立马展现出巨大的商业价值。
- 使用图的方式表达现实世界中的很多事物更直接,更直观,也更易于理解
自然界中有各种各样的关系,而关系型数据库只能把这些拍扁成表格形态的行列数据,而图数据基于图模型以一种直观的方式去模拟这些关系,因而更形象。
另外,现在大部分的图数据库都提供了可视化的图展示,使得查询和分析变得很直观。
- 专业的图分析算法为实际场景提供解决方案
图数据库起源于图理论,借助于专业的图分析算法,能够为实际场景提供合适的解决方案。
图数据库如何存储、查询、分析
- 图存储
图数据库如何存储图,对查询和分析效率至关重要。图数据库使用图模型来操作图数据。所谓的图模型是指图数据库描述和组织图数据的方式。
目前主流的图数据库选择的图模型是属性图。属性图由点、边、标签和属性组成,我们结合一个具体的属性图实例来看一下。
以上属性图可以帮助我们理解一些相关概念:
1) 可以为点设置标签,比如 person, war等,拥有相同标签的点我们认为它们属于一个分组,是一个集合,这样刘备和曹操属于一个分组;
2) 同样可以为边设置标签,标签可以为 relation等;
3) 节点可以拥有很多属性,比如 style name、year等,这些属性值以键值对的形式表示,例如:刘备的style name是玄德;
4) 边也可以拥有属性,比如army等;
5) 边允许有方向,例如刘备和汉中之战之间的边的方向是由刘备指向汉中之战的;
6) 元数据是用来描述点和边的属性信息的,元数据由若干标签组成,每个标签由若干属性组成。
- 图查询
如果我们想知道刘备的籍贯在哪,刘备和曹操是什么关系,汉中之战的发动方是谁等等,这些都属于图查询的范畴。
我们知道,SQL是关系型数据库的查询语言,但是图数据库的查询语言并没有复用SQL。这是因为本质上图数据库处理的是高维数据,而SQL所适用的是二维的数据结构,其并不擅长关系的查询和操作。使用专门的图查询语言比SQL更加高效。
目前主流的图查询语言包括Gremlin和Cypher等。
- HBNmZ"> 图分析
图分析是指通过各种图算法来挖掘图信息的一门技术。
核心的图算法可以分成三类:路径搜索类、中心性分析类和社区发现类。
路径搜索是探索图中节点通过边建立的直接或间接的联系。例如在下图中,通过路径搜索,我们发现了这样一条路径:孙策-[夫妻]-大乔-[姐妹]-小乔-[夫妻]-周瑜,据此得知孙策和周瑜是连襟的关系。路径搜索类算法广泛用于物流配送、社交关系分析等场景。
中心性分析是指分析特定节点在图中的重要程度及其影响力。例如在上图中,直观来看,孙权是一个重要的人物,因为与他直接相连的边的数量最多。中心性分析类算法一般用于网页排序、意见领袖挖掘、流感传播等场景。
社区发现意在发现图中联系更紧密的群体结构。如果把更多的三国人物和关系加到上图中,利用Louvain等社团挖掘类算法,我们很容易发现这些人物分属三个阵营,如下图所示。
社区发现类算法可用于犯罪团伙挖掘等场景。
图数据库有什么用
介绍完图数据库的主要功能,我们再来看看图数据库都有哪些应用场景。图数据库擅长的应用领域包括:
- 社交领域: Facebook, Twitter用它来进行社交关系管理、好友推荐
我们熟悉的好友推荐。就可以采用推荐好友的好友的方法。
徐庶和司马徽向刘备推荐诸葛亮可以通过下图形象地展示
- 电商领域: 华为商城用它来实现商品实时推荐
通过分析目标用户和其他用户的喜好商品,找到相似的其他用户,把这些用户购买过的商品推荐给目标用户。
- 金融领域: 中国工商银行、摩根大通用它来做风控管理
目前来看,金融领域对图数据库的需求很迫切,以贷款为例,在整个贷款周期中,图数据库都能发挥巨大的作用。
- 安平领域: 公安用它来进行嫌疑关系审查、犯罪团伙挖掘
东汉末年,曹操刺杀董卓,貂蝉挑拨董卓父子关系,吕布斩杀董卓,但是董卓却不知道,这些事件幕后主凶之一都有王允,如下图所示。现实中也可能是这样,幕后真凶可能与目标案件没有直接关系,只有间接的关系。
什么样的场景适合用图数据库
你可以根据以下几点来判断你的问题是否需要图数据库:
如果你的问题中频繁出现多对多的关系,建议首选图数据库;
如果你的问题中数据之间的关系非常重要,建议首选图数据库;
如果你需要处理大规模数据集之间的关系,建议首选图数据库。
图数据库产品
现在图数据库产品已经出现百家争鸣的局面,Neo4j作为老牌图数据的代表,尽管依然拥趸众多,但是由于其自身的缺陷,挑战者正在增多,而华为云图引擎图数据库GES作为国产图数据库之光,正在成为其中的佼佼者。
GES 使用界面
本文分享自华为云社区《图数据库到底是个啥》,原文作者:你好_TT 。