当前课程知识点:高级大数据系统 >  Graph Processing >  Graph systems >  Video

返回《高级大数据系统》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《高级大数据系统》慕课在线视频列表

Video课程教案、知识点、字幕

我们通过一个具体的实例

来介绍图的这种数据库

那么这个实例叫做Neo4j

那么Neo4j是从工业界来的

它提供了一个这种图的查询

图的操作的一个语言

它非常类似于sql

然后让用户可以

不用去考虑底层的具体的数据

以及底层的这种系统的实现

然后通过一个非常简单的

上层的抽象

来对这种图的数据库里面的数据

进行一个查询

那么一个Neo4j的特性

实际上在这里面已经说到

首先它是一个专门的数据库

它并不像关系数据库那样通用

它是有专门数据库

它里面包含的是

这个节点和关系的这样一个数据

那么每个节点和每一条关系

每一条边实际上它都可以包含一些属性

这些属性具有比较复杂的

这种数据结构

比如说它可以是一些基本的

这种数据类型

或者说是其他的这种结构

有用户可以自己去定义

然后它可以

处理比较复杂的这种图的算法

比如说路径

最短路径的一个搜索

比如说这种

图的这种模式的匹配

这都是Neo4j可以做得到的

那么同时

它还具有大数据系统的这些特性

它可以扩展到大量的这个服务器

那么可以把图的数据

和图的算法的load

分配到这些服务器上

同时它可以保证很高的可用性

也就是说

用户的查询可以在一定的

时间的范围内得到保证

那这是Neo4j

提供到的一个

这种数据的这样一个系统的

一个支撑

那么在我们个人的实验的

使用的体验当中

实际上Neo4j还提供了

比较好的这种接口

比如说它对数据的可视化

对于操作的一个优化

实际上相对还是比较好用的

那么我们来看一下

在Neo4j这里面

它使用了一些什么样的

数据的定义

以及语言的定义

那么在Neo4j里面

它使用节点和边对数据进行描述

那么在节点和这个边上面

它可以有这个属性

那么属性是一系列的

基本的数据结构

基本的这个数据类型

同时在Neo4j里面

定义了一种新的

叫做Cypher的这个语言

Cypher类似于SQL

它可以提供对图数据库中的数据

进行查询和进行操作

那么它可以通过定义从句的方式

比如说sql里面的

这个where

那么在Cypher里面

也可以通过类似的这个从句

进行条件的一个匹配

那我们来看一个简单的

这个Cypher它的一个例子

那么第一个例子呢

就是说我们可以从某一个

这个节点进行出发

然后去进行这个查找

就是说把这样的一个节点

给提取出来

那么它的一个基本的语句的形式

是这样的

我们可以对这个节点的一个属性

进行查找

把它用等号的方式连接起来

我们可以把这个节点给提取到

我们还可以去找这个关系

这个语句实际上给出了关系的

一个例子

用这样一个箭头的方式

把关系给匹配了出来

我们还可以进行节点的创建

当然是可以进行节点的创建的

Cypher它的一个特征

也描述在了这里

它首先是一个这种模式匹配的

这样一个语言

它可以通过从句

类似于sql这样去定义

我们要查找的这样一个方式

那么它在里面可以做数据的整合

对数据进行一个排序

然后可以对这个不同的数据

进行一个

不同的图进行联合等等

这样的一些操作

也支撑了最原始的

sql里面的一些方式

比如说创建

比如说这个读、更新

以及数据的一个删除

我们来看看这些基本的语句

它在这个Neo4j里面

它是怎么样去使用的

那这边给到的几个都是Neo4j

官方给出来的例子

我们来看

首先我们可以往整个数据库中

去创建节点

或者是创建这个关系

那我们来看创建节点

它是怎么去做的

使用的原语也是create

这边是创建了一个person

也就是类似于社交关系里面

这样一个人

它具有这样的一些属性

大家可以发现

这个属性实际上并不限制

它的长度

可以是任意多的

还有它的名字

有它来自什么地方

以及它的这个klout

这样一个值

那么create

用圆括号来表示它是一个Node

那么用这个大括号来表示

它的这些属性的一个列表

那么在这个Cypher里面

它一个独特的这从句

是叫做match

有点像我们在sql里面的这个where

那我们来看match

它能做哪些事情

首先我们是可以用它来

match这个属性

在这样的一个例子当中

但实际上这个match

你可以增加任意复杂的这种条件

比如说他可以

match一个名字

也可以match某一种关系

我们在下面一个例子去给大家

同时它可以增加where

这样的一个从句

那么where实际上是可以

和sql里面的where

直接对应起来的

它可以对简单的这种数据的

相似性 相等等等

或者是小于大于这样的关系

进行判断

那么在where里面

我们可以把刚刚需要的

这样一个条件给放进去

那么return

是将得到的结果

输出出来的一个操作

那么这里面我们就是要将

这个节点给输出出来

那么这个节点是return的

这样一个输出

我们刚刚说到

在这个match里面

我们除了去match简单的

这种条件和关系数据库类似以外

我们还可以去match图的一些模式

我们来看这个过程怎么做的

我们在where里面

还是使用了简单的条件

它的名字叫做这个Emily

然后我们在这个match里面

我们是match了一个图的

这样一个结构

这个结构是有一个节点

中间有一条关系

后面还有一个这个节点

那么有了这个东西之后

实际上我们想描述的就是说我们

要把当前这个叫做Emily的

这样一个用户

它认识的人给打印出来

所以只要它存在着这样一条关系

和Emily之间有一个认识的关系

那么这条数据就会被输出出来

同时在前面加上Emily

那么它大概会输出这样一个

两列的这样一个数据

那么这是Cypher

和sql不一样的地方

在sql里面

如果我们要做这个事情的话

我们需要去写for循环

我们需要去写复杂的这种匹配

但是在cypher里面

我们可以直接把我们想要的

一个图的一个局部的一个结构

给描述出来

所以大家可以想象

当我们把这个结构

写得更加复杂的话

实际上你是可以去做到一些

比较特殊的这种图的算法

那么这边就给了一个例子

我们可以用Cypher的写法

直接来做一个这种好友的推荐

那么这个推荐的原理是什么

我们将某一个用户

他认识的人给列出来

然后这些认识的人

再认识的人

我们进一步列出来

那么这些人就可以作为

推荐给当前用户的一个操作

那么这个原理实际上是

将好友的二度好友推荐给

某一个人的二度好友推荐给他

也就是说他认识的人认识的人

那么可能它并不一定认识

但这些人

推荐给他的话

它还是有很大的可能性

和他们建立这种社交关系的

那么这是这个推荐的原理

那我们来看他怎么做的

首先在match里面

我们写了这样的一个关系

那么这边是小括号空着

它是一个能够被匹配上的

这样一个模式

那么要求他的名字是这个约翰

也就是说我们是为这个用户

进行推荐

然后我们还要求这个推荐出来的

这个二度好友和这个约翰

可能具有相同的爱好

那么这边这个爱好叫做surfing

那么即使它的二度好友

又具有这样一个共同的一个爱好

那我们会把这些人推荐给他

我们最后会把这样的一些人

给输出出来

而且我们让他以这个

disctinct的方式输出

和sql里面一样

我们把重复的这个对象给滤掉

所以大家可以看得出来

我们用这个图数据库里面的

一些简单的这种语句

就能够实现在关系数据库里面

非常复杂的这种功能

我们可以把二度好友中

具有某一种属性的这个节点

全部找到作为推荐结果

那么在我们做其他物品的推荐

比如说电影书籍的推荐的时候

我们依然可以使用类似的办法

比如说我们想把好友看过的书

全部列出来

推荐给某一个用户

那么在关系数据库里面

很难做的一个东西

在图书类库里面

由于它提供了这样的

一个匹配的算法

我们就变得非常的容易

这是大家可以在后面

处理到类似的这种任务的时候

可以去尝试使用这个图数据库

高级大数据系统课程列表:

Introduction to Big Data Systems

-What is big data and what is big data system?

--Video

-Problems in big data systems?

--Video

-Overview of the course

--Video

-Principles of big data system design

--Video

Basics of Linux Data Processing

-Manipulating Data on Linux

--Video

--Video

--Video

-Basics of Linux Data Processing--Manipulating Data

-Running Commands on a Single Machine

--Video

-Running Commands on a Single Machine--作业

-Using a Linux Cluster

--Video

-Using a Linux Cluster--作业

Distributed File System

-Storage for Big Data Computing: Distributed file system

--Video

-Storage for Big Data Computing: Distributed file system--作业

-File system and GFS

--Video

-File system and GFS--作业

-Understanding HDFS using Legos

--Video

-Understanding HDFS using Legos--作业

-File System Implementation and DFS

--Video

--Video

-File System Implementation and DFS--作业

MapReduce

-What is MapReduce and why

--Video

-What is MapReduce and why

-Learn MapReduce by playing with cards

--Video

-Processing pattern

--Video

-Processing pattern--作业

-Hadoop

--Video

-Hadoop--作业

-Algorithms in MapReduce

--Video

-Algorithms in MapReduce--作业

-Tutorial

--Video

In-memory Processing

-Background

--Video

-Background--作业

-Spark

--Video

-Spark--作业

-Use Spark for data mining

--Video

-Use Spark for data mining--作业

-Spark data processing

--Video

-Spark data processing--作业

-Experiment in Spark

--Video

-Experiment in Spark--作业

Streaming Data Processing

-Introduction to streaming data processing

--Video

-Introduction to streaming data processing--作业

-Storm

--Video

--Video

--Video

-Storm--作业

-Spark streaming

--Video

--Video

-Spark streaming--作业

NoSQL

-NoSQL introduction

--Video

-NoSQL introduction--作业

-Common Advantages

--Video

-Common Advantages--作业

-Bigtable

--Video

-Bigtable--作业

-Master Startup

--Video

-Master Startup--作业

-HBase

--Video

-HBase--作业

Graph Processing

-What is GraphDB and Graph data processing

--Video

-What is GraphDB and Graph data processing--作业

-Graph systems

--Video

-Graph systems

-Example of a GraphDB

--Video

-Example of a GraphDB--作业

Machine Learning System

-Mahout

--Video

-Mahout--作业

-Case Study: Recommendation

--Video

-Case Study: Recommendatio作业

-Recommendation in Mahout

--Video

-Recommendation in Mahout--作业

Video笔记与讨论

也许你还感兴趣的课程:

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