越来越火的图数据库到底能做什么?sql算法关系型nosql

【CSDN编者按】图数据库像新一代的关系型数据库,取代传统关系型数据库在诸多领域大展拳脚、高歌猛进。图数据库较传统关系型数据库有何优势?适用于哪些技术领域?未来是何态势,有何机遇?《》特邀Neo4j亚太地区售前和技术总监俞方桦为大家解读图数据库。

作者|俞方桦责编|张红月

出品|《》编辑部

随着大数据时代的到来,传统的关系型数据库由于其在数据建模和存储方面的限制,变得越来越难以满足大量频繁变化的需求。关系型数据库,尽管其名称中有“关系”这个词,却并不擅长处理复杂关系的查询和分析。另外,关系型数据库也缺乏在多服务器之上进行水平扩展的能力。基于此,一类非关系型数据库,统称“NoSQL”存储应运而生,并且很快得到广泛研究和应用。NoSQL(NotOnlySQL,非关系型数据库)是一类范围广泛、类型多样的数据持久化解决方案。它们不遵循关系型数据库模型,也不使用SQL作为查询语言。其数据存储不需要固定的表格模式,也经常会避免使用SQL的JOIN操作,一般都有水平可扩展的特征。

简言之,NoSQL数据库可以按照它们的数据存储模型分4类:

那么,到底什么是“图数据库”?相比关系型数据库,图数据库又有哪些优势呢?

本文节选自《》

图数据库与关系型数据库的比较

图数据库(GraphDatabase)是指以图表示、存储和查询数据的一类数据库。这里的“图”,与图片、图形、图表等没有关系,而是基于数学领域的“图论”概念,通常用来描述某些事物之间的某种特定关系。比如在我们的日常生活中:

可以说,“图无处不在”(Graphsareeverywhere),也正因如此,传统关系型数据库不擅长处理关系的问题,能够被图数据库很好地解决,图数据库正是为解决这一问题而生。

其实,在某些方面,图数据库就像新一代的关系数据库,区别在于图数据库不仅存储实体,还存储实体之间的关系。关系型数据库通过“主键-外键”表示隐含的“关系”连接,但实际上这里的“关系”是关系代数中的概念,与我们现实世界中的“关系”不同。

通过将关系预先物理存储在数据库中(我们称之为“原生”),图数据库将查询性能由原先的数分钟提高到数毫秒,特别是对于JOIN频繁查询,这种优势更加明显。图2中比较了在社交网络数据集上搜索朋友圈的查询,在原生的图数据库和关系数据库的查询执行效率。显然,使用图数据库比使用传统关系数据库效率有极大提升。

图2比较图数据库和关系数据库的查询性能

作为NoSQL数据库的一种,图数据库通常不需要先定义严格的数据模式,以及强制的字段类型,这使其在处理结构化和半结构化的数据时同样得心应手。

除了存储和查询效率方面的优势,图数据库也拥有更加丰富的分析能力,我们通过比较这四类主要的非关系型数据库特点(见表1),就可以得知。

表1四类主要非关系型数据库特点

图数据库的主要技术领域

既然图数据库有诸多优势且发展迅速,那它主要涉及哪些技术领域呢?我们用图3来描述。具体来讲,图数据库的主要技术领域包括存储模式、图模型、图查询语言、图分析以及图可视化。

存储模式

原生图vs非原生图

图数据库以节点和边来对现实世界进行数据建模。对于实际的底层物理存储技术,目前主流有两大类方法:

有的图计算平台底层支持各类存储技术,包括图存储,称作“多模式”,例如百度HugeGraph。

原生的图存储由于针对图数据和图操作的特点进行了优化,并且从物理存储到内存中的图处理,都采用一致的模型而无需进行“模式转换”,在大数据量、深度复杂查询以及高并发情况下,性能普遍优于非原生的图存储。

图的分布式存储

为了支持大规模的图存储和查询,需要对图进行分布式存储。这里有两类分布式的实现方法:

1、分片(Sharding)。分片就是根据某一原则(例如根据节点的ID随机分布)将数据分布存储在多个存储实例中。根据切分规则,又可以分为:

出于优化性能的考虑,目前按点切分的分布式图更加常见。

2、分库(Partitioning)。由于现实世界中的图往往遵循“幂律分布”,即少数节点拥有大量的边,而多数节点拥有很少的边。分片存储不可避免地会造成大量数据冗余复制,或增加分区间网络通信的负担。因此,另外一种分布式的方法是分库。这是借助图建模的方法,将节点按照业务需求、根据查询类型分布在不同库中,是最小化跨库的网络传输。不同库中的数据则通过联邦式查询(FederatedQuery)实现。

图模型

在基于图的数据模型中,最常见的两种方法是资源描述框架(ResourceDescriptionFramework,RDF)和标签属性图(LabelledPropertyGraph,LPG)。

RDF

RDF是W3C组织指定的标准,它使用Web标识符(URI)来标识事物,并通过属性和属性值来描述资源。根据RDF的定义:

我们来看看RDF是怎样描述“西湖是位于杭州的一个旅游景点”这个事实的(见图4)。

图4RDF举例

RDF图的查询语言是SPARQL。如果要询问“位于杭州的旅游节点有哪些?”,使用SPARQL的查询如下:

PREFIXns:SELECTplaceWHERE{placens:地理位置ns:杭州.placens:实例ns:旅游景点.

LPG

在LPG属性图模型中,数据对象被表示成节点(拥有一个或多个标签)、关系和属性。我们用下面的例子来说明(见图5)。

图5关于电影的个人偏好的属性图

在图5中:

相比RDF,LPG由于可以在节点和边上定义丰富的属性,更加易于我们理解,建模也更加灵活。

图查询语言

应该说,关系型数据库在过去半个世纪的成功离不开SQL查询语言标准化。目前,图查询语言的标准化(GQL)工作还在进行当中,其核心语法和特性基于Neo4j的Cypher、Oracle的PGQL和GCORE框架。

从查询语言本身来说,主要有两类:

图分析

最短路径搜索

最短路径是图计算中一类最常见的问题,通常见于解决下面的应用场景:

计算范围则包括:

除此之外,最小生成树、随机游走等图遍历算法也属于这一类。

社团检测

“物以类聚,人以群分”,这句话非常形象地描述了网络的一个重要特征:聚集成群。群也称作“社区”“团体”“群组”。社区的形成和演变是图分析和研究的又一个重要领域,因为它帮助我们理解和评估群体行为、研究新兴现象。

社区检测算法就是在图中对节点进行分组和集合(见图6):在同一集合中的节点之间的边(代表交互/连接)比分属不同集合的节点之间更多。从这一意义上,我们认为它们有更多共同点。社区检测可以揭示节点集群、隔离的群组和网络结构。在社交网络分析中,这种信息有助于推断拥有共同兴趣的人群。在产品推荐中,可以用来发现相似产品。在自然语言处理/理解中(NLP/NLU),可以用来对文本内容自动分类。社区检测算法还用于生成网络的可视化展现。

有助于推断拥有共同兴趣的人群。在产品推荐中,可以用来发现相似产品。在自然语言处理/理解中(NLP/NLU),可以用来对文本内容自动分类。社区检测算法还用于生成网络的可视化展现。

中心性算法

在图论和网络分析中,中心性指标识别图中最重要的顶点。其应用广泛,包括识别社交网络中最有影响力的人、互联网或城市网络中的关键基础设施节点,以及疾病的超级传播者。

相似度算法

相似度描述两个节点以及更加复杂的子图结构是否在何等程度上属于同一类别,或者有多相似。

图/网络相似性度量有三种基本方法:

图可视化

“一图胜万言”这句话是对图可视化最恰当的描述。图可视化直观、智能地展现数据之间的结构和关联,能看到从前在表格或者图表中看不到的内容。

图7新冠病毒知识图谱

图数据的可视化建立了关于事物之间关联的最直观的展现,并且使得原本并不明显、甚至于淹没在数据汪洋中的重要特征得以显现出来,成为新的认知。

图数据库的未来展望

在图数据库出现并兴起的十余年间,它在各个领域都得到了成功的应用,并且产生了众多创新性的解决方案。

在社交平台的“网络水军”识别方面,通过分析用户的关系图特征、结合传统的基于用户行为和用户内容的发现方法,可以有效提高预测的准确性和鲁棒性。

在金融领域,图和图分析帮助机构更高效地发现异常的关联交易,以赢得反洗钱战争。

在电力、电信行业,图数据库帮助管理复杂庞大的设备和线路网络,并及时为故障分析根源、估算影响。

在制造、科研、医药等领域,图数据库广泛用于存储和查询知识图谱,成为大数据管理、数据分析和价值挖掘乃至人工智能技术领域的重要支撑。

在可预见的未来内,图数据库与人工智能技术的结合应用将会带来更多创新和飞跃。图数据库至少能在以下四个领域帮助提升AI能力。

第二,图提供更高的处理效率,因此借助图来优化模型并加速学习过程,可以有效地增强机器学习的效率。

第三,基于数据关系的特征提取分析可以识别数据中最具预测性的元素。基于数据中发现的强特征所建立的预测模型拥有更高的准确性。

除此以外,近年来,云端部署的图数据库(SaaS/DaaS)成为了又一个发展趋势。国内的众多大厂纷纷推出自研的云端图数据库产品,例如百度的HugeGraph、阿里的GDB、腾讯的TGDB、华为的GES图计算引擎。

就总体趋势而言,我们能够预见,大数据时代,数据缺失不再是最大的挑战,我们渴求的是挖掘数据价值的能力,而数据的价值很大一部分在于数据之间的关联。图数据库和图分析作为处理关联数据最有效的技术和方法,一定会继续大放异彩,书写数据库应用的新篇章。

作者简介:

Neo4j亚太地区售前和技术总监,有二十余年IT从业经验。PMP、IEEE和ACS会员,PMP认证专家、欧盟GDPR认证专家、Neo4j数据库和图数据科学认证专家,并拥有金融市场(投资和交易)高级学位。

THE END
1.什么是关系数据库?IBM通常,关系型数据库也与事务型数据库相关,而后者会批量执行命令或事务。用于说明这一点的一个广为人知的示例便是银行转账。从一个帐户中提取规定的金额,然后将其存入另一个帐户。取款和存款的金额均为全额,而此交易不能存在任何片面性。交易具有特定的属性。ACID(缩写)属性的定义如下: https://www.ibm.com/cn-zh/topics/relational-databases
2.什么是关系型数据库腾讯云开发者社区1分16秒 【赵渝强老师】什么是关系型数据库? 赵渝强老师3710 16分57秒 044-建模理论-范式理论-关系型数据库 腾讯云开发者课程420 8分49秒 117 尚硅谷-Linux云计算-网络服务-数据库-关系型数据库概述 腾讯云开发者课程300 1分14秒 【赵渝强老师】什么是NoSQL数据库? 赵渝强老师3350 5分30秒 114 尚硅谷-Linhttps://cloud.tencent.com/developer/information/%E4%BB%80%E4%B9%88%E6%98%AF%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93-video
3.什么是关系型数据库?有什么优缺点什么是关系型数据库? 关系型数据库(Relational Database,简称 RDB)是一种以关系(即表格)为基础的数据库,它采用了关系代数等数学概念和方法来处理数据。关系型数据库最早由 E.F. Codd 在 1970 年提出,其核心思想是将数据存储在由多个表格组成的关系中,每个表格包含多行数据和多个列(即属性),每个属性只有一种数https://developer.aliyun.com/article/1328463
4.关系型数据库和非关系型数据库区别oracle与mysql的区别关系型数据库,是指采用了关系模型来组织数据的数据库。 关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据库结构的主流模型。 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组https://blog.csdn.net/oChangWen/article/details/53423301
5.关系型数据库和非关系型数据库关系型数据库以行和列的形式存储数据,行和列的形式被称为表,表是由一组相关实体组成的集合。一组表组成了数据库。 表中的一行称为关系的一个元组,用来存储事物的一个实例; 表中的一列称为关系的一个属性,用来描述实体的某一特征。 表内字段的组成一样,即便某个数据不需要某个字段,系统也会强加上这个字段https://www.jianshu.com/p/9366b6eaa429
6.关系数据库是什么?关系型数据库有哪些点击了解关系数据库是什么?关系型数据库有哪些?关系数据库的重要方面,并查看 Amazon RDS 上可用的关系型数据库引擎。http://aws.amazon.com/cn/relational-database/
7.关系型数据库设计三大范式京东云官方的技术博客百度百科:设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。 人类语言: 范式可以理解为设计一张数据表的表结构,符合的标准级别、规范和要求。 而通常我们用的最多的就是第一范式(1NF)、第二范式(2NF)、第三https://blog.51cto.com/u_15714439/12839948
8.关系型数据库的基本原理(什么是关系型数据库)什么是关系型数据库?关系型数据库,简称 RDBMS是由许多数据表(Table)所组成,资料表又是由许多笔记录(Row 或Record)所组成,而纪录又是由许多的字段(Column 或Filed)所组成。关系数据库是基于实用和可重复使用的概念,是支持高性能交互查询、交易处理能力、安全性和灵活性的关键数据存储和维护方法。关系型数据库的概念https://m.elecfans.com/article/2175721.html
9.什么是关系型数据库,关系型数据库的知识介绍关系型数据库是一种按照关系型模型来组织和管理数据的数据库系统,其中的数据以表格的形式呈现,每个表格由若干列数据和多行记录组成。关系型数据库广泛应用于企业、政府机构、学术界等众多领域中。 1.关系型数据库组成部分 关系型数据库通常由以下几个组成部分构成: https://www.eefocus.com/baike/1462750.html
10.什么是关系型数据库什么是关系型数据库 关系型数据库(Relational Database,RDBMS)是一种采用了关系模型来组织数据的数据库。关系模型是一种二维表格模型,用户可以将数据存储在表格中,其中每一张表格称为一个表,每张表由行和列组成。关系型数据库中的表之间存在一定的关联关系,这些关联关系是通过索引、外键等实现的。https://blog.itpub.net/70033137/viewspace-2977669/
11.什么是数据库数据库有哪些类型→MAIGOO知识摘要:数据库是什么?数据库可视为电子化的文件柜,是存放数据的仓库,一般以电子形式存储在计算机系统中。数据库作为最重要的基础软件,是确保计算机系统稳定运行的基石。数据库有哪些类型?数据库有两种类型,分别是关系型数据库与非关系型数据库。下面来了解下数据库。 https://www.maigoo.com/goomai/283709.html
12.关系型数据库有哪些关系型数据库有以下这些: 1、大型的有:oracle、sqlserver、db2、infomix、Sybase等。 2、开源的有:MySQL、Postpresql等。 3、文件型的有:Access、SQLAnywhere、sqlite、interbase等。 关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之https://edu.iask.sina.com.cn/jy/iVq6eOlUoJ.html
13.查看试卷3. 关系数据库中,关系对应什么? A、二维表 B、二维表中的一行 C、二维表中的一列 D、二维表中的一个数据项 正确答案:A 答题解析:无 4. 以下哪种数据库不是关系型数据库? A、MySQL B、Oracle C、SQL Server D、HBase 正确答案:D 答题解析:无 5. 海底光电复合缆连接的仪器设备主要采用哪种数据传输http://ocean-ilab.tongji.edu.cn/exam/paper/details?id=2
14.MySQL系列之开篇MySQL关系型数据库基础概念Mysql三、关系型数据库(RDBMS)概念 ?关系数据库(Relation Database)是所有关系的集合,构成一个关系数据库。 以关系模型作为数据的逻辑模型,并采用关系作为数据组织方式的一类数据库,其数据库操作建立在关系代数的基础上。 表(Table)是一个二维的数据结构,由表名、列、若干行数据组成。 https://www.jb51.net/article/216566.htm
15.关系型数据库概述关系型数据库数据管理基于ArkTS开发关系型数据库概述 关系型数据库开发指导 对象关系映射数据库 对象关系映射数据库概述 对象关系映射数据库开发指导 轻量级数据存储 轻量级数据存储概述 轻量级数据存储开发指导 分布式数据服务 分布式数据服务概述 分布式数据服务开发指导 分布式文件服务 分布式文件服务概述 分布式文件服务开发指导 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V3/database-relational-overview-0000001333640877-V3
16.科学网—[转载]武新:大数据架构及行业大数据应用2、数据处理技术的回顾 互联网的数据“大”是不争的事实,现在分析一下数据处理技术面临的挑战。目前,除了互联网企业外,数据处理领域还是传统关系型数据库(RDBMS)的天下。传统RDBMS的核心设计思想基本上是30年前形成的。过去30年脱颖而出的无疑是Oracle公司。全世界数据库市场基本上被Oracle、IBM/DB2、Microsoft/SQLhttps://blog.sciencenet.cn/blog-887780-1358813.html
17.解读一篇文章带你了解蚂蚁金融云分布式链路跟踪是蚂蚁金服自主研发的金融级分布式链路分析中间件,包括链路查询、多维查询、异常跟踪等,帮助企业级客户快速构建系统调用链关系,全方位为金融业务系统提供实时高效的系统调用分析、业务容量评估、业务异常定位的能力。 分布式关系型数据库OceanBase https://maimai.cn/article/detail?fid=685737704&efid=gn1_WnK0YF0Z9-by3Fhv8Q
18.2020最新PHP阿里面试和答案解析4.大数据的数据库 (NoSQL)与关系型数据库的区别: A、 水平扩展与垂直扩展 B、 是否支持事务的 ACID C、 应用中两种数据库互相补充 D、 以上都是 参考答案:D 答案解析:无 5.关于判断文件类型,以下说法正确的是? A、根据文件的扩展名可以正确判断文件的类型 B、根据文件的特征值可以正确判断文件类型 C、根据https://www.thinkphp.cn/topic/69088.html