版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录概述1图关键数据存储逻辑架构2属性图模型3图数据库查询语言4小结61图数据库应用5现实世界中一切事物都处在联系之中,如:各个领域人际关系、组织机构关系;互联网中电脑网络关系、网页间链接关系等;物联网中:人与物关系;物与物的关系等;复杂关系图的抽象无处不在。2.1图数据库概述节点及其间关系随着时间不断动态变化。为了挖掘实时动态大图复杂关系中蕴藏着的潜在知识,涌现出很多著名的图结构大数据计算框架,如Pregel、Hama、GraphLab、SparkGraphX、FlinkGelly等。图数据的高性能管理与计算离不开图数据存储技术的协同助力。但传统的关系型数据库更加注重刻画实体内部的属性,实体与实体之间的关系往往需要通过外键来实现,查询实体关系时需要多级Join操作,非常耗时。为了降低图数据运算复杂性,提升图数据处理的性能,图数据库应运而生。2.1图数据库概述图数据库是以实体及其关系为主要存储对象的数据库系统,存储图结构的数据具有突出优势。图数据库中核心数据要素节点(Vertex):指不同应用领域中人、事件、物品、地点、组织等业务实体。如电信领域中的客户、用户、套餐产品、供货商、卡号资源等,影视娱乐领域中的演员、导演、电影、剧场等。2.1图数据库概述图数据库中核心数据要素(续)边(Edge):指节点之间的关系。订购关系朋友关系道路连通关系演员与电影之间的参演关系计算机与计算机之间的网络连接关系物品与物品之间的构成关系银行账号之间的转账关系等等2.1图数据库概述图数据库中核心数据要素(续)属性(Property):指描述节点或边特征的信息属性。如某一个客户节点有姓名、年龄、客户类型等属性;如某一演员与某部电影的参演关系有参演角色类型属性、角色名称等属性。节点、边都可以定义属性吗?属性可以从哪些方面定义呢?一般共性的基础属性有哪些?2.1图数据库概述图数据库中核心数据要素标签(Label):指节点、关系的类别。如表示演员的吴京节点、成龙节点都有表示是演员的标签;节点的标签可以有多个,如吴京、成龙节点上还可以有表示是人的标签。关系类似节点也可以分类,所以也可以加表示不同类别的标签,如朋友关系、参演关系等;有时为了区分用标签专门指节点标签,关系的类别直接称为关系类型;2.1图数据库概述图灵奖获得者CharlesBachman—网状数据库之父早在1970年就提出网状数据库,模型表达能力很强,但结构复杂、查询语言不易掌握和使用,数据操作也较为复杂,并未普及开来。大数据时代图无处不在,图数据库技术如雨后春笋般高速发展,用以支持图数据的事务型处理和分析型处理。网状数据库之父、图灵奖获得者—CharlesBachman2.1图数据库概述DB-EnginesRanking发布的2019年11月图数据库(GraphDBMS)排名/en/ranking/graph+dbms2.1图数据库概述图数据库按照底层采用的存储技术分为两类。原生图存储类采用非关系模型,并针对图数据专门进行了性能优化一般采用免索引邻接的方式进行图数据存储,数据存储机制可快速寻址定位到相关连的节点、关系,此种存储方式性能大大提高,可以很好地支持原生图处理引擎进行图数据计算,秒级可遍历百万级节点。此类数据库典型代表为Neo4j、TigerGraph等。非原生图存储类指底层采用键值数据库、文档数据库、列族数据库或者其他类型通用数据库存储图数据。通常需要建立全局索引来提高图数据的访问性能。2.1图数据库概述图数据库面临的挑战主要是大规模图数据的高效存储与复杂的图操作技术。不同图数据库实现技术与使用方法会有所差异,图数据库包含的共性关键技术主要包含如下方面点、边、属性等基础数据的CRUD操作元数据管理、索引管理事务管理查询语言节点ID生成策略大规模数据批量操作基于路径的图遍历操作监控管理、备份与恢复操作等2.1图数据库概述目前排名第一的Neo4j数据库是用Java实现的开源图数据库。自2003年开始开发,直到2007年正式发布第1版,并托管于GitHub上。Neo4j服务器版分为社区版和企业版,社区版只支持单机部署,功能受限。企业版支持主从复制和读写分离,包含可视化管理工具等更丰富、强大的功能。课程主要以Neo4j为例介绍图数据库相关知识。2.1图数据库概述2.2图关键数据存储逻辑架构13从数据存储角度来讲,不同类型的图数据库底层的图数据存储模型会有所差异。本节主要以Neo4j为例来介绍图数据库的底层存储模型总体设计思路2.2图关键数据存储逻辑架构14节点之间的关系通常包含一个起始节点、一个终止节点、关系类型及0个或多个属性。关系类型用名称作为唯一标识。每个关系有且只有一个关系类型。通过关系可以找到很多关联的数据,比如节点集合、相同类型的关系集合以及它们的属性集合。2.2图关键数据存储逻辑架构15Neo4j属性是由Key-Value键值对组成的,键名称为字符串类型数据。属性值可以是字符型、字符串型、整数类型、实数类型等基础数据类型的值,也可以是元素为基础数据类型的数组。但每个节点和关系的属性模式又是自由的、不固定的,每个节点或关系都可以定义自己特有的描述属性;2.2图关键数据存储逻辑架构16Neo4j数据模型中标签是类别的概念,不同的节点与关系可以具有相同的节点标签与关系类型标签标签概念可以理解为关系数据库中表的概念,通过标签可以找到同类型的节点或关系。标签示例如图所示一个节点可以具有零个或多个类别标签;而一个关系必须有且只有一个关系类型。2.2图关键数据存储逻辑架构17
Neo4j每条路径由一个起始节点、一个终止节点、从起始节点到终止节点经过的1条或多条边及关联节点构成。图中任意两个节点间如果是可达的,则两节点间存在一条或多条路径。2.2图关键数据存储逻辑架构18
路径的长度指路径中包含边的数量,如图所示,节点1到节点2的路径长度为1,节点1到节点7的路径长度为2。遍历一张图就是按照一定的查询规则,跟随关系,访问关联的节点集合。大多数情况下只是部分和图数据操作相关的子图内容被访问到。Neo4j提供了遍历的API,可以指定遍历规则,如按照广度优先还是深度优先遍历图数据2.2图关键数据存储逻辑架构19对于能够抽象成节点及其关系的典型图结构数据而言,利用图数据模型采用图数据库进行存储的性能优势突出。关系是最重要的元素,通过关系将节点相互关联起来,Neo4j有一个重要的特点是将关系预先保存到关系列表中的免索引邻接机制,来保证关系查询的性能。Neo4j数据库中的每个节点都会维护与它相邻节点的引用。因此每个节点都相当于与它相邻节点的微索引,查询时间与图的整体规模无关,只与它附近节点的数量成正比,这比使用全局索引的代价小很多。2.3属性图模型20图数据库作为NoSQL中重要的一类,灵活的图数据存储模型是其突出的特点,不强调必须先设计完备的图数据存储模型再存储数据。但从基于图数据库进行应用系统架构设计角度,仍需要借助一定的建模方法,对业务需求进行分析,从业务管理功能、业务流程中梳理出图结构业务数据并采用一定的形式化方法进行建模表述。用简单、清晰的描述方法使得业务人员与技术人员对图数据存储模型达成共识,从而降低项目实施风险。模型可以根据业务需求随时改变。2.3属性图模型21图数据模型与关系数据模型差别较大,对比如表所示对比角度关系数据模型图数据模型数据结构关系模型:表、字段、主键、外键、关联属性图模型:节点、边、属性、标签数据操作关系代数:并、交、差、笛卡尔积、选择、投影、连接等图代数:可达性查询;最短路径查询;图节点、边、关系的增、删、改、查、排序等
数据的完整性约束条件实体完整性、参照完整性、用户自定义完整性条件约束:唯一性约束,如标签为Person的电话号码属性不能重复等2.3属性图模型22Neo4j中的NorthWind数据集实体关系模型客户产品销售人员供应商订单2.3属性图模型23在关系型数据库中,一般一行数据对应图数据库中的一个节点(Node),表名称对应节点的一个标签(Label)名称,即代表节点的一种类别如图所示,Product表示产品类型的节点,Order表示订单类型节点,Supplier表示供应商类型节点,Order指向Product的边表示订单包含的产品关系,Supplier指向Product的边表示供应商与产品之间的供应关系。2.3属性图模型24属性图是图数据库建模常用的方法,Neo4j即采用属性图的方式对数据进行建模,属性图对图数据要素的一般表示方法说明如下。节点:一般用圆形表示,对应实体,可以是人、事、物或者任何一种业务概念定义;节点名称一般是名词词汇,如客户、公司、产品、电影、演员等。关系:用节点与节点间的有向边表示,实体间关联表现为节点关系,如朋友关系、师生之间的指导关系、员工与组织机构之间的工作关系等;关系名称一般是表示动作的词汇,如包含、位于、表演、指导等。2.3属性图模型25属性图对图数据要素的一般表示方法说明如下(续)属性:按其描述对象可以分为节点属性与关系属性。节点属性键值对一般写在节点中间,关系属性键值对一般写在边旁边,如果属性很多,可以以列表方式写在节点或边旁边。标签:按标注对象可分为节点标签与关系标签(关系类型)节点标签一般以矩形框标注在节点上,如果节点只有一个标签,有时也可以直接写在圆形节点中;关系标签一般直接以文字方式标注在表示关系的边旁。因为Neo4j中节点标签和关系类型一般以冒号开头,后面跟上节点或关系的名称,属性图中标签也可这样表示。属性图示例:Person:Master:Person:ProfessorName:李四age:45:导师Name:
张三age:23:发表:发表:朋友:朋友创建时间:2018-5-2创建时间:2018-3-1Topic:人物照时间:2019-5-13内容:******:点赞Name:王五age:22Topic:旅游时间:2019-5-11内容:******:Message:Image:Person:Master:Message:Text:点赞2.3属性图模型属性图示例MasterProfessorName:李四age:45导师Name:
张三age:23发表发表朋友朋友创建时间:2018-5-2创建时间:2018-3-1Topic:人物照时间:2019-5-13内容:******点赞Name:王五age:22Topic:旅游时间:2019-5-11内容:******ImageMasterText点赞2.3属性图模型PersonPersonPersonMessageMessage2.3属性图模型28Neo4j数据库中自带一个图模型示例,如图所示,Employee、Company、City是节点类型的名称。图中左边表示一个员工类型的节点,该节点具有3个属性属性图的抽象设计关键是理解业务相关概念数据及其关系的梳理2.4图数据库查询语言29类似关系型数据库中SQL的作用,不同的图数据库也提供了简洁易用的面向图数据操作查询语言。本节主要学习以下两种图查询语言Neo4j图数据库Cypher语言Apache开源图计算框架ThinkerPop下的图遍历语言Gremlin2.4.1Cypher基础30Cypher是Neo4j图数据库类似于SQL的查询语言,简称CQL(CypherQueryLanguage)。CQL简单易学,使得开发人员在掌握图论、图数据库基础知识后,就能容易的理解掌握Neo4j数据库数据管理的关键技术。Cypher是一个声明式模式匹配语言。语法在于定义要从图中查询什么目标数据(Whattoretrieve),而不是怎么去查。许多关键字是受SQL、SPARQL、Scala等的启发CQL目标:让简单的事情变得容易,让复杂的事情成为可能;CQL特点有丰富的数据类型、库函数;命令灵活多样,简单的语法就能实现复杂的路径查询操作;CQL关键词大小写不敏感,习惯将关键字大写;属性名称、标签与关系类型名称区分大小写;语句以分号结束;类似其他编程语言,单行注释前需加//;支持存储过程调用;2.4.1Cypher基础CQL特点(续)支持变量定义,变量名称也是大小写敏感的,名称由字母、数字、下划线构成,必须由字母开头,如果包含特殊字符则需用引号将名称括起来,变量可以在整条语句中使用;开始节点、关系、结束节点的详细内容限定组合在一起称为一个匹配模式,匹配模式也可以定义为一个变量,便于查询匹配模式重用;支持图模式约束,如取值唯一性等;所使用Cypher语言的版本可以显示定义,子句中语法为Cypher后跟具体版本号,如Cypher3.0。2.4.1Cypher基础语法基础:基本查询语句MATCH(n)WHEREid(n)=1RETURNn
节点信息在()中表示;关系信息在[]表示;属性信息在{}表示;标签以冒号开头,后跟节点或关系标签名称;节点和关系可以定义变量;变量可以在整条语句中使用。语句中支持参数引用,参数名称前需加上$;2.4.1Cypher基础关键操作其它关键字SKIP,LIMIT,UNIQUE,UNWIND、FOREACH、CALL等MERGE:合并的方式创建节点、关系;序号语句工程说明1CREATE创建创建节点、创建关系2MATCH查询查询节点、查询关系3RETURN返回返回结果4WHERE条件条件语句5DELETE删除删除节点和关联关系6REMOVE移除删除标签和属性7SET修改添加或更新属性8ORDERBY排序按升序或降序对行进行排序数据2.4.1Cypher基础变量定义定义节点变量:(a)定义节点之间的关系:(a)-->(b)显示地表示关系,并定义关系变量:(a)-[r]->(b)每个节点都有一个整数ID,在创建新的节点时,Neo4j自动为节点设置ID值,在整个数据库中,节点的ID值是递增和唯一的,可以通过id函数返回节点的标识;如果忽略符号<、>,则表示忽略方向的关系。2.4.1Cypher基础节点用()表示;如果括号内容为空,则表示一个匿名节点;如果想在语句中引用该节点,则需要定义节点变量,在括号内引用变量名称,如(a);可以指定节点的一个或多个标签
如(:person),(:person:master)可以指定节点属性
如(:person{name:”王五”,age:26})可以同时指定变量、标签及属性
如(a:person{name:”王五”,age:26})2.4.1Cypher基础关系方向:用-->或者<--表示有向关系;如果忽略符号<、>,则用--表示忽略方向的关系;可以在[]内详细限定关系满足的条件内容[]括号内语法类似节点括号内容语法,可以有变量、关系标签名称、关系属性KV列表,如
(a)-[r:friend_of{year:2019,type:
"football"}]->(b)
表示节点间在2019年建立足球球友的关系;2.4.1Cypher基础路径常用匹配模式描述如下:长度为1的忽略方向的路径
如(a)--(b)忽略中间关系类型,长度为2的路径
如(a)-->()-->(b)带关系类型且长度为1的有向路径
如(a)-[:fof]->(b)指定长度为k的路径
如(a)-[*3]->(b)表示长度为3的路径2.4.1Cypher基础路径常用匹配模式描述如下(续):指定长度为一个区间的路径
如(a)-[*3..5]->(b)表示长度为[3,5]的路径指定长度大于等于某个常量的路径
如(a)-[*3..]->(b)表示长度大于等于3的路径指定长度小于等于某个常量的路径
如(a)-[*..6]->(b)表示长度小于等于6的路径指定任意长度的路径
如(a)-[*]->(b)2.4.1Cypher基础可用运算符数学运算符:+,-,*,/,%,^比较运算符:=,<>,<,>,<=,>=,ISNULL,ISNOTNULL布尔值运算符:AND,OR,XOR,NOT字符串运算符:+列表运算符:+,IN,[x],[x..y];x、y表示位置索引正则表达式运算符:=~字符串匹配运算符:STARTSWITH,ENDS,CONTAINS2.4.1Cypher基础CQL函数字符串函数如:toUpper、toLower、substring、replace聚合函数如:count、max、min、sum、avg关系函数序号函数名称功能描述1startnode用于知道关系的开始节点。2endnode用于知道关系的结束节点。3id用于知道关系的ID。4type用于知道字符串表示中的一个关系的TYPE。2.4.1Cypher基础CQL函数谓词函数:判断条件满足情况all、any、none、single、exists标量函数size、length、type、properties、timestamp、toInteger、toFloat等列表函数nodes、labels、head、tail、range、relationships等数学函数abs、ceil、floor、round、sign、rand等等等2.4.1Cypher基础CQL类似于SQL,每个语句由几个子句组合而成,如MATCH子句语法MATCH(<node-name>:<label-name>)WHERE子句语法WHERE<condition><boolean-operator><condition><condition>语法<property-name><comparison-operator><value>RETURN子句语法RETURN<node-name>.<property1-name>,........<node-name>.<propertyn-name>常量、变量、运算符、表达式、子句、函数调用等要素综合运用实现复杂的图数据存储处理任务2.4.1Cypher基础2.4.2Gremlin44Gremlin是ApacheThinkerPop框架下的图遍历语言。TinkerPop是一个面向实时事务处理(OLTP)以及批量、分析型(OLAP)的开源图计算框架TinkerPop是一个可以应用于不同图形数据库的抽象层,避免应用程序与特定数据库高度依赖2.4.2Gremlin45Gremlin是一种函数式数据流语言,可以使用简洁的方式表述复杂的属性图的遍历或其他操作。Gremlin官方网址:/gremlin.html每个Gremlin遍历由一系列步骤组成,每一步都是数据流上执行的一个原子操作。map-Step:对数据流中的对象进行转换;filter-Step:对数据流中的对象就行过滤;sideEffect-Step:对数据流进行计算统计。2.4.2Gremlin46Gremlin语言的设计围绕以下图数据库中的核心概念展开Schema:图模式顶点(Vertex)边(Edge)属性类型(PropertyKey)顶点类型(VertexLabel)边类型(EdgeLabel)Gremlin语言进行图数据操作,需要先定义图数据模式,通过调用graph.schema()的一系列API实现2.4.2Gremlin47Gremlin语言也提供了丰富的API实现灵活的图数据操作,满足图数据库应用程序开发的需求模式维护查询与路径遍历过滤、转换、排序逻辑判定、分支、迭代统计聚合等等Gremlin具体用法可进一步参见官方文档2.5图数据库应用48图数据库以其处理复杂网络分析
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安全三类考试试题及答案
- 2025年消防体检常识题库及答案
- 编剧岗前剧本创作培训试题及答案
- 舟山市人民医院透析并发症处理考核
- 辽宁省农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(培优b卷)
- 淮安市中医院疼痛介入治疗医师资格认证
- 福州市人民医院动脉穿刺置管考核
- 台州市中医院中药调剂资格认证
- 湖州市中医院医疗质量管理制度掌握考核
- 嘉兴市中医院产后性生活指导能力考核
- 供方评定管理办法
- 理财投资管理办法
- 幼儿园卫生健康课件
- 电气火灾主题班会课件
- 黄金矿山掘进面爆破设计说明书
- 湖北省低空经济产业联盟
- DB12∕T 598.4-2024 建设项目用地控制指标第4部分:交通运输项目
- 工作迎新流程策划
- 正念冥想培训课件
- 医保局大比武活动方案
- 学前儿童维生素卫生学纲要
评论
0/150
提交评论