Python测开28期-偕行-Neo4J数据库介绍

一、Neo4J数据库介绍

1、题外话

什么是知识图谱?

百度百科:知识图谱(Knowledge Graph),在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图形,用 可视化技术描述知识资源及其载体,挖掘、分析、 构建、绘制和显示知识及它们之间的相互联系。 知识图谱是通过将应用数学、 图形学、信息可视化技术、 信息科学等学科的理论与方法与计量学引文分析、共现分析等方法结合,并利用可视化的图谱形象地展示学科的核心结构、发展历史、 前沿领域以及整体知识架构达到多学科融合目的的现代理论。它能为学科研究提供切实的、有价值的参考。

简单说来,知识图谱就是通过不同知识的关联性形成一个网状的知识结构,而这个知识结构,恰好就是人工智能AI的基石。当前AI领域热门的计算机图像、语音识别甚至是NLP,其实都是AI的感知 能力,真正AI的认知 能力,就要靠知识图谱。

知识图谱目前的应用主要在搜索、智能问答、推荐系统等方面。知识图谱的建设,一般包括数据获取、实体识别和关系抽取、数据存储、图谱应用都几个方面。

2、什么是Neo4J

知识图谱由于其数据包含实体、属性、关系等,常见的关系型数据库诸如MySQL之类不能很好的体现数据的这些特点,因此知识图谱数据的存储一般是采用图数据库(Graph Databases)。

  • Neo4j是其中最为常见的高性能的 NoSQL 图数据库,它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j 也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。
  • Neo4j是一个世界领先的开源的基于图的数据库。 它是使用Java语言完全开发。

特点:

  • 开源的(社区版开源免费)
  • 无模式(不用预设数据的格式,数据更加灵活)
  • noSQL(非关系型数据库,数据更易拓展)
  • 图数据库(使用图这种数据结构作为数据存储方式)

说明:
从Neo4j 3.5开始,企业版源代码将不再发布到开源公共资源,包括未来版本。不会影响Neo4j社区版。Neo4j将继续提供世界上最好,最全面的图形数据库作为开源。不会影响客户,合作伙伴,OEM或Neo4j桌面用户。来自Neo4j之外的代码贡献在早期版本中仍然可用作开源。

3、图数据库的概念

图数据库也称为图形数据库或者图形数据库管理系统或GDBMS。
是以图结构的形式存储数据的数据库,基本概念是图,以节点,关系和属性的形式存储应用程序的数据,在这里我们用一个简单的例子来介绍图:

图例

如下就是一个图,图中包含的信息是:一位名为 Gods_Dusk 的用户,撰写了两门霍格沃兹课程,其中一门叫做 《Python 机器学习玩转 Flappy Bird 游戏》,所属学科是机器学习和 Python,另一门课程叫做《图数据库 Neo4j 基础入门》,所属学科为 Neo4j。同时该用户参加了第 23 期 Python 楼赛,获得了第二名。

另一名用户为云课管理员,用户 ID 为 1。
image

图片描述

  • 节点

节点通常用于表示实体,实体的概念来自哲学,现实世界中的客观事物、抽象的事件均可称之为实体。节点是组成图的最小单位。

  • 标签

标签用于分类节点,如所有用来表示蓝桥云课课程的节点都可以使用标签:课程进行标记。在 Neo4j 中,就可以根据不同标签类型进行特定节点的查询。

一个节点可以有多个标签。如用户 Gods_Dusk,既是霍格沃兹用户,也是霍格沃兹作者;用户 云课管理员,既是霍格沃兹用户,也是霍格沃兹员工。

  • 关系

图中的边表示关系,关系连接两个节点,如撰写关系,将《图数据库 Neo4j 基础入门》课程和用户 Gods_Dusk 相连接起来。

关系具有方向性,如《图数据库 Neo4j 基础入门》属于 Neo4j 类型的课程,而反之不成立,但只需要注意到关系的方向,就不需要在相反的方向上添加重复的关系,即 Neo4j 类型的课程包含《图数据库 Neo4j 基础入门》。

被关系连接的两个节点,其中关系的起始节点被称为出节点,关系的终止节点被称为入节点。同时,一个节点的出度是指这个节点被多少关系作为出节点,同理,入度是指被多少个关系作为入节点。

特别的是,一个节点可以有指向自己的关系,比如用户 Gods_Dusk 认识自己。

  • 关系类型

关系与节点一样具有类型划分,但关系有且仅有一种关系类型。

  • 属性

属性是用于描述节点和关系特性的名称 - 值对。 如一个用户,具有属性:用户名 - Gods_Dusk,用户 ID - 812252。

  • 路径与遍历

在图中,查询过程是路径搜索与遍历的过程,如 “Gods_Dusk 写过哪些课?”,为了获得答案,就需要先从图中找到用户名为 Gods_Dusk 的节点,然后找到类型为撰写的关系,这些关系的出节点就是答案,在这里路径的搜索长度为 1。而问题“Gods_Dusk 写过的课程都是属于哪些类型?”的搜索长度为 2。

4、关系型数据库与图数据库的区别

(1) 存储模型不同

关系型数据库在表中存储信息(行/列)。每个实体都有一个表(如:账户,人员等),在一个实际的应用中,关系型数据库通常会有几十甚至几百张表。

在图数据库中,所有的信息存储为点和边的集合,而不是存在二维的表格中。这样每个点和边均可存储一系列属性,见下图:
image

(2) 查询模型不同

关系型数据库主要的计算模型是基于扫描行(select),连接行(join),过滤行(filter)等。

而图数据库的计算模型是从一系列的初始点开始,通过多步遍历图形。每一步从当前的节点开始,遵守一定的关联关系(边)到达相邻点。

image

(3) 分析模型不同

关系型数据库适合一两个表的简单数据查找以及描述性统计,他不太适用预测性和探测性的分析。例如:你很难编写SQL来回答一下的问题:“这三个用户如何关联?”,“点A和点B之间最短路线是什么?”

而在图数据库中,上述的问题都能得到自然,高效的表达和解决。
image

(4) 实时查询性能不同

在关系型数据库中,每个表采用物理分隔的方式存储,因此,建立两个表之间的关联慢而且需要中间表过度。大家都知道表和表之间,是不应该存在多对多的关系的。一旦有了多对多的关系,是需要增加中间表来应对的。

而图数据库中,关于点的一切都已经有了关联性,因此,查询性能大大提高。

5、图数据库的优缺点

(1)优点

  • 图数据库可以直观地表达数据之间的关系,而不需要建立复杂的中间表或进行多次连接操作。

  • 图数据库可以高效地进行图遍历查询,即从一个或多个初始点开始,沿着边的方向访问相邻的点,这样可以快速地找到两个或多个实体之间的关系或路径。

  • 图数据库可以支持复杂的分析任务,例如预测性和探索性的分析,例如寻找社区结构、最短路径、最大流等。

  • 图数据库可以灵活地适应数据模型的变化,因为它没有固定的表结构或模式,可以随时添加或删除点和边及其属性。

(2)缺点

  • 图数据库需要更多的存储空间,因为它需要存储点和边及其属性的信息,而不是简单地存储值。

  • 图数据库需要更多的内存和计算资源,因为它需要在内存中维护图的结构和索引,以及执行复杂的图算法。

  • 图数据库的标准化程度较低,因为它没有统一的查询语言或接口,不同的图数据库可能有不同的实现和功能。

6、 图数据库不等于图计算

图算法 图算法是一种基于图结构进行数据分析和挖掘的方法,可以解决复杂且快速变化的网状数据问题。图算法包括路径算法、社区发现算法、相似度算法、中心性算法等,可以应用于最短路径计算、社交影响力分析、商品推荐、网络安全等场景。

图数据库: 是一种用来存储和处理图这种数据结构的数据库。图是由点和边组成的,点表示实体,边表示实体之间的关系。图数据库可以用来表达现实世界中复杂的关联数据,例如社交网络、知识图谱、推荐系统等。

7、什么是图?

(1) 加权图是什么?

由点和边所构成的图,还可以给边加上一个值。这个值就叫作边的“权重”或“权”,加了权的图被称为“加权图”。

没有权的边只能表示两个点的连接状态,而有权的边就可以表示顶点之间的“连接程度”。这个“程度”是什么意思呢?

就是根据“图”的内容不同,“程度”表示的意思也不同。比如在地铁线路中,如果把车站与车站间的票价加在边上,就能在“图”中看出乘车费了。
image

(2) 有向图是什么?

有向图:
当图中的边有明确的方向时,且在图中的各类操作可以利用这种方向的时候,我们称其为有向图。例如,区块链就是典型的有向无环图,英文简称为DAG(Directed Acyclic Graph)。以DAG的方式,可以追溯每一笔比特币的流向、分布、归属。
无向图:
无向图指的是忽略了边的方向。在实际的图数据库实现中,通常都采用双向边存储的方式来实现无向图。

(3) 图能给我们带来什么?

在进入21世纪之后,你所知道的Facebook、Google、linkedin等科技巨头,都是在使用图技术来蓬勃发展业务的。目前我们国内的企业,诸如字节跳动、华为等互联网公司,也在用该技术创新业务。当然,图算法在我们的日常生活中,亦带来很多思维上的乐趣与指引,比如你打算租房,那么如何在公司、家与交通线以及租金等问题上,达成一个和谐且节省(性价比最优)的答案呢?就可以用图来解决哦~!

8、 图数据库有什么用

社交领域: Facebook, Twitter用它来进行社交关系管理、好友推荐;
徐庶和司马徽向刘备推荐诸葛亮可以通过下图形象地展示;
image

电商领域: 华为商城、拼多多、淘宝、京东用它来实现商品实时推荐;
通过分析目标用户和其他用户的喜好商品,找到相似的其他用户,把这些用户购买过的商品推荐给目标用户。
image

金融领域: 中国工商银行、摩根大通用它来做风控管理;
金融领域对图数据库的需求很迫切,以贷款为例,在整个贷款周期中,图数据库都能发挥巨大的作用。
image

安平领域: 公安用它来进行嫌疑关系审查、犯罪团伙挖掘
东汉末年,曹操刺杀董卓,貂蝉挑拨董卓父子关系,吕布斩杀董卓,但是董卓却不知道,这些事件幕后主凶之一都有王允,如下图所示。现实中也可能是这样,幕后真凶可能与目标案件没有直接关系,只有间接的关系。
image

9、 图数据库如何存储、查询、分析

  • 图存储

图数据库如何存储图,对查询和分析效率至关重要。图数据库使用图模型来操作图数据。所谓的图模型是指图数据库描述和组织图数据的方式。

目前主流的图数据库选择的图模型是属性图。属性图由点、边、标签和属性组成,我们结合一个具体的属性图实例来看一下。
image
以上属性图可以帮助我们理解一些相关概念:

1) 可以为点设置标签,比如 person, war等,拥有相同标签的点我们认为它们属于一个分组,是一个集合,这样刘备和曹操属于一个分组;
2) 同样可以为边设置标签,标签可以为 relation等;
3) 节点可以拥有很多属性,比如 style name、year等,这些属性值以键值对的形式表示,例如:刘备的style name是玄德;
4) 边也可以拥有属性,比如army等;
5) 边允许有方向,例如刘备和汉中之战之间的边的方向是由刘备指向汉中之战的;
6) 元数据是用来描述点和边的属性信息的,元数据由若干标签组成,每个标签由若干属性组成。

  • 图查询

如果我们想知道刘备的籍贯在哪,刘备和曹操是什么关系,汉中之战的发动方是谁等等,这些都属于图查询的范畴。

我们知道,SQL是关系型数据库的查询语言,但是图数据库的查询语言并没有复用SQL。这是因为本质上图数据库处理)的是高维数据,而SQL所适用的是二维的数据结构,其并不擅长关系的查询和操作。使用专门的图查询语言比SQL更加高效。

目前主流的图查询语言包括Gremlin和Cypher等。

  • 图分析

图分析是指通过各种图算法来挖掘图信息的一门技术。

核心的图算法可以分成三类:路径搜索类、中心性分析类和社区发现类。

路径搜索是探索图中节点通过边建立的直接或间接的联系。例如在下图中,通过路径搜索,我们发现了这样一条路径:孙策-[夫妻]-大乔-[姐妹]-小乔-[夫妻]-周瑜,据此得知孙策和周瑜是连襟的关系。路径搜索类算法广泛用于物流配送、社交关系分析等场景。
image

中心性分析是指分析特定节点在图中的重要程度及其影响力。例如在上图中,直观来看,孙权是一个重要的人物,因为与他直接相连的边的数量最多。中心性分析类算法一般用于网页排序、意见领袖挖掘、流感传播等场景。

社区发现意在发现图中联系更紧密的群体结构,可用于犯罪团伙挖掘等场景。如果把更多三国人物和关系加到上图中,利用Louvain等社团挖掘类算法,我们很容易发现这些人物分属三个阵营,如下图所示。 社区发现类算法
image