一种图数据库的存储方法和装置与流程

文档序号:37300656发布日期:2024-03-13 20:48阅读:11来源:国知局
一种图数据库的存储方法和装置与流程

本发明涉及图数据库,特别是涉及一种图数据库的存储方法和装置。


背景技术:

1、图数据库是非关系型数据库的一种类型,主要应用图形理论来存储实体之间的关系信息。图数据库中的基本概念有三种:顶点,一般用于指示一个实体;边,用于表示实体之间的关系,多数情况下使用有向边;属性,用于描述顶点或者边的某种信息。图数据库的核心概念是通过顶点、边和属性等方式来表示和存储数据,支持增删改查等图查询操作,提供数据库管理功能。由于图数据库可以直观地可视化关系,使得图数据库能够快速响应复杂关联查询,是存储、查询和分析高度互联数据的较优办法。

2、在图数据库的存储中,常见的方式是将图的邻接信息转换成键值对(key-value),底层为键值存储(key-value存储)。另一种方式是,原生图存储,单独存储邻接信息,由于省去了键值封装,所以能提供更好的查询性能。现有技术的图数据库基于原生图对数据进行写入或查询(读取)时,受到内存的限制,无法兼顾写入效率与查询效率,导致在面对超大数据量时,存在一些功能并不能满足于实际使用的需求,例如一次性超大规模数据的处理与导入。在实际使用过程中,用户不断增删改数据,大量的新数据插入时,旧的、过期的无效数据没有立即被清除,导致存储空间中存在许多已经被删除的数据,查询时需要遍历有效数据和无效数据,无效数据的存在影响查询效率。

3、鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。


技术实现思路

1、本发明要解决的技术问题是提供一种图数据库的存储方法和装置,通过优化图数据库存储的内存利用率,且及时整理无效数据,实现在兼顾写入效率和查询效率的条件下提升图数据库的性能。

2、本发明采用如下技术方案:

3、第一方面,本发明提供了一种图数据库的存储方法,包括:

4、根据用户数据,自底向上地构建至少一个原始b树;

5、将所述原始b树作为初始lsm树的相应节点的数据,得到所述初始lsm树;

6、获取所述初始lsm树的合并触发条件,根据所述合并触发条件确定待合并的原始b树,将待合并的原始b树合并为至少一个合并b树,得到包含至少一个合并b树的目标lsm树;

7、使用原生图存储所述用户数据所属的标签之间的邻接信息,根据所述邻接信息,在所述目标lsm树中创建索引项,以便于通过所述索引项得到所述邻接信息,根据所述邻接信息查询出相应的用户数据。

8、进一步地,所述根据用户数据,自底向上地构建至少一个原始b树包括:

9、初始化至少一个原始b树;

10、在初始化至少一个原始b树后,执行所述原始b树的插入过程,依次迭代,直至所述用户数据全部插入至所述原始b树中;

11、每次得到一个所述原始b树时,将每个所述原始b树以b树文件的形式存储在磁盘中。

12、进一步地,所述插入过程包括:

13、对至少一条用户数据进行归并排序,得到归并结果集;

14、按照所述归并结果集中结果数据的顺序,向所述原始b树的当前最右叶子节点依次插入所述结果数据;

15、当存储所述当前最右叶子节点的页中的结果数据达到预设关键字数时,根据达到所述预设关键字数时向所述当前最右叶子节点中插入的第i个结果数据,和所述页的页号j,确定b树中间项(i,j);

16、创建新节点作为所述当前最右叶子节点的父节点,在完成所述父节点的创建后,将所述b树中间项(i,j)插入所述父节点;

17、根据b树的基本性质,调整所述原始b树;

18、按照所述归并结果集中结果数据的顺序,继续向所述当前最右叶子节点依次插入相应的结果数据,直至存储所述当前最右叶子节点的页中的结果数据达到预设关键字数;

19、对以上过程进行迭代,直至所述结果数据全部插入至所述原始b树。

20、进一步地,所述按照所述归并结果集中结果数据的顺序,继续向所述当前最右叶子节点依次插入相应的结果数据,直至存储所述当前最右叶子节点的页中的结果数据达到预设关键字数包括:

21、创建所述当前最右叶子节点的右兄弟节点,将当前最右叶子节点更新为所述右兄弟节点,向所述当前最右叶子节点插入第i+1个结果数据;

22、根据所述第i+1个结果数据,和存储所述当前最右叶子节点的页的页号k,确定b树中间项(i+1,k),将所述b树中间项(i+1,k)插入所述父节点;

23、根据所述基本性质调整所述原始b树;

24、从第i+2个结果数据开始,将相应的结果数据依次插入至所述当前最右叶子节点,直至存储所述当前最右叶子节点的页中的结果数据达到预设关键字数。

25、进一步地,所述获取所述初始lsm树的合并触发条件,根据所述合并触发条件确定待合并的原始b树包括:

26、当初始lsm树的第m层中b树文件的数量达到所述第m层对应的第一预设阈值时,确定所述第m层中多个与初始lsm树的下一层存在交集的原始b树,将所述原始b树确定为所述待合并的原始b树;

27、和/或,当所述b树文件的数量达到所述第m层对应的第二预设阈值时,将所述第m层中所有原始b树确定为所述待合并的原始b树;

28、和/或,根据预设文件大小函数size()得到初始lsm树的每一层的空间大小,根据所述空间大小,得到所述初始lsm树的空间放大指数size(r1)+size(r2)+...+size(rn-1)/size(rn);其中,rm表示初始lsm树第m层的b树文件;当所述空间放大指数达到预设放大阈值时,根据所述第0层中的删除标记,确定所述删除标记对应的原始b树,将所述原始b树确定为所述待合并的原始b树;

29、和/或,当删除标签、原生图、原生图的边、原生图的顶点和索引项时,触发一次对所述初始lsm树的扫描,以检查是否存在删除标记对应的原始b树;当存在时,将所述原始b树确定为所述待合并的原始b树;

30、和/或,每次间隔预设整理时间,将初始lsm树中所有原始b树确定为所述待合并的原始b树。

31、进一步地,所述将待合并的原始b树合并为至少一个合并b树,得到包含至少一个合并b树的目标lsm树包括:

32、将所述待合并的原始b树与下一层中存在交集的原始b树合并为所述下一层的至少一个合并b树;

33、和/或,将位于同一层的所述待合并的原始b树合并为相应的下一层的一个合并b树;

34、和/或,将所述待合并的原始b树合并为同一层的至少一个合并b树;

35、根据至少一个合并b树,得到所述目标lsm树。

36、进一步地,创建至少一个合并任务,所述合并任务用于将待合并的原始b树合并为至少一个合并b树;所述合并任务包括至少一个子任务,所述子任务用于将所述待合并的原始b树合并为一个合并b树;所述合并任务的至少一个子任务使用同一个线程依次执行;

37、所述将待合并的原始b树合并为至少一个合并b树包括:

38、当所述合并任务的所有待合并的原始b树与另一个合并任务的所有待合并的原始b树不位于初始lsm树的同一层时,判定所述合并任务与所述另一个合并任务不存在层级交叉;

39、当一个合并任务中,待合并的原始b树对应的b树文件的数据量大于预设数据值,且所述合并任务的多个子任务的所有待合并的原始b树位于初始lsm树的同一层时,确定所述多个子任务涉及的内存或磁盘的数据区间,将数据区间连续的多个子任务作为对应的多个第一子任务,将所述合并任务拆分为多个第一子任务;

40、分别使用两个并行的第一线程执行所述合并任务和所述另一个合并任务,每个第一线程根据相应的待合并的原始b树,生成所述合并任务或所述另一个合并任务的结果文件;分别使用多个并行的第二线程执行对应的第一子任务,每个第二线程根据相应的待合并的原始b树,生成一个所述合并任务的结果文件;

41、将结果文件作为对应的合并b树的b树文件,得到所述合并b树。

42、进一步地,在所述将待合并的原始b树合并为至少一个合并b树之前,从内存或磁盘中对所述待合并的原始b树进行预取,其中:

43、访问存储待合并的原始b树的页,提取所述待合并的原始b树中叶子层的最左节点对应的页作为待访问页,判断所述待访问页是否已在内存的缓存池中;

44、若是,则直接从所述缓存池中取出所述待访问页;

45、若否,则将所述待访问页从磁盘上读取至所述缓存池中,从所述缓存池中取出所述待访问页;

46、将所述待访问页作为已访问页,将所述叶子层的右兄弟节点对应的页作为新的待访问页,释放所述已访问页;

47、对以上过程进行迭代,直至将所有所述待合并的原始b树从所述缓存池中取出。

48、进一步地,所述原生图包括顶点和边,所述邻接信息包括所述顶点的顶点id到所述边的边id的映射;所述标签下存在至少一个顶点,所述顶点包括至少一个属性,所述索引项包括属性和对应的顶点的顶点id;

49、所述图数据库的存储方法还包括:

50、获取待删除标签下的所有待删除顶点;

51、根据所述待删除顶点的待删除顶点id,得到待删除边的待删除边id;

52、删除所述待删除顶点和所述待删除边;

53、所述图数据库的存储方法还包括:根据接收到的待查询索引项中的查询顶点id和原生图的查询邻接信息,得到相应的查询边id;

54、根据所述查询边id和所述查询邻接信息,得到结果顶点id;

55、根据所述结果顶点id得到所述目标lsm树中相应的结果索引,根据所述结果索引对应的属性得到相应的用户数据。

56、第二方面,本发明还提供了一种图数据库的存储装置,用于实现第一方面所述的图数据库的存储方法,所述装置包括:

57、至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行第一方面所述的图数据库的存储方法。

58、第三方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的图数据库的存储方法。

59、区别于现有技术,本发明至少具有以下有益效果:

60、本发明根据用户数据,自底向上地构建至少一个原始b树,解决了b树结构写入效率低的问题;通过将原始b树作为初始lsm树的相应节点的数据,实现b树结构与lsm树结构的结合;通过设计初始lsm树的多种合并触发条件,根据具体需求实现了多种类型的合并任务,优化了lsm树对无效数据的处理;使用原生图存储用户数据所属的标签之间的邻接信息,在所述目标lsm树中创建索引项,以便于通过所述索引项得到所述邻接信息,根据所述邻接信息查询出相应的用户数据,结合原生图提供邻接查询能力,极大地提高lsm树的查询效率,解决了查询时由于lsm树中存在较多无效数据,导致查询效率低的问题。本发明通过优化内存利用率,实现了兼顾写入效率和查询效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1