索引数据的存储方法、装置及存储设备的制作方法

文档序号:6621605阅读:150来源:国知局
索引数据的存储方法、装置及存储设备的制作方法
【专利摘要】本发明公开了一种索引数据的存储方法,涉及数据处理领域,通过对索引页面进行压缩,不仅减少了系统存储空间,而且增大了每个索引页面上的索引记录条数。本发明提供的索引压缩方法包括:获取单页面内所有原始索引数据组,在所述单页面中建立索引位图,确定并存储所述单页面内的最小索引值。将每个索引值分别减去所述最小索引值计算差值delta1,并将所述索引位图中的第delta1个位置的标记位置位,然后删除每个原始索引数据组中的索引值,在生成仅包括元组地址的压缩索引数据组后,按照索引值对应的delta1在索引位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新存储在所述单页面内,从而完成索引压缩。本发明主要应用于索引数据存储的过程中。
【专利说明】索引数据的存储方法、装置及存储设备

【技术领域】
[0001] 本发明涉及数据处理领域,尤其涉及一种索引数据的存储方法、装置及存储设备。

【背景技术】
[0002] 目前为了提高数据库性能,减少数据占用的存储空间,一般需要对数据库内存储 的数据进行压缩。索引数据作为数据库中的一类基本数据类型,其对应的现有压缩技术通 常是通过提取索引数据记载的索引值中共同的前缀部分构建字典,用字典条目的引用代替 重复记录的方式来减少存储空间。
[0003] 但是,在实际应用过程中,现有的对索引数据进行压缩的方案具有局限性,其原因 在于,若索引值之间可用的公共前缀比较少,则现有的数据库对索引数据进行压缩时压缩 效率很低。


【发明内容】

[0004] 本发明实施例提供了一种索引数据的存储方法、装置及存储设备,能够提高压缩 效率。
[0005] 为达到上述目的,本发明的实施例采用如下技术方案:
[0006] 第一方面,本发明实施例提供了一种索引数据的存储方法,包括:
[0007] 获取单页面内所有原始索引数据组;其中,单个原始索引数据组包括单个索引对 应的元组地址和索引值,并且在所述单页面内存储的索引值是唯一且有序的;
[0008] 在所述单页面中建立索引位图;
[0009] 确定并存储所述单页面内的最小索引值;
[0010] 将每个索引值分别减去所述最小索引值计算差值deltal,并将所述索引位图中的 第deltal个位置的标记位置位;
[0011] 删除每个原始索引数据组中的索引值,以生成仅包括元组地址的压缩索引数据 组;
[0012] 按照索引值对应的deltal在索引位图中的高低位顺序将每个原始索引数据组对 应的压缩索引数据组重新存储在所述单页面内。
[0013] 结合第一方面,在第一方面的第一种可能的实现方式中,在所述按照索引值对应 的deltal在索引位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新 存储在所述单页面内之后,还包括:
[0014] 当存在一个新索引数据组存储至所述单页面,且所述新索引数据组包括的新索引 值小于所述最小索引值时,将所述最小索引值减去所述新索引值计算差值delta2,并将所 述索引位图向高位移动所述delta2以生成新的索引位图,同时将最低位置位;
[0015] 将已存储的最小索引值替换为所述新索引值;
[0016] 删除所述新的索引数据组中的索引值,以生成仅包括元组地址的新的压缩索引数 据组;
[0017] 按照所述索引值对应的delta2在索引位图中的位置,将所述新的压缩索引数据 组存储在所述单页面内。
[0018] 结合第一方面,在第一方面的第二种可能的实现方式中,在所述按照索引值对应 的deltal在索引位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新 存储在所述单页面内之后,还包括:
[0019] 当存在一个新索引数据组存储至所述单页面,且所述新索引数据组包括的新索引 值大于所述最小索引值时,将所述新索引值减去所述最小索引值计算差值delta3,并将所 述索引位图中的第delta3个位置的标记位置位;
[0020] 删除所述新索引数据组中的索引值,以生成仅包括元组地址的新的压缩索引数据 组;
[0021] 按照新索引值对应的delta3在索引位图中的高低位顺序,确定所述新的压缩索 引数据组与其它已存储的压缩索引数据组之间的存储顺序;
[0022] 按照已确定的存储顺序,将所述新的压缩索引数据组存储在所述单页面内。
[0023] 结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,在所述将 所述索引位图中的第delta3个位置的标记位置位之前,还包括:
[0024] 当所述delta3大于所述索引位图的标志位数量时,则从所述索引位图的最高 位起按照低位到高位的顺序添加标识位,以使得所述索引位图的标志位数量不小于所述 delta3 ;
[0025] 则将所述索引位图中的第delta3个位置的标记位置位包括:
[0026] 将添加了标志位的索引位图中的第delta3个位置的标记位置位。
[0027] 结合第一方面,在第四种可能的实现方式中,在所述按照索引值对应的deltal在 索引位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新存储在所述 单页面内之后,还包括:
[0028] 当所述单页面内存储的数据需要分配至至少两个页面时,根据索引位图已置位的 标志位,确定每个压缩索引数据组对应的索引值与所述最小索引值之间的差值;
[0029] 根据已确定的差值以及所述最小索引值,确定每个压缩索引数据组对应的索引 值;
[0030] 将索引值与对应的压缩索引数据组进行合并生成原始索引数据组;
[0031] 根据分裂规则将新生成的原始索引数据组分别存储至至少两个页面中。
[0032] 结合第一方面,在第五种可能的实现方式中,在所述按照索引值对应的deltal在 索引位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新存储在所述 单页面内之后,还包括:
[0033] 获取待查询索引记录,所述待查询索引记录包括索引数据偏移量offnum ;
[0034] 确定所述索引位图中从低到高起第offnum个已置位的标志位在所述索引位图的 位置;
[0035] 根据从低到高起第offnum个已置位的标志位在所述索引位图的位置,计算待查 询索引值与所述最小索引值的差值;
[0036] 根据已确定的差值以及所述最小索引值,确定待查询索引值。
[0037] 第二方面,本发明实施例提供了一种索引数据的存储装置,包括:
[0038] 获取单元,用于获取单页面内所有原始索引数据组;其中,单个原始索引数据组 包括单个索引对应的元组地址和索引值,并且在所述单页面内存储的索引值是唯一且有序 的;
[0039] 建立单元,用于在所述单页面中建立索引位图;
[0040] 确定单元,用于确定所述单页面内的最小索引值;
[0041] 计算单元,用于将每个索引值分别减去所述最小索引值计算差值deltal ;
[0042] 置位单元,用于将所述索引位图中的第deltal个位置的标记位置位;
[0043] 删除单元,用于删除每个原始索引数据组中的索引值,以生成仅包括元组地址的 压缩索引数据组;
[0044] 存储单元,用于存储所述单页面内的最小索引值;以及用于按照索引值对应的 deltal在索引位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新存 储在所述单页面内。
[0045] 结合第二方面,在第二方面的第一种可能的实现方式中,还包括:
[0046] 第一位图调整单元,用于在存在一个新索引数据组存储至所述单页面,且所述新 索引数据组包括的新索引值小于所述最小索引值时,将所述最小索引值减去所述新索引值 计算差值delta2,并将所述索引位图向高位移动所述delta2以生成新的索引位图;
[0047] 所述置位单元,用于将最低位置位;
[0048] 所述删除单元,用于删除所述新的索引数据组中的索引值,以生成仅包括元组地 址的新的压缩索引数据组;
[0049] 所述存储单元,用于将已存储的最小索引值替换为所述新索引值;以及用于按照 所述索引值对应的delta2在索引位图中的位置,将所述新的压缩索引数据组存储在所述 单页面内。
[0050] 结合第二方面,在第二方面的第二种可能的实现方式中,在所述按照索引值对应 的deltal在索引位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新 存储在所述单页面内之后,还包括:
[0051] 第二位图调整单元,用于在存在一个新索引数据组存储至所述单页面,且所述新 索引数据组包括的新索引值大于所述最小索引值时,将所述新索引值减去所述最小索引值 计算差值delta3 ;
[0052] 所述置位单元,用于将所述索引位图中的第delta3个位置的标记位置位;
[0053] 所述删除单元,用于删除所述新索引数据组中的索引值,以生成仅包括元组地址 的新的压缩索引数据组;
[0054] 所述确定单元,用于按照新索引值对应的delta3在索引位图中的高低位顺序,确 定所述新的压缩索引数据组与其它已存储的压缩索引数据组之间的存储顺序;
[0055] 所述存储单元,用于按照已确定的存储顺序,将所述新的压缩索引数据组存储在 所述单页面内。
[0056] 结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,还包括:
[0057] 所述第三位图调整单元,用于在所述delta3大于所述索引位图的标志位数量时, 则从所述索引位图的最高位起按照低位到高位的顺序添加标识位,以使得所述索引位图的 标志位数量不小于所述delta3 ;
[0058] 所述置位单元,用于将添加了标志位的索引位图中的第delta3个位置的标记位 置位。
[0059] 结合第二方面,在第四种可能的实现方式中,还包括:
[0060] 所述确定单元,用于在所述单页面内存储的数据需要分配至至少两个页面时,根 据索引位图已置位的标志位,确定每个压缩索引数据组对应的索引值与所述最小索引值之 间的差值;以及用于根据已确定的差值以及所述最小索引值,确定每个压缩索引数据组对 应的索引值;
[0061] 合并单元,用于将索引值与对应的压缩索引数据组进行合并生成原始索引数据 组;
[0062] 所述存储单元,用于根据分裂规则将新生成的原始索引数据组分别存储至至少两 个页面中。
[0063] 结合第二方面,在第五种可能的实现方式中,还包括:
[0064] 所述获取单元,用于获取待查询索引记录,所述待查询索引记录包括索引数据偏 移量 offnum ;
[0065] 所述确定单元,用于确定所述索引位图中从低到高起第offnum个已置位的标志 位在所述索引位图的位置;
[0066] 所述计算单元,用于根据从低到高起第offnum个已置位的标志位在所述索引位 图的位置,计算待查询索引值与所述最小索引值的差值;
[0067] 所述确定单元,还用于根据已确定的差值以及所述最小索引值,确定待查询索引 值。
[0068] 第三方面,本发明实施例提供了一种索引数据的存储设备,包括存储控制器、物理 存储单元、输入输出接口:所述存储控制器通过调用计算机程序以控制物理存储单元的读 写,以及输入输出接口的信号传输;
[0069] 所述存储控制器,用于获取单页面内所有原始索引数据组;其中,单个原始索引数 据组包括单个索引对应的元组地址和索引值,并且在所述单页面内存储的索引值是唯一且 有序的;在所述单页面中建立索引位图;确定所述单页面内的最小索引值;将每个索引值 分别减去所述最小索引值计算差值deltal,并将所述索引位图中的第deltal个位置的标 记位置位;删除每个原始索引数据组中的索引值,以生成仅包括元组地址的压缩索引数据 组;
[0070] 所述物理存储单元,用于存储所述最小索引值、索引位图以及按照索引值对应的 deltal在索引位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新存 储在所述单页面内。
[0071] 结合第三方面,在第三方面的第一种可能的实现方式中,所述存储控制器,还用于 在存在一个新索引数据组存储至所述单页面,且所述新索引数据组包括的新索引值小于所 述最小索引值时,将所述最小索引值减去所述新索引值计算差值delta2 ;
[0072] 所述物理存储单元,用于将所述索引位图向高位移动所述delta2以生成新的索 引位图,同时将最低位置位;删除所述新的索引数据组中的索引值,以生成仅包括元组地址 的新的压缩索引数据组;将已存储的最小索引值替换为所述新索引值;按照所述索引值对 应的delta2在索引位图中的位置,将所述新的压缩索引数据组存储在所述单页面内。
[0073] 结合第三方面,在第三方面的第二种可能的实现方式中,所述存储控制器还用于 在存在一个新索引数据组存储至所述单页面,且所述新索引数据组包括的新索引值大于所 述最小索引值时,将所述新索引值减去所述最小索引值计算差值delta3 ;
[0074] 所述物理存储单元,还用于将所述索引位图中的第delta3个位置的标记位置位; 删除所述新索引数据组中的索引值,以生成仅包括元组地址的新的压缩索引数据组;按照 新索引值对应的delta3在索引位图中的高低位顺序,确定所述新的压缩索引数据组与其 它已存储的压缩索引数据组之间的存储顺序;按照已确定的存储顺序,将所述新的压缩索 引数据组存储在所述单页面内。
[0075] 结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述物理 存储单元还用于在所述delta3大于所述索引位图的标志位数量时,则从所述索引位图的 最高位起按照低位到高位的顺序添加标识位,以使得所述索引位图的标志位数量不小于所 述delta3 ;将添加了标志位的索引位图中的第delta3个位置的标记位置位。
[0076] 结合第三方面,在第四种可能的实现方式中,所述存储控制器还用于在所述单页 面内存储的数据需要分配至至少两个页面时,根据索引位图已置位的标志位,确定每个压 缩索引数据组对应的索引值与所述最小索引值之间的差值;根据已确定的差值以及所述最 小索引值,确定每个压缩索引数据组对应的索引值;将索引值与对应的压缩索引数据组进 行合并生成原始索引数据组;根据分裂规则将新生成的原始索引数据组分别存储至至少两 个页面中。
[0077] 结合第三方面,在第五种可能的实现方式中,所述存储控制器,还用于获取待查询 索引记录,所述待查询索引记录包括索引数据偏移量offnum;确定所述索引位图中从低到 高起第offnum个已置位的标志位在所述索引位图的位置;根据从低到高起第offnum个已 置位的标志位在所述索引位图的位置,计算待查询索引值与所述最小索引值的差值;根据 已确定的差值以及所述最小索引值,确定待查询索引值。
[0078] 本发明实施例提供了一种索引数据的存储方法、装置及存储设备,通过使用位图 的方式对索引数据进行压缩,使得数据存储页面只需要最小索引值以及索引位图,相比于 现有技术中在无重复前缀的情况下需要存储所有索引值来讲,明显降低了索引数据的存储 量,使得单页面可存储的剩余空间增多,提高了压缩效率。

【专利附图】

【附图说明】
[0079] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
[0080] 图1为本发明实施例提供的一种索引数据的存储方法流程图;
[0081] 图2为本发明实施例提供的另一种索引数据的存储方法流程图;
[0082] 图3为本发明实施例提供的另一种索引数据的存储方法流程图;
[0083] 图4为本发明实施例提供的另一种索引数据的存储方法流程图;
[0084] 图5为本发明实施例提供的另一种索引数据的存储方法流程图;
[0085] 图6为本发明实施例提供的另一种索引数据的存储方法流程图;
[0086] 图7为本发明实施例提供的一种索引数据的存储装置的组成框图;
[0087] 图8为本发明实施例提供的另一种索引数据的存储装置的组成框图;
[0088] 图9为本发明实施例提供的另一种索引数据的存储装置的组成框图;
[0089] 图10为本发明实施例提供的另一种索引数据的存储装置的组成框图;
[0090] 图11为本发明实施例提供的另一种索引数据的存储装置的组成框图;
[0091] 图12为本发明实施例提供的一种用于索引数据的存储设备的组成框图。

【具体实施方式】
[0092] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0093] 本发明实施例提供的一种索引数据的存储方法,其方法流程如图1所示,具体包 括:
[0094] 101、获取单页面内所有原始索引数据组。
[0095] 所述单页面指的是单个数据储存页面,用于存储索引数据。
[0096] 其中,单个原始索引数据组指的是页面内存储的单个索引记录的一种存储形式, 包括单个索引对应的元组地址和索引值,并且在所述单页面内存储的索引值是唯一且有序 的。在所述单页面内存储的索引值是唯一且有序的是指在该页面中存储的索引值没有重 复,且索引值的存储顺序符合数值从小到大或从大到小或字母在字典中的排列顺序等。
[0097] 102、在所述单页面中建立索引位图。
[0098] 其中,所述索引位图是指能够要来表示索引值的二进制数列,即BitMap。
[0099] 需要说明的是,建立索引位图时,需要在当前数据存储页面中预留一定的存储空 间,同时对索引位图进行初始化,一般初始化为〇,其大小一般为经验值,以100B为数量级。 [0100] 103、确定并存储所述单页面内的最小索引值。
[0101] 一般情况下,最小索引值的存储地址应尽量与索引位图的存储地址连续。
[0102] 104、将每个索引值分别减去所述最小索引值计算差值de 1 ta 1,并将所述索引位图 中的第deltal个位置的标记位置位。
[0103] 其中,每个索引数据组中的元组地址、索引值、以及由该索引值减去最小索引值得 到的差值三者中两两之间唯一对应。
[0104] 在此举例说明步骤104的实现:当第一个索引值为3,第二个索引值为5,第三个索 引值为9且索引位图初始化为0时,先确定单页面内的最小索引值为3,然后分别用这三个 有序的索引值减去该最小索引值3,得到的差值deltal为0,2,6,此时将索引位图中的第0, 2,6个位置的标记位标记为1,对应的索引位图为1010001。
[0105] 105、删除每个原始索引数据组中的索引值,以生成仅包括元组地址的压缩索引数 据组。
[0106] 106、按照索引值对应的deltal在索引位图中的高低位顺序将每个原始索引数据 组对应的压缩索引数据组重新存储在所述单页面内。
[0107] 例如,若索引位图为1010001,则第0位表示的索引值对应的压缩索引数据组应该 存储在第2位表示的索引值对应的压缩索引数据组之前,第2位表示的索引值对应的压缩 索引数据组应该存储在第6位表示的索引值对应的压缩索引数据组之前。
[0108] 在使用本发明实施例提供的索引压缩方法后,若默认数据存储页面大小为8KB,单 个原始索引数据组大小为12B,则一个数据存储页面可以存储约666个索引;压缩以后,我 们预留的位图空间是125B,压缩索引数据组的大小变为12 - 4 = 8B,此时一个数据存储页 面可以存储984个索引。
[0109] 本发明实施例提供了一种索引数据的存储方法,通过使用位图的方式对索引数据 进行压缩,使得数据存储页面只需要最小索引值以及索引位图,相比于现有技术中在无重 复前缀的情况下需要存储所有索引值来讲,明显降低了索引数据的存储量,使得单页面可 存储的剩余空间增多,提高了压缩效率。
[0110] 在通过执行上述步骤101至106后,本发明技术方案建立了以位图为存储方式的 索引数据存储结构,此时,若需要在当前页面插入新的原始索引数据组,在本发明实施例的 一种可能的实现方式中,针对所述新索引数据组包括的新索引值小于所述最小索引值的情 况,提供了一种存储新的压缩索引数据组的方法,如图2所示,具体包括:
[0111] 201、将所述最小索引值减去所述新索引值计算差值delta2,并将所述索引位图向 高位移动所述delta2以生成新的索引位图,同时将最低位置位。
[0112] 例如当前最小索引值为3,索引位图为1010001,新的索引值为2,则delta2为1, 此时需将索引位图1010001向高位移动1位,生成新的索引位图01010001,然后将最低位置 位生成索引位图11010001。
[0113] 202、将已存储的最小索引值替换为所述新索引值。
[0114] 203、删除所述新的索引数据组中的索引值,以生成仅包括元组地址的新的压缩索 引数据组。
[0115] 204、按照所述索引值对应的delta2在索引位图中的位置,将所述新的压缩索引 数据组存储在所述单页面内。
[0116] 步骤204中有关新的压缩索引数据组的存储顺序的判断方法与步骤106的描述一 致,在此不再赘述。
[0117] 在通过执行上述步骤101至106后,本发明技术方案建立了以位图为存储方式的 索引数据存储结构,此时,若需要在当前页面插入新的原始索引数据组,在本发明实施例的 一种可能的实现方式中,针对所述新索引数据组包括的新索引值大于所述最小索引值的情 况,提供了一种存储新的压缩索引数据组的方法,如图3所示,具体包括:
[0118] 301、将所述新索引值减去所述最小索引值计算差值delta3,并将所述索引位图中 的第delta3个位置的标记位置位。
[0119] 302、删除所述新索引数据组中的索引值,以生成仅包括元组地址的新的压缩索引 数据组。
[0120] 303、按照新索引值对应的delta3在索引位图中的高低位顺序,确定所述新的压 缩索引数据组与其它已存储的压缩索引数据组之间的存储顺序。
[0121] 304、按照已确定的存储顺序,将所述新的压缩索引数据组存储在所述单页面内。
[0122] 需要说明的是,在执行步骤301中的流程将所述索引位图中的第delta3个位置 的标记位置位之前,若当所述delta3大于所述索引位图的标志位数量,表示当前索引位图 不能表示该新插入的索引值,此时,在本发明实施例的另一种可能的实现方式中,针对该情 况,还提供了以下方法流程,执行与步骤301中的流程将所述索引位图中的第delta3个位 置的标记位置位之前,如图4所示,具体包括:
[0123] 401、从所述索引位图的最高位起按照低位到高位的顺序添加标志位,以使得所述 索引位图的标志位数量不小于所述delta3。
[0124] 例如当前最小索引值为3,索引位图为1010001,新的索引值为10,则delta3为7, 此时需将索引位图1010001在高位处再添加1位,生成新的索引位图10100010。
[0125] 此时步骤301中将所述索引位图中的第delta3个位置的标记位置位的流程可替 换为步骤402、将添加了标志位的索引位图中的第delta3个位置的标记位置位。
[0126] 在通过执行上述步骤101至106后,本发明技术方案建立了以位图为存储方式的 索引数据存储结构,若此时一个数据页面存储空间已满,系统可以指示将一个页面的数据 分裂至两个页面内进行存储,在本发明实施例的另一种可能的实现方式中,提供了一种基 于位图存储的索引数据的分裂方法,如图5所示,具体包括:
[0127] 501、根据索引位图已置位的标志位,确定每个压缩索引数据组对应的索引值与所 述最小索引值之间的差值。
[0128] 502、根据已确定的差值以及所述最小索引值,确定每个压缩索引数据组对应的索 引值。
[0129] 503、将索引值与对应的压缩索引数据组进行合并生成原始索引数据组。
[0130] 504、根据分裂规则将新生成的原始索引数据组分别存储至至少两个页面中。
[0131] 其中,所述分裂规则为符合行业标准的五五或九一分裂规则。
[0132] 另外,进行分裂后,在新的页面中,索引数据的存储方式依然应该遵循步骤101至 106所示的方法流程。
[0133] 在本发明实施例的另一种可能的实现方式中,还提供了一种读取索引值的方法, 如图6所示,具体包括:
[0134] 601、获取待查询索引记录,所述待查询索引记录包括索引数据偏移量offnum。
[0135] 602、确定所述索引位图中从低到高起第offnum个已置位的标志位在所述索引位 图的位置。
[0136] 603、根据从低到高起第offnum个已置位的标志位在所述索引位图的位置,计算 待查询索引值与所述最小索引值的差值。
[0137] 604、根据已确定的差值以及所述最小索引值,确定待查询索引值。
[0138] 例如,待查询索引记录携带的索引数据偏移量offnum为3,并且此时最小索引值 为3,索引位图为1010001,那么定所述索引位图中从低到高起第3个已置位的标志位在所 述索引位图的位置为第6位,则对应的索引值为3+6 = 9,即待查询索引值为9。
[0139] 本发明实施例还提供了一种索引数据的存储装置,可用于实现如图1至图6所示 的方法流程,其组成如图7所示,包括:
[0140] 获取单元71,用于获取单页面内所有原始索引数据组;其中,单个原始索引数据 组包括单个索引对应的元组地址和索引值,并且在所述单页面内存储的索引值是唯一且有 序的。
[0141] 建立单元72,用于在所述单页面中建立索引位图。
[0142] 确定单元73,用于确定所述单页面内的最小索引值。
[0143] 计算单元74,用于将每个索引值分别减去所述最小索引值计算差值deltal。
[0144] 置位单元75,用于将所述索引位图中的第deltal个位置的标记位置位。
[0145] 删除单元76,用于删除每个原始索引数据组中的索引值,以生成仅包括元组地址 的压缩索引数据组。
[0146] 存储单元77,用于存储所述单页面内的最小索引值;以及用于按照索引值对应的 deltal在索引位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新存 储在所述单页面内。
[0147] 可选的是,如图8所示,该装置还包括:第一位图调整单元81。
[0148] 所述第一位图调整单元81,用于在存在一个新索引数据组存储至所述单页面,且 所述新索引数据组包括的新索引值小于所述最小索引值时,将所述最小索引值减去所述新 索引值计算差值delta2,并将所述索引位图向高位移动所述delta2以生成新的索引位图。
[0149] 所述置位单元75,用于将最低位置位。
[0150] 所述删除单元76,用于删除所述新的索引数据组中的索引值,以生成仅包括元组 地址的新的压缩索引数据组。
[0151] 所述存储单元77,用于将已存储的最小索引值替换为所述新索引值;以及用于按 照所述索引值对应的delta2在索引位图中的位置,将所述新的压缩索引数据组存储在所 述单页面内。
[0152] 可选的是,如图9所示,该装置还包括:第二位图调整单元82。
[0153] 所述第二位图调整单元82,用于在存在一个新索引数据组存储至所述单页面,且 所述新索引数据组包括的新索引值大于所述最小索引值时,将所述新索引值减去所述最小 索引值计算差值delta3。
[0154] 所述置位单元75,用于将所述索引位图中的第delta3个位置的标记位置位。
[0155] 所述删除单元76,用于删除所述新索引数据组中的索引值,以生成仅包括元组地 址的新的压缩索引数据组。
[0156] 所述确定单元73,用于按照新索引值对应的delta3在索引位图中的高低位顺序, 确定所述新的压缩索引数据组与其它已存储的压缩索引数据组之间的存储顺序。
[0157] 所述存储单元77,用于按照已确定的存储顺序,将所述新的压缩索引数据组存储 在所述单页面内。
[0158] 可选的是,如图10所示,该装置还包括:第三位图调整单元83。
[0159] 所述第三位图调整单元83,用于在所述delta3大于所述索引位图的标志位数量 时,则从所述索引位图的最高位起按照低位到高位的顺序添加标识位,以使得所述索引位 图的标志位数量不小于所述delta3。
[0160] 所述置位单元75,用于将添加了标志位的索引位图中的第delta3个位置的标记 位置位。
[0161] 可选的是,还包括:合并单元84。
[0162] 所述确定单元73,用于在所述单页面内存储的数据需要分配至至少两个页面时, 根据索引位图已置位的标志位,确定每个压缩索引数据组对应的索引值与所述最小索引值 之间的差值;以及用于根据已确定的差值以及所述最小索引值,确定每个压缩索引数据组 对应的索引值。
[0163] 合并单元84,用于将索引值与对应的压缩索引数据组进行合并生成原始索引数据 组。
[0164] 所述存储单元77,用于根据分裂规则将新生成的原始索引数据组分别存储至至少 两个页面中。
[0165] 可选的是,所述获取单元71,用于获取待查询索引记录,所述待查询索引记录包括 索引数据偏移量offnum。
[0166] 所述确定单元73,用于确定所述索引位图中从低到高起第offnum个已置位的标 志位在所述索引位图的位置。
[0167] 所述计算单元74,用于根据从低到高起第offnum个已置位的标志位在所述索引 位图的位置,计算待查询索引值与所述最小索引值的差值。
[0168] 所述确定单元73,还用于根据已确定的差值以及所述最小索引值,确定待查询索 引值。
[0169] 本发明实施例提供了一种索引数据的存储装置,通过使用位图的方式对索引数据 进行压缩,使得数据存储页面只需要最小索引值以及索引位图,相比于现有技术中在无重 复前缀的情况下需要存储所有索引值来讲,明显降低了索引数据的存储量,使得单页面可 存储的剩余空间增多,提高了压缩效率。
[0170] 本发明实施例还提供了一种存储设备,如图12所示,包括存储控制器91、物理存 储单元92、输入输出接口 93 :所述存储控制器91通过调用计算机程序以控制物理存储单元 92的读写,以及输入输出接口 93的信号传输;
[0171] 所述存储控制器91,用于获取单页面内所有原始索引数据组;其中,单个原始索 引数据组包括单个索引对应的元组地址和索引值,并且在所述单页面内存储的索引值是唯 一且有序的;在所述单页面中建立索引位图;确定所述单页面内的最小索引值;将每个索 引值分别减去所述最小索引值计算差值deltal,并将所述索引位图中的第deltal个位置 的标记位置位;删除每个原始索引数据组中的索引值,以生成仅包括元组地址的压缩索引 数据组。
[0172] 所述物理存储单元92,用于存储所述最小索引值、索引位图以及按照索引值对应 的deltal在索引位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新 存储在所述单页面内。
[0173] 可选的是,所述存储控制器91,还用于在存在一个新索引数据组存储至所述单页 面,且所述新索引数据组包括的新索引值小于所述最小索引值时,将所述最小索引值减去 所述新索引值计算差值delta2。
[0174] 所述物理存储单元92,用于将所述索引位图向高位移动所述delta2以生成新的 索引位图,同时将最低位置位;删除所述新的索引数据组中的索引值,以生成仅包括元组地 址的新的压缩索引数据组;将已存储的最小索引值替换为所述新索引值;按照所述索引值 对应的delta2在索引位图中的位置,将所述新的压缩索引数据组存储在所述单页面内。
[0175] 可选的是,所述存储控制器91还用于在存在一个新索引数据组存储至所述单页 面,且所述新索引数据组包括的新索引值大于所述最小索引值时,将所述新索引值减去所 述最小索引值计算差值delta3。
[0176] 所述物理存储单元92,还用于将所述索引位图中的第delta3个位置的标记位置 位;删除所述新索引数据组中的索引值,以生成仅包括元组地址的新的压缩索引数据组; 按照新索引值对应的delta3在索引位图中的高低位顺序,确定所述新的压缩索引数据组 与其它已存储的压缩索引数据组之间的存储顺序;按照已确定的存储顺序,将所述新的压 缩索引数据组存储在所述单页面内。
[0177] 可选的是,所述物理存储单元92还用于在所述delta3大于所述索引位图的标志 位数量时,则从所述索引位图的最高位起按照低位到高位的顺序添加标识位,以使得所述 索引位图的标志位数量不小于所述delta3 ;将添加了标志位的索引位图中的第delta3个 位置的标记位置位。
[0178] 可选的是,所述存储控制器91还用于在所述单页面内存储的数据需要分配至至 少两个页面时,根据索引位图已置位的标志位,确定每个压缩索引数据组对应的索引值与 所述最小索引值之间的差值;根据已确定的差值以及所述最小索引值,确定每个压缩索引 数据组对应的索引值;将索引值与对应的压缩索引数据组进行合并生成原始索引数据组; 根据分裂规则将新生成的原始索引数据组分别存储至至少两个页面中。
[0179] 可选的是,所述存储控制器91,还用于获取待查询索引记录,所述待查询索引记录 包括索引数据偏移量offnum ;确定所述索引位图中从低到高起第offnum个已置位的标志 位在所述索引位图的位置;根据从低到高起第offnum个已置位的标志位在所述索引位图 的位置,计算待查询索引值与所述最小索引值的差值;根据已确定的差值以及所述最小索 引值,确定待查询索引值。
[0180] 本发明实施例提供了一种用于索引数据的存储设备,通过使用位图的方式对索引 数据进行压缩,使得数据存储页面只需要最小索引值以及索引位图,相比于现有技术中在 无重复前缀的情况下需要存储所有索引值来讲,明显降低了索引数据的存储量,使得单页 面可存储的剩余空间增多,提高了压缩效率。
[0181] 通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借 助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳 的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部 分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计 算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0182] 以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何 熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【权利要求】
1. 一种索引数据的存储方法,其特征在于,包括: 获取单页面内所有原始索引数据组;其中,单个原始索引数据组包括单个索引对应的 元组地址和索引值,并且在所述单页面内存储的索引值是唯一且有序的; 在所述单页面中建立索引位图; 确定并存储所述单页面内的最小索引值; 将每个索引值分别减去所述最小索引值计算差值deltal,并将所述索引位图中的第 deltal个位置的标记位置位; 删除每个原始索引数据组中的索引值,以生成仅包括元组地址的压缩索引数据组; 按照索引值对应的deltal在索引位图中的高低位顺序将每个原始索引数据组对应的 压缩索引数据组重新存储在所述单页面内。
2. 根据权利要求1所述的方法,其特征在于,在所述按照索引值对应的deltal在索引 位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新存储在所述单页 面内之后,还包括: 当存在一个新索引数据组存储至所述单页面,且所述新索引数据组包括的新索引值小 于所述最小索引值时,将所述最小索引值减去所述新索引值计算差值delta2,并将所述索 引位图向高位移动所述delta2以生成新的索引位图,同时将最低位置位; 将已存储的最小索引值替换为所述新索引值; 删除所述新的索引数据组中的索引值,以生成仅包括元组地址的新的压缩索引数据 组; 按照所述索引值对应的delta2在索引位图中的位置,将所述新的压缩索引数据组存 储在所述单页面内。
3. 根据权利要求1所述的方法,其特征在于,在所述按照索引值对应的deltal在索引 位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新存储在所述单页 面内之后,还包括: 当存在一个新索引数据组存储至所述单页面,且所述新索引数据组包括的新索引值大 于所述最小索引值时,将所述新索引值减去所述最小索引值计算差值delta3,并将所述索 引位图中的第delta3个位置的标记位置位; 删除所述新索引数据组中的索引值,以生成仅包括元组地址的新的压缩索引数据组; 按照新索引值对应的delta3在索引位图中的高低位顺序,确定所述新的压缩索引数 据组与其它已存储的压缩索引数据组之间的存储顺序; 按照已确定的存储顺序,将所述新的压缩索引数据组存储在所述单页面内。
4. 根据权利要求3所述的方法,其特征在于,在所述将所述索引位图中的第delta3个 位置的标记位置位之前,还包括: 当所述delta3大于所述索引位图的标志位数量时,则从所述索引位图的最高位起按 照低位到高位的顺序添加标识位,以使得所述索引位图的标志位数量不小于所述delta3 ; 则将所述索引位图中的第delta3个位置的标记位置位包括: 将添加了标志位的索引位图中的第delta3个位置的标记位置位。
5. 根据权利要求1所述的方法,其特征在于,在所述按照索引值对应的deltal在索引 位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新存储在所述单页 面内之后,还包括: 当所述单页面内存储的数据需要分配至至少两个页面时,根据索引位图已置位的标志 位,确定每个压缩索引数据组对应的索引值与所述最小索引值之间的差值; 根据已确定的差值以及所述最小索引值,确定每个压缩索引数据组对应的索引值; 将索引值与对应的压缩索引数据组进行合并生成原始索引数据组; 根据分裂规则将新生成的原始索引数据组分别存储至至少两个页面中。
6. 根据权利要求1所述的方法,其特征在于,在所述按照索引值对应的deltal在索引 位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新存储在所述单页 面内之后,还包括: 获取待查询索引记录,所述待查询索引记录包括索引数据偏移量offnum ; 确定所述索引位图中从低到高起第offnum个已置位的标志位在所述索引位图的位 置; 根据从低到高起第offnum个已置位的标志位在所述索引位图的位置,计算待查询索 引值与所述最小索引值的差值; 根据已确定的差值以及所述最小索引值,确定待查询索引值。
7. -种索引数据的存储装置,其特征在于,包括: 获取单元,用于获取单页面内所有原始索引数据组;其中,单个原始索引数据组包括单 个索引对应的元组地址和索引值,并且在所述单页面内存储的索引值是唯一且有序的; 建立单元,用于在所述单页面中建立索引位图; 确定单元,用于确定所述单页面内的最小索引值; 计算单元,用于将每个索引值分别减去所述最小索引值计算差值deltal ; 置位单元,用于将所述索引位图中的第deltal个位置的标记位置位; 删除单元,用于删除每个原始索引数据组中的索引值,以生成仅包括元组地址的压缩 索引数据组; 存储单元,用于存储所述单页面内的最小索引值;以及用于按照索引值对应的deltal 在索引位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新存储在所 述单页面内。
8. 根据权利要求7所述的装置,其特征在于,还包括: 第一位图调整单元,用于在存在一个新索引数据组存储至所述单页面,且所述新索引 数据组包括的新索引值小于所述最小索引值时,将所述最小索引值减去所述新索引值计算 差值delta2,并将所述索引位图向高位移动所述delta2以生成新的索引位图; 所述置位单元,用于将最低位置位; 所述删除单元,用于删除所述新的索引数据组中的索引值,以生成仅包括元组地址的 新的压缩索引数据组; 所述存储单元,用于将已存储的最小索引值替换为所述新索引值;以及用于按照所述 索引值对应的delta2在索引位图中的位置,将所述新的压缩索引数据组存储在所述单页 面内。
9. 根据权利要求7所述的装置,其特征在于,在所述按照索引值对应的deltal在索引 位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新存储在所述单页 面内之后,还包括: 第二位图调整单元,用于在存在一个新索引数据组存储至所述单页面,且所述新索引 数据组包括的新索引值大于所述最小索引值时,将所述新索引值减去所述最小索引值计算 差值 delta3 ; 所述置位单元,用于将所述索引位图中的第delta3个位置的标记位置位; 所述删除单元,用于删除所述新索引数据组中的索引值,以生成仅包括元组地址的新 的压缩索引数据组; 所述确定单元,用于按照新索引值对应的delta3在索引位图中的高低位顺序,确定所 述新的压缩索引数据组与其它已存储的压缩索引数据组之间的存储顺序; 所述存储单元,用于按照已确定的存储顺序,将所述新的压缩索引数据组存储在所述 单页面内。
10. 根据权利要求9所述的装置,其特征在于,还包括: 所述第三位图调整单元,用于在所述delta3大于所述索引位图的标志位数量时,则从 所述索引位图的最高位起按照低位到高位的顺序添加标识位,以使得所述索引位图的标志 位数量不小于所述delta3 ; 所述置位单元,用于将添加了标志位的索引位图中的第delta3个位置的标记位置位。
11. 根据权利要求7所述的装置,其特征在于,还包括: 所述确定单元,用于在所述单页面内存储的数据需要分配至至少两个页面时,根据索 引位图已置位的标志位,确定每个压缩索引数据组对应的索引值与所述最小索引值之间的 差值;以及用于根据已确定的差值以及所述最小索引值,确定每个压缩索引数据组对应的 索引值; 合并单元,用于将索引值与对应的压缩索引数据组进行合并生成原始索引数据组; 所述存储单元,用于根据分裂规则将新生成的原始索引数据组分别存储至至少两个页 面中。
12. 根据权利要求7所述的装置,其特征在于,还包括: 所述获取单元,用于获取待查询索引记录,所述待查询索引记录包括索引数据偏移量 offnum ; 所述确定单元,用于确定所述索引位图中从低到高起第offnum个已置位的标志位在 所述索引位图的位置; 所述计算单元,用于根据从低到高起第offnum个已置位的标志位在所述索引位图的 位置,计算待查询索引值与所述最小索引值的差值; 所述确定单元,还用于根据已确定的差值以及所述最小索引值,确定待查询索引值。
13. -种存储设备,其特征在于,包括存储控制器、物理存储单元、输入输出接口 :所述 存储控制器通过调用计算机程序以控制物理存储单元的读写,以及输入输出接口的信号传 输; 所述存储控制器,用于获取单页面内所有原始索引数据组;其中,单个原始索引数据组 包括单个索引对应的元组地址和索引值,并且在所述单页面内存储的索引值是唯一且有序 的;在所述单页面中建立索引位图;确定所述单页面内的最小索引值;将每个索引值分别 减去所述最小索引值计算差值deltal,并将所述索引位图中的第deltal个位置的标记位 置位;删除每个原始索引数据组中的索引值,以生成仅包括元组地址的压缩索引数据组; 所述物理存储单元,用于存储所述最小索引值、索引位图以及按照索引值对应的 deltal在索引位图中的高低位顺序将每个原始索引数据组对应的压缩索引数据组重新存 储在所述单页面内。
14. 根据权利要求13所述的存储设备,其特征在于,所述存储控制器,还用于在存在一 个新索引数据组存储至所述单页面,且所述新索引数据组包括的新索引值小于所述最小索 引值时,将所述最小索引值减去所述新索引值计算差值delta2 ; 所述物理存储单元,用于将所述索引位图向高位移动所述delta2以生成新的索引位 图,同时将最低位置位;删除所述新的索引数据组中的索引值,以生成仅包括元组地址的新 的压缩索引数据组;将已存储的最小索引值替换为所述新索引值;按照所述索引值对应的 delta2在索引位图中的位置,将所述新的压缩索引数据组存储在所述单页面内。
15. 根据权利要求13所述的存储设备,其特征在于,所述存储控制器还用于在存在一 个新索引数据组存储至所述单页面,且所述新索引数据组包括的新索引值大于所述最小索 引值时,将所述新索引值减去所述最小索引值计算差值delta3 ; 所述物理存储单元,还用于将所述索引位图中的第delta3个位置的标记位置位;删除 所述新索引数据组中的索引值,以生成仅包括元组地址的新的压缩索引数据组;按照新索 引值对应的delta3在索引位图中的高低位顺序,确定所述新的压缩索引数据组与其它已 存储的压缩索引数据组之间的存储顺序;按照已确定的存储顺序,将所述新的压缩索引数 据组存储在所述单页面内。
16. 根据权利要求15所述的存储设备,其特征在于,所述物理存储单元还用于在所述 delta3大于所述索引位图的标志位数量时,则从所述索引位图的最高位起按照低位到高位 的顺序添加标识位,以使得所述索引位图的标志位数量不小于所述delta3 ;将添加了标志 位的索引位图中的第delta3个位置的标记位置位。
17. 根据权利要求13所述的存储设备,其特征在于,所述存储控制器还用于在所述单 页面内存储的数据需要分配至至少两个页面时,根据索引位图已置位的标志位,确定每个 压缩索引数据组对应的索引值与所述最小索引值之间的差值;根据已确定的差值以及所述 最小索引值,确定每个压缩索引数据组对应的索引值;将索引值与对应的压缩索引数据组 进行合并生成原始索引数据组;根据分裂规则将新生成的原始索引数据组分别存储至至少 两个页面中。
18. 根据权利要求13所述的存储设备,其特征在于,所述存储控制器,还用于获取待查 询索引记录,所述待查询索引记录包括索引数据偏移量offnum;确定所述索引位图中从低 到高起第offnum个已置位的标志位在所述索引位图的位置;根据从低到高起第offnum个 已置位的标志位在所述索引位图的位置,计算待查询索引值与所述最小索引值的差值;根 据已确定的差值以及所述最小索引值,确定待查询索引值。
【文档编号】G06F17/30GK104156407SQ201410364623
【公开日】2014年11月19日 申请日期:2014年7月29日 优先权日:2014年7月29日
【发明者】陆嘉恒, 杨宁, 刘泽隶, 安泽林, 李海丰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1