当前课程知识点:数据库系统原理与开发 >  第7章 NoSQL数据库技术 >  7.5 图形数据库 >  7.5.3 图形数据库-3

返回《数据库系统原理与开发》慕课在线视频课程列表

7.5.3 图形数据库-3在线视频

下一节:7.6 HBase数据库项目实践

返回《数据库系统原理与开发》慕课在线视频列表

7.5.3 图形数据库-3课程教案、知识点、字幕

好 这一节我们还是学习

图像数据库的查询语言

以及它的各类api

最后我们来解释一下我们的图算法

在这个我们数据库里的应用

第一部分我们图形数据库的查询语言CQL

实际上我们的CQL是Cypher Query Language里头的缩写

第一个字母的缩写

是我们在Neo4j图形数据库

提供了一个查询语言

是一种声明性的模式匹配语言

它遵循我们的SQL语法

这些语法简单

实际上这个CQL语言可以用来执行数据库操作

也可以支持我们多个子句

例如我们在查询语言

让我们的where语句是条件语句

和排序语句等等这些相关的操作符

也就是可以用这个语言

我们来编写非常复杂的查询语句

另外一些它还支持一些其他的一些功能

比如说我们字符串的操作聚合

还有关系一些逻辑关系

二元关系等等比较关系等等

这些所有的关系操作都是支持的

好 我们下面来看一下

既然我们这个语言可以用来

在我们数据库里头使用

我们来看一下如果我们要使用

这个语言要做些什么事情

首先第一个我们要准备环境

准备环境我们就要去安装我们的

这个数据库系统这个因为我们的

对应这个图形数据库实际上是

一个开源的数据库

可以直接从官方的网站上

我没们下载相关的安装包

因为现在所有的安装都是有提示自动化的

可以按照提示安装完成并正确配置

配置完以后

如果我们是在本地安装我们就用http

我们斜杠localhost它对应的端口号是7474

这样子可以使用对应它的图形化操作软件了

如果我们试用了

配置了远程可视化的操作

可以用http0.0.0这个对应缺损的

地址因为这个是自动连接的

我们的端口也是7474对应

可以进入到我们的这个操作界面里头

进入到这个界面里头

实际上我们整个就会提示

你连接数据库还有连接好

写好基本的语句为后来执行相关的操作

就可以使用我们相关的命令

实际上我们出来的是一个图形界面

在这个界面上有很多相关的按钮

可以有执行相关的图形操作

下面我们就来看一下

我们直接语句怎么写啦

好 我们来看一下我们这个图形数据库语言

常用的一些命令有哪些

首先我们可以用CREATE语句

把创建节点关系和属性

我们前面说过了

我们这个图形数据库是图的方式存储的

首先图里头有节点有关系有属性

我们可以用CREATE语句来创建这些节点关系属性

使用属性

我们可以创建节点或者使用属性

可以串联节俭之间的关系

为节点或者关系创建单个或多个标签

这个实际上就是说因为我们节点

和节点之间有联系

节点和别人之间也有联系

所以说他们之间的联系也可以

用CREATE语句来进行创建

第二个是那个MATCH就是匹配是检索节点

这个语句对应于我们其他我们的数据库

CQL语言里头的set就是查询查找匹配相关的节点

这个我们可以查找什么可以匹配我们的

节点匹配我们的关系匹配我们的属性数据

都可以这样子我们可以根据不同的条件

查到我们相关我们需要的一些信息

下一个是RETURN也是返回结果最后所有的

语句都要通过它来返回结果返回过来

返回到变量上头这个结果主要用在

我们在数据库里头使用的时间

我们要有变量的时间要通过这个变量返回结果

如果没有变量的话实际上是直接打到屏幕上去的

下面一个WHERE这个实际上

这个大家都非常熟悉了就提供条件过滤的

检索数据这个实际上在我们的

程序设计语言和我们的CQL语言里头

都有WHERE这个关键字就是

在WHERE外后边可以跟我们所有的

查询的条件用我们的关系运算用比较运算

逻辑运算都可以来填写我们的查询条件

DELETE这个就是删除

我们可以删除节点删除关系

删除它们之间的连接都是可以的

嗯 REMOVE这个就是移除

这个实际上移除就是实际上就是我们前面

说过了节点和节点节点和关系之间

他们都有一些相关的链接的一些属性

就是怕一些连接的属性去掉下面一个排序

排序这个时间在我们其他的程序

其他的CQL里头也是有的就是我们可以

以一个什么方式生序或者降序

还有一个排序的方式哪一列数据哪个数据

节点来排还是以关系来排一属性来排

就是减速以后的结果按照我们指定的一些

嗯 数据来进行排序

SET这个就是分组

这个群组设置设置这个就是我们在我们的

图的数据模型里头我们有节点关系属性还标签

这个就是我们添加标签和更新我们相关的

标签实际上就用这个语句来进行描述

好 我们有前面就是我们常用的一些命令

对这些命令来说实际上我们要用语句来进行

要把它组织起来才能完成一个相关的

功能下面一个我们来看一下我们相关的

常用的一些函数常用的函数我们看一下

一个就是字符串的函数

字符串的函数实际上我们可能就是用在

类型是字符串的这种值上头

我们可以对这些字符串进行一些操作

进行一些说明还有一个聚合的结果

我们对结果执行聚合操作这个聚合的

意思实际上在我们的这个CQL语言里头

我们就分组进行汇总只要我们聚合的

意思就是根据一定的条件

我们把数据进行分组进行聚合的结果

进行分组的统计下面一个关系

这个就是取得关系的细节就实际上

在了数据库里头

我们有关系定义两个节点之间他们的关系

两个节点之间的关系可能有多种

我们可以对关系来说我们实际上有它的

起始节点和结束节点还有它中间的含义

还有它的属性的一些信息关系怎么去描述

这个关系的一些信息

所以我们这个Relationship取得我们通过

一些这种函数来取得关系的一些细节的

信息开始节点结束节点还有就是他的

属性信息还有数据类型我们可以定义

节点和关系的属性我们可以用布尔型

有字节型有短整数有整数长整数浮点型

还有双精度型字符型字符串型等等

这个就是数据的类型这一类型实际上和

我们平常操作的其他语言里头操作的数据的

类型是基本一致的

好 我们前面把他的常用命令和常用的

函数做了介绍

下面我们就通过一个例子

来看一下怎么用数据库的一个语言来

对数据库进行操作的

用这个语言我们来创建属性创建节点

这样子我们来看一下怎么做

首先我们创建一个客户

我看一下这个客户我们就这个客户是一个节点

这个节点我们看一下这个节点我们起一个名字

这个就是我们的客户节点

亲 它实际上有相关的

我们看一下它的属性是键值对他属性有ID

有名字 有他的出生年月

这个实际上是我们这个客户里头对应的

一个信息就是说我们这个节点节点里头的

属性是这些这个就是我们创业的

客户里面的键值对信息

我们也创建一个信用卡信用卡的信息

我们看一下一个信用卡的ID当然我们信用卡有名字

还有一个信用卡的这个实际上就是

我们信用卡后边的一个安全的一个数字

还有一个信用卡的失效时间

这个时间我们在一般人信用卡的时间

这几个参数都是比较重要的

好我们可以有了这个创建以后

我们可以查询实际上我刚才看到了

我们查询的时间实际上我们就是用MATCH这个语句

我们查询是查询的什么查询我的信用卡

信用卡我们刚才创建的信用卡就是cc:CrsditCard

谁都看的这个信用卡我们刚才我们查询的时间

我们实际上我们刚才说我们要通过RETURN返回数据

如果我们RETURN所有的信息就包括我们所有的卡ID

我们所有的数据还所有的他的这些日期

我们实际上我们把所有的信息反馈出来

这个就是查询所有的信息

这个就是我们通过MATCH当然我们MATCH里头

我们还可以添加一些查询条件这样的

查询不同的信息下面我们来看一下

因为我们有了客户有了一个信用卡

实际上客户和信用卡都是我们

图形数据库的两个节点

下面我们还可以创建一个客户和信用卡之间的

一个关系我们看一下我们创建的关系

我们是用MATCH MATCH这个时候我们要找到

相关的信息首先我们要找到的信息是啥

如果我们要创建他们两个之间的关系

首先必须保证这两个必须有存在实际上的

意思是什么来我要创建他们之间的关系

首先这个客户要存在实际上就是客户ID要有

而且这个信用卡也是要存在的

就说已经有这个信用卡有这个客户

所以说我们才能创建这两个联系

所以说我们就首先要用一句MATCH语句

来找我们创建这个客户里头

我们的客户ID是100的

信用卡的信息是5001的

如果这两个东西人和信用卡都存在

我就可以创建一个联系

我们看一下我们创建这个联系这个联系

首先是客户我们这个关系就是

我们去买东西用信用卡买东西

大概就是他们实际上就是这个关系

完了以后

信用卡买东西实际上我们就是

客户和信用卡之间有关系

有关系的话这个关系实际上这个

就是这条信用卡和客户两个节点的

联系就是买东西买东西

这个买东西这个关系上头

还要有属性是什么要买的日期和价格

实际上我们可以想象中两个

一个是客户节点一个是信用卡节点

他们之间有一根连线他们建立联系

这个联系是什么客户用信用卡在什么时间

用什么价格 花了什么钱

这个时间我就创建了这个联系

前边一个MATCH语句

保证这个信用卡和客户是一一对应的

然后我们用这个信用卡创建这个联系

好 创建这个联系我们创建联系以后

实际上我们就是刚才这个语句

这个我们看一下这个语句里头就包括了两个节点

一个就是我们的客户一个是我们的信用卡

他们两个之间的联系

中间用中括号用rel写出来

这个联系就是我们

去买东西买东西时间又有什么

怎么描述这个买东西呢

用买东西的日期就是哪天买的

还有多少钱

所以说我们就看一下这个联系就建立起来

我们可以想象这个人和这个信用卡之间就有一

买东西把它联系起来了

当然我们可以建立这个联系

我们也可以删除这个联系

删除实际上我们就直接

查到这个客户和信用卡之间的关系

我们把它删除了就可以了

这删除这个关系将包括三个

一个就是客户本身

这边要删除一个和客户的联系

信用卡这边也要删除一个这条线的联系

好 如果两个节点以及相关的

这种关联都删除成功的话我们可以

实际上这样子我们就在底下来检查一下

看这个是不是还存在实际上我们删除成功

这个RETURN是空的是不存在的

这个时间我们看我们是我们通过

这个图数数据库语言

我们可以创建节点我们可以创建关系

也可以建立创建关系也可以

用查询语句查询相关的内容还可以删除这种关系

当然我也可以删除节点也是可以的

这个实际上我们通过一个简单的例子来

显示一下相关的使用下面我们来看一下

就是我们图数据库里头的相关API

我们在我们对应的图数据库里头

有各类的API因为在我们

对应的图数据库里头有两种使用方式

一种就是嵌入式模式

一种就是服务器模式嵌入式模式实际上

我们只要引用它的开发包因为他提供一个

就相当于一个开发包我们安装的

时间把这个安装进去

安装进去以后我们就可以用开发包里头的函数

通过这些函数来调用

我们这个数据库里的相关的数据

第二种方式实际上就是服务器模式

实际上我们要先把这个图数据库安装好

安装好以后我们

安装驱动程序就可以通过API

通过网络来调用我们这个API

使用API来操作我们数据库里和相关数据

第三种方式是通过一种遍历框架这也是在

和java一起的一个API

通过遍历程序来调用这些通过java的

调用这些相关的函数可以图数据库进行相关的操作

这个就是他基本提供的API的

信息下面一个因为我们的图形数据库

在我们的日常生活中用的非常多

实际上还有我们的图实际上是最古老的一个数学的

有很多相关数学的基础

所以有很多数学的算法这些算法实际上

在我们的图形数据库要发挥很大的作用

首先我们看一下遍历和寻路的算法

有五个 第一个就是我们的广度优先实际上

这个问题可以探索我们最近的邻居和他们的

次级邻居这样子时间发现邻居信息

这个在我朋友圈里头

第一级朋友第二级个朋友多级朋友的

这种信息实际上是很有用的

第二个算这个

遍历算法是深度优先

这个实际上是通过回嗍之前的

先我们找到一个最深度的一个朋友

这个朋友实际上我们再

通过反过来再一遍一遍的

来找到实际上是通过回嗍之前尽可能

探索每一个分支他这种用法

实际上就说我们在我们找到一点根据

一点开始我们找到一个最佳的

解决问题的方法还有下面一种

遍历算法是单源最短路径就是计算

单个点和其他节点的最短路径

这个实际上在我们的地图获取我们的驾车路

我们驾车的路线上头的计算实际上这个是

最有用的实际上还有我们电话呼叫的路由

我们最低成本电话呼叫是由单个源开始到

其他节点的一个最短路径可以用在我们的

驾车路径电话呼叫等等方面可以有用

还有全员最短路径计算包括图中

所有节点的最短路径

这个实际上在我们的高速公路的

备份和网络里容量啊

在我们提供多路径

还有就是呼叫路径选择实际上

我们这个实际上向全园最短路径算法

是非常有用的

下面一个是最小生成树

就计算预防所有节点的最小值

这个所有节点的最小值可以用于

滚动优化实际应用程序

这个时间有很多路子路径的修正啊

还有这种方法都是很有用的

通过这种算法可以生成一个最小的路径

各个节点之间的最小值

我们可以来减少成本

我们第二类算法就是我们找中心点的算法

第一个就是我们PageRank

PageRank这个算法实际上

在我们的搜索引擎里头用的非常多

就是估计当前节点与其他相邻节点的重要性

再从邻居节点上获取节点的重要性是什么意思

但我们搜索引擎我们可以检索一个节

一个节点我可以计算这个节点

对我们整个搜索的贡献

如果这个节点向我们在寻找

最优路径的时间这个节点的重要性越高时尚

我们就从他获得的信息就越多重要性就越低

他的信息就越少这样子实际上

对搜索引擎对查询的方式

提供了很大的帮助另外一个就是度中心的计算

这个就是测量节点整个图标里头

所具有的关系的数量

就是流入和流出两个方向这个具有一些指向性

这种指向性的这种信息

实际上在我们整个研究里头

评估这些相关的信息的时间

就要看这个点是有多少出多少入出入的比例

出入的变化方式

实际上对我们整个趋势的股价是很有关系的

特别是在一些流行病的一些

病态上分析上头有很大的作用

下面一个就是中心度的

这种集中程度的一个衡量

这个就衡量一个节点对其他集群

所有邻居的集中程度集中程度实际上

就是说这个节点是不是

所有的节点都往这靠拢如果靠拢的话

会有哪些结果出来

这个实际上就是

在社交网络里头在对一些信息的传播

这个人是不是其关键作用

可以用这个算法来进行推理去算出来

下面一个就是这个

就是最短路径通过这个实际上我们可以

这个是在药物疾病的靶向方面啊

实际上通过这个节点的最短路径的数量

表明很多的过程都通过这个节点再进行

说明这个节点非常非常重要这样子实际上

在我们的网络的分析过程中

如果这个节点非常非常重要的话

时间可能从这个节点会发现很多相关的问题

这个也是我们图形算法里头很有用的

下面一类算法就是我们社区发现算法

也称为聚类算法或者分区算法

一个就是基于我们淋浴多数的标签

作为推理集群的手段这个实际上

我们可以通过这种标签数据来看一下是不是一类

或者是不是具有相同的特征可以

发现一些未知的一些分类这样子可能

是我们从这些未知的分类里头发现新的问题

下一个就是我们定位节点族其中每一个节点

都可以从同一组中的所有节点

按照关系的方向到达这个就是第11个

深度优先的算法这个实际上在我们的

推荐系统啊

还有在这种作为我们这个图的

这种预处理的这种方式

这样子就很大的作用

第12个算法这个算法就是查找节点组

其中每一个节点可从同一组中的

其他节点可以到达不考虑方向

这个实际上就是说这些节点族

很多人都可以到很多地方都可以

到达实际上这个是一个公共的一个目标点

实际上这个就是我们在我们这个预处理过程中

用这种方法可以有助于快速识别断开的

一些主就实际上本来有的图形是连接起来的

有的地方断开以后可能我们很多的路就要冲过

再走的话只能都到达断开的地方就不走了

实际上这个也是一个找到问题的

一种比较好的方法通过这种算法

下一个算法就是通过比较他的

关系密度和适当的定义的随机网络来测量

社团分组的质量这种实际上每一个社团

这种测量质量的方法就是为了找到欺诈

可能有些客户实际上是假冒的

我可以通过这种方式来区分假冒的

和真正的相关的

客户的信息

下一个是通过一些特定的节点

量化提到邻居节点的距离就每一个节点

直接连接到其他节点这段时间也是对图中

所有一个重要信息的发现

特别是在一个网络结构中去

主导地位的一个节点

这样我们就可以通过这个节点

找到这个节点可以来找到一些相关的信息

最后一个就是测量有多少节点

具有三角形以及节点倾向于聚集在一起的程度

平均聚类系数为一的

表明有一个分组零时并没有连接

这个实际上对我们来说

这种平均聚集系数平长

又有估计我们网络是否可能展现于

基于密度的小世界的行为也是

我们集群稳定性和弹性的一个一个因素

这个实际上我们很多流行病专家使用这个

来预测不同社区的各种感染指数

都可以用这个算法来进行

所以说因为我们整个的世界是由关系驱动的

我们这个图像数据库分析

解释了我们图形背后的意义

都希望我们用这些图形算法可以更加更有意义

更有效的方式去理解所有连接的

这些数据这就是算法的一些作用

好本节内容就到这结束

数据库系统原理与开发课程列表:

第1章 数据库系统概论

-1.1 数据库及其系统概念

--1.1 数据库及其系统概念

-1.2 数据库技术发展

--1.2 数据库技术发展

-1.3 数据库应用系统

--1.3 数据库应用系统

-1.4 典型数据库管理系统

--1.4 典型数据库管理系统

-1.5 PostgreSQL对象-关系数据库系统软件

--1.5 PostgreSQL对象-关系数据库系统软件

-第1章 数据库系统概论--本章单元测试

-第1章 数据库系统概论--本章重点问题讨论

第2章 数据库关系模型

-2.1 关系及其相关概念

--2.1.1关系及其相关概念-1

--2.1.2关系及其相关概念-2

-2.2 关系模型原理

--2.2.1关系模型原理-1

--2.2.2关系模型原理-2

-2.3 PostgreSQL数据库关系操作实践

--2.3 PostgreSQL数据库关系操作实践

-第2章 数据库关系模型--本章单元测试

-第2章 数据库关系模型--本章重点问题讨论

第3章 数据库操作SQL语言

-3.1 SQL语言概述

--3.1 SQL语言概述

-3.2 数据定义SQL语句

--3.2.1数据定义SQL语句-1

--3.2.2数据定义SQL语句-2

--3.2.3数据定义SQL语句-3

-3.3 数据操纵SQL语句

--3.3 数据操纵SQL语句

-3.4 数据查询SQL语句

--3.4.1单表数据查询

--3.4.2 内置函数与分组统计

--3.4.3 多表关联查询

-3.5 数据控制SQL语句

--3.5 数据控制SQL语句

-3.6 视图SQL语句

--3.6 视图SQL语句

-3.7 PostgreSQL数据库SQL实践

--3.7 PostgreSQL数据库SQL实践

-第3章 数据库操作SQL语言--本章单元测试

-第3章 数据库操作SQL语言--本章重点问题讨论

第4章 数据库设计与实现

-4.1 数据库设计概述

--4.1 数据库设计概述

-4.2 E-R模型方法

--4.2.1 E-R模型方法-1

--4.2.2 E-R模型方法-2

-4.3 数据库建模设计

--4.3.1 数据库建模设计-1

--4.3.2 数据库建模设计-2

-4.4 数据库规范化设计

--4.4.1 数据库规范化设计-1

--4.4.2 数据库规范化设计-2

-4.5 数据库设计模型SQL实现

--4.5 数据库设计模型SQL实现

-4.6 基于Power Designer的数据库设计建模实践

--4.6 基于Power Designer的数据库设计建模实践

-第4章 数据库设计与实现--本章单元测试

-第4章 数据库设计与实现--本章重点问题讨论

第5章 数据库管理

-5.1 数据库管理概述

--5.1 数据库管理概述

-5.2 事务管理

--5.2 事务管理

-5.3 并发控制

--5.3.1 并发控制-1

--5.3.2 并发控制-2

-5.4 安全管理

--5.4.1 安全管理-1

--5.4.2 安全管理-2

-5.5 数据库备份与恢复

--5.5 数据库备份与恢复

-5.6 PostgreSQL数据库管理项目实践

--5.6 PostgreSQL数据库管理项目实践

-第5章 数据库管理--本章单元测试

-第5章 数据库管理--本章重点问题讨论

第6章 数据库应用编程

-6.1 数据库连接技术

--6.1.1 数据库连接技术-1

--6.1.2 数据库连接技术-2

-6.2 数据库存储过程

--6.2 数据库存储过程

-6.3 数据库触发器

--6.3 数据库触发器

-6.4 数据库游标

--6.4 数据库游标

-6.5 嵌入式SQL编程

--6.5 嵌入式SQL编程

-第6章 数据库应用编程--本章单元测试

-第6章 数据库应用编程--重点问题讨论

第7章 NoSQL数据库技术

-7.1 NoSQL数据库概述

--7.1.1 NoSQL数据库概述-1

--7.1.2 NoSQL数据库概述-2

--7.1.3 NoSQL数据库概述-3

-7.2 列存储数据库

--7.2.1列存储数据库-1

--7.2.2列存储数据库-2

-7.3 键值对数据库

--7.3.1 键值对数据库-1

--7.3.2 键值对数据库-2

--7.3.3 键值对数据库-3

-7.4 文档型数据库

--7.4.1文档型数据库-1

--7.4.2文档型数据库-2

--7.4.3文档型数据库-3

-7.5 图形数据库

--7.5.1图形数据库-1

--7.5.2图形数据库-2

--7.5.3 图形数据库-3

-7.6 HBase数据库项目实践

--7.6 HBase数据库项目实践

-第7章 NoSQL数据库技术--本章单元测试

-第7章 NoSQL数据库技术--本章重点问题讨论

期末考试

-期末测试--期末测试

7.5.3 图形数据库-3笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。