当前课程知识点:数据库系统原理与开发 > 第7章 NoSQL数据库技术 > 7.5 图形数据库 > 7.5.1图形数据库-1
我们这一节来学习
图形数据库相关的概念
图形数据库的概念
图形数据库的模型
以及我们Neo4j图形数据库以及它的相关数据类型
好第一个我们图形数据库的基本概念
实际上我们现在的
互联网+社交网络和智能推荐等等
这种大规模的兴起和繁荣
我们直接寻找直接朋友或者
寻找朋友的朋友的这些便利查询
实际上这些都是要用到我们的图数据库
还有图数据库的起源
就是我们欧拉和我们的
图理论是基于图的这种数据库
以图数据结构存储查询数据
可以模拟节点和边的体现来处理键值对
还有我们图的特征应该是每一个图
都包括节点和边节点上有属性
还有边上有名字和方向
我们每一个边上有开始节点结束节点
边上也可以有属性图是顶点和边的
一个集合活着图是一些节点和关联的
一些集合好下面我们看一下图元素的组成
我们看下面我们给一个一个图
永基来表示他身上有V和E V是我们的节点集合
E是边的集合节点和关系属性
我每一个节点上可能有多个标签
有些类别一个属性图是由顶点
边标签这样还有关系的类型和属性来组成的
实际上这个图的基础上我们对节点边
节点和边之间是有关联的
定点也就是我们的节点
边就是我们的关系
实际上这样子组成了节点和关系的
一个实体节点是我们可以
对节点的设置标签
相同的标签都属于一个分组或者集合
有几个节点实际上他的属性之是相同的
我们就可以这些个点作为一个集合
不同的性质可以作为不同的集合
关系是通过关系类型来分断的
类型相同的关系可以属于同一个集合关系
而且是可以有方向的
完了
我们图数据库可以处理大量的
复杂的 互联的 多变的
网状数据适合于我们的
社交网络实时推荐银行交易环路
还有金融征信系统等等
这些领域的应用
我们来一起看一下图的数据模型
首先图是一个二元关系
这个二元关系我们看一下有一系列
线箭头连接起来的节点实际上我们看一下
这一个图中两个节点通过一个有线的
有箭头的线连接起来实际上组成
一个节点和边的一个二元关系
完了我们有有像图
这个结点的连线是有方向的
我们有节点集合弧的集合
也就是说有节点还有每个连的方向的图
结点的有序对
我们的弧我们U V表示弧
我们看一下V可以是弧的
头部U就是弧的尾部
我们从某个节点通过自身的弧叫做自还
比如说我们u到u实际上就是一个自还
我们U到V U是我们的前导V时优的后继
完了
图的各个节点附加一个标号
我们标号是要绘制中所有的节点
放在节点附近的这个就是说
对所有有向图里头我没有
头部尾部或者叫前导后继而且
每一个节点还对应相关的
标号把它标识出来我们的
路径就是一系列节点比如说我们从v1到vk
我们是一个路径说明我们可以从v1
通过v2 v3一直到weekl一条路径
这个路径的长度就是k减一
是经过了这个弧的数量
好我们可以有环图和无环图
我们这个环路实际上是起点和终点
是同一点的长度不为零的路径
就叫环路实际上我们都知道起点比说从v1起点
我们最后通过yy最后又回到v1
这样子就是一个环
这个环的长度要求长度不为零的才是环路
五环路的长度实际上就等于路径的长度
还路的起点和终点可以使
其中的任何一个节检
如果所有的节点只出现一次
除了我们的起点和终点以外
只出现一次就是一个简单的环路
如果有的节点出现了三次或者三次以上
就是可能有嵌套的环路比如说我们V出现了三次
相当于有两至少有两个环存在的
我们刚才说过了如果某个未知外的
节点U也出现了两次证明这个环里头有看透了其他
另外的环路下面我们的数据模型
看一下图的数据模型
里头图的实现有两种
一种是邻接表的方式
邻接表的方式
我们在我们这个这一页的左下角
我看一下图五个节点某个节点
我们就是持五乘五的一个矩阵
实际上如果两个节点不存在路径
我们这个是个有向图他的
距离就是无穷大如果存在路径
实际上从V0到V1存在路径
他就是我们的路径上的值
如果不存在就是无穷大这就是邻接表
邻接矩阵的方式来存储
这个图的一些相关信息
我们的右下角实际上是一个邻接表的方式
每个节点就把他拉出去
如果和另外一个邻接就把他拉出去
把它连接起来这个图的应用又包括我们的
最短路径啊可达几个种搜索算法
实际上这个我们在后头会讲到为我们的图的
一些应用提供很多理论的基础
用这些理论可以解决很多我们实际的问题
图的数我们看一下节点集合连接节点之间的关系
节点集实际上就是我们的节点的一个集合
连接节点的关系是图形数据库里
特有的每个节点要具有标示自己所属
实体类型的一个标签也要有所属的节点集
并记录一系列描述这些节点的属性
通过关系来链接各个节点
各个节点的抽象实际上与我们关系数据库的
各个表的抽象是有点类似的
我们下面来看一下这个图
这个图我们是两类实体
一类是一个电影实体
一类是一个人的实体实际上这两个节点就代表了两类
而且这里边我们每一个节点
我们实际上这几点我们就有名字实际上就是我们的标识
只要在这两类节点之间有不同的关系
如果这个电影和人如果这个人是演员的话
实际上是这个演员要演这个电影
如果这个电影和这个人联系起来是
导演的话实际上就是导演
导演要导这个电影所以说这个是不同的关系
我们看一下这个图型数据库里头我们可以
属性节点的节点可以分类
就根据它的名称分类我们电影是一类人是一类
还有节点之间的关系
我们可以通过不同的关系有分成不同的类
可以人演电影还有这个导演要导这个电影
所以说这个就是不同的类型不同的关系
下面我们来看一下我们这个
Neoc4j这个数据库图形数据库对应的这个
相关的一些特征和它的数据模型
这个数据库是一个用开源java
实现的图书据库有两种运行方式
一种就是服务的方式就是对外提供一些接口
可以直接用这些数据库
另外一种是用嵌入式的方式
文件的形式放在本地直接对本地文件进行操作
而且它是一个高性能的一个nosql的图形数据库
他讲结构化数据存储存储在网络上
还不是在表格上是用图的方式存储在网络中
我们可以看成是一个高性能的一个图引擎
具有我们成熟数据库的所有特征
而且我们引用的时间任何一个程序员
在一个面向对象灵活的
网络结构下来进行工作不是像我们在
关系数据库我们所有执行的适用的
是静态的表格这样子实际上我们就对我们的
工作又带来很大的好处
接下来我们看一下这个图数据库的一些相关特点
第一个特点比如说他又是嵌入式高兴而且轻量级
这样子实际上在我们的日常应用也越来越发挥大的
受到关注
第二个他是一个包含两种基本类型
一种就是节点一种就是关系
我们刚才说了结点实际上按照不同的
类可以分很多的类关系也是按照不同的
可以分很多的类节点和关系实际上都是
我们用键值队的形式来进行存储的每一个节点
我们给他定义一个键对应一个值
和每一个关系我们定义一个键对应一个值
我们节点通过关系所定义的关联连接起来
形成我们整个数据库的网络结构
好 我们看一下查询语言这个图数据库提供的
查询语言schema
schema实际上它是在我们的
Cypher数据查询语言上扩展而来的
可以满足任何形式的一个需求
而且对于高度关联的数据的查询 速度快 而且踏实
实体和关系的结构非常自然的贴合人们的
直观感受而且兼容我们的
实务的原子性一致性
隔离性和持久性原则的一个实务操作
而且他有一个高可用的模型这是大规模数据量的查询
支持备份数据局部性以及用余性
还提供了一个可置换的平台
下面我们来看一下我们
这个数据库的数据模型
首先每一个实体都有一个id
每个节点都有一个标签
每个关系都有唯一的类型
这个就是实体还有每个实体都直接使节点和关系
每个实体都有零个 一个或者多个属性
每个关系都只有一个类型连接两个节点
还有路径我们定义从起始节点的终止节点
标记是一个非空的字符串我们用标签来定义
标签我们来记录标记的数据的分组
还有关系类型由于标记关系的类型
我们看一下下面
我们的属性键
我们的这个键值实际上我们是通过一个键来定义的
而且属性值可以使任何类型
键是唯一的值可以是任何的类型
我们这边有一个模型表在我右下角的这个图上
我们看一下这个对应的数据库的模型
我们在模型有我们看一下有三个节点
三个节点它有和两个关系
三个节点我看一下三个节点有
Person人和电影实际上是两类
两类节点仍是一类是一类我们的节点
三个节点时间就是分成两类
我们的关系两个关系也是有两类
一类是导演关系一类是演员的关系
所以说我们看他的标签对人来说我们的演员
和导演对应的都是一个人的这一类
这一类我们需要的属性都是名字和他的出生年月
下面对电影这一类这个实体
我们对应的是他的电影的名字和电影是什么时间发行的
所以说这个实体我们看一下实体
包括节点关系标签以及这些
我们下面对这些所有的详细东西给大家做一个列表
在这里这个图为基础
我们看一下实体就是有三个
有三个名字 一个演员 一个导演一个
电影的名字完了以后对应它的属性
就是人是他的出生年月
电影是哪年发行的关系
我们有两类
一类是演员关系
一类是我们的导演关系
标签我们看一下图上的标签
我们对应有相同的我们就是
标签一样的人都是出生年月和他的名字
但是电影我们就是他的电影名和他的
这个发行时间所以标签是不一样
每个节点的标签是不一样的
属性就是一个键值对实际上我们对人有两个属性
电影也有两个属性关系是有两个
一个是扮演一个是导演便利事项
我们可以从一个图形是一个有向图
我们可以找找实际上便利是从图的
某一个节点开始
我们来找找过整个店里过程
下面我们来总结一下
我们给定的右边的这个图实际上我们来看一下实体
我们这个实体有五个
关系实体之间我们用蓝色的线画出来的
标签每一个上边我们就有标签
我们的方框是对你的标签
我们的属性这边没写可以
用不同的方式来定义比如说是人
我们有人的属性
对实体我们要有人 书和电影
所以说我们人是用人的一些相关的信息
书是用书的信息
电影是用电影的信息
这些都有不同的标签
完了以后我们还可以就是生成一遍历
我们从比如说我们从爱丽丝可以找包裹
可以抱着爱丽丝对
一直可以打这个电影都可以生成一些
遍历的一些路径这个就是整个我们
图形数据库 数据模型
要表达的所有信息
好本节学习到此结束
-1.1 数据库及其系统概念
-1.2 数据库技术发展
-1.3 数据库应用系统
-1.4 典型数据库管理系统
-1.5 PostgreSQL对象-关系数据库系统软件
-第1章 数据库系统概论--本章单元测试
-2.1 关系及其相关概念
-2.2 关系模型原理
-2.3 PostgreSQL数据库关系操作实践
-第2章 数据库关系模型--本章单元测试
-3.1 SQL语言概述
-3.2 数据定义SQL语句
-3.3 数据操纵SQL语句
-3.4 数据查询SQL语句
-3.5 数据控制SQL语句
-3.6 视图SQL语句
-3.7 PostgreSQL数据库SQL实践
-第3章 数据库操作SQL语言--本章单元测试
-4.1 数据库设计概述
-4.2 E-R模型方法
-4.3 数据库建模设计
-4.4 数据库规范化设计
-4.5 数据库设计模型SQL实现
-4.6 基于Power Designer的数据库设计建模实践
--4.6 基于Power Designer的数据库设计建模实践
-第4章 数据库设计与实现--本章单元测试
-5.1 数据库管理概述
-5.2 事务管理
--5.2 事务管理
-5.3 并发控制
-5.4 安全管理
-5.5 数据库备份与恢复
-5.6 PostgreSQL数据库管理项目实践
-第5章 数据库管理--本章单元测试
-6.1 数据库连接技术
-6.2 数据库存储过程
-6.3 数据库触发器
-6.4 数据库游标
-6.5 嵌入式SQL编程
-第6章 数据库应用编程--本章单元测试
-7.1 NoSQL数据库概述
-7.2 列存储数据库
-7.3 键值对数据库
-7.4 文档型数据库
-7.5 图形数据库
-7.6 HBase数据库项目实践
-第7章 NoSQL数据库技术--本章单元测试
-期末测试--期末测试