一种数据检索方法、装置及电子设备

文档序号:30648206发布日期:2022-07-05 23:26阅读:80来源:国知局
一种数据检索方法、装置及电子设备

1.本发明实施例涉及数据处理技术领域,尤其涉及一种数据检索方法、装置及电子设备。


背景技术:

2.在互联网的产业高速发展的今天,随着用户数量和互联网应用的快速增长,互联网内所产生的音视频等多媒体数据以及商业领域的大量电子数据呈指数级增长,导致了行业内对存储性能的要求也越来越高。
3.目前,企业级存储系统以及新兴的区块链储存系统大量采用了日志结构化合并树结构作为存储系统的数据结构,以求获得更优的写入性能。然而,日志结构化合并树结构以牺牲读性能而提高写性能的优化思路在云存储与区块链存储的应用场景下,难以适应其对高读写性能的要求。
4.目前,为了提高数据搜索的准确性、高效性,人们从算法优化、模型优化和机器学习技术等角度去探索数据索引的优化方法,根据日志结构化合并树中存储的海量数据,逐层地对于数据进行基于二分搜索的搜索方法,从而快速地从大量数据之中查询到对应数据的value值。然而需要从数千万个唯一数据编号中进行搜索,对于现有的基于日志结构化合并树的数据索引模型是一个巨大的挑战,因此,对于搜索指定数据来说,解决数据编号量大的问题至关重要,需要在保证搜索准确性的基础上,提出一个更加快速且资源占用率低的数据索引优化方法。
5.在目前的模型优化数据索引的方法中:
6.1、对于有序字符串表下压,虽然可以通过人为设定有序字符串表执行下压的阈值来改变日志结构化合并树结构存储系统的读写性能平衡,但这两种方法存在着降低空间利用率、过期数据清理不及时等问题,进而降低了系统的读取速度,增加了系统读写负担。
7.2、对于有序字符串表上浮而言,虽然此方法可以将深层的高频访问数据移动到浅层以增加其读性能,但存在着改变数据结构带来的空间利用率下降及增加了系统读写负担的问题。
8.3、以上2类方法都包含大量的数据传输消耗,且数据移动的时刻,存在该数据无法访问的问题。


技术实现要素:

9.本技术提供了一种数据检索方法、装置及电子设备,以解决现有技术中的上述任一技术问题。
10.第一方面,本技术提供了一种数据检索方法,该方法包括:
11.对预获取的数据进行划分,获取多个数据层级,其中,所述预获取的数据含有键值,每个数据层级含有多个数据分段节点;
12.根据数据的键值,在各个数据分段节点建立尾索引;
13.基于所述尾索引,依次在每个数据层级中检索目标数据。
14.在一个可能实现的方式中,所述根据数据的键值,在各个数据分段节点建立尾索引之后,所述方法还包括:将对应的物理地址赋值给尾索引。
15.在一个可能实现的方式中,所述将对应的物理地址赋值给尾索引,具体包括:
16.将第k数据层级中的尾索引压入到队列;
17.根据第i个尾索引的键值信息,在第k+1数据层级进行检索,用以确定是否存在所述第i个尾索引对应数据的键值;
18.若存在,则将检索到的键值对应数据的物理地址赋值给所述第i个尾索引,其中,k和i均为正整数。
19.在一个可能实现的方式中,所述将对应的物理地址赋值给尾索引,还包括:
20.若不存在,则根据预设规则,将对应的物理地址赋值给尾索引。
21.在一个可能的实现方式中,所述若不存在,则根据预设规则,将对应的物理地址赋值给尾索引,包括:
22.若不存在,则将当前检索遍历到的后一个键值对应数据的物理地址赋值给所述第i个尾索引,第i个尾索引对应数据的键值在所述第k+1数据层级的键值范围内。
23.在一个可能的实现方式中,所述若不存在,则根据预设规则,将对应的物理地址赋值给尾索引,包括:
24.若不存在,则所述第i个尾索引的物理地址赋值为null,第i个尾索引对应数据的键值不在所述第k+1数据层级的键值范围内。
25.在一个可能实现的方式中,所述基于所述尾索引,依次在每个数据层级中检索目标数据,具体包括:
26.若在第n数据层级检索到目标数据,则检索成功;
27.若在所述第n数据层级未检索到目标数据,则根据所述第n数据层级中的第一数据分段节点的尾索引跳转到第n+1数据层级的第二数据分段节点;
28.在所述第n+1数据层级,从所述第二数据分段节点开始检索,直至检索到目标数据或检索失败时结束,其中,n为正整数。
29.第二方面,本发明提供了一种数据检索装置,所述装置包括:
30.数据分层管理模块,用于对预获取的数据进行划分,获取多个数据层级,其中,所述预获取的数据含有键值,每个数据层级含有多个数据分段节点;
31.尾索引模块,用于根据数据的键值,在各个数据分段节点建立尾索引;
32.检索模块,用于基于所述尾索引,依次在每个数据层级中检索目标数据。
33.第三方面,本发明提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
34.存储器,用于存放计算机程序;
35.处理器,用于执行存储器上所存放的程序时,实现如第一方面任一项所述的数据检索方法的步骤。
36.第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的数据检索方法的步骤。
37.本发明实施例提供的上述技术方案与现有技术相比具有如下优点:
38.本发明实施例提供的一种数据检索方法,该方法,对预获取的数据进行划分,获取多个数据层级。其中,所述预获取的数据含有键值,每个数据层级含有多个数据分段节点。根据数据的键值,在各个数据分段节点建立尾索引。基于所述尾索引,依次在每个数据层级中检索目标数据。该方法主要应用于链路结构存储系统中,通过创新性的尾索引机制,能够优化数据索引耗时,降低系统索引性能开销,适用于企业级存储系统、区块链储存系统等应用领域。
附图说明
39.图1为本发明实施例提供的一种数据检索方法流程示意图;
40.图2为本发明提供的数据分层管理结构示意图;
41.图3为本发明实施例提供的一种将对应物理地址赋值给尾索引的方法流程示意图;
42.图4为本发明提供的确定更新尾索引的开始时间的流程示意图;
43.图5为本发明实施例提供的在数据层级中检索目标数据的方法流程示意图;
44.图6为本发明实施例提供的一种数据检索装置结构示意图;
45.图7为本发明实施例提供的另一种数据检索装置结构示意图;
46.图8为本发明实施例提供的又一种数据检索装置结构示意图;
47.图9为本发明实施例提供一种电子设备结构示意图。
具体实施方式
48.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
50.针对背景技术中所提及的技术问题,本技术实施例提供了一种数据检索方法,具体参见图1所示,图1为本发明实施例提供的一种数据检索方法流程示意图,如图1所示,该方法步骤具体包括:
51.步骤110,对预获取的数据进行划分,获取多个数据层级,其中,预获取的数据含有键值,每个数据层级含有多个数据分段节点。
52.首先,建立一种数据管理方法,具体的,为实现数据文件在存储系统中能够通过尾索进行连接,我们定义一种全新的用于快速检索数据的数据分层方法:我们将海量的数据文件进行分层式管理,并将分层后的数据管理结构成为多级链路式数据存储结构,简称链路结构。对于每一层的数据文件,用一种数据存储单元进行管理:数据分段节点。
53.下面分三点详细介绍数据分层方法:
54.第一点:将海量的数据文件分为若干数据层级,每个数据层级中包含多个数据分段节点。对于每一层级,数据的最大规模逐层增加。比如:下一层数据规模为上一层的15倍。当上层数据规模达到最大容量时,系统将会自动调整数据分段节点构成,比如:将本层6个
相邻的数据分段节点合并为一个新的数据分段节点,并将此数据分段节点移动至下一层,在合并过程中,优选地,根据数据分段节点的键值按序排列的方式进行合并,进一步优选地,将本层6个相邻的数据分段节点根据键值按降序排列的方式合并为一个新的数据分段节点,并将此数据分段节点移动至下一层,当然也可依据需求,根据键值按升序排列的方式合并,这里不做限定。
55.各个数据层级中的多个数据分段节点也是根据键值按序排列的,同上,优选地,根据根据键值按降序排列,也可根据需求,根据键值按升序排列。其排序方式与上述一致,都按降序排列,或都按降序排列。
56.这里需要说明的是,无论上述及后续提到的按序排列、还是按升序排列、亦或是按降序排列,均是根据键值大小进行的排列的。
57.第二点:多级链路式数据存储结构的每层中都添加一个头文件,用以记录包括本层键值在内的相关信息,具体记录本层的最大键值、最小键值和该层的容量使用信息。
58.第三点:对于每个数据分段节点中的数据,根据键值按序排列,并对每个数据分段节点进行封装。每一个数据分段节点都添加一个独有的信息表,用以记录包括该数据分段节点的键值在内的相关信息,包含数据分段节点中的最大键值、最小值键值和数据分段节点容量信息。
59.需要说明的是,优选地,在第三点中,每个数据分段节点中的数据,根据键值按降序排列。当然也可以依据需要,根据键值按升序进行排列,这里不做限定,但应该与在第一点中排序方式相同,即若第一点中采用降序排列,则第三点中也采用降序排列,若第一点中采用升序排列,则第三点中也采用升序排列。
60.其次,需要确定本发明提供的数据检索方法的应用范围:
61.为降低本方法的性能开销和增强索引的稳定性,本方法定义最小链接深度minlinkdepth的公式如下:
[0062][0063]
minlinkdepth为链路结构模型的最小执行深度,maxsysdepth为当前链路结构模型的最大深度。本方法将不会作用于任何在链路结构存储系统中深度小于minlinkdepth的数据分段节点。
[0064]
步骤120,根据数据的键值,在各个数据分段节点建立尾索引。
[0065]
具体的,在数据分段节点中包含有指向下一层级的尾索引,当在本层检索数据失败时,系统可直接根据尾索引定位到下一层所需数据的大致范围,具体参考图2,图2为本发明实施例提供的数据分层管理结构示意图。
[0066]
在一个示例中,根据数据的键值,在各个数据分段节点建立尾索引之后,还包括:将对应的物理地址赋值给尾索引,具体参考图3,图3为本发明实施例提供的将对应的物理地址赋值给尾索引的方法流程示意图,如图3所述,该方法包括:
[0067]
步骤310,将第k数据层级中的尾索引压入到队列。
[0068]
具体的,需要将一层数据中的尾索引压入到队列中,比如将第k数据层级中的尾索引压入到队列,此处的k为正整数。为提升后续的步骤320中的检索速度,在将尾索引压入队列时,可根据尾索引对应数据的键值,按序压入队列中,这样操作的目的是,下一个尾索引
的起始检索地址就是上次检索的结束地址,避免操作过程中走回头路,降低检索速度。优选地,按降序压入队列。当然也可依据需求,按升序压入队列,这里不做限定,但需要说明的是,此处的压入顺序,需要跟前面介绍的各个数据分段节点中的数据排序方式一致。其中,k为正整数。
[0069]
需要说明的是,若在该步骤中尾索引是按序压入队列的,则在后续步骤中,则按序对尾索引赋对应的物理地址。
[0070]
在没有尾索引的数据分段节点均建立尾索引,另外,数据的实际地址会在链路结构写入、删除或合并的过程中产生变化,所有此处压入队列时,也需要考虑需要更新的尾索引,因此,在将尾索引压入到队列的过程中,不但要将建立的尾索引压入到队列中,也需要将更新尾索引也压入到队列中。
[0071]
步骤320,根据第i个尾索引对应数据的键值,在第k+1数据层级进行检索,用以确定是否存在第i个尾索引对应数据的的键值。
[0072]
具体的,根据第i个尾索引对应数据的键值,顺序检查第k+1数据层级中各个数据分段节点的信息表,通过比较信息表中记录的数据分段节点的键值的最大值、最小值,判断第i个尾索引对应数据的键值落在第j个数据分段节点的键值范围内,则确定在第j个数据分段节点进行检索,用以确定是否存在在第i个尾索引对应数据的键值,其中,k、i和j均为正整数。
[0073]
优选地,在第k+1数据层级中,根据各数据分段节点的键值,按序进行检索,进一步优选地,根据降序进行检索。当然也可依据需求,按升序进行检索,这里不做具体限定。
[0074]
这里需要说明的是,无论上述及后续提到的按序检索、还是按升序检索、亦或是按降序检索,均是根据键值大小进行操作的。
[0075]
步骤330,若存在,则将检索到的键值对应数据的物理地址赋值给第i个尾索引。
[0076]
在一个示例中,若在第j个数据分段节点中不存在第i个尾索引对应的数据的键值时,则根据预设的规则,将对应的物理地址赋值给尾索引。
[0077]
下面针对该步骤进行介绍:
[0078]
具体的,若不存在,则将当前检索遍历到的后一个键值对应数据的物理地址赋值给所述第i个尾索引,第i个尾索引对应数据的键值在所述第k+1数据层级的键值范围内。
[0079]
综上,检索尾索引所对应的物理地址的方法为:依次检查第k+1层数据层级中的数据分段节点的信息表,通过比较信息表中记录的数据分段节点的最大值、最小值,判断是否进入此数据分段节点检索;若尾索引对应数据的键值落在了第j个数据分段节点的键值范围内,则可以确定进入第j个数据分段节点进行检索;确定检索的数据分段节点后,使用按序查找的方法查找对应的数据,若查找到,则将尾索引赋值为对应数据的物理地址,若未查找到,将尾索引赋值为当前查找游标后的一个数据的物理地址,可以将尾索引的赋值总结为以下公式:
[0080][0081]
其中,indexpointer表示赋值,keypos表示对应数据的物理地址,max表示查找结束时的游标。
[0082]
下面描述的前提是数据是按序排列的:
[0083]
在一个示例中,数据分段节点内的数据是以数据块的形式存在的,即每个数据分段节点内含有至少一个数据块,且每个数据块内的数据均含有键值。如前述介绍的,通过判断,第i个尾索引对应数据的键值落在第j个数据分段节点的键值范围内,则确定在第j个数据分段节点进行检索,用以确定是否存在在第i个尾索引对应数据的键值。具体的,通过判断,确定在第j个数据分段节点的第f个数据块内进行检索。其中,f为正整数。
[0084]
下面举例说明:
[0085]
若第i个尾索引对应数据的键值为61,第j个数据分段节点共有两个数据块,第一数据块和第二数据块的键值范围分别为1-50,51-100,因此,第i个尾索引对应数据的键值应该在第二数据块内进行检索,我们知晓,数据块内的键值不一定是连续的。下面进行分析:
[0086]
(1)若第二数据块内含有键值61,则直接将键值61对应数据的物理地址赋给第i个尾索引。
[0087]
(2)若第二个数据块不含有键值61,假如第二块数据内键值分别为:51、58、60、65
……
100,可知,键值61位于键值60和65之间,若按升序检索,则将键值65对应数据的物理地址赋给第i个尾索引,若按降序检索,则将键值60对应数据的物理地址赋给第i个尾索引。
[0088]
也可以理解为,在第j个数据分段节点不存在第i个尾索引对应数据的键值时,若按升序检索,则将相邻键值中的最大键值对应数据的物理地址赋给所述第i个尾索引。若按降序检索,则将相邻键值中的最小键值对应数据的物理地址赋给所述第i个尾索引。其中,相邻键值为与第i个尾索引对应数据的键值相邻。
[0089]
在一个示例中,还存在另外一种特殊情况,第i尾索引对应数据的键值,并未在第n+1数据层级的键值范围内,则将所述第i个尾索引的物理地址赋值为null。
[0090]
在一个示例中,根据数据的键值,在各个数据分段节点尾索引之后,还包括对尾索引进行更新。
[0091]
对尾索引进行更新,首先要确定更新尾索引的开始时间,在另一个示例中,确定更新尾索引的开始时间,具体参见图4,图4为本发明提供的确定更新尾索引的开始时间的流程示意图,如图4所述,通过下列步骤确定更新尾索引的开始时间:
[0092]
步骤410,遍历日志信息。
[0093]
步骤420,根据日志信息,确定当前系统资源占用和历史系统资源占用均为空闲状态的时间戳。
[0094]
步骤430,基于所述时间戳,确定更新尾索引的开始时间。
[0095]
具体的,首先建立一个空白尾索引更新时间列表,然后根据该空白尾索引更新时间列表,遍历日志信息,该日志信息是过去一段时间内的系统资源占用信息,包括当前系统资源占用信息和历史系统资源占用信息。然后根据当前系统资源占用信息和历史系统资源占用信息,确定当前系统资源占用和历史系统资源占用均为空闲状态的当前时间戳。最后基于当前时间戳,根据预设条件,确定更新尾索引的开始时间。
[0096]
将确定的更新尾索引的开始时间插入到空白尾索引更新时间列表中,获得新的尾索引更新时间列表,根据新的尾索引更新时间列表继续遍历日志信息,直至遍历结束。在遍历日志信息的过程中,根据上述确定的尾索引的开始时间进行更新尾索引。
[0097]
下面对上述过程进行详细描述:
[0098]
为了更好的分配我们定义了一个系统资源评估系统以及一个系统资源占用信息表。系统资源评估系统通过系统资源占用表中提供的数据信息,动态的选择出合适进行尾索引更新的系统空闲时间段。
[0099]
以下将对于系统资源占用信息表、系统资源评估系统进行详细的介绍:
[0100]
(1)系统资源占用信息表
[0101]
系统资源占用信息表用于记录链路系统在长时间使用过程的资源占用情况,以助于分时间段有选择性地进行尾索引的更新工作,将更多的系统资源分配被更加需要资源的索引功能。
[0102]
系统资源占用信息表中的每一条信息包含了以下基础数据:记录时间戳timestamp,中央处理器占用率cpuusage,图形处理器占用率gpuusage,内存占用率ramusage,显存占用率videomemoryusage,数据吞吐量datathroughput和客户端连接数clientconnectednum。
[0103]
此处,我们将使用一些更具体,更明显的特征,以便系统资源评估系统进行最优时间段选择,这些特征将由下面的特定公式得出:
[0104]
说明:count(t-k,t)表示从时间戳t-k到时间戳t区间内的信息条数总数。由于此函数在后续特征处理中十分常用,故作此声明。
[0105]
1、加权中央处理器占用率:即当前时间戳前k分钟内左右信息信息的加权处理器占用率。timestamp[i],cpuusage[i]表示从timestamp-k到timestamp区间内的每一条信息的时间戳和中央处理器占用率。对于每一条信息而言,会产生α1,α5,α
10
,α
30
,α
60
作为数据特征。
[0106]
2、加权图形处理器占用率:即当前时间戳前k分钟内左右信息信息的平均加权处理器占用率。timestamp[i],gpuusage[i]表示从timestamp-k到timestamp区间内的每一条信息的时间戳和图形处理器占用率。对于每一条信息而言,会产生β1,β5,β
10
,β
30
,β
60
作为数据特征。
[0107]
3.加权内存占用率:即当前时间戳前k分钟内左右信息信息的平均加权处理器占用率。timestamp[i],ramusage[i]表示从timestamp-k到timestamp区间内的每一条信息的时间戳和内存占用率。对于每一条信息而言,会产生γ1,γ5,γ
10
,γ
30
,γ
60
作为数据特征。
[0108]
4、加权显存占用率:即当前时间戳前k分钟内左右信息信息的平均加权处理器占用率。timestamp[i],videomemoryusage[i]表示从timestamp-k到timestamp区间内的每一条信息的时间戳和显存占用率。对于每一条信息而言,会产生δ1,δ5,δ
10
,δ
30
,δ
60
作为数据特征。
[0109]
5、数据吞吐系数:
[0110]
根据以上数据特征,总结为系统资源占用信息表每一条信息的完整数据段,具体如表1所示。
[0111]
表1
[0112][0113]
(2)系统资源评估系统
[0114]
系统资源评估系统根据资源占用信息表提供的信息数据特征,每隔预设时间进行一轮系统资源评估,比如预设时间为:4*24小时,则每间隔4*24小时进行一轮系统资源评估,选出每日系统资源较为空闲的时间段,并在接下来的4天内以此为时间标准,对尾索引进行多轮更新。
[0115]
在一个示例中,当前系统资源占用为空闲状态的条件为满足下列条件中的至少一种:
[0116]
在预设时间段内,所述中央处理器占用率不大于预设的第一数值、所述图形处理器占用率不大于预设的第二数值、所述内存占用率不大于预设的第三数值,或者,所述显存占用率不大于预设的第四数值。
[0117]
优选地,当前系统资源占用为空闲状态的条件为满足上述条件中的至少三个,且另外一个不超过预设阈值。
[0118]
在另一个示例中,根据中央处理器占用率、图形处理器占用率、内存占用率、显存占用率、数据吞吐系数和客户端连接数判断历史系统资源是否为空闲状态。
[0119]
例如:针对系统占用信息表的每一条进行数据筛选:
[0120]
(1)当前系统资源占用评估:
[0121]
对于评估当前系统资源是否为空闲,有以下4条评价指标:
[0122]
中央处理器占用率≤35%
[0123]
图形处理器占用率≤40%
[0124]
内存占用率≤28%
[0125]
显存占用率≤32%
[0126]
必须同时满足其中至少三条,且第四条不得超过基准值的13%时,系统资源评估系统会判定当前系统资源为空闲状态,否则判定为忙碌状态。
[0127]
(2)历史系统系统占用评估:
[0128]
对于评估过去一段时间的历史系统资源是否为空闲,通过以下公式:
[0129][0130]
当σ<0.37时,系统资源评估系统会判定过去一段时间的历史系统资源为空闲状态,否则判定为忙碌状态。
[0131]
(3)当前系统资源占用与历史系统系统占用评估均为空闲状态时,将当前时间戳timestamp减去18分钟,作为一个尾索引更新时间节点插入尾索引更新时间列表。
[0132]
(4)当系统资源评估系统完成了对于资源占用信息表中所有信息的评估工作后,向系统返回步骤(3)中的尾索引更新时间列表,并根据此进行尾索引的更新。
[0133]
步骤130,基于尾索引,依次在每个数据层级中检索目标数据。
[0134]
在一个示例中,图5为本发明实施例提供的在数据层级中检索目标数据的方法流程示意图,如图5所示,该方法包括以下步骤:
[0135]
步骤510,若在第n数据层级检索到目标数据,则检索成功,其中,n为正整数。
[0136]
另一方面,若在第n数据层级未检索到目标数据,且所述第n数据层级是链路结构的最大深度,则检索失败。
[0137]
步骤520,若在第n数据层级未检索到目标数据,则根据第n数据层级中的第一数据分段节点的尾索引跳转到第n+1数据层级的第二数据分段节点。
[0138]
步骤530,在第n+1数据层级,从第二数据分段节点开始检索,直至检索到目标数据或检索失败时结束。
[0139]
需要说明的是,在每个数据层级中未检索到数据时,是进入下一层继续检索,还是判断检索失败,需要判断检索的当前数据层级是否为链路结构的最大深度,若是,则检索失败,若不是,则进入下一层继续检索。
[0140]
另外,步骤520中的第一数据分段节点的尾索引的指针不为空,即尾索引的物理地址不为空,换句话讲,其物理地址赋值不为null。且第n数据层级不是链路结构的最大深度,才会根据第n数据层级中的第一数据分段节点的尾索引跳转到第n+1数据层级的第二数据分段节点,第二数据分段节点中含有的数据的键值与目标数据的键值最接近。
[0141]
若尾索引的物理地址为空,则其执行过程与上述步骤520和步骤530不同,具体的,在一个示例中,在第n数据层级未检索到目标数据,而第n数据层级中的第一个数据分段节点的尾索引的物理地址为null,且第n数据层级不是链路结构的最大深度,则在第n+1数据层级,依次检索每个数据分段节点。具体的,传统逐层搜索方法需要通过比较每个数据分段节点的信息表中键值的最大、最小值来确定搜索的数据分段节点。本方法通过利用尾索引省去遍历数据分段节点的步骤,当在本层无法搜索到所需的数据时,系统可通过当前搜索的数据分段节点内包含的尾索引直接跳转到下一层的与目标数据的键值相近的数据分段节点,以该数据分段节点为出发点按序进行检索,即可确定本层是否包含所需的数据。若链
路结构内的每层数据是按降序排列的,则以该数据分段节点出发,以升序检索,由排在后面的数据检索到排列在前面的数据。相反,若链路结构内的每层数据是按升序排列的,则以该数据分段节点出发,以降序检索,由排在前面的数据检索到排列在后面的数据。
[0142]
本技术发明实施例提供的该方法,对预获取的数据进行划分,获取多个数据层级。其中,预获取的数据含有键值,每个数据层级含有多个数据分段节点。根据数据的键值,在各个数据分段节点建立尾索引。基于所述尾索引,依次在每个数据层级中检索目标数据。该方法主要应用于链路结构存储系统中,通过创新性的尾索引机制,能够优化数据索引耗时,降低系统索引性能开销,适用于企业级存储系统、区块链储存系统等应用领域。
[0143]
以上,为本发明所提供的数据检索方法实施例,下文中则介绍说明本技术所提供的数据检索其他实施例,具体参见如下。
[0144]
图6为本发明实施例提供的一种数据检索装置结构示意图,该装置包括:数据分层管理模块601、尾索引模块602,以及检索模块603。
[0145]
数据分层管理模块601,用于对预获取的数据进行划分,获取多个数据层级,其中,预获取的数据含有键值,每个数据层级含有多个数据分段节点。
[0146]
尾索引模块602,用于根据数据的键值,在各个数据分段节点建立尾索引;
[0147]
检索模块603,用于基于尾索引,依次在每个数据层级中检索目标数据。
[0148]
在一个示例中,检索模块603,具体用于:
[0149]
若在第n数据层级检索到目标数据,则检索成功;
[0150]
若在所述第n数据层级未检索到目标数据,则根据所述第n数据层级中的第一数据分段节点的尾索引跳转到第n+1数据层级的第二数据分段节点;
[0151]
在第n+1数据层级,从第二数据分段节点开始检索,直至检索到目标数据或检索失败时结束,其中,n为正整数。
[0152]
在一个示例中,如图7所示,该装置还包括物理地址模块604,用于将对应的物理地址赋值给尾索引。
[0153]
在另一个示例中,物理地址模块604,具体用于:
[0154]
将第k数据层级中的尾索引压入到队列;
[0155]
根据第i个尾索引对应数据的键值,在第k+1数据层级进行检索,用以确定是否存在第i个尾索引对应数据的键值;
[0156]
若存在,则将检索到的第i个尾索引的键值对应数据的物理地址赋值给所述第i个尾索引,其中,k和i均为正整数。
[0157]
在又一个示例中,物理地址模块604,还具体用于,若不在,则根据预设规则,将对应的物理地址赋值给尾索引。
[0158]
在再一个示例中,物理地址模块604,具体用于,若不存在,则将当前检索遍历到的后一个键值对应数据的物理地址赋值给所述第i个尾索引,第i个尾索引对应数据的键值在所述第k+1数据层级的键值范围内。
[0159]
在另一个示例中,物理地址模块604,具体用于,若不存在,则将所述第i个尾索引的物理地址赋值为null,第i个尾索引对应数据的键值不在所述第k+1数据层级的键值范围内。
[0160]
在一个可能实现的方式中,如图8所示,该装置该包括更新模块605,用于更新尾索
引。
[0161]
本发明实施例提供的数据检索装置中各部件所执行的功能均已在上述任一方法实施例中做了详细的描述,因此这里不再赘述。
[0162]
本发明实施例提供的一种数据检索装置,对预获取的数据进行划分,获取多个数据层级。其中,预获取的数据含有键值,每个数据层级含有多个数据分段节点。根据数据的键值,在各个数据分段节点建立尾索引。基于所述尾索引,依次在每个数据层级中检索目标数据。该方法主要应用于链路结构存储系统中,通过创新性的尾索引机制,能够优化数据索引耗时,降低系统索引性能开销,适用于企业级存储系统、区块链储存系统等应用领域。
[0163]
如图9所示,本技术实施例提供了一种电子设备,包括处理器111、通信接口112、存储器113和通信总线114,其中,处理器111,通信接口112,存储器113通过通信总线114完成相互间的通信。
[0164]
存储器113,用于存放计算机程序;
[0165]
在本技术一个实施例中,处理器111,用于执行存储器113上所存放的程序时,实现前述任意一个方法实施例提供的数据检索方法,包括:
[0166]
对预获取的数据进行划分,获取多个数据层级,其中,预获取的数据含有键值,每个数据层级含有多个数据分段节点;
[0167]
根据数据的键值,在各个数据分段节点建立尾索引;
[0168]
基于尾索引,依次在每个数据层级中检索目标数据。
[0169]
在一个示例中,根据数据的键值,在各个数据分段节点建立尾索引之后,方法还包括:将对应的物理地址赋值给尾索引。
[0170]
在一个示例中,将对应的物理地址赋值给尾索引,包括:
[0171]
将第k数据层级中的尾索引压入到队列;
[0172]
根据第i个尾索引对应数据的键值,在第k+1数据层级中进行检索,用以确定是否存在第i个尾索引对应数据的键值;
[0173]
若存在,则将检索到的第i个尾索引的键值信息对应数据的物理地址赋值给第i个尾索引其中,k和i均为正整数。
[0174]
在一个示例中,所述赋值给尾索引对应的物理地址,还包括:
[0175]
若不存在,则根据预设规则,将对应的物理地址赋值给尾索引。
[0176]
在又一个示例中,所述若不存在,则根据预设规则,将对应的物理地址赋值给尾索引,包括:
[0177]
若不存在,则将当前检索遍历到的后一个键值对应数据的物理地址赋值给所述第i个尾索引,第i个尾索引对应数据的键值在所述第k+1数据层级的键值范围内。
[0178]
在再一个示例中,所述若不存在,则根据预设规则,将对应物理地址赋值给尾索引,包括:
[0179]
若不存在,则将所述第i个尾索引的物理地址赋值为null,第i个尾索引对应数据的键值不在所述第k+1数据层级的键值范围内。
[0180]
在一个示例中,根据数据的键值,在各个数据分段节点建立尾索引之后,方法还包括:对尾索引进行更新。
[0181]
在一个示例中,确定更新尾索引的开始时间,具体包括:
[0182]
遍历日志信息;
[0183]
根据日志信息,确定当前系统资源占用和历史系统资源占用均为空闲状态的当前时间戳;
[0184]
基于时间戳,确定更新尾索引的开始时间。
[0185]
在一个示例中,日志信息包括系统资源占用信息表,系统资源占用信息表包括中央处理器占用率、图形处理器占用率、内存占用率和显存占用率;
[0186]
当前系统资源占用为空闲状态的条件为满足下列条件中的至少一种:
[0187]
在预设时间段内,中央处理器占用率不大于预设的第一数值、图形处理器占用率不大于预设的第二数值、内存占用率不大于预设的第三数值,或者,显存占用率不大于预设的第四数值。
[0188]
在一个示例中,基于尾索引,依次在每个数据层级中检索目标数据,具体包括:
[0189]
若在第n数据层级检索到目标数据,则检索成功;
[0190]
若在第n数据层级未检索到目标数据,则根据第n数据层级中的第一数据分段节点的尾索引跳转到第n+1数据层级的第二数据分段节点;
[0191]
在第n+1数据层级,从第二数据分段节点开始进行检索,直至检索到目标数据或检索失败时结束,其中,n为正整数。
[0192]
本技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如前述任意一个方法实施例提供的数据检索方法的步骤。
[0193]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0194]
以上仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1