一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种构建索引方法及装置与流程

2022-02-24 14:11:31 来源:中国专利 TAG:


1.本技术涉及存储技术领域,尤其涉及一种构建索引方法及装置。


背景技术:

2.在互联网大数据应用以及云计算大数据应用等场景中,通常要求对大规模数据进行快速访问。为此,存储设备在存储数据的同时,通过会为该数据创建相应的索引,该索引提供了指向数据的指针。这样,存储设备在进行数据检索时,可以基于该索引快速查找到相应数据,从而实现数据的快速访问。
3.因此,如何构建出用于快速查找数据的索引,是目前亟需解决的重要问题。


技术实现要素:

4.本技术实施例提供了一种构建索引方法及装置,以构建出用于快速查找数据的索引。
5.第一方面,本技术实施例提供了一种构建索引方法,该方法可以应用于存储设备。具体的,存储设备可以将第一物理块与第二逻辑段关联,该第一物理块中存储有第一关键字以及该第一关键字对应的第一值,其中,该第一关键字与该第一关键字在第一物理块中的第一存储位置满足第一逻辑段对应的第一位置预测模型,这样,当关键字已知时,可以利用该第一位置预测模型预测出该关键字在第一物理块上的位置。然后,对于与该第一物理块相邻的第二物理块,存储设备可以判断该第二物理块中存储的第二关键字以及该第二关键字在第二物理块中的第二存储位置是否满足第一位置预测模型,该第二物理块中还存储有第二关键字对应的第二值。当第二关键字以及该第二存储位置不满足第一位置预测模型时,说明利用第一位置预测模型无法较为准确的预测出第二物理块上关键字的位置,此时,存储设备可以将该第二物理块与第二逻辑段关联,该第二关键字以及第二存储位置满足第二逻辑段对应的第二位置预测模型。
6.在构建索引的过程中,由于各个物理块上存储的关键字以及该关键字在物理块中的存储位置满足相应的位置预测模型,这样,在基于该索引进行数据检索时,可以通过所要查找的关键字以及相应的位置预测模型,确定该关键字所在的物理块,从而可以在该物理块中查找出该关键字对应的值。并且,由于存储设备是以物理块为单位关联逻辑段,这使得每个物理块中的不同关键字以及该关键字在物理块中的存储位置满足同一位置预测模型,因此,在进行数据检索时,基于该位置预测模型通常可以预测出该关键字所在的物理块,并在该物理块中查找出该关键字对应的值,而可以不用从多个物理块中查找该关键字对应的值,从而可以减少访问物理块的次数。
7.另外,如果存储设备为了使得每次所访问的物理块的数量达到最小,即所构建的索引中每个物理块的位置预测模型能够精确预测出每个关键字在物理块上的位置,或者每个位置预测模型至少能够预测出任意已知关键字所对应的物理块,则所构建的索引中需要记录有较多数量的位置预测模型(如为每个物理块记录有一个位置预测模型等),这就使得
存储设备需要较多的存储空间来存储索引。反之,若减少位置预测模型的数量,则存储设备所预测关键字所对应位置的准确性可能不高。因此,实际应用中,可以通过控制存储设备每次进行索引检索时允许访问物理块的最大数量,来达到存储空间与检索性能的平衡。
8.在一种可能的实施方式中,当第二关键字以及该第二存储位置满足第一位置预测模型时,说明利用第一位置预测模型可以较为准确的预测出第二物理块上各个关键字的位置,此时,存储设备可以将该第二物理块继续与第一逻辑段关联。这样,利用一个位置预测模型可以预测出两个物理块上各个关键字的位置。
9.在一种可能的实施方式中,在判断第二关键字以及第二关键字在第二物理块上的第二存储位置是否满足第一位置预测模型时,具体可以是将根据第二关键字,利用第一位置预测耐磨性计算出第二关键字在第二物理块中的预测位置,并比较该预测位置与该第二关键字在第二物理块上实际的第二存储位置之间的误差是否在预设误差范围内,若没有超出预设误差范围,则可以确定第二关键字以及第二关键字在第二物理块上的第二存储位置满足第一位置预测模型,而若超出预设误差范围,则可以确定第二关键字以及第二关键字在第二物理块上的第二存储位置不满足第一位置预测模型。
10.在一种可能的实施方式中,当存储有键值对的物理块的数量较多时,通常物理块所关联的逻辑段的数量也较多,相应的,存储设备所需的存储的位置预测数量也较多,为便于在进行索引检索时可以快速确定出存储有待检索关键字的物理块所对应的位置预测模型,存储设备还可以针对于第一逻辑段以及第二逻辑段构建上层索引,具体的,存储设备可以向索引块中写入第三关键字以及该第三关键字对应的第三值,该第三关键字可以包括与第一逻辑段关联的物理块中的关键字,并且,该第三值包括第一位置预测模型的模型描述值以及与该第一物理块的首地址。这样,存储设备在进行检索时,可以根据上层索引的位置预测模型,确定待检索关键字所对应的下层索引的位置预测模型,从而根据该下层索引的位置预测模型进一步预测出该待检索关键字所在物理块(或者在该物理块上的位置)。
11.在一种可能的实施方式中,上述第一位置预测模型包括线性拟合函数,该第一位置预测模型的模型描述值包括线性拟合函数的斜率倒数。当然,在其它可能的实施方式中,位置预测模型也可以是非线性拟合函数,如可以是神经网络等,能够预测出关键字所对应的物理块或者在该物理块上的位置。
12.在一种可能的实施方式中,上述第一位置预测模型所对应的斜率倒数,可以是通过对第一物理块上相邻两个关键字的差值的平均值进行取整确定的。这样,存储设备在进行关键字的位置预测时,可以不用进行浮点运算,从而可以降低存储设备预测关键字操作所需的计算开销,同时,也可以灵活支持不同长度的key。
13.在一种可能的实施方式中,第一逻辑段与第一物理块的关联关系,以及第二逻辑段与第二物理块的关联关系,可以位于lsm树的子树索引结构中。其中,lsm树中的子树,可以包括学习型索引以及支持数据修改、插入和更新的索引结构,并且,支持数据修改、插入和更新的索引结构所容纳的数据量较少,远小于学习型索引所容纳的数据量,这使得lsm树可以发挥出学习型索引在性能和成本上的优势,并且,lsm还能支持对数据的修改、插入和更新。
14.第二方面,本技术实施例还提供了一种构建索引装置,用于执行第一方面中任意一种实现方式所描述的方法。
15.第三方面,本技术实施例还提供了一种构建索引设备,该设备包括存储器和处理器,所述处理器用于执行所述存储器中存储的指令,以执行第一方面中任意一种实现方式所描述的方法。
16.本技术第四方面提供一种计算机可读介质,所述计算机可读介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
17.本技术第五方面提供一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
附图说明
18.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
19.图1为本技术实施例中一种构建索引的方法流程示意图;
20.图2为向物理块写入键值对的示意图;
21.图3为与第一逻辑段或者第二逻辑段关联物理块的示意图;
22.图4为本技术实施例构建的4层索引结构示意图;
23.图5为lsm树的结构示意图;
24.图6为lsm树的各层子树的数据规模示意图;
25.图7为本技术实施例提供的构建索引设备结构示意图;
26.图8为本技术实施例提供的构建索引装置结构示意图。
具体实施方式
27.本技术实施例提出了一种构建索引方法及装置,以构建出用于快速查找数据的索引。
28.参阅图1,示出了一种构建索引方法的流程示意图,该方法可以应用于存储设备。存储设备可以是服务器,也可以是存储阵列中的控制器等。该存储设备不仅可以存储有数据,还可以同时存储有该数据对应的索引,以便基于该索引快速访问数据。该方法具体可以包括:
29.s101:存储设备将第一物理块与第一逻辑段关联,该第一物理块中存储有第一关键字以及该第一关键字对应的第一值,该第一关键字与第一关键字在第一物理块中的第一存储位置满足第一逻辑段对应的第一位置预测模型。
30.通常情况下,存储设备可以基于键值对来为数据库中的数据建立索引。键值对,也可被称之为名值对或者属性值对,包括关键字(key)以及该关键字对应的值(value),该值通常可以是元数据。其中,关键字用于对元数据(值)进行标识,元数据为描述数据的数据,用于描述数据库中所存储数据的属性(特征)信息,如元数据可以是数据库中所存储数据的文件名、或者该数据的存储地址指针等。
31.本实施例中,在建立索引时,可以将多个键值对按照关键字的值(key值)大小进行依次排序,并按照排序顺序将多个键值对写入第一物理块中。其中,第一物理块可以具有4k或者8k字节大小,是持久化层数据下盘的友好粒度(当然,第一物理块也可以是其它大小,
本实施例对此并不进行限定)。为便于描述,以下将写入第一物理块的关键字称之为第一关键字,将写入第一物理块的值称之为第一值。应当理解,该第一关键字可以是一个或者多个关键字,相应的,第一值也可以是一个或者多个值。
32.作为一种示例,可以是基于如图2所示的写入方式将键值对写入第一物理块中。如图2所示,可以从第一物理块的块头(block header)结束的位置开始写入第一个键值对中的key1,从第一物理块的尾部开始写入第一个键值对中的value1。其中,在写入value1的同时,还可以同时写入该value1的类型(value type1)。然后,从key1结束的位置继续写入第二个键值对中的key2,并从value1的前一个位置处写入第二个键值对中的value2以及该value2的类型(value type2)。以此类推,可以向该第一物理块中依次写入key1、key2、key3、key4等多个key(也即为上述第一关键字),以及依次写入value1、value2、value3以及value4等多个value(也即为上述第一值),直至该第一物理块中的剩余存储空间无法继续写入新的键值对,则可以认为该第一物理块被填满数据。
33.其中,第一物理块中的块头,可以记录该第一物理块的相关信息,例如可以包括该第一物理块的循环冗余校验(cyclic redundancy check,crc)码、键值对的数量、第一物理块的类型(如可以是定长类型、或者变长类型等)、第一物理块在逻辑段中的位置等信息。
34.应当理解,图2所示的键值对写入方式仅作为一种示例性说明,并不用于对键值对的写入方式进行限定。比如,在其它可能的写入方式中,在写入第一个键值对中的key1后,可以在该key1的结束位置处继续写入value1,然后在value1的结束位置处继续依次写入第二个键值对中的key2以及value2等。
35.第一物理块被填满后,可以将该第一物理块与第一逻辑段(segment)进行关联。其中,该第一逻辑块对应于第一位置预测模型,该第一位置预测模型可以根据输入的关键字预测出与第一逻辑块关联的物理块上该关键字的位置。本实施例中,该第一位置预测模型可以是基于第一物理块中存储的第一关键字以及该第一关键字在第一物理块中的第一存储位置进行确定的。
36.在一种可能的实施方式中,该第一位置预测模型例如可以是单调拟合函数,则,存储设备可以是基于第一物理块中各个关键字的值以及各个关键字子第一物理块中的存储位置,进行函数拟合,得到随着key值的增加,表征存储位置的数值单调递增或者单调递减的拟合函数,也即为上述第一位置预测模型。
37.进一步的,该单调拟合函数可以是如下述公式(1)所示的线性拟合函数:
38.待检索关键字的槽位=(待检索关键字

起始关键字)/斜率倒数 起始槽位位置(1)
39.其中,待检索关键字,是指所需查找的关键字;起始关键字,是指第一物理块中存储的第一个关键字,例如图2所示的key1;起始槽位位置,是指第一物理块中存储第一个key的槽位,其数值可以为0(当然也可以是1等其它数值);斜率倒数,可以是通过计算第一物理块中相邻两个关键字的值之间的差值的平均值并进行取整得到。由于斜率倒数进行了取整,这样,基于公式(1)进行关键字的槽位计算时,可以不用进行浮点运算,从而可以降低预测关键字操作所需的计算开销,同时,也可以灵活支持不同长度的key。
40.当然,单调拟合函数也可以是其它线性拟合函数,比如,可以是针对于公式(1)进行适当的变换等;或者单调拟合函数,也可以是非线性拟合函数,但是其满足单调递增或者
单调递减的变换原则。本实施例中,对于单调拟合函数的具体呈现形式并不进行限定。
41.可以理解,第一物理块中存储的关键字的值,在空间上存在局部分布不均匀的可能,由此拟合得到的单调拟合函数可能无法准确的预测出每个关键字所对应的槽位,因此,基于单调拟合函数预测待检索关键字在第一物理块中的槽位,可能存在一定的误差。本实施例中,在进行函数拟合时,可以验证拟合得到的函数所预测的各个关键字在第一物理块上的位置,与该关键字在第一物理块上的实际位置之间的偏差是否均在预设的误差范围内(或者可以是验证预测错误率是否小于预设值),若是,则可以将该函数作为上述单调拟合函数,而若不是,则可以重新进行函数拟合,直至拟合出符合条件的单调拟合函数。进一步的,当单调拟合函数所预测的槽位上存储的关键字并非是待检索的关键字时,存储设备可以是将待检索的关键字与该预测槽位附近的一个或者多个槽位上存储的关键字进行比对,以确定待检索的关键字在第一物理块中存储的实际位置。然后,存储设备可以基于关键字以及该关键字对应的值在第一物理块中的写入方式,确定待检索的关键字所对应的值在第一物理块中的位置。以图2所示的写入方式为例,若确定待检索的关键字位于第一物理块的第3个槽位,则可以从第一物理块中存放value的倒数第三个位置处读取到该待检索的关键字所对应的value3。
42.值得注意的是,上述是以第一位置预测模型为单调拟合函数为例进行说明,在其它可能的实施例中,该第一位置预测模型也可以是其它表现形式,如可以是非单调函数,或者可以是机器学习模型等。总之,第一位置预测模型,可以是能够用于实现预测关键字在物理块上的位置的任意模型,不局限于上述单调拟合函数。
43.存储设备在将第一物理块与第一逻辑段关联后,可以继续向第二物理块写入其它关键字以及该其它关键字对应的值,并继续执行步骤s102,以确定是否将第二物理块也与第二逻辑段建立关联。其中,存储设备也可以是预先将键值对写入第一物理块以及第二物理块,然后再将各个物理块与相应的逻辑段关联,本实施例对此并不进行限定。为便于描述,以下将写入第二物理块的关键字称之为第二关键字,将写入第二物理块的值称之为第二值。
44.s102:存储设备判断第二物理块中存储的第二关键字以及该第二关键字在第二物理块中的第二存储位置是否满足第一位置预测模型,其中,该第二物理块中还存储有第二关键字对应的第二值,该第二物理块与第一物理块相邻。
45.s103:当第二关键字以及第二关键字在第二物理块中的第二存储位置不满足第一位置预测模型时,存储设备将第二物理块与第二逻辑段关联,此时,第二关键字以及第二关键字在第二物理块中的第二存储位置满足第二逻辑段对应的第二位置预测模型。
46.实际应用中,存储设备可以包括多个连续的、用于存储键值对的物理块,而上述第一物理块以及第二物理块即为该多个物理块中两个相邻的物理块。通常情况下,该第一物理块的尾地址与第二物理块的首地址连续。
47.存储设备可以利用第一位置预测模型预测第一物理块中各个关键字的位置,并且预测误差较小或者预测准确率较高。进一步的,存储设备还可以校验该第一位置预测模型,是否可以用于预测第二物理块中各个关键字的位置。如果第一位置预测模型所预测的各个关键字在第二物理块上的位置,与该关键字在第二物理块上的实际位置之间的偏差均在预设的误差范围内,或者针对于第二物理块上关键字位置的预测错误率小于预设值,则存储
设备可以将该第二物理块与第一逻辑段关联,如图3上方所示。这样,基于第一逻辑段对应的第一位置预测模型可以预测出第一物理块以及第二物理块中各个关键字在物理块上的位置。而若第一位置预测模型所预测的各个关键字在第二物理块上的位置,与该关键字在第二物理块上的实际位置之间的偏差较大,超出预设的误差范围,或者针对于第二物理块上关键字位置的预测错误率小于预设值,则存储设备可以将该第二物理块关联至其它的逻辑段,以下称之为第二逻辑段,如图3下方所示。其中,第二逻辑段可以对应于第二位置预测模型。
48.与第一位置预测模型类似,第二位置预测模型可以是基于第二物理块中存储的第二关键字以及该第二关键字在第二物理块中的第二存储位置进行确定的,例如可以是用于预测关键字位置的单调拟合函数或者机器学习模型等;相应的,存储设备利用该第二位置预测模型预测的第二物理块上各个关键字的预测位置与其实际位置之间的偏差可以均在预设范围内,或者预测错误率小于预设值。
49.上述过程,是以两个物理块关联相同或者不同逻辑段作为示例进行描述,实际应用中,对于存储设备中与第二物理块连接的下一个物理块以及更多其它的物理块,均可以采用上述类似的方式与相应的逻辑段建立关联。值得注意的是,一个物理块可以仅关联一个逻辑段,而一个逻辑段可以关联一个物理块,或者关联多个连续的物理块。
50.这样,通过将各个物理块与相应逻辑段建立关联,可以构建出相应的索引。并且,在构建索引的过程中,各个物理块上存储的关键字以及该关键字在物理块中的存储位置满足相应的位置预测模型,这样,在基于该索引进行数据检索时,可以通过所要查找的关键字以及相应的位置预测模型,确定该关键字所在的物理块,从而可以在该物理块中查找出该关键字对应的值。并且,由于存储设备是以物理块为单位关联逻辑段,这使得每个物理块中的不同关键字以及该关键字在物理块中的存储位置满足同一位置预测模型,因此,在进行数据检索时,基于该位置预测模型通常可以预测出该关键字所在的物理块,并在该物理块中查找出该关键字对应的值,而可以不用从多个物理块中查找该关键字对应的值,从而可以减少访问物理块的次数。
51.由于存储设备中写入键值对的物理块较多,这使得将物理块与逻辑段关联后,从而存储设备需要为较多的逻辑段较多数量的位置预测模型。为便于查找待检索关键字所适用的位置预测模型,在进一步可能的实施方式中,存储设备还可以为各个逻辑段再建立一层索引。
52.在一种示例性的具体实施方式中,可以提取与逻辑段关联的第一个物理块中的第一个关键字以及该第一个物理块中的首地址,同时,还可以提取该逻辑段对应的模型描述值,并基于这些信息构建出新的键值对,并将该新的键值对存储于新的物理块中。假设第一逻辑段仅关联了第一物理块,则存储设备可以针对于第一逻辑段,提取第一物理块中第一个关键字、该第一物理块的首地址、该第一逻辑段对应的第一位置预测模型的模型描述值,示例性的,当第一位置预测模型为线性拟合函数时,该模型描述值具体可以是该线性拟合函数的斜率倒数。然后,存储设备可以将提取出的该第一个关键字作为新键值对中的key(以下称之为第三关键字),并将提取出的首地址以及模型描述值拼接成新键值对中的value(以下称之为第三值),从而形成新的键值对(key-value)。最后,存储设备可以将该新的键值对写入索引块中。其中,该索引块可以是物理块,但是,区别于第一物理块以及第二
物理块存储关键字与元数据,索引块用于存储下层索引的模型描述值、物理块地址等数据。类似的,针对于第二逻辑段同样可以基于形成新的键值对,并将该键值对也写入该索引块中。当然,本实施例中,是以将第一物理块中的第一个关键字作为第三关键字为例进行说明,在其它实施例中,也可以是将第一物理块中的任意一个关键字作为该第三关键字,如第一物理块中的最后一个关键字等,本实施例对此并不进行限定。
53.实际应用中,针对于每个逻辑段,均可以形成与其对应的键值对,并将各个键值对按照关键字的值进行排序后依次写入索引块中。可以理解,当索引块中剩余存储空间不足以支持更多逻辑段对应的键值对写入时,可以利用与该索引块相邻的下一索引块存储未写入的键值对,其键值对的写入方式可以参照前述向第一物理块中写入键值对的方式,在此不做赘述。
54.与第一物理块以及第二物理块关联逻辑段的实现方式类似,存储设备可以将索引块与第三逻辑段关联,并基于该索引块中存储的第三关键字以及该第三关键字对应的第三值,拟合出第三位置预测模型。其中,拟合得到第三位置预测模型的具体实现过程,可以参见前述拟合得到第一位置预测模型的相关之处描述,在此不做赘述。这样,基于第三逻辑段对应的第三位置预测模型,可以预测出待检索关键字在索引块上的第三存储位置,从而可以将待检索关键字与第三存储位置处的关键字进行比较。为便于描述,以下假设按照第三关键字的值从小到大的顺序写入索引块,并且第三位置预测模型具体为单调拟合函数为例进行示例性说明,对于第三关键字的值按照从大到小的顺序写入索引块时的具体实现,可以参照理解。
55.如果两个关键字的值相同,则存储设备可以根据预测位置处的关键字确定该关键字对应的值,该值包括了下一层的某个逻辑段关联的第一个物理块的首地址以及函数描述值,从而存储设备可以根据该函数描述值确定该逻辑段对应的单调拟合函数,并基于单调拟合函数进一步预测出待检索关键字在物理块上的存储位置,从而存储设备可以基于该预测出的存储位置以及第一个物理块的首地址确定该待检索关键字对应的值,完成检索过程。
56.如果待检索关键字在索引块上的第三存储位置处的关键字的值小于待检索关键字的值,则存储设备可以从第三逻辑段关联的物理块上向后查找,确定第一个大于或者等于该待检索关键字的值的第三关键字,并根据该第三关键字在索引块上的位置确定该第三关键字对应的值,该值包括了下一层的某个逻辑段关联的第一个物理块的首地址以及函数描述值,从而可以参照上述检索过程,基于该首地址以及函数描述值检索出待检索关键字对应的值,完成检索过程。
57.如果待检索关键字在索引块上的第三存储位置处的关键字的值大于待检索关键字的值,则存储设备可以从第三逻辑段关联的物理块上向前查找,确定第一个小于或者等于该待检索关键字的值的第三关键字,并根据该第三关键字在索引块上的位置确定该第三关键字对应的值,该值包括了下一层的某个逻辑段关联的第一个物理块的首地址以及函数描述值,从而可以参照上述检索过程,基于该首地址以及函数描述值检索出待检索关键字对应的值,完成检索过程。
58.当然,如果索引块上存储的各个关键字并未按照关键字的值递增或者递减的顺序进行存储,并且,待检索关键字与第三存储位置处的关键字的值不同,则存储设备可以遍历
该索引块上各个第三关键字,以确定出索引块上与该待检索关键字具有相同值的第三关键字。而若遍历失败,则存储设备可以在与该索引块相邻的其它索引块上继续进行关键字遍历,以确定出其它索引块上存储的与该待检索关键字具有相同值的关键字。
59.如上述过程,可以形成两层索引。实际应用中,存储设备还可以提取与第三逻辑段关联的第一个物理块(也即上述索引块)中的第一个关键字以及该第一个物理块中的首地址,同时,还可以提取该第三逻辑段对应的模型描述值,并基于这些信息构建出新的键值对,并将该新的键值对存储于新的物理块中,并按照上述类似过程,为该第三逻辑段再建立一层索引。如此,存储设备可以通过多次迭代,可以形成多层索引结构,例如可以是形成如图4所示的索引结构。
60.图4体现了4层索引结构,包括第1层至第4层。其中,第1层中的物理块可以是与作为根节点的逻辑段关联的物理块,第2层以及第3层中的物理块可以是与作为中间节点的逻辑段关联的物理块(第1层至第3层中的物理块在本实施例中也可被称为索引块),第4层中的物理块可以是与作为叶子节点的逻辑段关联的物理块,并且,每一层的逻辑段具有与其对应的位置预测模型。第4层的物理块中所存储的关键字对应的值为元数据,而第1层至第3层中各层物理块所存储的关键字均为其下一层逻辑段关联的第一个物理块中存储的第一个关键字,各层物理块所存储的关键字对应的值均为其下一层逻辑段关联的第一个物理块的首地址以及该逻辑段对应的模型描述值。当然,图4所示的索引结构仅作为一种示例,实际应用中,作为根节点的逻辑段可以关联多个物理块,或者,索引结构也可以是具有3层或者5层的结构。
61.在进行数据检索时,以图4所示的索引结构为例,可以先利用第1层的逻辑段对应的位置预测模型,预测出待检索关键字在与该逻辑段关联的物理块中的存储位置,并通过比较该存储位置处的关键字与待检索关键字之间的值大小,确定待检索关键字在第1层中对应的值(value),从而基于该值中的模型描述值,从第2层的多个逻辑段中确定与该模型描述值对应的逻辑段,并基于该模型描述值确定该逻辑段对应的位置预测模型。然后,存储设备可以基于该位置预测模型,预测出待检索关键字在与该逻辑段关联的物理块中的存储位置,并通过比较该存储位置出的关键字与待检索关键字之间的值大小,确定待检索关键字在第2层中对应的值,从而基于该值中的模型描述值,从第3层的多个逻辑段中确定与该模型描述值对应的逻辑段,并基于该模型描述值确定该逻辑段对应的位置预测模型。以此类推,可以从第4层的多个逻辑段中确定出相应的逻辑段,并基于该模型描述值确定该逻辑段对应的位置预测模型;然后,存储设备可以基于该位置预测模型,预测待检索关键字在第4层中物理块上的存储位置,并将该存储位置处的关键字与待检索关键字进行比较。若两个关键字相同,则根据待检索关键字在该物理块上的存储位置,确定该物理块上存储的待检索关键字所对应的值,完成数据检索。而当两个关键字不相同,则可以在与该逻辑段关联的物理块上基于存储位置向前或者向后读取关键字,并比较每次读取的关键字与待检索关键字,以在物理块上查找出与待检索关键字相同的关键字,进而确定出该物理块上存储的该待检索关键字所对应的值,完成数据检索。当然,若通过遍历该逻辑段关联的所有物理块上的关键字,确定没有与待检索关键字相同的关键字,则存储设备可以提示用户查询失败或者存储设备可以重新进行检索。
62.值得注意的是,在构建索引时,如果中间节点的逻辑段所关联的物理块数量越多,
表征所构建的索引中包含的位置预测模型越多,从而对于待检索关键字的预测通常会越准确,理想情况下,位置预测模型能够准确的预测出每个关键字在物理块上的位置,从而存储设备可以精确预测出最底层的物理块上存储的待检索关键字所对应的值,从而存储设备所需访问的物理块的数量可以得到减少,但是,与此同时,由于需要额外存储大量的位置预测模型,这使得中间节点所占用的存储空间较多(中间节点的物理块数量较多),从而使得索引所需的存储空间较大,存储开销较高。而若减少索引中的位置预测模型,比如将原有的两个位置预测模型拟合成一个模型,则存储设备预测关键字在物理块上的位置的准确性可能不高,从而容易导致存储设备通常需要额外访问多个物理块才能查找到待检索关键字所对应的值,而在当前的存储设备中,访问物理块所存在的开销和时延往往是较高的,相对于访问物理块而言,比较同一物理块上的关键字与待检索关键字所需的开销和时延通常较小,甚至可以忽略不计。因此,实际应用中,在构建索引的过程中,可以通过控制存储设备基于位置预测模型访问物理块所存在的偏差来确定位置预测模型的数量,以此平衡中间节点所占用的存储空间以及存储设备的检索性能,其中,基于位置预测模型访问物理块所存在的偏差,例如可以是基于位置预测模型的预测结果访问的物理块与实际需要访问的物理块之间的偏差比例(或者正确率/错误率等)。当然,存储设备也可以是通过限制一次检索过程中所允许访问物理块的最大数量来确定位置预测模型的数量等。
63.距离来说,假设存储设备访问物理块所存在的偏差为0时中间节点所需占用的内存空间为20mb(兆字节),则存储设备通过将多个位置预测模型拟合成一个模型等方式,减少位置预测模型的数量,从而使得中间节点占用的内存空间减少为15mb,相应的,存储设备访问物理块所存在的偏差率为5%;而若继续将减少中间节点所占用的内存空间至10mb,则存储设备访问物理块所存在的偏差率继续增加至20%,则可以根据实际应用中对于存储设备访问物理块所存在的最大偏差率来确定中间节点所占用的内存空间(也即位置预测模型的数量)。比如,若实际应用中所允许的最大偏差率为5%,则可以确定所构建的索引中中间节点所占用的内存空间为15mb。当然,此处仅作为一种示例,本实施例对于如何平衡中间节点所占用的内存空间以及存储设备访问物理块上所存在的偏差的具体实现并不进行限定。
64.在进一步可能的实施方式中,上述构建索引的实现过程可以应用于分层机制的索引结构的合并过程。
65.以日志结构合并(log-structured merge,lsm)树这种广泛应用的数据索引结构为例。如图5所示,lsm树可以划分成n 1层(n为正整数),分别为l0层、l1层、
……
、ln层。其中,l0层的数据规模通常较小,l1层至ln层可以具有较大的数据规模。l0至ln层中的每一层,可以具有一个或者多个lsm树的子树,图5中以l0层包括4个子树为例,当然,实际应用中,l0层也可以是根据实际应用的需求包括其它任意数量的子树。
66.在向lsm树中写入新数据时,可以将新的元数据以及其对应的关键字以键值对(key-value)的形式写入l0层的子树中,如图5中将新数据写入l0层中的子树1中。在向子树1中写入数据时,该l0层的其它子树可以被配置为不可写入数据的状态,即同一时刻可以仅向一个子树中写入数据。在一些示例中,该子树1可以采用支持数据修改、插入和更新的索引结构,如b 树,artree等数据结构。而l0层中的其它子树以及l1至ln层中的子树,其可以是支持合并(merge)操作的学习型索引,通常情况下,学习型索引所需占用的空间较小,中间节点较少,运算速度较快,但是不支持数据修改、插入和更新。这样,lsm树这种索引结构
中不仅包括支持数据修改、插入和更新的索引结构,还包括学习型索引,从而可以使得lsm树这种索引结构可以支持数据的修改、插入和更新操作。同时,支持数据修改、插入和更新的索引结构所容纳的数据量较少,占比通常不到lsm树的1%,lsm树中99%以上的数据可以由学习型索引进行存储,这使得lsm树可以发挥出学习型索引在性能和成本上的优势。
67.随着新的数据的不断写入,子树1的数据模不断扩大,这使得子树1无法继续支持更多新数据的写入,同时,l0层中的数据规模也会随之不断扩大。为此,当子树1的数据量超出预设阈值(如256mb大小等)时,可以对子树1中的数据进行合并(merge),或者,当l0层中的数据量超出一定阈值(比如1gb大小等)时,可以对l0层中的数据进行合并,并将合并后所得到的数据写入至l1层中的子树。通常情况下,l1层中的子树的数据规模可以大于l0层中子树的数据规模。类似的,当l1层中的数据规模超出预设阈值(比如10g大小等),则可以对l1层中的数据进行合并,并将合并后所得到的数据写入至l2层中的子树,以此类推。在不断的合并以及写入过程中,下一层子树的数据规模通常越来越大,如图6所示。
68.每一层中的数据在进行合并的过程中,可以是将对应于相同key的value合并成新的value,并基于新的value与原有的key构建成新的键值对,该新的键值对的key不变,新的键值对的value为经过合并后所得到的新的value,以此可以淘汰lsm树中冗余的无效信息,以实现降低存储开销的目的。然后,存储设备可以将得到的新键值对进行序列化,即可以是按照关键字的值由小到大的顺序或者由大到小顺序写入当前层的子树或者下一层的子树中。在基于序列化后的键值对构建索引时,可以基于图1所示的构建索引的方式进行构建,以形成lsm树中各层的子树,从而上述第一逻辑段与第一物理块的关联关系以及第二逻辑段与第二物理块的关联关系(或者第一逻辑段分别与第一物理块以及第二物理块的关联关系),位于该子树的索引结构中。
69.以上结合图1至图6对本技术中存储元数据的方法进行介绍,接下来结合附图对本技术的设备、装置进行介绍。
70.参见图7所示的存储设备700的硬件结构示意图,该设备700可以包括至少一个存储器701和至少一个处理器702。
71.其中,处理器702可以为中央处理器(central processing unit,cpu)。存储器701可以包括易失性存储器(volatile memory),例如ram等。举例来说,ram可以是动态随机存取存储器(dynamic random access memory,dram),也可以是储存级存储器(storage class memory,scm)。dram是一种半导体存储器,与大部分ram一样,属于一种易失性存储器(volatile memory)设备。scm是一种同时结合传统储存装置与存储器特性的复合型储存技术,scm能够提供比硬盘更快速的读写速度,但运算速度上比dram慢,在成本上也比dram更为便宜。然而,dram和scm在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(static random access memory,sram)、同步动态随机存取内存(synchronous dynamic random-access memory,sdram)等。存储器701还可以包括非易失性存储器(non-volatile memory),例如可以是可编程只读存储器(programmable read only memory,prom)、可抹除可编程只读存储器(erasable programmable read only memory,eprom)、闪存(flash memory)等、快闪存储器、hdd、ssd等。
72.存储器701可以用于存储指令,处理器702与存储器701连接,例如可以是通过各类接口、传输线或总线等进行连接,处理器702基于所述连接可以读取存储器701中存储的指
令并执行,以执行如下步骤:
73.将第一物理块与第一逻辑段关联,所述第一物理块中存储有第一关键字以及所述第一关键字对应的第一值,所述第一关键字与所述第一关键字在所述第一物理块中的第一存储位置满足所述第一逻辑段对应的第一位置预测模型;
74.判断第二物理块中存储的第二关键字以及所述第二关键字在所述第二物理块中的第二存储位置是否满足所述第一位置预测模型,所述第二物理块中还存储有所述第二关键字对应的第二值,所述第二物理块与所述第一物理块相邻;
75.当所述第二关键字以及所述第二存储位置不满足所述第一位置预测模型时,将所述第二物理块与第二逻辑段关联,所述第二关键字以及所述第二存储位置满足所述第二逻辑段对应的第二位置预测模型。
76.在一种可能的实施方式中,处理器702执行存储器701中存储的指令,还可以执行如下步骤:
77.当所述第二关键字与所述第二存储位置满足所述第一位置预测模型时,将所述第二物理块与所述第一逻辑段关联。
78.在一种可能的实施方式中,处理器702执行存储器701中存储的指令,具体可以执行如下步骤:
79.根据所述第二关键字,利用所述第一位置预测模型计算出所述第二关键字在所述第二物理块中的预测位置;
80.比较所述预测位置与所述第二存储位置之间的误差是否在预设误差范围内;
81.则,所述第二关键字以及所述第二存储位置不满足所述第一位置预测模型,具体为所述预测位置与所述第二存储位置之间的误差超出所述预设误差范围。
82.在一种可能的实施方式中,处理器702执行存储器701中存储的指令,还可以执行如下步骤:
83.向索引块中写入第三关键字以及所述第三关键字对应的第三值,所述第三关键字包括与所述第一逻辑段关联的物理块中的关键字,所述第三值包括所述第一位置预测模型的模型描述值以及与所述第一物理块的首地址。
84.在一种可能的实施方式中,所述第一位置预测模型包括线性拟合函数,所述第一位置预测模型的模型描述值包括所述线性拟合函数的斜率倒数。
85.在一种可能的实施方式中,所述线性拟合函数的斜率倒数是对所述第一物理块中相邻两个关键字的差值的平均值进行取整确定的。
86.在一种可能的实施方式中,所述第一逻辑段与所述第一物理块的关联关系,以及所述第二逻辑段与所述第二物理块的关联关系位于日志结构合并树的子树索引结构中。
87.另外,本技术实施例还提供了一种构建索引装置。参见图8所示的构建索引装置的结构示意图,该装置800可以位于存储设备中。该装置800具体可以包括:
88.关联模块801,将第一物理块与第一逻辑段关联,所述第一物理块中存储有第一关键字以及所述第一关键字对应的第一值,所述第一关键字与所述第一关键字在所述第一物理块中的第一存储位置满足所述第一逻辑段对应的第一位置预测模型;
89.判断模块802,用于判断第二物理块中存储的第二关键字以及所述第二关键字在所述第二物理块中的第二存储位置是否满足所述第一位置预测模型,所述第二物理块中还
存储有所述第二关键字对应的第二值,所述第二物理块与所述第一物理块相邻;
90.所述关联模块801,还用于当所述第二关键字以及所述第二存储位置不满足所述第一位置预测模型时,将所述第二物理块与第二逻辑段关联,所述第二关键字以及所述第二存储位置满足所述第二逻辑段对应的第二位置预测模型。
91.在一种可能的实施方式中,所述关联模块801,还用于:
92.当所述第二关键字与所述第二存储位置满足所述第一位置预测模型时,将所述第二物理块与所述第一逻辑段关联。
93.在一种可能的实施方式中,所述判断模块802,具体用于:
94.利用所述第一位置预测模型计算出所述第二关键字在所述第二物理块中的预测位置;
95.比较所述预测位置与所述第二存储位置之间的误差是否在预设误差范围内;
96.则,所述第二关键字以及所述第二存储位置不满足所述第一位置预测模型,具体为所述预测位置与所述第二存储位置之间的误差超出所述预设误差范围。
97.在一种可能的实施方式中,所述装置800还包括:
98.写入模块803,用于向索引块中写入第三关键字以及所述第三关键字对应的第三值,所述第三关键字包括与所述第一逻辑段关联的物理块中的关键字,所述第三值包括所述第一位置预测模型的模型描述值以及与所述第一物理块的首地址。
99.在一种可能的实施方式中,所述第一位置预测模型包括线性拟合函数,所述第一位置预测模型的模型描述值包括所述线性拟合函数的斜率倒数。
100.在一种可能的实施方式中,所述线性拟合函数的斜率倒数是对所述第一物理块中相邻两个关键字的差值的平均值进行取整确定的。
101.在一种可能的实施方式中,所述第一逻辑段与所述第一物理块的关联关系,以及所述第二逻辑段与所述第二物理块的关联关系位于lsm树的子树索引结构中。
102.本技术实施例的装置可对应于执行本技术实施例中描述的方法。并且,将元数据存储装置800中的各个模块的上述和其它操作和/或功能分别为了实现图1中的各个方法的相应流程。以上各个模块的功能可参考图1所示的方法实施例中的描述。装置800中每个模块的功能均可由上述用于构建索引的设备700中的处理器702调用存储器701中的程序执行。
103.本技术实施例还提供一种计算机可读介质,所述计算机可读介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
104.本技术实施例还提供一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
105.另外需说明的是,以上所描述的实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本技术提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
106.本领域普通技术人员可以理解,前述的存储介质包括:u盘、移动硬盘、磁碟、光盘、
随机存储器(random-access memory,ram)、固态硬盘(solid state disk,ssd)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
107.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献