logo头像

Always believe youself.

入门图数据库

本文于1445天之前发表,文中内容可能已经过时。

图数据库

什么是图数据库?

图数据库用图来存储数据,是最接近高性能的一种用于存储数据的数据结构方式之一。

图数据库名字的由来其实与其在底层的存储方式有关,把用户定义的节点以及关系存储起来,通过这种方式,可是高效的实现从某个节点开始,通过节点与节点间关系,找出两个节点间的联系。

一个图由无数的节点和关系组成

“一张图 – 数据记录在 → 节点 → 包括的 → 属性里面” 最简单的图是单节点的,一个记录,记录了一些属性。一个节点可以从单属性开始,成长为成千上亿,虽然会有一点点麻烦。从某种意义上讲,将数据用关系连接起来分布到不同节点上才是有意义的。
image

最重要的两个元素就是节点和关系,说到节点和关系,就必须引出一个非常重要的概念,属性图模型(Property Graph Model)。

  • 一个图中会记录节点和关系
  • 关系可以用来关联两个节点
  • 节点和关系都可以拥有自己的属性
  • 可以赋予节点多个标签(类别)

image

关系将图各个部分组织起来

“节点 — 被组织 → 关系 — 可以有 → 属性” 关系可以将节点组织成任意的结构,允许一张图被组织成一个列表,一棵树,一张地图,或者一个复杂的实体 – 这个实体本身也是由复杂的,关系高度关联的结构组成。

用 Traversal 进行数据库查询

为节点和关系建立索引

Neo4j

Neo4j是一个图数据库

“一个图数据库 — 管理 → 一张图 和与图相关的 → 索引” Neo4j是一个有商业支持的开源图数据库。他被设计来用于拿下数据不断高速成长的数据存储,用高效的图数据结构代替传统的表设计。用Neo4j工作,您的应用将得到图的所有优越表现,以及您期望的高可靠性。

Neo4j模型和行为的更多细节

节点

构成一张图的基本元素是节点和关系。在Neo4j中,节点和关系都可以包含属性。 节点经常被用于表示一些实体,但依赖关系也一样可以表示实体。

关系

节点之间的关系是图数据库很重要的一部分。通过关系可以找到很多关联的数据,比如节点集合,关系集合以及他们的属性集合。

一个关系连接两个节点,必须有一个开始节点和结束节点。

因为关系总是直接相连的,所以对于一个节点来说,与他关联的关系看起来有输入/输出两个方向,这个特性对于我们遍历图非常有帮助

关系在任一方向都会被遍历访问。这意味着我们并不需要在不同方向都新增关系。

而关系总是会有一个方向,所以当这个方向对你的应用没有意义时你可以忽略方向。

特别注意一个节点可以有一个关系是指向自己的。

为了将来增强遍历图中所有的关系,我们需要为关系设置类型。注意 关键字 type 在这可能会被误解,你其实可以把他简单的理解为一个标签而已。

属性

节点和关系都可以设置自己的属性。 属性是由Key-Value键值对组成,键名是字符串。属性值是要么是原始值,要么是原始值类型的一个数组。比如+String+,+int+和i+int[]+都是合法的。

注意:null不是一个合法的属性值。 Nulls能代替模仿一个不存在的Key。

路径

路径由至少一个节点,通过各种关系连接组成,经常是作为一个查询或者遍历的结果。

遍历(Traversal)

遍历一张图就是按照一定的规则,跟随他们的关系,访问关联的的节点集合。最多的情况是只有一部分子图被访问到,因为你知道你对那一部分节点或者关系感兴趣。

Neo4j提供了遍历的API,可以让你指定遍历规则。最简单的设置就是设置遍历是宽度优先还是深度优先。

安装

服务端

下载地址:https://neo4j.com/download-center/ 下载社区版本

解压后进入到文件目录:
启动 ./bin/neo4j start
停止 ./bin/neo4j stop

配置远程客户端访问,修改 ./conf/neo4j.conf 中监听的 address 地址

客户端

  • 服务端字段浏览器客户端 http://localhost:7474/browser/ 密码默认为:neo4j 输入后会提示设置新密码
  • 下载Neo4j 客户端, 一步式安装,进入后,可创建新的项目,新的数据库,用上面的登陆url bolt://localhost:7687,用户名,密码登陆。

操作

创建节点,关系,属性,遍历

福利:

看了半天福利还是有的!
送你一个很全的资料网站:https://www.w3cschool.cn/neo4j/


image