首页 / 专利库 / 电信 / 节点 / 子节点 / 一种元数据落盘方法、装置、系统及计算机可读存储介质

一种元数据落盘方法、装置、系统及计算机可读存储介质

阅读:1035发布:2020-08-04

专利汇可以提供一种元数据落盘方法、装置、系统及计算机可读存储介质专利检索,专利查询,专利分析的服务。并且本 申请 公开了一种元数据落盘方法,包括对内存B+树第一叶子 节点 中的各元数据对应的磁盘B+树叶 子节点 进行查询,确定内存B+树与磁盘B+树的连续 覆盖 区域;对处于同一连续覆盖区域内的所有元数据进行合并处理,获得新叶子节点;若内存B+树第一叶子节点不是终止叶子节点,则获取下一叶子节点的元数据,并返回连续覆盖区域确定的步骤,直至遍历到终止叶子节点;将各新叶子节点的元数据存储至磁盘内,完成元数据落盘;该元数据落盘方法落盘效率较高,可使大规模并发随机 访问 元数据达到更高的效率。本申请还公开了一种元数据落盘装置、系统及计算机可读存储介质,均具有上述有益效果。,下面是一种元数据落盘方法、装置、系统及计算机可读存储介质专利的具体信息内容。

1.一种元数据落盘方法,其特征在于,包括:
当接收到落盘指令时,获取内存B+树第一叶子节点的元数据;
对各所述元数据对应的磁盘B+树叶子节点进行查询,确定所述内存B+树与所述磁盘B+树的连续覆盖区域;其中,在所述连续覆盖区域内,所述元数据对应的磁盘B+树叶子节点相同或相邻;
对处于同一连续覆盖区域内的所述内存B+树的元数据和所述磁盘B+树的元数据进行合并处理,获得新叶子节点;
判断所述内存B+树第一叶子节点是否为内存B+树终止叶子节点;
若否,则获取所述内存B+树下一叶子节点的元数据,并返回所述查询与各所述元数据对应的磁盘B+树叶子节点,确定所述内存B+树与所述磁盘B+树的连续覆盖区域的步骤,直至遍历到所述内存B+树终止叶子节点;
将各所述新叶子节点的元数据存储至磁盘内,完成元数据落盘。
2.如权利要求1所述的元数据落盘方法,其特征在于,所述获取内存B+树第一叶子节点的元数据之前,还包括:
判断所述磁盘中是否存在所述磁盘B+树;
若不存在,则将所述内存B+树存储至所述磁盘,完成元数据落盘;
若存在,则执行所述获取内存B+树第一叶子节点的元数据的步骤。
3.如权利要求1所述的元数据落盘方法,其特征在于,处于所述连续覆盖区域内的所述内存B+树的元数据对应的磁盘B+树叶子节点相同或相邻。
4.如权利要求1至3任意一项所述的元数据落盘方法,其特征在于,所述对处于所述连续覆盖区域内的所述内存B+树的元数据和所述磁盘B+树的元数据进行合并处理,获得新叶子节点,包括:
通过归并排序算法对处于所述连续覆盖区域内的所述内存B+树的元数据和所述磁盘B+树的元数据进行合并处理,获得所述新叶子节点。
5.如权利要求4所述的元数据落盘方法,其特征在于,所述获取所述内存B+树下一叶子节点的元数据之前,还包括:
将内存B+树上一叶子节点的元数据对应的磁盘B+树叶子节点删除。
6.如权利要求5所述的元数据落盘方法,其特征在于,所述将各所述新叶子节点的元数据存储至磁盘内,完成元数据落盘,包括:
通过各所述新叶子节点生成新内存B+树;
将所述新内存B+树存储至所述磁盘内,完成元数据落盘。
7.如权利要求6所述的元数据落盘方法,其特征在于,所述完成元数据落盘之后,还包括:
删除内存中所述新内存B+树,完成内存释放。
8.一种元数据落盘装置,其特征在于,还包括:
元数据获取模,用于当接收到落盘指令时,获取内存B+树第一叶子节点的元数据;
连续覆盖区域确定模块,用于对各所述元数据对应的磁盘B+树叶子节点进行查询,确定所述内存B+树与所述磁盘B+树的连续覆盖区域;其中,在所述连续覆盖区域内,所述元数据对应的磁盘B+树叶子节点相同或相邻;
元数据合并模块,用于对处于同一连续覆盖区域内的所述内存B+树的元数据和所述磁盘B+树的元数据进行合并处理,获得新叶子节点;
终止判断模块,用于判断所述内存B+树第一叶子节点是否为内存B+树终止叶子节点;
循环遍历模块,用于若所述内存B+树第一叶子节点不为所述内存B+树终止叶子节点,则获取所述内存B+树下一叶子节点的元数据,并返回所述连续覆盖区域确定模块,直至遍历到所述内存B+树终止叶子节点;
元数据落盘模块,用于将各所述新叶子节点的元数据存储至磁盘内,完成元数据落盘。
9.一种元数据落盘系统,其特征在于,包括:
存储器,用于存储计算机程序
处理器,用于执行所述计算机程序时实现如权利要求1至7任意一项所述的元数据落盘方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任意一项所述的元数据落盘方法的步骤。

说明书全文

一种元数据落盘方法、装置、系统及计算机可读存储介质

技术领域

[0001] 本申请涉及数据存储技术领域,特别涉及一种元数据落盘方法,还涉及一种元数据落盘装置、系统以及计算机可读存储介质。

背景技术

[0002] 元数据是指描述数据的数据,不仅表示数据的类型、名称、值等信息,也提供了数据的上下文信息,如数据所属域、数据来源等。在数据存储系统中,元数据是信息存储的基础,是数据的最小单元。在全闪存储中,必然涉及到大量且高并发的数据访问和查询问题,有效的管理元数据,才能增加访问效率。因此,全闪存中元数据的有效管理、落盘保存效率以及避免写放大至关重要,可使大规模并发随机访问元数据达到更高的效率。
[0003] 全闪存元数据一般以B+树的数据结构来组织,其中包括内存B+树和磁盘B+树两部分,当写缓存中内存B+树的元数据达到一定阈值后,需要将其写到盘上,与磁盘B+树进行合并获得新的B+树,进而完成落盘。然而,在现有技术中,上述元数据合并过程是通过B+树插入操作实现,传统的B+树插入操作是逐个插入,即将内存B+树中的元数据逐个插入至磁盘B+树中,当需要落盘的元数据数量较大时,该种落盘方法效率较为低下;进一步,当磁盘B+树中元数据数量较大时,其插入过程则涉及大量的数据查找和拷贝,进一步降低了元数据落盘效率。
[0004] 因此,如何有效提高元数据落盘效率是本领域技术人员亟待解决的问题。发明内容
[0005] 本申请的目的是提供一种元数据落盘方法,该元数据落盘方法落盘效率较高,可使大规模并发随机访问元数据达到更高的效率;本申请的另一目的是提供一种元数据落盘装置、系统以及计算机可读存储介质,也具有上述有益效果。
[0006] 为解决上述技术问题,本申请提供了一种元数据落盘方法,所述元数据落盘方法包括:
[0007] 当接收到落盘指令时,获取内存B+树第一叶子节点的元数据;
[0008] 对各所述元数据对应的磁盘B+树叶子节点进行查询,确定所述内存B+树与所述磁盘B+树的连续覆盖区域;
[0009] 对处于同一连续覆盖区域内的所述内存B+树的元数据和所述磁盘B+树的元数据进行合并处理,获得新叶子节点;
[0010] 判断所述内存B+树第一叶子节点是否为内存B+树终止叶子节点;
[0011] 若否,则获取所述内存B+树下一叶子节点的元数据,并返回所述查询与各所述元数据对应的磁盘B+树叶子节点,确定所述内存B+树与所述磁盘B+树的连续覆盖区域的步骤,直至遍历到所述内存B+树终止叶子节点;
[0012] 将各所述新叶子节点的元数据存储至磁盘内,完成元数据落盘。
[0013] 优选的,所述获取内存B+树第一叶子节点的元数据之前,还包括:
[0014] 判断所述磁盘中是否存在所述磁盘B+树;
[0015] 若不存在,则将所述内存B+树存储至所述磁盘,完成元数据落盘;
[0016] 若存在,则执行所述获取内存B+树第一叶子节点的元数据的步骤。
[0017] 优选的,处于所述连续覆盖区域内的所述内存B+树的元数据对应的磁盘B+树叶子节点相同或相邻。
[0018] 优选的,所述对处于所述连续覆盖区域内的所述内存B+树的元数据和所述磁盘B+树的元数据进行合并处理,获得新叶子节点,包括:
[0019] 通过归并排序算法对处于所述连续覆盖区域内的所述内存B+树的元数据和所述磁盘B+树的元数据进行合并处理,获得所述新叶子节点。
[0020] 优选的,所述获取所述内存B+树下一叶子节点的元数据之前,还包括:
[0021] 将内存B+树上一叶子节点的元数据对应的磁盘B+树叶子节点删除。
[0022] 优选的,所述将各所述新叶子节点的元数据存储至磁盘内,完成元数据落盘,包括:
[0023] 通过各所述新叶子节点生成新内存B+树;
[0024] 将所述新内存B+树存储至所述磁盘内,完成元数据落盘。
[0025] 优选的,所述完成元数据落盘之后,还包括:
[0026] 删除内存中所述新内存B+树,完成内存释放。
[0027] 为解决上述技术问题,本申请还提供了一种元数据落盘装置,所述元数据落盘装置包括:
[0028] 元数据获取模,用于当接收到落盘指令时,获取内存B+树第一叶子节点的元数据;
[0029] 连续覆盖区域确定模块,用于对各所述元数据对应的磁盘B+树叶子节点进行查询,确定所述内存B+树与所述磁盘B+树的连续覆盖区域;
[0030] 元数据合并模块,用于对处于同一连续覆盖区域内的所述内存B+树的元数据和所述磁盘B+树的元数据进行合并处理,获得新叶子节点;
[0031] 终止判断模块,用于判断所述内存B+树第一叶子节点是否为内存B+树终止叶子节点;
[0032] 循环遍历模块,用于若所述内存B+树第一叶子节点不为所述内存B+树终止叶子节点,则获取所述内存B+树下一叶子节点的元数据,并返回所述连续覆盖区域确定模块,直至遍历到所述内存B+树终止叶子节点;
[0033] 元数据落盘模块,用于将各所述新叶子节点的元数据存储至磁盘内,完成元数据落盘。
[0034] 为解决上述技术问题,本申请还提供了一种元数据落盘系统,所述元数据落盘系统包括:
[0035] 存储器,用于存储计算机程序
[0036] 处理器,用于执行所述计算机程序时实现上述任意一种元数据落盘方法的步骤。
[0037] 为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种元数据落盘方法的步骤。
[0038] 本申请所提供的一种元数据落盘方法,包括当接收到落盘指令时,获取内存B+树第一叶子节点的元数据;对各所述元数据对应的磁盘B+树叶子节点进行查询,确定所述内存B+树与所述磁盘B+树的连续覆盖区域;对处于同一连续覆盖区域内的所述内存B+树的元数据和所述磁盘B+树的元数据进行合并处理,获得新叶子节点;判断所述内存B+树第一叶子节点是否为内存B+树终止叶子节点;若否,则获取所述内存B+树下一叶子节点的元数据,并返回所述查询与各所述元数据对应的磁盘B+树叶子节点,确定所述内存B+树与所述磁盘B+树的连续覆盖区域的步骤,直至遍历到所述内存B+树终止叶子节点;将各所述新叶子节点的元数据存储至磁盘内,完成元数据落盘。
[0039] 可见,本申请所提供的元数据落盘方法,基于B+树数据结构的特性,元数据全部存储于B+树的叶子节点上,且为有序排列,由此,即可将内存B+树各个叶子节点中的元数据看做一个有序数列,将磁盘B+树叶子节点中的元数据看做一个有序数列,此时,通过查询并确定两个有序数列的连续覆盖区域,对处于同一连续覆盖区域内的内存元数据和磁盘元数据进行合并处理,从而完成批量元数据的排序并生成获得新的叶子节点,进一步实现数据落盘;相较于现有技术,可有效避免元数据逐个插入造成的落盘效率低下的问题,可使大规模并发随机访问元数据达到更高的效率。
[0040] 本申请所提供的一种元数据落盘装置、系统以及计算机可读存储介质,均具有上述有益效果,在此不再赘述。附图说明
[0041] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0042] 图1为本申请所提供的一种元数据落盘方法的流程示意图;
[0043] 图2为本申请所提供的一种内存B+树与磁盘B+树的叶子节点对照图;
[0044] 图3为本申请所提供的另一种内存B+树与磁盘B+树的叶子节点对照图;
[0045] 图4为本申请所提供的另一种元数据落盘方法的流程示意图;
[0046] 图5为本申请所提供的一种元数据落盘装置的结构示意图;
[0047] 图6为本申请所提供的一种元数据落盘系统的结构示意图。

具体实施方式

[0048] 本申请的核心是提供一种元数据落盘方法,该元数据落盘方法落盘效率较高,可使大规模并发随机访问元数据达到更高的效率;本申请的另一核心是提供一种元数据落盘装置、系统以及计算机可读存储介质,也具有上述有益效果。
[0049] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
[0050] 请参考图1,图1为本申请所提供的一种元数据落盘方法的流程示意图,该元数据落盘方法可以包括:
[0051] S101:当接收到落盘指令时,获取内存B+树第一叶子节点的元数据;
[0052] 一般的,内存B+树中的叶子节点的数量并不唯一,本步骤旨在实现内存B+树第一叶子节点中元数据的获取,该第一叶子节点即为内存B+树的第一个叶子节点。具体而言,元数据落盘的过程涉及到内存B+树中元数据与磁盘B+树中元数据的合并,该合并过程在缓存的内存中执行,因此,当接收到落盘指令时,可对内存B+树的第一叶子节点进行读取,获得其中的元数据。
[0053] 当然,基于B+树数据结构的特性,其叶子节点中的元数据为有序排列,因此,上述获得的内存B+树第一叶子节点的元数据相当于一个有序数列。
[0054] S102:对各元数据对应的磁盘B+树叶子节点进行查询,确定内存B+树与磁盘B+树的连续覆盖区域;
[0055] 本步骤旨在实现内存B+树与磁盘B+树的连续覆盖区域的获取。由于内存B+树中的各个元数据均有其对应的磁盘B+树叶子节点,那么在获得内存B+树第一叶子节点中元数据的基础上,对该第一叶子节点中的各个元数据对应的磁盘B+树叶子节点进行查询,即可获得内存B+树与磁盘B+树的连续覆盖区域。
[0056] 下面通过举例对上述连续覆盖区域进行详细介绍。
[0057] 首先,请参考图2,图2为本申请所提供的一种内存B+树与磁盘B+树的叶子节点对照图,其中,内存B+树叶子节点中的“节点1”即为第一叶子节点,其中包括3个元数据,分别为key1、key2以及key3;通过叶子节点查询后确定,key1对应于磁盘B+树的第一个叶子节点,key2对应于磁盘B+树的第二个叶子节点,而key3对应于磁盘B+树的第四个叶子节点,此时,key3对应的叶子节点与前两个元数据对应的叶子节点不连续,则磁盘B+树第一叶子节点与磁盘B+树第二叶子节点所覆盖的区域为一个连续覆盖区域,磁盘B+树第四个叶子节点所覆盖的区域为一个连续覆盖区域。
[0058] 进一步,请参考图3,图3为本申请所提供的另一种内存B+树与磁盘B+树的叶子节点对照图,内存B+树叶子节点中的“节点1”即为第一叶子节点,其中包括4个元数据,分别为key a、key b、key c以及key d;通过叶子节点查询后确定,key a和key b均对应于磁盘B+树的第一个叶子节点,key c对应于磁盘B+树的第三个叶子节点,key d对应于磁盘B+树的第四个叶子节点,此时,key a和key b对应的叶子节点连续,key c和key d对应的叶子节点连续,而key b和key c对应的叶子节点不连续,则磁盘B+树第一叶子节点所覆盖的区域为一个连续覆盖区域,磁盘B+树的第三个叶子节点和第四个叶子节点所覆盖的区域为一个连续覆盖区域。
[0059] 基于上述阐述可以看出,处于连续覆盖区域内的内存B+树的元数据对应的磁盘B+树叶子节点可以是相同的,也可以是相邻的。但是,该实现方式并不唯一,也可以预先设定连续覆盖区域为同一磁盘B+树叶子节点,即内存B+树中的元数据对应的磁盘B+树叶子节点为同一叶子节点,此时,该叶子节点为连续覆盖区域,但该种实现方式相较于上述连续覆盖区域中内存B+树元数据对应的磁盘B+树叶子节点可以相同、也可以相邻的实现方式,效率相对较低,适用于待落盘元数据较少的情况。
[0060] 因此,作为一种优选实施例,本申请设定处于连续覆盖区域内的内存B+树的元数据对应的磁盘B+树叶子节点相同或相邻。由此,即实现了最大连续覆盖区域中元数据的合并,实现了元数据的批量处理,既有效保证了较低的写放大,也实现了较高的元数据落盘效率。
[0061] S103:对处于同一连续覆盖区域内的内存B+树的元数据和磁盘B+树的元数据进行合并处理,获得新叶子节点;
[0062] 本步骤旨在实现内存B+树中元数据与磁盘B+树中元数据的合并处理操作。具体而言,在同一连续覆盖区域内,内存B+树的元数据相当于一个有序数列,磁盘B+树的元数据相当于一个有序数列,此时,该合并过程即为两个有序数列的合并排序过程。当然,对于两个有序数列的合并排序过程,可采用已有技术中的任意一种,本申请对此不做限定。进一步,完成合并排序后,即可获得一个新的完整的有序数列,该完整的有序数列组成了一个新的叶子节点。
[0063] 由于上述元数据合并过程是在缓存的内存中进行的,那么元数据合并必然涉及到磁盘上元数据的获取,也就是说需要将磁盘B+树的元数据读取至内存中。以图2为例,由于已经查询key3对应于磁盘B+树的第四个叶子节点,那么在数据合并过程中,无需对磁盘B+树的地三个叶子节点进行读取,避免了读取磁盘无效节点,在降低对磁盘写放大的同时,提高了元数据合并效率。
[0064] 优选的,上述对处于连续覆盖区域内的内存B+树的元数据和磁盘B+树的元数据进行合并处理,获得新叶子节点,可以包括通过归并排序算法对处于连续覆盖区域内的内存B+树的元数据和磁盘B+树的元数据进行合并处理,获得新叶子节点。
[0065] 具体的,对于上述元数据的合并过程,本申请提供了一种较为具体的实现方式,即基于归并排序算法实现。归并排序是建立在归并操作上的一种有效的排序算法,具体是将已有序的子序列合并,得到完全有序的序列,即先使每个子序列有序,再使子序列段间有序,最后得到完整有序的序列。
[0066] 归并排序是一种具有高效性和高稳定性的排序算法。例如,待落盘元数据有10个,即10个key值,如若采用传统的插入方法,则可能需要查找10次位置,然后做10次数据移动,效率很低。但如果采用归并排序产生新节点,不需要做查找,一个key值只需要插入一次,不会再改动,效率较高。
[0067] S104:判断内存B+树第一叶子节点是否为内存B+树终止叶子节点;若否,则执行S105,若是,则执行S106;
[0068] 上述S101~S103是对内存B+树第一叶子节点中元数据所执行的操作,要想完成整个内存B+树与磁盘B+树的合并,则需要对内存B+树中的所有叶子节点执行上述操作。因此,可判断上述内存B+树第一叶子节点是否为内存B+树终止叶子节点,该终止叶子节点即为内存B+树的最后一个叶子节点。
[0069] S105:获取内存B+树下一叶子节点的元数据,并返回S102,直至遍历到内存B+树终止叶子节点;
[0070] 具体的,如果上述内存B+树第一叶子节点不是终止叶子节点,则需要继续遍历下一叶子节点,获取内存B+树下一叶子节点中的元数据,当然,该元数据的获取过程可参照第一叶子节点元数据的获取过程,在此不在赘述。由此,通过对内存B+树中的所有叶子节点执行上述S101~S103操作,即可实现内存B+树与磁盘B+树的完整合并,获得所有的新的叶子节点。
[0071] 作为一种优选实施例,上述获取内存B+树下一叶子节点的元数据之前,还可以包括:将内存B+树上一叶子节点的元数据对应的磁盘B+树叶子节点删除。
[0072] 由于元数据的合并过程需要将磁盘B+树的元数据读取至内存中,然而,基于B+树数据结构的特性,元数据在其中的存储是有序的,而本申请提供的元数据落盘方法是以一个内存B+树的叶子节点为单位进行的,可以想到的,内存B+树上一叶子节点中元数据对应的磁盘B+树叶子节点与内存B+树下一叶子节点中元数据对应的磁盘B+树叶子节点绝对不是同一个叶子节点,且内存B+树下一叶子节点中元数据对应的磁盘B+树叶子节点必然在内存B+树上一叶子节点中元数据对应的磁盘B+树叶子节点之后,因此,为降低资源占用率,在每完成一次内存B+树叶子节点的元数据合并后,即可将该内存B+树叶子节点中各个元数据对应的磁盘B+树叶子节点删除,以达到释放内存的目的。
[0073] 基于以上阐述,可以想到的,在初始对磁盘B+树进行元数据读取时,也无需一次性将磁盘B+树中被查询到的所有元数据读取到内存中,只需将内存B+树当前叶子节点中各个元数据对应的磁盘B+树叶子节点读取到内存中即可,实现内存的换入换出,以避免内存资源占用。进一步,对于已经读取的磁盘B+树叶子节点,也可直接在磁盘中进行删除,以降低磁盘的资源占用;当然,该操作也可在磁盘B+树中所有被查询到的元数据被读取完毕后执行,本申请对此不做限定。
[0074] S106:将各新叶子节点的元数据存储至磁盘内,完成元数据落盘。
[0075] 本步骤旨在实现元数据落盘。具体的,在完成内存B+树中所有叶子节点的元数据与磁盘B+树中元数据的合并,获得所有的新叶子节点后,即可将其存储至磁盘中,实现元数据落盘。进一步,对于落盘之后的元数据,还可对其执行进一步的压实操作,使得各kv值(元数据)在磁盘上紧密排布,以有效提高磁盘利用率。
[0076] 优选的,上述将各新叶子节点的元数据存储至磁盘内,完成元数据落盘,可以包括:通过各新叶子节点生成新内存B+树;将新内存B+树存储至磁盘内,完成元数据落盘。
[0077] 对于上述元数据落盘的过程,本申请提供了较为具体的实现方法,具体的,在缓存的内存中,根据内存B+树的结构特性,可先基于获得的所有新叶子节点生成新内存B+树,具体实现过程为:依次向上生成对应的非叶子节点,直至作为根节点的非叶子结点生成,获得新内存B+树,最后再将该新内存B+树存储至磁盘中,完成元数据落盘。
[0078] 作为一种优选实施例,上述完成元数据落盘之后,还可以包括:删除内存中新内存B+树,完成内存释放。
[0079] 在完成元数据落盘后,还可进一步释放内存。具体的,由于已经完成落盘,此时内存中生成的新内存B+树不再使用,此时将其删除即可,实现内存释放,以便为新输入的元数据提供存储空间。
[0080] 更进一步,由于元数据已经落盘完成,且以新B+树的形式存储至磁盘中,那么,原始的磁盘B+树同样不再具有使用价值,此时同样将其删除即可,以有效降低资源利用率。
[0081] 本申请所提供的元数据落盘方法,基于B+树数据结构的特性,元数据全部存储于B+树的叶子节点上,且为有序排列,由此,即可将内存B+树各个叶子节点中的元数据看做一个有序数列,将磁盘B+树叶子节点中的元数据看做一个有序数列,此时,通过查询并确定两个有序数列的连续覆盖区域,对处于同一连续覆盖区域内的内存元数据和磁盘元数据进行合并处理,从而完成批量元数据的排序并生成获得新的叶子节点,进一步实现数据落盘;相较于现有技术,可有效避免元数据逐个插入造成的落盘效率低下的问题,可使大规模并发随机访问元数据达到更高的效率。
[0082] 在上述各个实施例的基础上,请参考图4,图4为本申请所提供的另一种元数据落盘方法的流程示意图,该元数据落盘方法可以包括:
[0083] S201:接收落盘指令;
[0084] S202:根据落盘指令判断磁盘中是否存在磁盘B+树;若是,则执行S203,若否,则执行S204;
[0085] S203:将内存B+树存储至磁盘,完成元数据落盘;
[0086] 具体的,对于磁盘为空的情况,即磁盘中本身不存在磁盘B+树,此时,无需执行磁盘元数据与内存元数据的合并操作,直接将内存B+树存储至磁盘,即可实现元数据落盘。
[0087] S204:获取内存B+树第一叶子节点的元数据;
[0088] S205:对各元数据对应的磁盘B+树叶子节点进行查询,确定内存B+树与磁盘B+树的连续覆盖区域;
[0089] S206:对处于同一连续覆盖区域内的内存B+树的元数据和磁盘B+树的元数据进行合并处理,获得新叶子节点;
[0090] S207:判断内存B+树第一叶子节点是否为内存B+树终止叶子节点;若否,则执行S208,若是,则执行S209;
[0091] S208:获取内存B+树下一叶子节点的元数据,并返回S205,直至遍历到内存B+树终止叶子节点;
[0092] S209:将各新叶子节点的元数据存储至磁盘内,完成元数据落盘。
[0093] 对于上述S201以及S204~S209的具体内容参照上一实施例即可,本实施例在此不再赘述。
[0094] 为解决上述问题,请参考图5,图5为本申请所提供的一种元数据落盘装置的结构示意图,该元数据落盘装置可包括:
[0095] 元数据获取模块10,用于当接收到落盘指令时,获取内存B+树第一叶子节点的元数据;
[0096] 连续覆盖区域确定模块20,用于对各元数据对应的磁盘B+树叶子节点进行查询,确定内存B+树与磁盘B+树的连续覆盖区域;
[0097] 元数据合并模块30,用于对处于同一连续覆盖区域内的内存B+树的元数据和磁盘B+树的元数据进行合并处理,获得新叶子节点;
[0098] 终止判断模块40,用于判断内存B+树第一叶子节点是否为内存B+树终止叶子节点;
[0099] 循环遍历模块50,用于若内存B+树第一叶子节点不为内存B+树终止叶子节点,则获取内存B+树下一叶子节点的元数据,并返回连续覆盖区域确定模块,直至遍历到内存B+树终止叶子节点;
[0100] 元数据落盘模块60,用于将各新叶子节点的元数据存储至磁盘内,完成元数据落盘。
[0101] 作为一种优选实施例,该元数据落盘装置还可以包括预判断模块,用于判断磁盘中是否存在磁盘B+树;若不存在,则将内存B+树存储至磁盘,完成元数据落盘;若存在,则执行获取内存B+树第一叶子节点的元数据的步骤。
[0102] 作为一种优选实施例,上述元数据合并模块30可以具体用于通过归并排序算法对处于连续覆盖区域内的内存B+树的元数据和磁盘B+树的元数据进行合并处理,获得新叶子节点。
[0103] 作为一种优选实施例,该元数据落盘装置还可以包括第一内存释放模块,用于将内存B+树上一叶子节点的元数据对应的磁盘B+树叶子节点删除。
[0104] 作为一种优选实施例,上述元数据落盘模块60可具体用于通过各新叶子节点生成新内存B+树;将新内存B+树存储至磁盘内,完成元数据落盘。
[0105] 作为一种优选实施例,该元数据落盘装置还可以包括第二内存释放模块,用于删除内存中新内存B+树,完成内存释放。
[0106] 对于本申请提供的装置的介绍请参照上述方法实施例,本申请在此不做赘述。
[0107] 为解决上述问题,请参考图6,图6为本申请所提供的一种元数据落盘系统的结构示意图,该元数据落盘系统可包括:
[0108] 存储器1,用于存储计算机程序;
[0109] 处理器2,用于执行计算机程序时实现如下步骤:
[0110] 当接收到落盘指令时,获取内存B+树第一叶子节点的元数据;对各元数据对应的磁盘B+树叶子节点进行查询,确定内存B+树与磁盘B+树的连续覆盖区域;对处于同一连续覆盖区域内的内存B+树的元数据和磁盘B+树的元数据进行合并处理,获得新叶子节点;判断内存B+树第一叶子节点是否为内存B+树终止叶子节点;若否,则获取内存B+树下一叶子节点的元数据,并返回查询与各元数据对应的磁盘B+树叶子节点,确定内存B+树与磁盘B+树的连续覆盖区域的步骤,直至遍历到内存B+树终止叶子节点;将各新叶子节点的元数据存储至磁盘内,完成元数据落盘。
[0111] 对于本申请提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。
[0112] 为解决上述问题,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下骤:
[0113] 当接收到落盘指令时,获取内存B+树第一叶子节点的元数据;对各元数据对应的磁盘B+树叶子节点进行查询,确定内存B+树与磁盘B+树的连续覆盖区域;对处于同一连续覆盖区域内的内存B+树的元数据和磁盘B+树的元数据进行合并处理,获得新叶子节点;判断内存B+树第一叶子节点是否为内存B+树终止叶子节点;若否,则获取内存B+树下一叶子节点的元数据,并返回查询与各元数据对应的磁盘B+树叶子节点,确定内存B+树与磁盘B+树的连续覆盖区域的步骤,直至遍历到内存B+树终止叶子节点;将各新叶子节点的元数据存储至磁盘内,完成元数据落盘。
[0114] 该计算机可读存储介质可以包括:U盘、移动硬盘只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0115] 对于本申请提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
[0116] 说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0117] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0118] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0119] 以上对本申请所提供的元数据落盘方法、装置、系统以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围要素。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈