索引机制合并方法、搜索方法、装置及设备的制作方法
【专利摘要】本发明公开了一种索引机制合并方法、搜索方法、装置及设备,属于计算机【技术领域】。所述方法包括:在Li达到容量上限后,检测Li+1是否正在合并;若检测结果为所述Li+1正在合并,则检测Li+1’是否已经达到容量上限;若检测结果为所述Li+1’未达到容量上限,则将Li与Li+1’合并。本发明通过在Li达到容量上限后,若Li+1正在合并,则将Li与Li+1’进行合并;解决了现有技术中索引机制FD树在合并过程中占用较长时间的问题;由于在Li+1正在合并的过程中,可以同时进行Li与Li+1’的合并过程,因此实现了多线程合并,达到了可以很大程度上提高了合并速率的效果。
【专利说明】索引机制合并方法、搜索方法、装置及设备
【技术领域】
[0001] 本发明涉及计算机【技术领域】,特别涉及一种索引机制合并方法、搜索方法、装置及 设备。
【背景技术】
[0002] 随着半导体技术的高速发展,闪存的容量和性价比不断提高,已成为移动智能设 备的标准主要存储设备。闪存是典型的异构存储设备,其读时延比写时延小一个数量级,且 随机写吞吐量远小于顺序写吞吐量。
[0003] 为了充分利用闪存的高顺序写吞吐量,现有技术提供了一些面向闪存的新型索引 机制FD树。如图1所示,其示出了现有技术中提供的FD树的结构示意图。由图1可知,FD 树为分层结构,第0层U位于内存,以B+树的形式组织索引记录;其他层次位于闪存,以有 序数组的形式组织记录,其中,有序数组以页面为单位进行连续存储。FD树中引入了页面记 录(fence),其中页面记录由该页面第一条记录的键值和该页面的页面地址组成,页面记录 可与正常数据记录一起按键值排序并保存,每个层次均会保存下一层次所有页面的页面记 录。
[0004] 在搜索FD树时,如U没有满足条件的记录,可按页面记录直接跳到第一层1^的待 搜索页面,依此类推,直到找到符合条件的记录或搜索完所有的层次。
[0005] 在向FD树插入记录时,都是将记录先插入到L。,然后通过合并过程转移到下面的 层次。由于FD树每层有容量限制,且与所处层次成正比,当Q达到容量上限时,便启动Q 与L i+1的合并过程,将Q中的索引记录转移到Li+1。合并是个后台过程,在合并未结束前, 使用当前的Q和L i+1进行搜索。当Q与Li+1合并结束后,因为Q的内容已改变,所以新的 Q将与L合并,以使k重新获得指向Q的页面记录,这个过程会一直倒推到U才结束。 也就是说,一次U到达容量上限触发的合并,可能连续触发后续合并请求,直到Q层为止; Q层的合并结束后,会向上连续触发合并请求,一直到U为止。整个合并过程结束后,U到 Q都是全新的结构。此时,会用新的U?Q层整体替换旧的U?Q层。
[0006] 在实现本发明的过程中,发明人发现现有技术至少存在以下问题:FD树在合并过 程中只能单线程进行,当FD树的索引记录很多时,对FD树的进行合并的过程会占用很长的 时间。
【发明内容】
[0007] 为了解决现有技术中索引机制FD树在合并过程中占用较长时间的问题,本发明 实施例提供了一种索引机制合并方法、搜索方法、装置及设备。所述技术方案如下:
[0008] 第一方面,提供了一种存储装置,所述存储装置包括至少三层存储单元,第0层存 储单元位于内存中,第i层存储单元位于闪存中,每层存储单元包括主数据区,其中 :
[0009] 所述第0层存储单元中的主数据区为有序搜索树,当所述第0层存储单元中存在 从数据区时,所述从数据区为有序搜索树所述有序搜索树包括数据记录和页面记录;
[0010] 所述第i层存储单元中的主数据区可为有序搜索树或有序数组,当所述第i层存 储单元中存在从数据区时,所述从数据区为有序数组,所述有序搜索树包括页面记录,所述 有序数据包括数据记录和页面记录;
[0011] 所述数据记录包括键值和记录值,所述页面记录包括键值和页面地址;
[0012] 当所述第i层存储单元中存在从数据区L/时,所述L/为所述第i层存储单元的 第一搜索数据区,所述第i层存储单元中的主数据区Q为所述第i层存储单元的第二搜索 数据区;当所述第i层存储单元中不存在所述L/时,所述Q为所述第i层存储单元的所述 第一搜索数据区;
[0013] 所述Q按序保存指向第i+1层存储单元中的第一搜索数据区的所有页面对应的 页面记录;当所述第i+1层存储单元中的第一搜索数据区为有序搜索树时,则所述Q的页 面记录是无效记录;
[0014] 所述L/按序保存指向所述Q的所有页面对应的页面记录;当所述Q为有序搜索 树时,则所述L/的页面记录为无效记录,
[0015] 其中,所述i为大于0的自然数。
[0016] 第二方面,提供了一种索引机制合并方法,用于包括有权利要求1所述的存储装 置的设备中,所述方法,包括:
[0017] 在所述第i层存储单元的主数据区Li达到容量上限后,检测第i+1层存储单元的 主数据区L i+1是否正在合并;
[0018] 若检测结果为所述Li+1正在合并,则检测所述第i+1层存储单元的从数据区L i+1' 是否已经达到容量上限;
[0019] 若检测结果为所述Li+1'未达到容量上限,则将所述Li中的数据记录添加至所述 L i+1'中,将所述Li+1'中的所有页面所对应的页面记录添加至所述Q中,合并后的所述Q为 包含有用于指向合并后的所述L i+1'中的所有页面所对应的页面记录的有序搜索树,
[0020] 其中,所述i为大于0的自然数。
[0021] 在第二方面的第一种可能的实施方式中,在所述检测Li+1是否正在合并之前,还包 括:
[0022] 判断所述Li+1是否为有序搜索树以及所述第i+1层存储单元是否存在从数据区 Li+1,;
[0023] 若判断结果为所述Li+1为有序搜索树且所述第i+1层存储单元存在Li+1'时,则将 所述Q和所述L i+1'中的数据记录添加至所述Li+1中,将所述Li+1中的所有页面所对应的页 面记录添加至所述Q中,合并后的所述1^为包含有用于指向合并后的所述L i+1中的所有页 面所对应的页面记录的有序搜索树;
[0024] 若判断结果为所述Li+1不为有序搜索树时,则执行所述检测Li+1是否正在合并的 步骤;
[0025] 在所述检测Li+1是否正在合并之后,还包括:
[0026] 若检测结果为所述Li+1未在合并,则将所述Q中的数据记录添加至所述L i+1中,将 所述Li+1中的所有页面所对应的页面记录添加至所述Q中,合并后的所述Q为包含有用于 指向合并后的所述L i+1中的所有页面所对应的页面记录的有序搜索树。
[0027] 结合第二方面或者第二方面的第一种可能的实施方式,在第二种可能的实施方式 中,所述方法,还包括:
[0028] 当所述Q合并为有序搜索树后,判断第i_l层存储单元的主数据区Lh是否正在 合并以及所述第i层存储单元是否存在从数据区L/ ;
[0029] 若判断结果为所述Lh未在合并且所述第i层存储单元存在L/,则将所述Q'以 及所述Lg中的数据记录添加至所述Q中,将所述Q中的所有页面所对应的页面记录添加 至所述Lg中,合并后的所述Lg为包含有用于指向合并后的所述k中的所有页面所对应 的页面记录的有序搜索树;
[0030] 若判断结果为所述Lg未在合并且所述第i层存储单元不存在L/,则将所述Lh 中的数据记录添加至所述Q中,将所述Q中的所有页面所对应的页面记录添加至所述Lh 中,合并后的所述Lg为包含有用于指向合并后的所述Q中的所有页面所对应的页面记录 的有序搜索树。
[0031] 结合第二方面、第二方面的第一种可能的实施方式或者第二方面的第二种可能的 实施方式,在第三种可能的实施方式中,当具有有序数组形式的所述Lg包括用于存放页面 记录的页面记录存储区时,所述将所述Q以及所述L/中的页面记录合并至所述Lg中,包 括:
[0032] 将所述Q中的所有页面所对应的页面记录添加至所述Lg中的所述页面记录存储 区中;
[0033] 所述将所述Q中的所有页面所对应的页面记录添加至所述Lg中,包括:
[0034] 将所述Q中的所有页面所对应的页面记录添加至所述Lg中的所述页面记录存储 区中。
[0035] 结合第二方面、第二方面的第一种可能的实施方式、第二方面的第二种可能的实 施方式或者第二方面的第三种可能的实施方式,在第四种可能的实施方式中,在所述检测 所述L i+1'是否已经达到容量上限之后,还包括:
[0036] 若检测结果为所述Li+1'未达到容量上限,则在预定时间段后判断所述L i+1是否合 并完成;
[0037] 若判断结果为在预定时间段后所述Li+1合并完成,则将所述Q以及所述L i+1'中的 数据记录添加至所述Li+1中,将所述Li+1中的所有页面所对应的页面记录添加至所述Q中, 合并后的所述Q为包含有用于指向合并后的所述L i+1中的所有页面所对应的页面记录的有 序搜索树;
[0038] 若判断结果为在预定时间段后所述Li+1未合并完成,则执行所述将所述Q中的数 据记录合并至所述L i+1'中,将所述Li+1'中的所有页面所对应的页面记录合并至所述1^中 的步骤。
[0039] 结合第二方面、第二方面的第一种可能的实施方式、第二方面的第二种可能的实 施方式、第二方面的第三种可能的实施方式或者第二方面的第四种可能的实施方式,在第 五种可能的实施方式中,在所述检测所述L i+1'是否已经达到容量上限之前,还包括:
[0040] 从检测到所述Li+1正在合并起的所述预定时间段后,判断所述Li+1是否合并完成;
[0041] 若判断结果为所述Li+1未合并完成,则执行所述检测所述Li+1'是否已经达到容量 上限的步骤;
[0042] 若判断结果为所述Li+1合并完成,则将所述Q以及所述Li+1'中的数据记录添加至 所述Li+1中,将所述Li+1中的所有页面所对应的页面记录添加至所述Li中,合并后的所述1^ 为包含有用于指向合并后的所述Li+1中的所有页面所对应的页面记录的有序搜索树。
[0043] 第三方面,提供了一种搜索方法,用于在包括有权利要求1所述的存储装置的设 备中搜索数据,所述方法,包括:
[0044] 获取对所述第i层存储单元的主数据区Q的上一数据区搜索指定对象时返回的 页面记录,所述上一数据区为第i-1层存储单元的主数据区Lh或所述第i层存储单元的 从数据区L/ ;
[0045] 当所述Q为有序数组时,根据所述页面记录所指的位于所述1^的页面搜索所述指 定对象;
[0046] 当所述Q为有序搜索树时,从所述1^的根节点所在页面搜索用于指向第i+1层中 符合条件的页面记录,
[0047] 其中,所述i为大于0的自然数,所述指定对象为指定搜索的指定键值或指定搜索 的指定键值范围。
[0048] 在第三方面的第一种可能的实施方式中,所述从所述Q的根节点所在页面搜索指 向指向第i+1层中符合条件的页面记录,包括:
[0049] 当所述指定对象为指定键值时,则从所述Q的根节点所在页面搜索用于指向第 i+1层存储单元中符合第一条件的页面记录;
[0050] 当所述指定对象为指定键值范围时,则从所述Q的根节点所在页面搜索用于指向 第i+1层存储单元中符合第二条件的页面记录,
[0051] 其中,所述指定键值范围包括从左边界值至右边界值的值,所述第一条件为不大 于所述指定键值的最大键值,所述第二条件为不大于所述左边界值的最大键值,或,大于所 述左边界值且不大于所述右边界值的最小键值,所述左边界值小于所述右边界值。
[0052] 结合第三方面或者第三方面的第一种可能的实施方式,在第二种可能的实施方式 中,所述获取对所述Q的上一数据区搜索指定对象时返回的页面记录,包括 :
[0053] 获取根据所述第i_l层存储单元搜索所述指定对象时返回的页面记录;
[0054] 判断所述第i层存储单元是否存在所述L/ ;
[0055] 若判断结果为所述第i层存储单元存在所述L/,则根据所述第i_l层存储单元返 回的页面记录搜索所述L/以搜索所述指定对象;
[0056] 当所述指定对象为所述指定键值时,则在所述L/中未搜索到所述指定对象时,返 回所述L/中用于指向所述1^中符合所述第一条件的页面记录;
[0057] 当所述指定对象为所述指定键值范围时,则返回所述L/中用于指向所述Q中符 合所述第二条件的页面记录;
[0058] 将符合所述第一条件或所述第二条件的页面记录作为对所述Q的上一数据区搜 索指定对象时返回的页面记录;
[0059] 若判断结果为所述第i层存储单元不存在所述L/,则将获取的根据所述第i_l层 存储单元搜索所述指定对象时返回的页面记录作为对所述Q的上一数据区搜索时返回的 页面记录。
[0060] 结合第三方面、第三方面的第一种可能的实施方式或者第三方面的第二种可能的 实施方式,在第三种可能的实施方式中,具有有序数组形式的主数据区或从数据区包括用 于存放数据记录的数据记录存储区和用于存放页面记录的页面记录存储区,
[0061] 所述根据所述页面记录所指的位于所述Li的页面搜索所述指定对象,包括:
[0062] 根据所述页面记录所指的页面搜索所述Q中的数据记录存储区,以搜索所述指定 对象;
[0063] 当所述指定对象为指定键值时,则在所述1^中的数据记录存储区中未搜索到所述 指定对象后,搜索所述Q的页面记录存储区以搜索用于指向所述Q的下一数据区的符合所 述第一条件的页面记录;
[0064] 当所述指定对象为指定键值范围时,则搜索所述1^的页面记录存储区以搜索用于 指向所述1^的下一数据区的符合所述第二条件的页面记录;
[0065] 所述根据所述第i_l层存储单元返回的页面记录搜索所述L/以搜索所述指定对 象,包括:
[0066] 根据所述第i_l层存储单元返回的页面记录搜索所述L/中的数据记录存储区以 搜索所述指定对象;
[0067] 当所述指定对象为指定键值时,则在所述L/中的数据记录存储区中未搜索到所 述指定对象后,则搜索所述L/中的页面记录存储区以搜索用于指向所述Q的符合所述第 一条件的页面记录;
[0068] 当所述指定对象为指定键值范围时,则搜索所述L/的页面记录存储区以搜索用 于指向所述1^的符合所述第二条件的页面记录;,
[0069] 其中,所述Q的下一数据区第i+1层的主数据区Li+1或第i+1层的从数据区L i+1'。
[0070] 结合第三方面、第三方面的第一种可能的实施方式、第三方面的第二种可能的实 施方式或者第三方面的第三种可能的实施方式,在第四种可能的实施方式中,所述方法,还 包括:
[0071] 在所述第0层存储单元接收搜索请求,所述搜索请求中包括所述指定对象;
[0072] 在接收到所述搜索请求之后,判断所述第0层存储单元是否存在从数据区U' ;
[0073] 若判断结果为所述第0层存储单元存在从数据区U',则根据所述U'搜索所述指 定对象;
[0074] 当所述指定对象为指定键值时,则在根据所述U'未搜索到所述指定对象后,则搜 索所述第〇层存储单元的主数据区U以搜索所述指定对象;
[0075] 当所述指定对象为指定键值范围时,则在搜索完所述U'之后,搜索所述U以搜索 所述指定对象;
[0076] 若判断结果为所述第0层存储单元不存在从数据区U',则根据所述U搜索所述 指定对象。
[0077] 第四方面,提供了一种索引机制合并装置,用于包括有权利要求1所述的存储装 置的设备中,所述装置,包括:
[0078] 第一检测模块,用于在所述第i层存储单元的主数据区Q达到容量上限后,检测 第i+1层存储单元的主数据区L i+1是否正在合并;
[0079] 第二检测模块,用于在所述第一检测模块的检测结果为所述Li+1正在合并时,检测 所述第i+1层存储单元的从数据区L i+1'是否已经达到容量上限;
[0080] 第一合并模块,用于在所述第二检测模块的检测结果为所述Li+1'未达到容量上限 时,将所述Li中的数据记录添加至所述Li+1'中,将所述Li+1'中的所有页面所对应的页面记 录添加至所述Q中,合并后的所述1^为包含有用于指向合并后的所述Li+1'中的所有页面 所对应的页面记录的有序搜索树,
[0081] 其中,所述i为大于0的自然数。
[0082] 在第四方面的第一种可能的实施方式中,所述装置,还包括:
[0083] 第一判断模块,用于判断所述Li+1是否为有序搜索树以及所述第i+1层存储单元 是否存在从数据区Li+1' ;
[0084]第二合并模块,用于在所述第一判断模块的判断结果为所述Li+1为有序搜索树且 所述第i+1层存储单元存在Li+1'时,将所述Q和所述Li+1'中的数据记录添加至所述L i+1 中,将所述Li+1中的所有页面所对应的页面记录添加至所述Q中,合并后的所述Q为包含 有用于指向合并后的所述L i+1中的所有页面所对应的页面记录的有序搜索树;
[0085] 第一执行模块,用于在所述第一判断模块的判断结果为所述Li+1不为有序搜索树 时,执行所述检测L i+1是否正在合并的步骤;
[0086] 所述装置,还包括:
[0087] 第三合并模块,用于在所述第一检测模块的检测结果为所述Li+1未在合并时,将所 述1^中的数据记录添加至所述Li+1中,将所述Li+1中的所有页面所对应的页面记录添加至 所述k中,合并后的所述Q为包含有用于指向合并后的所述Li+1中的所有页面所对应的页 面记录的有序搜索树。
[0088] 结合第四方面或者第四方面的第一种可能的实施方式,在第二种可能的实施方式 中,所述装置,还包括:
[0089] 第二判断模块,用于当所述Q合并为有序搜索树后,判断第i_l层存储单元的主 数据区Lg是否正在合并以及所述第i层存储单元是否存在从数据区L/ ;
[0090] 第四合并模块,用于在所述第二判断模块的判断结果为所述Lg未在合并且所述 第i层存储单元存在L/时,将所述L/以及所述Lg中的数据记录添加至所述Q中,将所 述Q中的所有页面所对应的页面记录添加至所述Lg中,合并后的所述Lg为包含有用于 指向合并后的所述Q中的所有页面所对应的页面记录的有序搜索树;
[0091] 第五合并模块,用于在所述第二判断模块的判断结果为所述Lg未在合并且所述 第i层存储单元不存在Q ',则将所述Lh中的数据记录添加至所述Q中,将所述Q中的所 有页面所对应的页面记录添加至所述Lg中,合并后的所述Lg为包含有用于指向合并后 的所述Q中的所有页面所对应的页面记录的有序搜索树。
[0092] 结合第四方面、第四方面的第一种可能的实施方式或者第四方面的第二种可能的 实施方式,在第三种可能的实施方式中,当具有有序数组形式的所述Lg包括用于存放页面 记录的页面记录存储区时,所述第四合并模块,用于:
[0093] 将所述Q中的所有页面所对应的页面记录添加至所述Lg中的所述页面记录存储 区中;
[0094] 所述第五合并模块,用于:
[0095] 将所述Q中的所有页面所对应的页面记录添加至所述Lg中的所述页面记录存储 区中。
[0096] 结合第四方面、第四方面的第一种可能的实施方式、第四方面的第二种可能的实 施方式或者第四方面的第三种可能的实施方式,在第四种可能的实施方式中,所述装置,还 包括:
[0097] 第三判断模块,用于在所述第二检测模块的检测结果为所述Li+1'未达到容量上限 时,在预定时间段后判断所述L i+1是否合并完成;
[0098] 第六合并模块,用于在所述第三判断模块的判断结果为在预定时间段后所述Li+1 合并完成时,将所述Q以及所述Li+1'中的数据记录添加至所述Li+1中,将所述Li+1中的所 有页面所对应的页面记录添加至所述Q中,合并后的所述1^为包含有用于指向合并后的所 述L i+1中的所有页面所对应的页面记录的有序搜索树;
[0099] 第二执行模块,用于在所述第三判断模块的判断结果为在预定时间段后所述Li+1 未合并完成时,执行所述将所述Q中的数据记录添加至所述Li+1'中,将所述Li+1'中的所有 页面所对应的页面记录添加至所述Q中步骤。
[0100] 结合第四方面、第四方面的第一种可能的实施方式、第四方面的第二种可能的实 施方式、第四方面的第三种可能的实施方式或者第四方面的第四种可能的实施方式,在第 五种可能的实施方式中,所述装置,还包括:
[0101] 第四判断模块,用于从所述第一检测模块检测到所述Li+1正在合并起的所述预定 时间段后,判断所述L i+1是否合并完成;
[0102] 第三执行模块,用于在所述第四判断模块的判断结果为所述Li+1未合并完成时,执 行所述检测所述L i+1'是否已经达到容量上限的步骤;
[0103] 第七合并模块,用于在所述第四判断模块的判断结果为所述Li+1合并完成时,将所 述Q以及所述L i+1'中的数据记录添加至所述Li+1中,将所述Li+1中的所有页面所对应的页 面记录添加至所述Q中,合并后的所述1^为包含有用于指向合并后的所述L i+1中的所有页 面所对应的页面记录的有序搜索树。
[0104] 第五方面,提供了一种搜索装置,用于在包括有权利要求1所述的存储装置的设 备中搜索数据,所述装置,包括:
[0105] 获取模块,用于获取对所述第i层存储单元的主数据区Li的上一数据区搜索指定 对象时返回的页面记录,所述上一数据区为第i-1层存储单元的主数据区Lh或所述第i层 存储单元的从数据区L/ ;
[0106] 第一搜索模块,用于当所述Li为有序数组时,根据所述获取模块获取到的页面记 录所指的位于所述的页面搜索所述指定对象;
[0107] 第二搜索模块,用于当所述Q为有序搜索树时,从所述Q的根节点所在页面搜索 用于指向第i+1层存储单元中符合条件的页面记录,
[0108] 其中,所述i为大于0的自然数,所述指定对象为指定搜索的指定键值或指定搜索 的指定键值范围。
[0109] 在第五面的第一种可能的实施方式中,所述第二搜索模块,包括:
[0110] 第一搜索单元,用于当所述指定对象为指定键值时,则从所述Li的根节点所在页 面搜索用于指向第i+1层存储单元中符合第一条件的页面记录;
[0111] 第二搜索单元,用于当所述指定对象为指定键值范围时,则从所述Q的根节点所 在页面搜索用于指向第i+1层存储单元中符合第二条件的页面记录,
[0112] 其中,所述指定键值范围包括从左边界值至右边界值的值,所述第一条件为不大 于所述指定键值的最大键值,所述第二条件为不大于所述左边界值的最大键值,或,大于所 述左边界值且不大于所述右边界值的最小键值,所述左边界值小于所述右边界值。
[0113] 结合第五方面或者第五方面的第一种可能的实施方式,在第二种可能的实施方式 中,所述获取模块,包括:
[0114] 获取单元,用于获取根据所述第i_l层存储单元搜索所述指定对象时返回的页面 记录;
[0115] 判断单元,用于判断所述第i层存储单元是否存在所述L/ ;
[0116] 搜索单元,用于在所述判断单元的判断结果为所述第i层存储单元存在所述IV 时,根据所述第i-1层存储单元返回的页面记录搜索所述L/以搜索所述指定对象;
[0117] 第一返回单元,用于当所述指定对象为所述指定键值时,则在所述搜索单元在所 述L/中未搜索到所述指定对象时,返回所述L/中用于指向所述1^中符合所述第一条件 的页面记录;
[0118] 第二返回单元,当所述指定对象为所述指定键值范围时,则返回所述L/中用于指 向所述Q中符合所述第二条件的页面记录;
[0119] 第一作为单元,用于将所述第一返回单元返回的符合所述第一条件或所述第二返 回单元返回的符合所述第二条件的页面记录作为对所述Q的上一数据区搜索指定对象时 返回的页面记录;
[0120] 第二作为单元,用于在所述判断单元的判断结果为所述第i层存储单元不存在所 述L/时,将获取的根据所述第i-1层存储单元搜索所述指定对象时返回的页面记录作为 对所述k的上一数据区搜索时返回的页面记录。
[0121] 结合第五方面、第五方面的第一种可能的实施方式或者第五方面的第二种可能的 实施方式,在第三种可能的实施方式中,具有有序数组形式的主数据区或从数据区包括用 于存放数据记录的数据记录存储区和用于存放页面记录的页面记录存储区,
[0122] 所述第一搜索模块,包括:
[0123] 第三搜索单元,用于根据所述获取模块获取到的页面记录所指的页面搜索所述1^ 中的数据记录存储区,以搜索所述指定对象;
[0124] 第四搜索单元,用于当所述指定对象为指定键值时,则在所述第三搜索单元在所 述1^中的数据记录存储区中未搜索到所述指定对象后,搜索所述Q的页面记录存储区以搜 索用于指向所述1^的下一数据区的符合所述第一条件的页面记录;
[0125] 第五搜索单元,用于当所述指定对象为指定键值范围时,则搜索所述Q的页面记 录存储区以搜索用于指向所述1^的下一数据区的符合所述第二条件的页面记录;
[0126] 所述搜索单元,包括:
[0127] 第一搜索子单元,用于根据所述第i_l层存储单元返回的页面记录搜索所述1^'中 的数据记录存储区以搜索所述指定对象;
[0128] 第二搜索子单元,用于当所述指定对象为指定键值时,则在所述第一搜索子单元 在所述第一搜索子单元在所述L/中的数据记录存储区中未搜索到所述指定对象后,搜索 所述L/中的页面记录存储区以搜索用于指向所述Q的符合所述第一条件的页面记录;
[0129] 第三搜索子单元,用于当所述指定对象为指定键值范围时,则搜索所述L/的页面 记录存储区以搜索用于指向所述Q的符合所述第二条件的页面记录;,
[0130] 其中,所述Q的下一数据区第i+1层的主数据区Li+1或第i+1层的从数据区L i+1'。
[0131] 结合第五方面、第五方面的第一种可能的实施方式、第五方面的第二种可能的实 施方式或者第五方面的第三种可能的实施方式,在第四种可能的实施方式中,所述装置,还 包括:
[0132] 接收模块,用于在所述第0层存储单元接收搜索请求,所述搜索请求中包括所述 指定对象;
[0133] 第五判断模块,用于在所述接收模块接收到所述搜索请求之后,判断所述第0层 存储单元是否存在从数据区U' ;
[0134] 第三搜索模块,用于在所述第五判断模块的判断结果为所述第0层存储单元存在 从数据区IV时,根据所述U'搜索所述指定对象;
[0135] 第四搜索模块,用于当所述指定对象为指定键值时,则在所述第三搜索模块根据 所述U'未搜索到所述指定对象后,则搜索所述第0层存储单元的主数据区U以搜索所述 指定对象;
[0136] 第五搜索模块,用于当所述指定对象为指定键值范围时,则在搜索完所述U'之 后,搜索所述U以搜索所述指定对象;
[0137] 第六搜索模块,用于在所述第五判断模块的判断结果为所述第0层存储单元不存 在从数据区IV时,根据所述U搜索所述指定对象。
[0138] 第六方面,提供了一种存储设备,该存储设备包含第一方面提供的存储装置的特 性,该存储设备中包括处理器。
[0139] 所述处理器,在所述第i层存储单元的主数据区Q达到容量上限后,检测第i+1层 存储单元的主数据区L i+1是否正在合并;
[0140] 所述处理器,还用于检测结果为所述Li+1正在合并时,检测所述第i+1层存储单元 的从数据区L i+1'是否已经达到容量上限;
[0141] 所述处理器,还用于在检测结果为所述Li+1'未达到容量上限时,将所述1^中的数 据记录添加至所述L i+1'中,将所述Li+1'中的所有页面所对应的页面记录添加至所述Q中, 合并后的所述Q为包含有用于指向合并后的所述L i+1'中的所有页面所对应的页面记录的 有序搜索树,其中,所述i为大于〇的自然数。
[0142] 在第一种可能的实施方式中,在所述检测Li+1是否正在合并之前,所述处理器,还 用于判断所述L i+1是否为有序搜索树以及所述第i+1层存储单元是否存在从数据区Li+1' ;
[0143] 所述处理器,还用于在判断结果为所述Li+1为有序搜索树且所述第i+1层存储单 元存在L i+1'时,则将所述Q和所述Li+1'中的数据记录添加至所述Li+1中,将所述L i+1中的 所有页面所对应的页面记录添加至所述Q中,合并后的所述1^为包含有用于指向合并后的 所述L i+1中的所有页面所对应的页面记录的有序搜索树;
[0144] 所述处理器,还用于在判断结果为所述Li+1不为有序搜索树时,则执行所述检测 L i+1是否正在合并的步骤;
[0145] 在所述检测Li+1是否正在合并之后,所述处理器,还用于在检测结果为所述L i+1未 在合并时,将所述Q中的数据记录添加至所述Li+1中,将所述Li+1中的所有页面所对应的页 面记录添加至所述Q中,合并后的所述1^为包含有用于指向合并后的所述L i+1中的所有页 面所对应的页面记录的有序搜索树。
[0146] 结合第六方面或者第六方面的第一种可能的实施方式,在第二种可能的实施方式 中,所述处理器,还用于当所述Q合并为有序搜索树后,判断第i-1层存储单元的主数据区 Lh是否正在合并以及所述第i层存储单元是否存在从数据区L/ ;
[0147] 所述处理器,还用于在判断结果为所述Lg未在合并且所述第i层存储单元存在 L/时,则将所述L/以及所述Lh中的数据记录添加至所述Q中,将所述1^中的所有页面 所对应的页面记录添加至所述Lh中,合并后的所述Lh为包含有用于指向合并后的所述Q 中的所有页面所对应的页面记录的有序搜索树;
[0148] 所述处理器,还用于在判断结果为所述Lg未在合并且所述第i层存储单元不存 在k'时,则将所述Lh中的数据记录添加至所述Q中,将所述Q中的所有页面所对应的页 面记录添加至所述Lh中,合并后的所述Lh为包含有用于指向合并后的所述Q中的所有 页面所对应的页面记录的有序搜索树。
[0149] 结合第六方面、第六方面的第一种可能的实施方式或者第六方面的第二种可能的 实施方式,在第三种可能的实施方式中,当具有有序数组形式的所述Lg包括用于存放页面 记录的页面记录存储区时,所述处理器,还用于将所述1^中的所有页面所对应的页面记录 添加至所述Lg中的所述页面记录存储区中;
[0150] 所述处理器,还用于将所述Q中的所有页面所对应的页面记录添加至所述Lg中 的所述页面记录存储区中。
[0151] 结合第六方面、第六方面的第一种可能的实施方式、第六方面的第二种可能的实 施方式或者第六方面的第三种可能的实施方式,在第四种可能的实施方式中,在所述检测 所述L i+1 '是否已经达到容量上限之后,所述处理器还可以用于在检测结果为所述Li+1 '未达 到容量上限时,则在预定时间段后判断所述Li+1是否合并完成;
[0152] 所述处理器,还可以用于在判断结果为在预定时间段后所述Li+1合并完成时,则将 所述Q以及所述L i+1'中的数据记录添加至所述Li+1中,将所述Li+1中的所有页面所对应的 页面记录添加至所述Q中,合并后的所述1^为包含有用于指向合并后的所述L i+1中的所有 页面所对应的页面记录的有序搜索树;
[0153] 所述处理器,还可以用于在判断结果为在预定时间段后所述Li+1未合并完成时,则 执行所述将所述1^中的数据记录添加至所述L i+1'中,将所述Li+1'中的所有页面所对应的 页面记录添加至所述Q中的步骤。
[0154] 结合第六方面、第六方面的第一种可能的实施方式、第六方面的第二种可能的实 施方式、第六方面的第三种可能的实施方式或者第六方面的第四种可能的实施方式,在第 五种可能的实施方式中,在所述检测所述L i+1'是否已经达到容量上限之前,所述处理器还 可以用于从检测到所述Li+1正在合并起的所述预定时间段后,判断所述L i+1是否合并完成;
[0155] 所述处理器,还可以用于在判断结果为所述Li+1未合并完成时,则执行所述检测所 述L i+1'是否已经达到容量上限的步骤;
[0156] 所述处理器,还可以用于在判断结果为所述Li+1合并完成时,则将所述1^以及所述 L i+1'中的数据记录添加至所述Li+1中,将所述Li+1中的所有页面所对应的页面记录添加至 所述k中,合并后的所述Q为包含有用于指向合并后的所述L i+1中的所有页面所对应的页 面记录的有序搜索树。
[0157] 第七方面,提供了一种存储设备,该存储设备包含第一方面提供的存储装置的特 性,该存储设备中包括处理器。
[0158] 所述处理器,用于获取对所述第i层存储单元的主数据区Q的上一数据区搜索指 定对象时返回的页面记录,所述上一数据区为第i-1层存储单元的主数据区Lg或所述第i 层存储单元的从数据区L/ ;
[0159] 所述处理器,还用于当所述Q为有序数组时,根据所述页面记录所指的位于所述 Q的页面搜索所述指定对象;
[0160] 所述处理器,还用于所述Q为有序搜索树时,从所述Q的根节点所在页面搜索用 于指向第i+1层存储单元中符合条件的页面记录,其中,所述i为大于〇的自然数,所述指 定对象为指定搜索的指定键值或指定搜索的指定键值范围。
[0161] 在第一种可能实施方式中,所述处理器,还用于当所述指定对象为指定键值时,则 从所述Q的根节点所在页面搜索用于指向第i+1层存储单元中符合第一条件的页面记录;
[0162] 所述处理器,还用于当所述指定对象为指定键值范围时,则从所述Q的根节点所 在页面搜索用于指向第i+1层存储单元中符合第二条件的页面记录,
[0163] 其中,所述指定键值范围包括从左边界值至右边界值的值,所述第一条件为不大 于所述指定键值的最大键值,所述第二条件为不大于所述左边界值的最大键值,或,大于所 述左边界值且不大于所述右边界值的最小键值,所述左边界值小于所述右边界值。
[0164] 结合第七方面或者第七方面的第一种可能的实施方式,在第二种可能的实施方式 中,所述处理器,还用于获取根据所述第i_l层存储单元搜索所述指定对象时返回的页面 记录;
[0165] 所述处理器,还用于判断所述第i层存储单元是否存在所述L/ ;
[0166] 所述处理器,还用于在判断结果为所述第i层存储单元存在所述L/时,则根据所 述第i-1层存储单元返回的页面记录搜索所述L/以搜索所述指定对象;
[0167] 所述处理器,还用于当所述指定对象为所述指定键值时,则在所述L/中未搜索到 所述指定对象时,返回所述L/中用于指向所述1^中符合所述第一条件的页面记录;
[0168] 所述处理器,还用于当所述指定对象为所述指定键值范围时,则返回所述L/中用 于指向所述Q中符合所述第二条件的页面记录;
[0169] 所述处理器,还用于将所述符合第一条件或所述第二条件的页面记录作为对所述 Q的上一数据区搜索指定对象时返回的页面记录;
[0170] 所述处理器,还用于在判断结果为所述第i层存储单元不存在所述L/时,则将获 取的根据所述第i_l层存储单元搜索所述指定对象时返回的页面记录作为对所述k的上 一数据区搜索时返回的页面记录,
[0171] 其中,所述指定键值范围包括从左边界值至右边界值的值,所述第一条件为不大 于所述指定键值,所述第二条件为不大于所述左边界值的最大键值,或,大于所述左边界值 且不大于所述右边界值的最小键值,所述左边界值小于所述右边界值。
[0172] 结合第七方面、第七方面的第一种可能的实施方式或者第七方面的第二种可能的 实施方式,在第三种可能的实施方式中,具有有序数组形式的主数据区或从数据区包括用 于存放数据记录的数据记录存储区和用于存放页面记录的页面记录存储区,
[0173] 所述处理器,还用于根据所述页面记录所指的页面搜索所述Q中的数据记录存储 区,以搜索所述指定对象;
[0174] 所述处理器,还用于当所述指定对象为指定键值时,则在所述k中的数据记录存 储区中未搜索到所述指定对象后,搜索所述Q的页面记录存储区以搜索用于指向所述Q的 下一数据区的符合所述第一条件的页面记录;
[0175] 所述处理器,还用于当所述指定对象为指定键值范围时,则搜索所述Q的页面记 录存储区以搜索用于指向所述1^的下一数据区的符合所述第二条件的页面记录;
[0176] 所述处理器,还用于根据所述第i_l层存储单元返回的页面记录搜索所述1^'中 的数据记录存储区以搜索所述指定对象;
[0177] 所述处理器,还用于当所述指定对象为指定键值时,则在所述L/中的数据记录存 储区中未搜索到所述指定对象后,则搜索所述L/中的页面记录存储区以搜索用于指向所 述Q的符合所述第一条件的页面记录;
[0178] 当所述指定对象为指定键值范围时,则搜索所述L/的页面记录存储区以搜索用 于指向所述1^的符合所述第二条件的页面记录;,
[0179] 其中,所述Q的下一数据区第i+1层的主数据区Li+1或第i+1层的从数据区L i+1'。
[0180] 结合第七方面、第七方面的第一种可能的实施方式、第七方面的第二种可能的实 施方式或者第七方面的第三种可能的实施方式,在第四种可能的实施方式中,所述处理器, 还用于在所述第0层存储单元接收搜索请求,所述搜索请求中包括所述指定对象;
[0181] 所述处理器,还用于在接收到所述搜索请求之后,判断所述第0层存储单元是否 存在从数据区U' ;
[0182] 所述处理器,还用于在判断结果为所述第0层存储单元存在从数据区U'时,则根 据所述U'搜索所述指定对象;
[0183] 所述处理器,还用于当所述指定对象为指定键值时,则根据所述U'未搜索到所述 指定对象后,则搜索所述第〇层存储单元的主数据区U以搜索所述指定对象;
[0184] 所述处理器,还用于当所述指定对象为指定键值范围时,则在搜索完所述U'之 后,搜索所述U以搜索所述指定对象;
[0185] 所述处理器,还用于在判断结果为所述第0层存储单元不存在从数据区U'时,则 根据所述U搜索所述指定对象。
[0186] 本发明实施例提供的技术方案带来的有益效果是:
[0187] 通过在第i层存储单元的主数据区Q达到容量上限后,若第i+1层存储单元的主 数据区L i+1正在合并,则将Q与第i+1层存储单元的从数据区Li+1'进行合并,合并后的Q 为有序搜索树,其中,i为大于〇的自然数;解决了现有技术中索引机制FD树在合并过程中 占用较长时间的问题;由于在L i+1正在合并的过程中,可以同时进行1^与1^+1'的合并过程, 因此实现了多线程合并,达到了可以很大程度上提高了合并速率的效果。
【专利附图】
【附图说明】
[0188] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。
[0189] 图1是现有技术中提供的FD树的结构示意图;
[0190] 图2A是本发明部分实施例中提供的存储装置的示意图;
[0191] 图2B是本发明部分实施例中提供的存储装置中存储单元的示意图;
[0192] 图2C是本发明部分实施例中提供的索引机制中任意两层存储单元之间的指向关 系的不意图;
[0193] 表2D是本发明部分实施例中提供的主数据区层次目录表;
[0194] 表2E是本发明部分实施例中提供的从数据区层次目录表;
[0195] 图3是本发明一个实施例提供的索引机制合并方法的方法流程图;
[0196] 图4是本发明另一个实施例提供的索引机制合并方法的方法流程图;
[0197] 图5是本发明再一个实施例中索引机制合并方法的方法流程图;
[0198] 图6是本发明再一个实施例中索引机制合并方法的方法流程图;
[0199] 图7是本发明再一个实施例中索引机制合并方法的方法流程图;
[0200] 图8是本发明一个实施例中提供的搜索方法的方法流程图;
[0201] 图9是本发明另一个实施例中提供的搜索方法的方法流程图;
[0202] 图10是本发明一个实施例中第0层搜索数据记录的流程图;
[0203] 图11是本发明一个实施例中第i层搜索数据记录的流程图;
[0204] 图12是本发明另一个实施例中第0层搜索指定范围的流程图;
[0205] 图13是本发明另一个实施例中第i层搜索指定范围的流程图;
[0206] 图14是本发明再一个实施例中第i层搜索数据记录的流程图;
[0207] 图15是本发明再一个实施例中第i层搜索数据记录的流程图;
[0208] 图16是本发明一个实施例中索引机制合并装置的结构示意图;
[0209] 图17是本发明另一个实施例中索引机制合并装置的结构示意图;
[0210] 图18是本发明一个实施例中搜索装置的结构示意图;
[0211] 图19是本发明另一个实施例中搜索装置的结构示意图;
[0212] 图20是本发明一个实施例中存储设备的结构示意图;
[0213] 图21是本发明另一个实施例中存储设备的结构示意图。
【具体实施方式】
[0214] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。下文中所讲的"i"为大于〇的自然数。
[0215] 请参见图2A,其示出了本发明部分实施例中提供的存储装置的示意图。该存储装 置包含内存和闪存,其中内存中可以包含合并管理单元和层次目录单元,闪存中可以包括 层次目录单元和日志单元。此外,该存储装置通常还会包含有设置在内存中的一层存储单 元(即第〇层存储单元)和设置在闪存中的至少两层存储单元。
[0216] 需要说明的是,在包含有该存储装置的系统刚开始运行时,闪存中可能并不包含 存储单元,随着内存不断的存储数据,当内存达到容量上限后,在闪存中建立存储单元,以 用于存储数据,当数据越来越多时,闪存中建立的存储单元也越来越多。
[0217] 存储单元用于存储并组织数据记录,请参见图2B,其示出了本发明部分实施例中 提供的存储装置中存储单元的示意图。该存储装置中的每层存储单元可以包括主数据区, 至少一层存储单元还可以包括从数据区。
[0218] 第0层存储单元的主数据区U可以为有序搜索树,当第0层存储单元存在从数据 区U'时,第〇层存储单元的从数据区U'也可以为有序搜索树,第〇层存储单元中的有序 搜索树可以包括数据记录和/或页面记录。
[0219] 第i层存储单元的主数据区Q可以为有序搜索树,也可以为有序数组,当该第i层 存储单元存在从数据区L/时,该第i层存储单元的从数据区L/可以为有序数组,其中,i 为大于〇的自然数。比如,图2B中的第1层存储单元中的主数据区U为有序搜索树,从数 据区L/为有序数组,第2层存储单元中主数据gL 2和从数据区L2'均为有序数组。
[0220] 第i层存储单元中的有序搜索树可以包括页面记录,第i层存储单元中的有序数 组中可以包括数据记录和/或页面记录,其中,数据记录可以包括键值和记录值,页面记录 可以包括键值和页面地址。
[0221] 当第i层存储单元中存在从数据区L/时,从数据区L/为该第i层存储单元的第 一搜索数据区,该第i层存储单元中的主数据区Q为该第i层存储单元的第二搜索数据区; 当该第i层存储单元中不存在从数据区L/时,主数据区Q为该第i层存储单元的第一搜 索数据区。也就是说,如果第i层存储单元同时存在主数据区Q和从数据区L/时,则该从 数据区L/为该第i层存储单元的第一搜索数据区,如果该第i层存储单元仅存在主数据 区Q时,则该主数据区Q为该第i层存储单元的第一搜索数据区。通常来讲,在第i层存 储单元上进行搜索时,先从该第i层存储单元的第一搜索数据区开始搜索,如果该第i层存 储单元存在第二搜索数据区时,再从该第二搜索数据区开始搜索。
[0222] 在实际应用中,第i层存储单元中主数据区和从数据区之间的指向关系以及第i 层与第i+1层存储单元的指向关系可以参见图2C所示,图2C为本发明部分实施例中提供 的索引机制中其中两层存储单元之间的指向关系的示意图。其中,从数据区L/为该第i层 存储单元中的第一搜索数据区,该第一搜索数据区按序保存指向第i层存储单元的第二搜 索数据区k的所有页面对应的页面记录&按序保存指向第i+1层存储单元中的第一搜索 数据区的所有页面对应的页面记录,从数据区L/按序保存指向主数据区Q的所有页面对 应的页面记录。
[0223] 在实际应用中,当第i+1层存储单元中的第一搜索数据区为有序搜索树时,则Q 的页面记录是无效记录,也即在对第i+1层存储单元中的第一搜索数据区进行实际搜索的 过程中,直接从第i+1层存储单元中的第一搜索数据区的根节点开始搜索,而不需要利用Q 的页面记录搜索第i+1层存储单元中的第一搜索数据区;当Q为有序搜索树时,则L/的页 面记录为无效记录,也即在对1^进行实际搜索的过程中,直接从1^的根节点开始搜索,而不 需要利用Q '的页面记录搜索Q。
[0224] 而通常,第0层存储单元的主数据区和从数据区是没有指向关系,也即当主数据 区达到容量上限之后,将主数据区中的内容转移到第1层存储单元,将该从数据区作为第〇 层存储单元中最新的主数据区,并指向第1层存储单元,然后还可以释放掉第〇层存储单元 的原有的主数据区。
[0225] 层次目录单元管理存储单元中的层次的相关信息,层次目录单元分别为主数据区 和从数据区组织信息,请参见表2D所示,其示出了本发明部分实施例中提供的主数据区层 次目录表,如下 :
[0226]
【权利要求】
1. 一种存储装置,其特征在于,所述存储装置包括至少三层存储单元,第〇层存储单元 位于内存中,第i层存储单元位于闪存中,每层存储单元包括主数据区,其中: 所述第0层存储单元中的主数据区为有序搜索树,当所述第0层存储单元中存在从数 据区时,所述从数据区为有序搜索树,所述有序搜索树包括数据记录和/或页面记录; 所述第i层存储单元中的主数据区为有序搜索树或有序数组,当所述第i层存储单元 中存在从数据区时,所述从数据区为有序数组,所述有序搜索树包括页面记录,所述有序数 组包括数据记录和/或页面记录; 所述数据记录包括键值和记录值,所述页面记录包括键值和页面地址; 当所述第i层存储单元中存在从数据区L/时,所述L/为所述第i层存储单元的第一 搜索数据区,所述第i层存储单元中的主数据区Q为所述第i层存储单元的第二搜索数据 区;当所述第i层存储单元中不存在所述L/时,所述Q为所述第i层存储单元的所述第一 搜索数据区; 所述Q按序保存指向第i+1层存储单元中的第一搜索数据区的所有页面对应的页面 记录;当所述第i+1层存储单元中的第一搜索数据区为有序搜索树时,则所述Q的页面记 录是无效记录; 所述L/按序保存指向所述1^的所有页面对应的页面记录;当所述Q为有序搜索树时, 则所述L/的页面记录为无效记录, 其中,所述i为大于〇的自然数。
2. -种索引机制合并方法,其特征在于,用于包括有权利要求1所述的存储装置的设 备中,所述方法,包括: 在所述第i层存储单元的主数据区Q达到容量上限后,检测第i+1层存储单元的主数 据区Li+1是否正在合并; 若检测结果为所述Li+1正在合并,则检测所述第i+1层存储单元的从数据区Li+1'是否 已经达到容量上限; 若检测结果为所述Li+1'未达到容量上限,则将所述Q中的数据记录添加至所述Li+1' 中,将所述Li+1'中的所有页面所对应的页面记录添加至所述Q中,合并后的所述Q为包含 有用于指向合并后的所述Li+1'中的所有页面所对应的页面记录的有序搜索树, 其中,所述i为大于〇的自然数。
3. 根据权利要求2所述的方法,其特征在于,在所述检测Li+1是否正在合并之前,还包 括: 判断所述Li+1是否为有序搜索树以及所述第i+1层存储单元是否存在从数据区Li+1' ; 若判断结果为所述Li+1为有序搜索树且所述第i+1层存储单元存在Li+1'时,则将所述 Q和所述Li+1'中的数据记录添加至所述Li+1中,将所述Li+1中所有页面所对应的页面记录 添加至所述k中,合并后的所述1^为包含有用于指向合并后的所述Li+1中的所有页面所对 应的页面记录的有序搜索树; 若判断结果为所述Li+1不为有序搜索树时,则执行所述检测Li+1是否正在合并的步骤; 在所述检测Li+1是否正在合并之后,还包括: 若检测结果为所述Li+1未在合并,则将所述Q中的数据记录添加至所述Li+1中,将所述 Li+1中的所有页面所对应的页面记录添加至所述Q中,合并后的所述Q为包含有用于指向 合并后的所述Li+1中的所有页面所对应的页面记录的有序搜索树。
4. 根据权利要求3所述的方法,其特征在于,所述方法,还包括: 当所述Q合并为有序搜索树后,判断第i-1层存储单元的主数据区Lg是否正在合并 以及所述第i层存储单元是否存在从数据区L/ ; 若判断结果为所述Lg未在合并且所述第i层存储单元存在L/,则将所述L/以及所 述Lg中的数据记录添加至所述Q中,将所述1^中的所有页面所对应的页面记录添加至所 述Lg中,合并后的所述Lg为包含有用于指向合并后的所述Q中的所有页面所对应的页 面记录的有序搜索树; 若判断结果为所述Lg未在合并且所述第i层存储单元不存在L/,则将所述Lg中的 数据记录添加至所述Q中,将所述Q中的所有页面所对应的页面记录添加至所述Lh中, 合并后的所述Lh为包含有用于指向合并后的所述Q中的所有页面所对应的页面记录的有 序搜索树。
5. 根据权利要求4所述的方法,其特征在于,当具有有序数组形式的所述Lh包括用于 存放页面记录的页面记录存储区时,所述将所述Q中的所有页面所对应的页面记录添加至 所述Lg中,包括: 将所述Q中的所有页面所对应的页面记录添加至所述Lh中的所述页面记录存储区 中; 所述将所述Q中的所有页面所对应的页面记录添加至所述Lg中,包括: 将所述Q中的所有页面所对应的页面记录添加至所述Lh中的所述页面记录存储区 中。
6. 根据权利要求2至5中任一所述的方法,其特征在于,在所述检测所述Li+1'是否已 经达到容量上限之后,还包括: 若检测结果为所述Li+1'未达到容量上限,则在预定时间段后判断所述Li+1是否合并完 成; 若判断结果为在预定时间段后所述Li+1合并完成,则将所述Q以及所述Li+1'中的数据 记录添加至所述Li+1中,将所述Li+1中的所有页面所对应的页面记录添加至所述Q中,合并 后的所述Q为包含有用于指向合并后的所述Li+1中所有页面所对应的页面记录的有序搜索 树; 若判断结果为在预定时间段后所述Li+1未合并完成,则执行所述将所述Q中的数据记 录添加至所述Li+1'中,将所述Li+1'中的所有页面所对应的页面记录添加至所述Q中的步 骤。
7. 根据权利要求2至5中任一所述的方法,其特征在于,在所述检测所述Li+1'是否已 经达到容量上限之前,还包括: 从检测到所述Li+1正在合并起的所述预定时间段后,判断所述Li+1是否合并完成; 若判断结果为所述Li+1未合并完成,则执行所述检测所述Li+1'是否已经达到容量上限 的步骤; 若判断结果为所述Li+1合并完成,则将所述Q以及所述Li+1'中的数据记录添加至所述 Li+1中,将所述Li+1中的所有页面所对应的页面记录添加至所述Q中,合并后的所述Q为包 含有用于指向合并后的所述Li+1中的所有页面所对应的页面记录的有序搜索树。
8. -种搜索方法,其特征在于,用于在包括有权利要求1所述的存储装置的设备中搜 索数据,所述方法,包括: 获取对所述第i层存储单元的主数据区Q的上一数据区搜索指定对象时返回的页面 记录,所述上一数据区为第i-1层存储单元的主数据区Lg或所述第i层存储单元的从数 据区L/ ; 当所述Q为有序数组时,根据所述页面记录所指的位于所述Q的页面搜索所述指定对 象; 当所述Q为有序搜索树时,从所述Q的根节点所在页面搜索用于指向第i+1层存储单 元中符合条件的页面记录, 其中,所述i为大于〇的自然数,所述指定对象为指定搜索的指定键值或指定搜索的指 定键值范围。
9. 根据权利要求8所述的方法,其特征在于,所述从所述Q的根节点所在页面搜索用 于指向第i+1层存储单元中符合条件的页面记录,包括: 当所述指定对象为指定键值时,则从所述Q的根节点所在页面搜索用于指向第i+1层 存储单元中符合第一条件的页面记录; 当所述指定对象为指定键值范围时,则从所述Q的根节点所在页面搜索用于指向第 i+1层存储单元中符合第二条件的页面记录, 其中,所述指定键值范围包括从左边界值至右边界值的值,所述第一条件为不大于所 述指定键值的最大键值,所述第二条件为不大于所述左边界值的最大键值,或,大于所述左 边界值且不大于所述右边界值的最小键值,所述左边界值小于所述右边界值。
10. 根据权利要求9所述的方法,其特征在于,所述获取对所述k的上一数据区搜索指 定对象时返回的页面记录,包括: 获取根据所述第i_l层存储单元搜索所述指定对象时返回的页面记录; 判断所述第i层存储单元是否存在所述L/ ; 若判断结果为所述第i层存储单元存在所述L/,则根据所述第i-1层存储单元返回的 页面记录搜索所述L/以搜索所述指定对象; 当所述指定对象为所述指定键值时,则在所述L/中未搜索到所述指定对象时,返回所 述L/中用于指向所述Q中符合所述第一条件的页面记录; 当所述指定对象为所述指定键值范围时,则返回所述L/中用于指向所述Q中符合所 述第二条件的页面记录; 将符合所述第一条件或所述第二条件的页面记录作为对所述Q的上一数据区搜索指 定对象时返回的页面记录; 若判断结果为所述第i层存储单元不存在所述L/,则将获取的根据所述第i-1层存储 单元搜索所述指定对象时返回的页面记录作为对所述Q的上一数据区搜索时返回的页面 记录。
11. 根据权利要求10所述的方法,其特征在于,具有有序数组形式的主数据区或从数 据区包括用于存放数据记录的数据记录存储区和用于存放页面记录的页面记录存储区, 所述根据所述页面记录所指的位于所述^的页面搜索所述指定对象,包括: 根据所述页面记录所指的页面搜索所述Q中的数据记录存储区,以搜索所述指定对 象; 当所述指定对象为指定键值时,则在所述Li中的数据记录存储区中未搜索到所述指定 对象后,搜索所述Q的页面记录存储区以搜索用于指向所述Q的下一数据区的符合所述第 一条件的页面记录; 当所述指定对象为指定键值范围时,则搜索所述Q的页面记录存储区以搜索用于指向 所述Q的下一数据区的符合所述第二条件的页面记录; 所述根据所述第i_l层存储单元返回的页面记录搜索所述IV以搜索所述指定对象, 包括: 根据所述第i-1层存储单元返回的页面记录搜索所述L/中的数据记录存储区以搜索 所述指定对象; 当所述指定对象为指定键值时,则在所述IV中的数据记录存储区中未搜索到所述指 定对象后,则搜索所述L/中的页面记录存储区以搜索用于指向所述Li的符合所述第一条 件的页面记录; 当所述指定对象为指定键值范围时,则搜索所述L/的页面记录存储区以搜索用于指 向所述Q的符合所述第二条件的页面记录, 其中,所述Q的下一数据区为第i+1层的主数据区Li+1或第i+1层的从数据区Li+1'。
12. 根据权利要求8至11任一所述的方法,其特征在于,所述方法,还包括: 在所述第〇层存储单元接收搜索请求,所述搜索请求中包括所述指定对象; 在接收到所述搜索请求之后,判断所述第〇层存储单元是否存在从数据区U' ; 若判断结果为所述第〇层存储单元存在从数据区U',则根据所述U'搜索所述指定对 象; 当所述指定对象为指定键值时,则在根据所述U'未搜索到所述指定对象后,则搜索所 述第〇层存储单元的主数据区U以搜索所述指定对象; 当所述指定对象为指定键值范围时,则在搜索完所述U'之后,搜索所述U以搜索所述 指定对象; 若判断结果为所述第〇层存储单元不存在从数据区U',则根据所述U搜索所述指定 对象。
13. -种索引机制合并装置,其特征在于,用于包括有权利要求1所述的存储装置的设 备中,所述装置,包括: 第一检测模块,用于在所述第i层存储单元的主数据区Li达到容量上限后,检测第i+1 层存储单元的主数据区Li+1是否正在合并; 第二检测模块,用于在所述第一检测模块的检测结果为所述Li+1正在合并时,检测所述 第i+1层存储单元的从数据区Li+1'是否已经达到容量上限; 第一合并模块,用于在所述第二检测模块的检测结果为所述Li+1'未达到容量上限时, 将所述Q中的数据记录添加至所述Li+1'中,将所述Li+1'中的所有页面所对应的页面记录 添加至所述Q中,合并后的所述Q为包含有用于指向合并后的所述Li+1'中的所有页面所 对应的页面记录的有序搜索树, 其中,所述i为大于〇的自然数。
14. 根据权利要求13所述的装置,其特征在于,所述装置,还包括: 第一判断模块,用于判断所述Li+1是否为有序搜索树以及所述第i+1层存储单元是否 存在从数据区Li+1' ; 第二合并模块,用于在所述第一判断模块的判断结果为所述Li+1为有序搜索树且所述 第i+1层存储单元存在Li+1'时,将所述Q和所述Li+1'中的数据记录添加至所述L i+1中,将 所述Li+1中的所有页面所对应的页面记录添加至所述Q中,合并后的所述Q为包含有用于 指向合并后的所述Li+1中的所有页面所对应的页面记录的有序搜索树; 第一执行模块,用于在所述第一判断模块的判断结果为所述Li+1不为有序搜索树时,执 行所述检测Li+1是否正在合并的步骤; 所述装置,还包括: 第三合并模块,用于在所述第一检测模块的检测结果为所述Li+1未在合并时,将所述Q 中的数据记录添加至所述Li+1中,将所述Li+1中的所有页面所对应的页面记录添加至所述Q 中,合并后的所述Q为包含有用于指向合并后的所述Li+1中的所有页面所对应的页面记录 的有序搜索树。
15. 根据权利要求14所述的装置,其特征在于,所述装置,还包括: 第二判断模块,用于当所述Q合并为有序搜索树后,判断第i-1层存储单元的主数据 区Lg是否正在合并以及所述第i层存储单元是否存在从数据区L/ ; 第四合并模块,用于在所述第二判断模块的判断结果为所述Lg未在合并且所述第i 层存储单元存在L/时,将所述L/以及所述Lg中的数据记录添加至所述Q中,将所述1^ 中的所有页面所对应的页面记录添加至所述Lh中,合并后的所述Lg为包含有用于指向 合并后的所述Q中的所有页面所对应的页面记录的有序搜索树; 第五合并模块,用于在所述第二判断模块的判断结果为所述Lg未在合并且所述第i 层存储单元不存在Q ',则将所述Lh中的数据记录添加至所述Q中,将所述Q中的所有页 面所对应的页面记录添加至所述Lh中,合并后的所述Lg为包含有用于指向合并后的所 述Q中的所有页面所对应的页面记录的有序搜索树。
16. 根据权利要求15所述的装置,其特征在于,当具有有序数组形式的所述L包括用 于存放页面记录的页面记录存储区时,所述第四合并模块,用于: 将所述Q中的所有页面所对应的页面记录添加至所述Lh中的所述页面记录存储区 中; 所述第五合并模块,用于: 将所述Q中的所有页面所对应的页面记录添加至所述Lh中的所述页面记录存储区 中。
17. 根据权利要求13至16中任一所述的装置,其特征在于,所述装置,还包括: 第三判断模块,用于在所述第二检测模块的检测结果为所述Li+1'未达到容量上限时, 在预定时间段后判断所述Li+1是否合并完成; 第六合并模块,用于在所述第三判断模块的判断结果为在预定时间段后所述Li+1合并 完成时,将所述Q以及所述Li+1'中的数据记录添加至所述Li+1中,将所述Li+1中的所有页面 所对应的页面记录添加至所述Q中,合并后的所述Q为包含有用于指向合并后的所述Li+1中的所有页面所对应的页面记录的有序搜索树; 第二执行模块,用于在所述第三判断模块的判断结果为在预定时间段后所述Li+1未合 并完成时,执行所述将所述Li中的数据记录添加至所述Li+1'中,将所述Li+1 '中的所有页面 所对应的页面记录添加至所述Q中步骤。
18. 根据权利要求13至16中任一所述的装置,其特征在于,所述装置,还包括: 第四判断模块,用于从所述第一检测模块检测到所述Li+1正在合并起的所述预定时间 段后,判断所述Li+1是否合并完成; 第三执行模块,用于在所述第四判断模块的判断结果为所述Li+1未合并完成时,执行所 述检测所述Li+1'是否已经达到容量上限的步骤; 第七合并模块,用于在所述第四判断模块的判断结果为所述Li+1合并完成时,将所述Q 以及所述Li+1'中的数据记录添加至所述Li+1中,将所述Li+1中的所有页面所对应的页面记 录添加至所述Q中,合并后的所述Q为包含有用于指向合并后的所述Li+1中的所有页面所 对应的页面记录的有序搜索树。
19. 一种搜索装置,其特征在于,用于在包括有权利要求1所述的存储装置的设备中搜 索数据,所述装置,包括: 获取模块,用于获取对所述第i层存储单元的主数据区Q的上一数据区搜索指定对象 时返回的页面记录,所述上一数据区为第i_l层存储单元的主数据区Lg或所述第i层存 储单元的从数据区L/ ; 第一搜索模块,用于当所述Q为有序数组时,根据所述获取模块获取到的页面记录所 指的位于所述^的页面搜索所述指定对象; 第二搜索模块,用于当所述Q为有序搜索树时,从所述Q的根节点所在页面搜索用于 指向第i+1层存储单元中符合条件的页面记录, 其中,所述i为大于〇的自然数,所述指定对象为指定搜索的指定键值或指定搜索的指 定键值范围。
20. 根据权利要求19所述的装置,其特征在于,所述第二搜索模块,包括: 第一搜索单元,用于当所述指定对象为指定键值时,则从所述k的根节点所在页面搜 索用于指向第i+1层存储单元中符合第一条件的页面记录; 第二搜索单元,用于当所述指定对象为指定键值范围时,则从所述Q的根节点所在页 面搜索用于指向第i+1层存储单元中符合第二条件的页面记录, 其中,所述指定键值范围包括从左边界值至右边界值的值,所述第一条件为不大于所 述指定键值的最大键值,所述第二条件为不大于所述左边界值的最大键值,或,大于所述左 边界值且不大于所述右边界值的最小键值,所述左边界值小于所述右边界值。
21. 根据权利要求20所述的装置,其特征在于,所述获取模块,包括: 获取单元,用于获取根据所述第i-1层存储单元搜索所述指定对象时返回的页面记 录; 判断单元,用于判断所述第i层存储单元是否存在所述L/ ; 搜索单元,用于在所述判断单元的判断结果为所述第i层存储单元存在所述L/时,根 据所述第i_l层存储单元返回的页面记录搜索所述L/以搜索所述指定对象; 第一返回单元,用于当所述指定对象为所述指定键值时,则在所述搜索单元在所述L/ 中未搜索到所述指定对象时,返回所述L/中用于指向所述"中符合所述第一条件的页面 记录; 第二返回单元,当所述指定对象为所述指定键值范围时,则返回所述L/中用于指向所 述Q中符合所述第二条件的页面记录; 第一作为单元,用于将所述第一返回单元返回的符合所述第一条件或所述第二返回单 元返回的符合所述第二条件的页面记录作为对所述^的上一数据区搜索指定对象时返回 的页面记录; 第二作为单元,用于在所述判断单元的判断结果为所述第i层存储单元不存在所述L/ 时,将获取的根据所述第i-1层存储单元搜索所述指定对象时返回的页面记录作为对所述 Q的上一数据区搜索时返回的页面记录。
22. 根据权利要求21所述的装置,其特征在于,具有有序数组形式的主数据区或从数 据区包括用于存放数据记录的数据记录存储区和用于存放页面记录的页面记录存储区, 所述第一搜索模块,包括: 第三搜索单元,用于根据所述获取模块获取到的页面记录所指的页面搜索所述1^中的 数据记录存储区,以搜索所述指定对象; 第四搜索单元,用于当所述指定对象为指定键值时,则在所述第三搜索单元在所述Q 中的数据记录存储区中未搜索到所述指定对象后,搜索所述Q的页面记录存储区以搜索用 于指向所述Q的下一数据区的符合所述第一条件的页面记录; 第五搜索单元,用于当所述指定对象为指定键值范围时,则搜索所述Q的页面记录存 储区以搜索用于指向所述k的下一数据区的符合所述第二条件的页面记录; 所述搜索单元,包括: 第一搜索子单元,用于根据所述第i-1层存储单元返回的页面记录搜索所述IV中的 数据记录存储区以搜索所述指定对象; 第二搜索子单元,用于当所述指定对象为指定键值时,则在所述第一搜索子单元在所 述L/中的数据记录存储区中未搜索到所述指定对象后,搜索所述L/中的页面记录存储区 以搜索用于指向所述Q的符合所述第一条件的页面记录; 第三搜索子单元,用于当所述指定对象为指定键值范围时,则搜索所述L/的页面记录 存储区以搜索用于指向所述Q的符合所述第二条件的页面记录, 其中,所述Q的下一数据区第i+1层的主数据区Li+1或第i+1层的从数据区Li+1'。
23. 根据权利要求20至22任一所述的装置,其特征在于,所述装置,还包括: 接收模块,用于在所述第0层存储单元接收搜索请求,所述搜索请求中包括所述指定 对象; 第五判断模块,用于在所述接收模块接收到所述搜索请求之后,判断所述第0层存储 单元是否存在从数据区IV ; 第三搜索模块,用于在所述第五判断模块的判断结果为所述第0层存储单元存在从数 据区U'时,根据所述U'搜索所述指定对象; 第四搜索模块,用于当所述指定对象为指定键值时,则在所述第三搜索模块根据所述 IV未搜索到所述指定对象后,则搜索所述第0层存储单元的主数据区U以搜索所述指定 对象; 第五搜索模块,用于当所述指定对象为指定键值范围时,则在搜索完所述U'之后,搜 索所述U以搜索所述指定对象; 第六搜索模块,用于在所述第五判断模块的判断结果为所述第0层存储单元不存在从 数据区U'时,根据所述U搜索所述指定对象。
【文档编号】G06F17/30GK104424204SQ201310367741
【公开日】2015年3月18日 申请日期:2013年8月21日 优先权日:2013年8月21日
【发明者】朱俊华, 杨俊 , 罗琼, 王伟松 申请人:华为技术有限公司