三、Neo4j 源码研究系列 - 持久化

news/2024/12/22 9:42:46/

version: v-2023051401

author: 路__

说到数据库,那么离不开的模块就是持久化(Persistence),数据持久化是数据库不可缺少的重要组成模块之一。可以说一个数据库少了持久化功能,可以说这个数据库就不足以称为数据库。

数据持久化是一种非易失性存储技术,再重启应用或者计算机的后也不会丢失数据。是将内存中的数据模型转换成存储模型,以及将存储模型转换为内存中的数据模型的统称。当数据被持久化时,这意味着当应用程序再次打开时可以检索完全相同的数据。数据保持不变,并且在会话之间不会丢失任何东西。

一、介绍

持久存储获取的四种 device states 是什么?

持久存储获取的四种device states 分别是纯内存、内存、基于磁盘和基于提交。

  • 纯内存存储(Pure in-memory storage): 这可能提供最少的持久性。

  • 内存存储(In-memory storage): 这需要定期快照以保持持久性。

  • 基于磁盘的存储(Disk-based storag): 这会触发就地更新写操作。

  • 基于提交的存储(Commitlog-based storage): 这包括所有传统的OLTP数据库。

二、类图

上面介绍了这么多,接着就是引出我们今天的主题neo4j数据的持久化,我们从源码解读其持久化功能的实现。话不多说,让我们进入今天的主题吧,neo4j的持久化功能。

首先我们先看一下持久化的类图结构(未完成):

 

备注:上述类图未完成,可能存在部分错误,现简供参考

三、结构说明

neo4j的存储类图都是以Store命名的,并且有各个类型的Store,例如:

  • NodeStore

  • RelationshipStore

  • MetaDataStore

  • PropertyStore

  • ...

上述所有的Store,都可以从NeoStores这个类中获取,这些Store其实都存储在该类的stores变量中。NeoStores类会调用initialize方法,这个方法会完成各个Store对象的初始化操作。各个Store对象其实由一条条的Record和StoreHeader构成,每个类型的Store都有其对应的Record对象,例如NodeStore就有NodeRecord对象与其对应,我们想了解一个点有信息,其实就可以通过NodeRecord对象存储的信息获取。

附录

  1. neo4j 源代码地址: GitHub - neo4j/neo4j: Graphs for Everyone

  2. Data persistence: https://medium.com/@dilshanramesh81/data-persistence-add16cb74cf3


http://www.ppmy.cn/news/69878.html

相关文章

使用thrift进行RPC通信(附c程序示例)

前言 为了实现不同语言的程序跨进程、跨主机通信,一般可以采用mq或rpc框架来实现。 对于异步通知的场景可以使用mq,如zeroMQ。 但对于某些实时性较强且同步的应用场景,使用成熟的rpc框架来实现也是一种比较更好的选择。 开源的rpc框架有很…

JS 实现区块链分布式网络

JS 实现区块链网络 这里主要 JS 实现区块链 实现的部分继续下去,对 Blockchain 这个对象有一些修改,如果使用 TS 的话可能要修改对应的 interface,但是如果是 JS 的话就无所谓了。 需要安装的依赖有: express body-parser 现在…

Windows cmd命令行计划任务使用详解

哈喽,大家好,我是[有勇气的牛排](全网同名)🐮🐮🐮 有问题的小伙伴欢迎在文末[评论,点赞、收藏]是对我最大的支持!!!。 https://www.couragestea…

postman接口自动化测试

Postman除了前面介绍的一些功能,还有其他一些小功能在日常接口测试或许用得上。今天,我们就来盘点一下,如下所示: 1.数据驱动 想要批量执行接口用例,我们一般会将对应的接口用例放在同一个Collection中,然…

剑指 Offer 58 - II. 左旋转字符串(3种方法)

题目: 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。 请定义一个函数实现字符串左旋转操作的功能。 比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 1&…

pcap文件格式

在通过使用wireshark工具抓取主机不同网段的数据包时,把抓到的数据包保存起来会发现生成的文件是.pcap文件,此篇博客主要介绍pcap文件的格式,并利用C语言的结构体知识来初窥探数据包数据。 pcap文件格式 pcap文件数据结构如下图所示&#x…

Cordova webapp实战开发:(5)如何写一个Andorid下自动更新的插件?

在 《Cordova webapp实战开发:(4)Android环境搭建》中我们搭建好了开发环境,也给大家布置了调用插件的预习作业,做得如何了呢?今天我们来学一下如何自己从头建立一个Andorid下的cordova插件。 本次练习你能…

智能的本质人工智能与机器人领域的64个大问题阅读笔记(三)

目录 机器智能提高到人类的水平或者人类智能下降到机器的水平,都可以到达图灵点。 或许图灵测试是一个自我实现的预言:我们(声称)在打造“聪明”机器的同时,我们也在把人变笨。 不长脑的机器和不思考的人没什么两样&…