技术新讯 > 计算推算,计数设备的制造及其应用技术 > 用于Neo4j图数据库闪回查询方法、装置和存储介质与流程  >  正文

用于Neo4j图数据库闪回查询方法、装置和存储介质与流程

  • 国知局
  • 2024-07-31 23:14:34

本技术涉及数据库领域,特别是涉及用于neo4j图数据库闪回查询方法、装置和存储介质。

背景技术:

1、neo4j图数据库是一个高性能的图数据库,它在底层使用图的数据结构来存储数据,而不是像关系型数据库一样使用表的数据结构来存储数据。neo4j提供了大规模的可扩展性,在一台机器上可以处理数十亿节点/关系/属性的图,可以扩展到多台机器上并行运行。neo4j数据库文件会被持久化到磁盘存储中以获得长期的持久性,数据文件一般存储在neo4j目录下的/data/databases/graph.db中(v3.0+版本)。与传统的关系型数据库不同,neo4j是一个无模式的数据库,且数据库的内部只有点、关系、属性和索引等,因此neo4j使用固定的记录长度来持久化数据库,并通过这些文件中的偏移量来快速进行数据的插入和查询。

2、数据库的闪回查询是根据过去的一个时刻或者系统更改号(scn值),返回当时已经提交的数据快照,既可以用作查询历史版本的数据,也可以起到一定的数据恢复作用。专利《一种postgresql数据库的数据闪回查询及恢复方法、装置》、专利《一种基于dolt数据库的数据闪回查询方法及装置》分别提出不同的方法实现数据库的闪回查询,但是它们适用的都是关系型数据库,对neo4j这一类的图数据库都不适用。

3、在相关技术中,基于neo4j图数据库实现数据闪回查询的方法,往往是将neo4j的数据存储文件都提交至git库,对数据存储文件建立版本,从而实现neo4j图数据库的闪回查询。然而,neo4j的每次修改(增加记录、删除记录、修改记录)都会持久化到数据存储文件中,neo4j是基于文件存储的,通过使用git库对文件建立版本以实现闪回查询。但是git库在建立版本时,会同时完整地保存修改前的文件和修改后的文件,即使只修改了一个大文件中的很小部分内容,git库也会完整地保存修改后的文件,由于重复保存未修改的文件内容,造成磁盘空间的浪费,同时由于git库的快速膨胀,影响git命令的计算效率。

4、针对相关技术中存在由于现有neo4j数据闪回查询方式导致git库可用存储资源浪费和git库存储资源利用率低的问题,目前还没有提出有效的解决方案。

技术实现思路

1、在本实施例中提供了一种用于neo4j图数据库闪回查询方法、装置和存储介质,以解决相关技术中由于现有neo4j数据闪回查询方式导致git库可用存储资源浪费和git库存储资源利用率低的问题。

2、第一个方面,在本实施例中提供了一种用于neo4j图数据库闪回查询方法,包括:

3、在接收到针对neo4j图数据库的数据建立版本请求的情况下,获取针对neo4j图数据库的数据存储文件的写入请求,其中,写入请求包括数据存储文件的文件名和实际写入位置;

4、判断neo4j图数据库的数据存储文件的类型是否为数据文件类型,若是,则将neo4j图数据库的数据存储文件基于预设的大小进行划分,得到若干数据块;

5、根据实际写入位置确定若干数据块中变化的数据块;

6、将变化的数据块和neo4j图数据库中的非数据文件类型的数据存储文件一并提交至版本库,得到neo4j图数据库的数据版本号;

7、根据数据版本号进行闪回查询得到目标闪回查询结果。

8、在其中的一些实施例中,在获取针对数据存储文件的写入请求之前,还包括:

9、判断当前线上环境是否有写入请求正在执行,若否,则向线上环境发起暂停执行写入请求,将neo4j图数据库的数据存储文件同步至闪回查询环境中。

10、在其中的一些实施例中,写入请求参数还包括写入请求操作执行时间戳和实际配置页的大小;其中,若干数据块的大小为实际配置页的大小的整数倍。

11、在其中的一些实施例中,根据实际写入位置确定若干数据块中变化的数据块,包括:

12、根据实际写入位置和数据块的大小确定变化的数据块。

13、在其中的一些实施例中,根据实际写入位置确定若干数据块中变化的数据块,包括:

14、根据写入请求操作执行时间戳对写入请求进行排序,得到待处理写入请求队列;

15、初始化一个存储键值对结构,存储键值对结构的键为数据存储文件的文件名,存储键值对结构中的值为变化的数据块的实际位置集合;

16、获取待处理写入请求队列中的当前写入请求,当前写入请求包括当前写入请求文件名和当前写入请求实际写入位置;

17、根据当前写入请求实际写入位置确定变化的数据块的实际位置;

18、判断存储键值对结构中是否存在当前写入请求文件名;

19、若否,则新建一个位置集合,将变化的数据块的实际位置添加至新建的位置集合中,得到包含变化的数据块的实际位置的位置集合;

20、若是,则获取存储键值对结构中与当前写入请求文件名对应的位置集合,将变化的数据块的实际位置添加至与当前写入请求文件名对应的位置集合中,得到包含变化的数据块的实际位置的位置集合;

21、将当前写入请求从待处理写入请求队列中移除,重复上述操作直至处理完所有待处理写入请求队列中的写入请求,得到目标存储键值对结构,目标存储键值对结构即为变化的数据块。

22、在其中的一些实施例中,根据实际写入位置确定若干数据块中变化的数据块,包括:

23、根据变化的数据块的实际位置复制数据存储文件中对应位置的文件内容至目标存储键值对结构中,得到变化的数据块。

24、在其中的一些实施例中,根据数据版本号进行闪回查询得到目标闪回查询结果,包括:

25、在接收到闪回查询请求的情况下,根据闪回查询请求调取版本库中所有的未变动的数据块和变动的数据块;

26、根据数据存储文件的文件名将调取的数据块中相同文件名的数据块进行组合,得到目标数据文件集合;

27、将目标数据文件集合存储至闪回查询环境的固定目录下;

28、重启neo4j服务;

29、根据数据版本号在固定目录下进行闪回查询,得到目标闪回查询结果。

30、第二个方面,在本实施例中提供了一种用于neo4j图数据库闪回查询装置,应用于neo4j图数据库,包括:获取模块、判断模块、定位模块、版本模块以及闪回查询模块,其中:

31、获取模块,用于在接收到针对neo4j图数据库的数据建立版本请求的情况下;获取针对neo4j图数据库的数据存储文件的写入请求,其中,写入请求包括数据存储文件的文件名和实际写入位置;

32、判断模块,用于判断neo4j图数据库的数据存储文件的类型是否为数据文件类型,若是,则将neo4j图数据库的数据存储文件基于预设的大小进行划分,得到若干数据块;

33、定位模块,用于根据实际写入位置确定若干数据块中变化的数据块;

34、版本模块,用于将变化的数据块和neo4j图数据库中的非数据文件类型的数据存储文件一并提交至版本库,得到neo4j图数据库的数据版本号;

35、闪回查询模块,用于根据数据版本号进行闪回查询得到目标闪回查询结果。

36、第三个方面,在本实施例中提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一个方面所述的用于neo4j图数据库闪回查询方法。

37、第四个方面,在本实施例中提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一个方面所述的用于neo4j图数据库闪回查询方法。

38、与相关技术相比,在本实施例中提供的用于neo4j图数据库闪回查询方法,通过在接收到针对neo4j图数据库的数据建立版本请求的情况下,获取针对neo4j图数据库的数据存储文件的写入请求,其中,写入请求包括数据存储文件的文件名和实际写入位置;判断neo4j图数据库的数据存储文件的类型是否为数据文件类型,若是,则将neo4j图数据库的数据存储文件基于预设的大小进行划分,得到若干数据块;根据实际写入位置确定若干数据块中变化的数据块;将变化的数据块和neo4j图数据库中的非数据文件类型的数据存储文件一并提交至版本库,得到neo4j图数据库的数据版本号;根据数据版本号进行闪回查询得到目标闪回查询结果,减少了git库的存储资源的浪费,提高了git库的存储资源利用率。

39、本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。

本文地址:https://www.jishuxx.com/zhuanli/20240730/196600.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。