Neo4j

news2024/10/7 20:24:56

存储结构

参考:
《图数据库(第二版)》
https://www.jianshu.com/p/94c1166eb400
https://blog.csdn.net/sinat_32336967/article/details/103348528

更新日期:2022-8-18
Neo4j版本:4.4

类型ID长度(bit)数量数量(10进制)源码位置存储区域
3523534,359,738,368NodeRecordFormat.javaneostore.nodestore.db
3523534,359,738,368RelationshipRecordFormat.javaneostore.relationshipstore.db
属性3623668,719,476,736PropertyRecordFormat.javaneostore.propertystore.db
边类型1621665,536
属性类型42416
属性键ID2422416,777,216neostore.propertystore.db.index
属性值ID字符串区neostore.propertystore.db.strings
or 数组区neostore.propertystore.db.arrays

源码位置前缀为 community/record-storage-engine/src/main/java/org/neo4j/kernel/impl/store/format/standard/

ID都是物理地址,所以效率高
对于之前有删除的,

在这里插入图片描述
在这里插入图片描述

点结构

名称长度解释
InUse1是否在使用
nextRelId4第一个关系 的ID
nextPropId4第一个属性 的ID
labels5第一个标签 的ID
extra1额外的,记录是否是supernode

inUse
前四位:nextPropId的高位
再后面三位:nextRelId 的高位
最后一位:才真正保存 是否在使用


nextPropId其实有 36位;4+48
nextRelId 其实有 35位;3+4
8

边结构

名称长度解释
InUse1是否在使用
firstNode4开始点 的ID
secondNode4结束点 的ID
relationshipType4边类型
firstPrevRelId4开始点的上一个关系 的ID
firstNextRelId4开始点的下一个关系 的ID
secondPrevRelId4结束点的上一个关系 的ID
secondNextRelId4结束点的下一个关系 的ID
nextPropId4第一个属性 的ID
firstInChainMarker1关系链的第一个标识,是否为关系链的第一条边(包括 开始点,结束点)

InUse
前四位为:属性ID 的高位
再三位:开始点ID 的高位

relationshipType
第一位:无用
再三位:结束点ID 的高位
前12位:4*3位,分给 各个4关系 作为高位使用
后16位:真正的关系类型ID

属性结构

名称长度解释
InUse1是否在使用
nextPropId4上一个属性的ID
PrevPropId4下一个属性的ID
propBlock32属性值 ID

propBlock比较复杂,可以看这里理解一下
可以存1-4个属性,可能有内联

InUse
前四位为 下一个属性ID 的高位
前四位为 上一个属性ID 的高位

inUse被完全占用,
inUse的判断逻辑(源码):第一个属性的类型不为0

Docker/Neo4j

https://zhuanlan.zhihu.com/p/389388077
https://blog.csdn.net/AnNanDu/article/details/125019447

dbms.connector.bolt.listen_address=0.0.0.0:7687

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/795549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Ensp配置DHCP协议

如何使用Ensp配置DHCP协议,为PC自动分配IP地址 什么是DHCP? Dynamic Host Configuration Protocol,动态主机配置协议,简单理解为自动分配IP地址,有了这个协议就不用手动配置IP地址了,如图 思路 给路由…

Monkey日志分析

1. Monkey日志详解 Monkey日志由以下几部分组成: 测试命令信息 随机种子seed、运行次数、可运行应用列表、各事件百分比。 App切换和Activity跳转 可以看到切换到了哪个App,从哪个Activity跳转到了哪个Activity,如果发生了异常&#xff0c…

JVM详解(超详细)

目录 JVM 的简介 JVM 执行流程 JVM 运行时数据区 由五部分组成 JVM 的类加载机制 类加载的过程(五个) 双亲委派模型 类加载器 双亲委派模型的优点 JVM 中的垃圾回收策略 GC GC 中主要分成两个阶段 死亡对象的判断算法 引用计数算法 可达性分析算法 垃圾回收算…

Mac m1 下eclipse下载及jdk环境变量配置

一、安装eclipse 1、下载eclipse Eclipse downloads - Select a mirror | The Eclipse Foundation 此版本为m1芯片适用版本 2、下载后下一步安装即可 安装成功后,可以看到图标: 二、安装jdk 1、下载jdk 下载此版本即可,下载完成之后一直…

Linux系统中的SQL语句

本节主要学习,SQL语句的语句类型,数据库操作,数据表操作,和数据操作等。 文章目录 一、SQL语句类型 DDL DML DCL DQL 二、数据库操作 1.查看 2.创建 默认字符集 指定字符集 3.进入 4.删除 5.更改 库名称 字符集 6…

(十三)定时任务

以下内容来自 尚硅谷,写这一系列的文章,主要是为了方便后续自己的查看,不用带着个PDF找来找去的,太麻烦! 第 13 章 定时任务 13.1 什么是定时任务 1、InfluxDB任务是一个定时执行的FLUX脚本,它先查询数据…

小程序创建

1,下载HBuilder X ;(3.8.7) HBuilderX-高效极客技巧 2,下载模板(不选云服务的); 3,运行-运行到小程序模拟器; 4,安装小程序开发工具; 5,选择稳定版-windows64版&…

骆驼祥子思维导图

《骆驼祥子》简单介绍 《骆驼祥子》小说,以20世纪20年代的旧北京为背景。祥子所处的时代是北洋军阀统治的时代。今天我们就用ProcessOn 思维导图 来给大家解析这本名著。所有文章中的思维导图都可以到ProcessOn 模板社区获得。 1936年,老舍的一位山东大…

【雕爷学编程】Arduino动手做(93)--- 0.96寸OLED液晶屏模块5

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

Wonderful Sql

Wonderful Sql 一. 初识数据库 练习题 1.1 编写一条 CREATE TABLE 语句,用来创建一个包含表 1-A 中所列各项的表 Addressbook (地址簿),并为 regist_no (注册编号)列设置主键约束 表1-A 表 Addressbook…

LeetCode64.Minimum-Path-Sum<最小路径和>

题目: 思路: 一开始使用的深度优先搜索,结果果然是超时了.好吧 是需要动态规划的. 和上次有一题有点像.(12条消息) LeetCode62.Unique-Paths<不同路径>_Eminste的博客-CSDN博客 将边缘初始化为数组原本的数.然后每次只能向下或…

#P1108. [NOIP2008提高组] 双栈排序

题目描述 Tom 最近在研究一个有趣的排序问题。如图所示,通过 22 个栈 S_1S1​ 和 S_2S2​,Tom 希望借助以下 44 种操作实现将输入序列升序排序。 操作 aa:将第一个元素压入栈 S_1S1​。 操作 bb:将 S_1S1​ 栈顶元素弹出至输出序…

13.5.3 【Linux】PAM 模块设置语法

PAM 借由一个与程序相同文件名的配置文件来进行一连串的认证分析需求。我们同样以passwd 这个指令的调用 PAM 来说明好了。 当你执行 passwd 后,这支程序调用 PAM 的流程是: 1. 使用者开始执行 /usr/bin/passwd 这支程序,并输入密码&#xf…

windos 服务器设置指定ip访问指定端口,其他ip不能访问

需求:设置指定ip访问指定端口,其他ip不能访问 一,禁止所有ip访问 需要打开IP安全策略 或者winR 输入secpol.msc 1.先创建一个ip安全策略 2.点击添加,不使用添加向导,建一个安全策略 继续点添加 二,放开需…

01 Excel常用高频快捷键汇总

目录 一、简介二、快捷键介绍2.1 常用基本快捷键1 复制:CtrlC2 粘贴:CtrlV3 剪切:CtrlX4 撤销:CtrlZ5 全选:CtrlA 2.2 常用高级快捷键1 单元格内强制换行:AltEnter2 批量输入相同的内容:CtrlEnt…

448.找到所有数组中消失的数字

448.找到所有数组中消失的数字 class Solution {public List<Integer> findDisappearedNumbers(int[] nums) {int[] temp new int[nums.length1];for (int i 0; i < nums.length; i) {temp[nums[i]];}ArrayList<Integer> list new ArrayList<>();for (…

【雕爷学编程】Arduino动手做(93)--- 0.96寸OLED液晶屏模块4

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

Linux——设备模型

目录 本章目标 一、设备模型基础 二、总线、设备和驱动 --------------------------------------------------------------------------------------------------------------------------------- 工作两周了&#xff0c;真吃不消啊&#xff0c;虽然年轻但是早8.30晚10点还…

JAVA面试总结-Redis篇章(四)——双写一致性

JAVA面试总结-Redis篇章&#xff08;四&#xff09;——双写一致性 问&#xff1a;redis 做为缓存&#xff0c;mysql的数据如何与redis进行同步呢&#xff1f;第一种情况&#xff0c;如果你的项目一致性要求高的话 采用以下逻辑我们应该先删除缓存&#xff0c;再修改数据库&…

【C++】STL——string的模拟实现、常用构造函数、迭代器、运算符重载、扩容函数、增删查改

文章目录 1.模拟实现string1.1构造函数1.2迭代器1.3运算符重载1.4扩容函数1.5增删查改 1.模拟实现string string使用文章 1.1构造函数 这里我们实现常用的第四个string(const char* s)和析构函数 class string { public://初始化列表赋值//string(const char* str "\0…