Neo4j 中的基本元素与概念

2.2 Neo4j 中的基本元素与概念

2.2.1 节点

节点(Node)是图数据库中的一个基本元素,用以表示一个实体记录,就像关系数据库中的一条记录一样。在 Neo4j 中节点可以包含多个属性(Property)和多个标签(Label),如下图所示。

在这里插入图片描述

下面介绍一个最简单的节点, 它只有一个属性,属性名是 name , 属性值是 Tom , 如下图所示。

在这里插入图片描述

2.2.2 关系

关系(Relationship)同样是图数据库中的基本元素。当数据库中已经存在节点后,需要将节点连接起来构成图。关系就是用来连接两个节点,关系也称为图论的边(Edge),其始端和末端都必须是节点,关系不能指向空也不能从空发起。关系和节点一样可以包含多个属性,但关系只能有一个类型(Type),如下图所示。

在这里插入图片描述

一个节点可以被多个关系指向或作为关系的起始节点,如下图所示多个关系指向同一节点。

在这里插入图片描述

关系必须有开始节点(Start node)和结束节点(End node),两头都不能为空,如下图所示。

在这里插入图片描述

节点可以被关系串联或并联起来,如下面两图所示。由于关系可以是有方向的,所以可在由节点、关系组成的图中进行遍历操作。

在这里插入图片描述

在这里插入图片描述

在图的遍历操作中我们可以指定关系遍历的方向或者指定为无方向,因此在创建关系时不必为两个节点创建相互指向的关系,而是在遍历时不指定遍历方向即可。

特别注意一个节点可以存在指向自己的关系,如下图所示。

在这里插入图片描述

2.2.3 属性

上面提到节点和关系都可以有多个属性。节点和关系都是属性的容器,属性是由键值对组成的,就像 Java 的哈希表一样,属性名类似变量名,属性值类似变量值。属性值可以是基本的数据类型,或者由基本数据类型组成的数组。

需要注意的是属性值没有 null 的概念,如果一个属性不需要了可以直接将整个键值对都移除,在使用 Cypher 或 JavaAPI 时,可用 IS NULL 关键字判断属性是否存在。下表列出了 Neo4j 中属性值的基本数据类型。

在这里插入图片描述

2.2.4 标签

标签是 2013 年底新增至版本 2.0 的 Neo4j 基础数据模型结构。使用标签能够快速高效地对节点分类并创建子图。通过给节点分配标签,Neo4j 使得大多数用户的数据模型变得更加简单。节点不再需要使用类型属性,或者将节点连接到提供关于图的元信息的定义节点。Neo4j 现在已有的这些特性,给我们带来了极大的帮助。将来,标签提供的有关存储在图中的数据结构很可能会被用于其他目的,如附加模式、安全性、图形分片、分发等。带有标签的节点等同于关系数据库表中的行数据。

Neo4j 允许我们为每个节点设置多个标签,这在关系范式中没有语义等价。关系只能有一个标签。

2.2.5 路径

当使用节点和关系创建了一个图后,在此图中任意两个节点间都是可能存在路径的,如下图所示。

在这里插入图片描述

图中任意两节点都存在由节点和关系组成的路径,路径也有长度的概念,也就是路径中关系的条数。当然也可以说单独一个节点就可以组成长度为 0 的路径,如下图所示。

在这里插入图片描述

如果是两个简单的节点,中间只存在一条关系,那这条路径的长度就是 1 ,如下图所示。

在这里插入图片描述

2.2.6 遍历(Traversal)

遍历一张图就是按照一定的规则,根据它们之间的关系,依次访问所有相关联的节点的操作。

对于遍历操作不必自己实现,因为 Neo4j 提供了一套高效的遍历 API ,可以指定遍历规则,然后让 Neo4j 自动按照遍历规则遍历并返回遍历的结果。遍历规则可以是广度优先,也可以是深度优先。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我真的不是cjc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值