用Neo4j图形数据库打造专属于你的高bigger关系图

写在前面(废话篇):

填个坑,系统全部做完做一个毕设专题。

这篇文章在我的草稿箱里蹲了两个月。最近毕设答辩结束,有角度的时间来填个坑。在这里插入图片描述
因为本科没有学过数据库课程(学院不让我们专业修这门课),所以在做毕业设计涉及数据库的内容一概不知。研究能力较差的我重新学一遍数据库实在来不及,就选择了这上手简单,增删改查一应俱的可视化图形数据库。

一、Neo4j可视化图形数据库简介

百度百科上对于neo4j解释如下图。说的很官方是不是?看不懂是不是?

通俗的来说就是这是一个不需要你自己设计的数据库,通过采用结构化设计方式,把各种信息存储在图形中的一个个点上,而不是传统意义上的表格中。
同时展示方面采用图的简单直观可视化效果。相对于冷冰冰的表格数据,图形显得更加有血有肉。
在这里插入图片描述

二、下载与安装

neo4j下载
官网下载比较慢,是我电脑的问题吗?

或者直接把安装包上传资源中(点我传送)(更新:这个解压包有问题,直接从百度网盘下载吧!)

不想给楼主贡献金币的话可以点我从百度网盘中下载。(提取码:ruat,失效的话可以联系我)

下载解压之后,傻瓜式安装。

注意:一定要找一个简单合适的文件夹存入。否则后期启动neo4j时,在cmd打开文件夹都需要多点几下。例如,我存在 D:\neo4j 文件夹下

二、配置与使用

因为neo4j是一站式安装,所以在我印象中并没有设置什么环境变量。

安装完成之后打开cmd,进入到安装neo4j文件夹bin目录下。以自己的为例进入到 D:\neo4j\neo4j-community-3.5.5\bin 之后输入以下内容如图。
在这里插入图片描述
cmd中提示“Neo4j service started”,就代表我们已经把neo4j启动完成。

可以打开浏览器输入

http://localhost:7474/browser/

进入到neo4j数据库中。
在这里插入图片描述
准备完成之后可以进入到下一步。

三、使用方法

知己知彼,方能百战百胜

前期工作做好之后,我们就要开始慢慢了解怎么使用他。

科普内容(非计算机专业建议看一下):

计算机专业离散必修课中有很重要的一个知识点:

定义: 图是由顶点的有穷非空集合和顶点之间边的集合组成, 通常表示为: G(V,E), 其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。

不喜欢官方说法的同学,我给降维到猫猫水平解释下。
在这里插入图片描述
图片中一共有三个点(V1、V2、V3)和两条边(E1、E2),整体看做为一个图G。这个图是由三个点和两条边构成。以上就可以看做一个简单图的构成。

如果把V1、V2、V3比作人物的话,E1、E2就可以当做人物间的联系。

V1:大雄
V2:静香
V3:哆啦A梦

E1:好朋友
E2:同学(未来可妻)

那么,我们就可以得到以下这种关系。
在这里插入图片描述
上面这样的图大家是不是很清晰的了解到这三个人物之间的关系呢?
如果无感的,那下面这种感觉对比一下。哪个图片更加直观有效。在这里插入图片描述

因为以上数据太少,可能比较不明显。
来一个比较极端的,以下表格有三万多条数据,光看表格是在费劲。

在这里插入图片描述
使用图形式的来展示人物之间的关系,是不是就相对直观很多。
在这里插入图片描述

以下内容以三国举例。
在neo4j页面的执行框中写入Cypher语句,不熟悉这种语言的同学可以参考以下模板举一反三。

1、创建节点(增)

1.1 创建单个节点

create (:person{name:"孙权"})

这条语句直接创建了孙权节点,即上图中的圈圈。
在这里插入图片描述

1.2 创建两个节点

与之相对应的是同时创建两个节点并建立两者关系

create (:person{name:"周瑜",age:25})-[:夫妻]->(:person{name:"小乔",age:20});

在这里插入图片描述
建立成功。

备注:
从上述语句中,给读者解释一下。
( ):中间的内容代表节点
{ }:中间的内容代表属性
[ ]:中间内容代表关系

以上均是英文字符。

2、查找节点(查)

刚刚建立的节点怎么样才能找到呢?

return (:person{name:"周瑜"})-->();

如图
在这里插入图片描述
这样我们就能查找到周瑜节点,同时数据库中也会自动匹配出与之建立关系的节点。

如果想查多重层数的关系可以自行深入学习,这里不做过于深入的探讨。

3、匹配关系(增、找)

什么叫关系?得先有两个实体,两种实体之间存在着某种联系可以称为关系。虹猫和蓝兔有关系,我和三舅妈的邻居表弟同学妈妈的三姨母的女儿有联系吗?估计没有。

同样,想要建立联系,首先要建立两个节点才有可能建立关系。

3.1 同时建立节点和关系

这个写法见本文1.2

3.2 直接匹配关系

这种情况是建立在已有的两个节点。

此时数据库已经有孙权,周瑜,小乔的关系了。我可以匹配孙权和周瑜的关系,没问题。但是我要是想建立孙权和大乔的关系可以吗?

当然不行!!! 因为数据库中还没有建立大乔的节点,此时建立关系,会直接报错。

match (a:hperson{name:"孙权"}) match (b:person{name:"周瑜"}) create (a)-[r:基友]->(b) return r;

在这里插入图片描述

此时在查找周瑜的节点:
在这里插入图片描述因为我在周瑜与孙权建立了双向关系,

match (a:hperson{name:"孙权"}) match (b:person{name:"周瑜"}) create (a)<-[r:基友]-(b) return r;

仔细看看这句话和上一条语句有什么不同?

此时已经有了三个节点和两条关系。

试错:如果硬把大乔和孙权建立关系,数据库会给出以下提示。
在这里插入图片描述

四、高级用法

以上内容均是小打小闹,手动建立节点和关系也太过儿戏。

现代的数据以万为计数单位都算是小的不能再小了。

现在有一个表格的数据,里面包含着几十万条关系,甚至百万千万,手动建立匹配就有点说不过去了吧!

现在介绍一下手动和自动两种方式导入数据库中。

4.1 手动导入

首先我们规定下数据存储格式。

以csv文件为例。我们需要一个表格包含人物节点的内容(nodes.csv),另一个表格包含人物间关系的内容(relations.csv)。

表格来源gayhub,初学时这篇文章对我帮助很大,感谢大佬分享。

节点表格(nodes.csv):
在这里插入图片描述
关系表格(relations.csv):
在这里插入图片描述

把两个csv文件放入 D:\neo4j\neo4j-community-3.5.5\import 目录下,之后在neo4j页面执行框内输入

LOAD CSV  WITH HEADERS FROM 'file:///nodes.csv' AS data CREATE (:star{starname:data.name, starid:data.id});

LOAD CSV  WITH HEADERS FROM "file:///relations.csv" AS relations

MATCH (entity1:star{starname:relations.subject}) , (entity2:star{starname:relations.object})

CREATE (entity1)-[:relation{relation: relations.relation}]->(entity2)

然后所有数据瞬间导入数据库中,速度就是那么快。

4.2 自动导入

这个需要有好几种方法,埋个坑,有兴趣了解的同学可以留言评论或私信我都可。

最后上个简单的效果图吧。

在这里插入图片描述

在这里插入图片描述

收工,洗洗睡去了。

对了, 感兴趣的小伙伴可以关注我的个人公众号:小惑有观察。现在开始恢复更新。
个人公众号

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章