neo4j 删除某个节点_科研学习记录--Neo4j

一、Neo4j简介

Neo4j是NoSQL中的图数据库,具有原生处理功能和原生图存储功能。在Neo4j中,数据分为两种:节点和边。节点代表具体的实体,类似关系数据库中行记录的概念;边代表节点之间的连接,这种连接可以是概念,也可以是具体的事物,因此节点和边都拥有自己的属性。

b12daa4eb4ef6236a868b9a50de2c03e.png

上图是Neo4j的一个简单网络,不同的节点和边拥有不同的属性,且不同节点之间由不同的边连接,可以发现Neo4j中的网络比MongoDB的BSON结构更加灵活。

二、Neo4j存储

节点和关系的存储文件是固定大小的。

节点使用单向链表存储,第一个字节表示是否被使用的标识位,后四个字节代表连接该节点的第一个关系的ID,再四个字节代表该节点第一个属性的ID,再五个字节代表节点的标签的指针,最后一个字节作为保留位。

关系使用双向链表存储,第一个字节表示是否被使用的标识位,后四个字节表示连接该关系的第一个节点的ID,再四个字节表示连接该关系的最后一个节点的ID,再四个字节表示关系的类型,然后是第一个节点的前后关系以及最后一个节点的前后关系,再四个字节是该关系的属性的ID,最后一个字节指示当前记录是否位于链表的首位。

59f60d7ec77c9f81e7943515ef2cb59d.png

下图是物理存储的更加直观的表示形式。

5195f251f757e5fac413503bcc195eaa.png

三、Neo4j查询优化

几种优化思路如下:

  • 增加索引
  • 优化配置文件
  • 增加服务器内存
  • 增加ssd固态硬盘

后三种暂且不提,分析一下从索引角度出发的优化。

neo4j的索引分为三类:手动索引、自动索引和模式索引。手动索引需要人工创建和维护,自动索引需要修改配置文件且已被新版本摒弃,模式索引利用索引对应一组标签和属性,使索引随着节点的删除或更新自动删除或更新。

建立模式索引需要使用Cypher语句:

CREATE INDEX ON: label

除模式索引外,neo4j-3.5版本中增加了对ORDER BY的优化,可有通过使用节点属性索引提高排序性能。

参考文章

Linux中国:Neo4j 图数据库基础​zhuanlan.zhihu.com
f109a92e77873183160c307d1e65e7ea.png
图数据库的内部结构 (NEO4j)​cloud.tencent.com neo4j - 查询效率的几种优化思路​blog.csdn.net
ffec27cc444b45692c715255d1b3a511.png
【Neo4j查询优化系列】在ORDER BY中使用节点属性索引提高排序性能 - Neo4j 图数据库中文社区​neo4j.com.cn
5634775677f66ee09a5d60c3e19ccb04.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值