什么是图
大家通过下面的例子来认识一下。东汉末年,孙权、刘备联军曾在赤壁一带以火攻敌船之计大破曹军。如果大家把各阵营之间的关系抽象一下,以阵营作为点,阵营之间的关系作为边,这样大家就可以用如下的图来形象地表示上述关系:以上就是这里所谓的图(的可视化展示)。大家把这种存储实体和实体之间关系的数据结构,称为图,Graph,图由点和边组成,一个点就是一个实体,比如上述实例中的阵营,两个实体之间的关系则用有方向或无方向的边来表示,比如刘备和孙权之间的联盟关系等。这种通用的结构可以对现实中的各种场景进行建模,从交通运输系统到组织架构管理,从工艺流程设计到社交网络。什么是图数据库
知道了图的概念,你就可以理解什么是图数据库了。简单来说,图数据库就是用来处理图这种数据结构的工具。不同于传统的使用二维表格存储数据的关系型数据库,图数据库在传统意义上被归类为NoSQL(NotOnlySQL)数据库的一种,也就是说图数据库属于非关系型数据库。一般的图数据库至少包含图存储、图查询、图分析这三种功能。为什么要用图数据库
那大家为什么要用图数据库呢?大家还是用东汉末年的例子来讲解一下图数据库相对于关系型数据库的优势。假设某关系型数据库中有三张表,分别是东汉末年人物表、东汉末年战役表和东汉末年人物参战表。当大家想知道“樊城之战的守方是谁”,查询一般会比较快,从表2可以直接得到,但当大家想知道“刘备集团发动了哪些战争”的时候,尽管大家也可以从表2查到答案,但是大家可能需要遍历整个表2,查询效率会瞬间降低。而当大家要查询诸如“关羽出战过刘备集团发动的哪些战争”的时候,大家来看一下执行这条查询时关系型数据库是怎么做的:A.首先通过东汉末年人物表找到关羽对应的人物IDB.再使用东汉末年人物参战表找到其参战的战役
C.最后通过东汉末年战役表找到其参战的哪些战役的攻方是刘备集团大家会发现,这个查询实在是太繁琐了。而如果大家将以上表格转化为如下的一张关系图谱,那么谁和谁是什么关系就一目了然了。这么说也许你还没有真正领略到图数据库的巨大威力,大家再来看一个最经典的社交网络中查询性能对比的数据。在《Neo4jinAction》这本书中,作者做了一个测试:在一个包含100万人,每个人约有50个朋友的社交网络中找最大深度为5的朋友的朋友,得到的实验结果如下:测试结果表明,深度为2时两种数据库的性能差别不大,都很迅速;当深度为3时,关系型数据库需要半分钟完成查询,图数据库依旧在1秒内搞定;当深度为4时,关系型数据库耗费了接近半小时返回结果,图数据库不到2秒;而当深度达到5以后,关系型数据库就迟迟无法响应了,图数据库却依旧可以「秒杀」,表现出了非常良好的性能。据此,大家可以从以下几个方面理解为什么要用图数据库:
- 关系型数据库不擅长处理数据之间的关系,而图数据库在处理数据之间关系方面灵活且高性能
- 数据之间的关系越来越重要
- 使用图的方式表达现实世界中的很多事物更直接,更直观,也更易于理解
另外,现在大部分的图数据库都提供了可视化的图展示,使得查询和分析变得很直观。
- 专业的图分析算法为实际场景提供解决方案
图数据库如何存储、查询、分析
- 图存储
2)同样可以为边设置标签,标签可以为relation等;
3)节点可以拥有很多属性,比如stylename、year等,这些属性值以键值对的形式表示,例如:刘备的stylename是玄德;
4)边也可以拥有属性,比如army等;
5)边允许有方向,例如刘备和汉中之战之间的边的方向是由刘备指向汉中之战的;
6)元数据是用来描述点和边的属性信息的,元数据由若干标签组成,每个标签由若干属性组成。
- 图查询
- HBNmZ”>图分析
图数据库有什么用
介绍完图数据库的主要功能,大家再来看看图数据库都有哪些应用场景。图数据库擅长的应用领域包括:- 社交领域:Facebook,Twitter用它来进行社交关系管理、好友推荐
- 电商领域:华为商城用它来实现商品实时推荐
- 金融领域:中国工商银行、摩根大通用它来做风控管理
- 安平领域:公安用它来进行嫌疑关系审查、犯罪团伙挖掘
什么样的场景适合用图数据库
你可以根据以下几点来判断你的问题是否需要图数据库:如果你的问题中频繁出现多对多的关系,建议首选图数据库;如果你的问题中数据之间的关系非常重要,建议首选图数据库;
如果你需要处理大规模数据集之间的关系,建议首选图数据库。
图数据库产品
现在图数据库产品已经出现百家争鸣的局面,Neo4j作为老牌图数据的代表,尽管依然拥趸众多,但是由于其自身的缺陷,挑战者正在增多,而华为云图引擎图数据库GES作为国产图数据库之光,正在成为其中的佼佼者。GES使用界面本文分享自华为云社区《图数据库到底是个啥》,原文作者:你好_TT。