《图数据库数据库技术导论.pdf》由会员分享,可在线阅读,更多相关《图数据库数据库技术导论.pdf(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库系统概论新技术篇 图数据库管理系统图数据库管理系统 An Introduction to Database System 提纲提纲 为什么要有图数据库管理系统为什么要有图数据库管理系统 如何存储和查询图数据如何存储和查询图数据 An Introduction to Database System 提纲提纲 为什么要有图数据库管理系统为什么要有图数据库管理系统 如何存储和查询图数据如何存储和查询图数据 An Introduction to Database System 为什么要有图数据库管理系统为什么要有图数据库管理系统 相对于传统的关系数据库管理系统,图数据库管理相对于传统的关系数据库
2、管理系统,图数据库管理 系统在处理图数据时具有以下两个优点:系统在处理图数据时具有以下两个优点: 性能性能灵活性灵活性 An Introduction to Database System 性能性能 人,以及人与人之间的关系,构成了社交网络应用人,以及人与人之间的关系,构成了社交网络应用 (例如微信、微博)的基本(例如微信、微博)的基本架构。架构。社交网络的基本社交网络的基本 结构可以用如下的关系模式来描述结构可以用如下的关系模式来描述 IDName 1刘晨 2王欣 3张强 4李林 5马兴 6吴曦 IDFromUser ToUser 100012 100135 100241 100362 10
3、0445 100514 An Introduction to Database System 用户表用户表 用户表用户表 朋友表朋友表 性能(续)性能(续) An Introduction to Database System 性能(续)性能(续)-社交网络中的查询社交网络中的查询 查询刘晨的朋友数量查询刘晨的朋友数量-跳数为跳数为1 Select count(*) from 用户,朋友用户,朋友 where 用户用户.name = 刘晨刘晨 and 用户用户.ID = 朋友朋友. FromUser 查询刘晨的朋友的朋友数量查询刘晨的朋友的朋友数量-跳数为跳数为2 Select count(*
4、) from 用户,朋友用户,朋友 as F1,朋友朋友 as F2, where 用户用户.name = 刘晨刘晨 and 用户用户.ID = F1. FromUser and F1.ToUser = F2.FromUser 查询刘晨的朋友的朋友的朋友数量查询刘晨的朋友的朋友的朋友数量-跳数为跳数为3 . An Introduction to Database System 性能(续)性能(续)-关系数据库关系数据库 VS 图数据库图数据库 数据集大小数据集大小 Neo4J in Action 用户表:用户表:1百万条记录;朋友表:百万条记录;朋友表:5千万条记录千万条记录 测试系统:测试系
5、统:MySQL VS Neo4J 实验结果实验结果 距离距离MySQL(s) Neo4J(s)返回记录数返回记录数 20.0160.012,500 330.2670.218110,000 41543.5051.359600,000 5未完成2.132800,000 An Introduction to Database System 性能(续)性能(续)-图数据库的性能优势原因图数据库的性能优势原因 用户表用户表朋友表朋友表 索引查找代价:索引查找代价: O(log|n|) n是朋友表的记是朋友表的记 录数录数 关系数据库关系数据库 主外键关联主外键关联 An Introduction to
6、Database System 性能(续)性能(续)-图数据库的性能优势原因图数据库的性能优势原因 Friend Friend FriendFriend Friend Friend User User User User User 图数据库图数据库 查找代价: O(1) An Introduction to Database System 性能(续)性能(续)-图数据库的存储系统图数据库的存储系统 为每一类对象单独存成文件,每个对象的大小固定为每一类对象单独存成文件,每个对象的大小固定 顶点文件;联系文件;标签文件;属性文件;等顶点文件;联系文件;标签文件;属性文件;等 Node 1 Name
7、:刘晨 Age:25 Person 朋友Node 2Person Name:王欣 电话号码:1359123123 起始顶点及结束顶 点的下一个联系 起始顶点及结束顶 点的前一个联系 An Introduction to Database System 灵活性灵活性 关系数据库关系数据库 图数据库图数据库 事先建立完整关系模式事先建立完整关系模式 模式修改代价大模式修改代价大 互联网应用需要频繁修互联网应用需要频繁修 改模式改模式 无需事先建立模式无需事先建立模式 图图结构的变化不影响已结构的变化不影响已 有的查询和应用程序有的查询和应用程序 An Introduction to Databas
8、e System 图数据库的主要功能图数据库的主要功能 面向事务的图数据库能够支持面向事务的图数据库能够支持 数据对象(数据对象(顶点顶点与与边边)及其属性的)及其属性的增删改操作增删改操作 支持支持ACID事务处理事务处理 并提供定制的查询语言来支持管理、分析和检索操作并提供定制的查询语言来支持管理、分析和检索操作 数据的备份与恢复数据的备份与恢复 An Introduction to Database System 提纲提纲 为什么要有图数据库管理系统为什么要有图数据库管理系统 如何存储和查询图数据如何存储和查询图数据 An Introduction to Database System
9、图数据库的分类图数据库的分类 根据存储模型的不同,该类数据库又可分为以下四根据存储模型的不同,该类数据库又可分为以下四类类 基于基于关系存储模型开发的图关系存储模型开发的图数据库数据库 典型典型的代表是基于的代表是基于MySQL开发的开发的Twitter公司的公司的FlockDB 基于基于图存储模型的专用图图存储模型的专用图数据库数据库 典型典型的代表包括的代表包括Neo4J、Titan 基于基于文档存储模型开发的图文档存储模型开发的图数据库数据库 典型典型的代表是的代表是OrientDB, 基于基于键值对存储模型开发的图键值对存储模型开发的图数据库数据库 典型典型的代表包括的代表包括Apac
10、he Accumulo An Introduction to Database System 图数据库产品比较图数据库产品比较 https:/db- An Introduction to Database System Neo4J 简介简介 查询处理引擎查询处理引擎 基于十字链表的遍历基于十字链表的遍历 存储系统存储系统 图模型图模型 查询语言:查询语言: 类似于类似于SQL,Neo4J的查询语言是语法接近于的查询语言是语法接近于SQL的的 Cypher An Introduction to Database System Cypher :Neo4J的查询语言的查询语言 简单地说,简单地说,C
11、ypher的工作原理就是通过基于的工作原理就是通过基于图的模图的模 式匹配式匹配的方式找到满足条件的子图的方式找到满足条件的子图 Cypher基本语法结构基本语法结构 CREATE: 创建数据对象 START:通过顶点的ID或者属性的值,找到图中的起始点 MATCH:图的模式匹配 WHERE:过滤条件 RETURN:返回所需要的信息 注意:有些关键字,比如注意:有些关键字,比如START、WHERE不是必选的不是必选的 An Introduction to Database System Cypher :Create语句语句 创建创建顶点刘晨刘晨 create(:person name:“刘晨
12、”,ID:1) ; 一次创建多个顶点 create(:person name:“刘晨”,ID:1) , (:person name:“王 欣”,ID:2) 创建顶点刘晨、边friend、顶点王欣 方法1:create (:person name:“刘晨”,ID:1) :friend- (:person name:“王欣”,ID:2) 方法2: create(l:person name:“刘晨”,ID:1) ; create(r:person name:“王欣”,ID:2) ; Create l-:friend-r Friend User An Introduction to Database
13、System Cypher : Create语句(续)语句(续) 创建顶点刘晨、边friend、顶点王欣 方法3(假设图中顶点刘晨和王欣已经被创建) 找到刘晨顶点: Match(l:User(ID:1) 找到王欣顶点: Match(r:User(ID:2) 创建边friend:Create l-:friend-r Friend User An Introduction to Database System Cypher : Create语句(续)语句(续) 创建面向类别属性的索引 Create index on :user(Name) 创建面向类别属性的复合索引 Create index on
14、 :user(Name,Affiliation) 创建完整性约束 CREATE CONSTRAINT ON (C:User) ASSERT C.ID IS UNIQUE Friend User An Introduction to Database System Cypher :查询:查询 顶点查询顶点查询 通过编号查找顶点通过编号查找顶点 START L = NODE(0) RETURN L 通过属性:ID查找顶顶点 MATCH (L:User(ID:1) RETURN L 通过WHERE条件 match (L:User) where ID=1 return L Friend User An
15、 Introduction to Database System Cypher :Neo4J的查询语言(续)的查询语言(续) 边查询边查询 方法方法1 START L = NODE(0) START R = NODE(1) MATCH(L-e:friend-R) 方法方法2 MATCH (L:User(Name:刘晨刘晨)-e:friend- R:User(Name:王欣王欣) RETURN e Friend User An Introduction to Database System Cypher :Neo4J的查询语言(续)的查询语言(续) 路径查询路径查询 查找对刘晨发的帖子点赞过的用户的信息查找对刘晨发的帖子点赞过的用户的信息 MATCH(:User(Name:刘晨刘晨)-:Post-(:Message)- :Likes-(L:User) Return L An Introduction to Database System 小结小结 谁在用图数据库谁在用图数据库
限制150内