一种键值存储的数据访问方法及其系统的制作方法

文档序号:7795723阅读:221来源:国知局
一种键值存储的数据访问方法及其系统的制作方法
【专利摘要】本发明公开了一种键值存储的数据访问方法及其系统,该方法根据跳表中每个数据节点的数据访问频率,动态调整每个数据节点高度,以实现高频数据的快速访问,该方法包括:访问频度设置步骤和数据节点高度调整步骤,访问频度设置步骤用于跳表中的每个节点动态设置一个访问频度,数据节点高度调整步骤用于通过动态设置的访问频度调整每个节点高度,实现访问频率高的数据增加节点高度,访问频率低的数据降低节点高度。
【专利说明】一种键值存储的数据访问方法及其系统
【技术领域】
[0001]该发明所属的【技术领域】是信息存储领域,特别涉及一种键值存储的数据访问方法及其系统。
【背景技术】
[0002]键值存储是云计算环境下典型的数据组织方式。数据以Key排序的方式存储,以提升数据插入、查找、删除的效率。已有数据组织方法构建均衡数据结构,使得每个数据的插入、查找、删除性能基本相当。但是由此带来的问题是,高频数据的访问效率与低频数据的访问效率相当。通过提升高频数据的访问效率,可以提升系统整体性能,因此,需要在不影响数据结构均衡性的前提下,提升高频数据的访问效率。
[0003]已有的平衡数据结构有:在内存中使用的跳表(SkipList)、红黑树、基树,在磁盘上使用的B+树等。其中SkipList以其实现简单、快速高效而被广泛应用于键值存储系统或数据库系统,比如LevelDB和SkipDB等。
[0004]跳表是平衡树的一种替代的数据结构,与红黑树不相同的是,跳表对于树的平衡的实现基于一种随机化的算法。跳表在每个节点中增加了向前的指针,通过空间来换取时间,从而提升查找的效率。如果一个节点存在K个向前的指针的话,那么该节点是K层的节点。一个跳表的层MaxLevel定义为跳表中所有节点中最大的层数。Skip List是一种随机化的数据结构,基于并联的链表,其搜索的时间复杂度为0(log η)。跳表是对有序的链表以随机高度的方式增加上附加的前进链接,所以在列表中的查找可以快速的跳过部分列表。Skip List可以很好解决有序链表查找特定值的困难。
[0005]从跳表的查询方式可以看出,节点的高度越高,其查询效率越高;高度越低,其查询效率越低。
[0006]以红黑树和基树为代表的平衡树数据组织方式,将数据以平衡的方式置于树中节点,无论数据的访问频度是否有差异,其访问效率基本相当。跳表基于一种随机化的概率方式决定数据节点的高度,均衡各个节点的访问效率。以跳表方式组织的数据,节点高度越大,查询所需要的比较次数越少,其查询效率越高;反之,节点高度越低,查询所需要的比较次数越多,其查询效率越低。因此,跳表中数据的高度与跳表的性能直接相关。总之,平衡树和跳表均衡了各个节点的访问效率,却使得高频数据的访问效率得不到提升。

【发明内容】

[0007]本发明要解决的技术问题在于提供了一种键值存储的数据访问方法及其系统,以克服现有技术中跳表方式组织的中高频数据访问效率不高的问题。
[0008]为了达到以上目的,本发明提供了一种键值存储的数据访问方法,其特征在于,所述方法根据跳表中每个数据节点的数据访问频率,动态调整所述每个数据节点高度,以实现高频数据的快速访问,所述方法包括:
[0009]访问频度设置步骤:所述跳表中的每个节点动态设置一个访问频度;[0010]数据节点高度调整步骤:通过动态设置的所述访问频度调整所述每个节点高度,实现访问频率高的数据增加所述节点高度,访问频率低的数据降低所述节点高度。
[0011 ] 上述键值存储的数据访问方法,其特征在于,所述访问频度设置步骤还包括:
[0012]初始化步骤:将键值对插入所述跳表,作为所述跳表的一个节点,初始化所述键值对的上一周期内节点访问次数fl和所述键值对当前周期内节点访问次数f2 ;
[0013]访问频度计算步骤:对所述键值对每访问一次,则将所述键值对的当前周期内节点访问次数f2增加,在一段时间后,计算所述fl和所述f2的比值,以进行所述节点高度的调整。
[0014]上述键值存储的数据访问方法,其特征在于,所述数据节点高度调整步骤还包括:
[0015]单个数据节点高度调整步骤:根据所述f I和所述f2的比值,对单个所述键值对的节点高度进行调整;
[0016]所有数据节点高度调整步骤:根据所有数据节点平均高度与所有节点最大高度进行比较判断,调整所有数据节点平均高度。
[0017]上述键值存储的数据访问方法,其特征在于,所述单个数据节点高度调整步骤还包括:
[0018]判断步骤:判断如果所述f I为0,则将所述f2的值赋值给所述f 1,并将所述f2置为0,若所述fl不为0,则计算f2与fl的比值;
[0019]节点高度增加步骤:如果所述f2与Π的比值大于等于K,所述K大于I,并且所述键值对的节点高度没有达到所述跳表的最大值,则将所述键值对的节点高度增加,如果所述键值对的节点高度已经达到所述跳表的最大值,则保持所述键值对的节点高度不变;
[0020]节点高度降低步骤:如果所述f2与Π的比值小于等于M,所述M小于I并且大于
O,并且所述键值对的节点高度没有达到所述跳表的最小值,则将所述键值对的节点高度降低,如果所述键值对的节点高度已经达到所述跳表的最小值,则保持所述键值对的节点高度不变;
[0021]节点高度保持步骤:如果所述f2与Π的比值大于所述M,并且小于所述K,则保持所述键值对的节点高度不变。
[0022]上述键值存储的数据访问方法,其特征在于,所述所有数据节点高度调整步骤还包括:
[0023]数据节点平均高度计算步骤:在一段时间后,计算所有数据节点平均高度,如果所述节点平均高度大于Q*所有节点最大高度,或小于P*所有节点最大高度,其中,Q和P为大于O并且小于1,并且Q大于P,则计算所述每个节点所述f I占所有节点总访问次数的百分比R,将所述节点平均高度设置为R*所有节点最大高度。
[0024]本发明还提供了一种键值存储的数据访问系统,采用如所述的键值存储的数据访问方法,其特征在于,所述系统包括:
[0025]访问频度设置模块:为所述跳表中的每个节点动态设置一个访问频度;
[0026]数据节点高度调整模块:通过动态设置的所述访问频度调整所述每个节点高度,实现访问频率高的数据增加所述节点高度,访问频率低的数据降低所述节点高度。
[0027]上述键值存储的数据访问系统,其特征在于,所述访问频度设置模块还包括:[0028]初始化模块:将键值对插入所述跳表,作为所述跳表的一个节点,初始化所述键值对的上一周期内节点访问次数fl和所述键值对当前周期内节点访问次数f2 ;
[0029]访问频度计算模块:对所述键值对每访问一次,则所述键值对的当前周期内节点访问次数f2增加,在一段时间后,计算所述fl和所述f2的比值,以进行所述节点高度的调

iF.0
[0030]上述键值存储的数据访问系统,其特征在于,所述数据节点高度调整模块还包括:
[0031]单个数据节点高度调整模块:根据所述f I和所述f2的比值,对单个所述键值对的节点闻度进行调整;
[0032]所有数据节点高度调整模块:根据所有数据节点平均高度与所有节点最大高度进行比较判断,调整所有数据节点平均高度。
[0033]上述键值存储的数据访问系统,其特征在于,所述单个数据节点高度调整模块还包括:
[0034]判断模块:判断如果所述Π为0,则将所述f2的值赋值给所述Π,并将所述f2置为0,若所述fl不为0,则计算f2与fl的比值;
[0035]节点高度增加模块:如果所述f2与fl的比值大于等于K,所述K大于I,并且所述键值对的节点高度没有达到所述跳表的最大值,则将所述键值对的节点高度增加,如果所述键值对的节点高度已经达到所述跳表的最大值,则保持所述键值对的节点高度不变;
[0036]节点高度降低模块:如果所述f2与Π的比值小于等于M,所述M小于I并且大于
O,并且所述键值对的节点高度没有达到所述跳表的最小值,则将所述键值对的节点高度降低,如果所述键值对的节点高度已经达到所述跳表的最小值,则保持所述键值对的节点高度不变;
[0037]节点高度保持模块:如果所述f2与Π的比值大于所述M,并且小于所述K,则保持所述键值对的节点高度不变。
[0038]上述键值存储的数据访问系统,其特征在于,所述所有数据节点高度调整模块还包括:
[0039]数据节点平均高度计算模块:在一段时间后,计算所有数据节点平均高度,如果所述节点平均高度大于Q*所有节点最大高度,或小于P*所有节点最大高度,其中,Q和P为大于O并且小于1,并且Q大于P,则计算所述每个节点所述f I占所有节点总访问次数的百分比R,将所述节点平均高度设置为R*所有节点最大高度。
[0040]与现有技术相比,本发明的有益效果在于,在不改变数据顺序性的前提下,利用数据访问频率的不同,提高了高频数据的访问效率;并能够依据数据访问热度动态调整其在跳表中的高度,从而缩短高频数据的访问时间,提升整个键值存储系统的性能。
【专利附图】

【附图说明】
[0041]图1为本发明键值存储的数据访问方法的流程示意图;
[0042]图2为本发明单个数据节点高度调整步骤的流程示意图;
[0043]图3为本发明所有数据节点高度调整步骤的流程示意图;
[0044]图4为本发明键值存储的数据访问方法一实施例步骤示意图;[0045]图5为本发明键值存储的数据访问系统结构示意图;
[0046]图6为本发明单个数据节点高度调整模块的结构示意图;
[0047]图7为本发明所有数据节点高度调整模块的结构示意图。
[0048]其中,附图标记:
[0049]I访问频度设置模块2数据节点高度调整模块
[0050]11初始化模块12分支元数据服务器 [0051]21单个数据节点高度调整模块 22所有数据节点高度调整模块
[0052]211判断模块212节点高度增加模块
[0053]213节点高度降低模块214节点高度保持模块
[0054]221数据节点平均高度计算模块
[0055]SI~S2、S11~S12、S21~S22、S211~S214、S10~S104:本发明各实施例的施
行步骤
【具体实施方式】
[0056]下面给出本发明的【具体实施方式】,结合图示对本发明做出了详细描述。
[0057]本发明的键值存储的数据访问方法的关键内容包括:第一、给跳表中每个节点设置一个访问频度的方法;第二、依据数据访问频度调整跳表中数据节点高度的方法;第三、访问频率高的数据,增加其高度;访问频率低的数据,降低其高度。
[0058]图1为本发明键值存储的数据访问方法的流程示意图,如图1所示,本发明提供的一种键值存储的数据访问方法,该方法根据跳表中每个数据节点的数据访问频率,动态调整所述每个数据节点高度,以实现高频数据的快速访问,该方法包括:
[0059]访问频度设置步骤S1:跳表中的每个节点动态设置一个访问频度;
[0060]数据节点高度调整步骤S2:通过动态设置的访问频度调整每个节点高度,实现访问频率高的数据增加节点高度,访问频率低的数据降低节点高度。
[0061]其中,访问频度设置步骤SI还包括:
[0062]初始化步骤Sll:将键值对插入跳表,作为跳表的一个节点,初始化键值对的上一周期内节点访问次数π和键值对当前周期内节点访问次数f2 ;
[0063]访问频度计算步骤S12:对键值对每访问一次,则将键值对的当前周期内节点访问次数f2增加,在一段时间后,计算fl和所述f2的比值,以进行节点高度的调整。
[0064]其中,数据节点高度调整步骤S2还包括:
[0065]单个数据节点高度调整步骤S21:根据Π和f2的比值,对单个键值对的节点高度进行调整;
[0066]所有数据节点高度调整步骤S22:根据所有数据节点平均高度与所有节点最大高度进行比较判断,调整所有数据节点平均高度。
[0067]图2为本发明单个数据节点高度调整步骤的流程示意图,如图2所示,其中,单个数据节点高度调整步骤S21还包括:
[0068]判断步骤S211:判断如果f I为0,则将f2的值赋值给f 1,并将f2置为0,若f I不为0,则计算f2与fl的比值;
[0069]节点高度增加步骤S212:如果f2与fl的比值大于等于K,K大于I,并且键值对的节点高度没有达到跳表的最大值,则将键值对的节点高度增加,如果键值对的节点高度已经达到跳表的最大值,则保持键值对的节点高度不变;
[0070]节点高度降低步骤S213:如果f2与f I的比值小于等于M,M小于I并且大于0,并且键值对的节点高度没有达到跳表的最小值,则将键值对的节点高度降低,如果键值对的节点高度已经达到跳表的最小值,则保持键值对的节点高度不变;
[0071]节点高度保持步骤S214:如果f2与fl的比值大于M,并且小于K,则保持键值对的节点高度不变。
[0072]图3为本发明所有数据节点高度调整步骤的流程示意图,如图3所示,其中,所有数据节点高度调整步骤S22还包括:
[0073]数据节点平均高度计算步骤S221:在一段时间后,计算所有数据节点平均高度,如果节点平均高度大于Q*所有节点最大高度,或小于P*所有节点最大高度,其中,Q和P为大于0,小于1,并且Q大于P,则计算每个节点f I占所有节点总访问次数的百分比R,将节点平均高度设置为R*所有节点最大高度。
[0074]以下结合图示说明本发明具体实施例的步骤,图4为本发明键值存储的数据访问方法一实施例步骤示意图,如图4所示,本发明的一具体实施例操作步骤,说明数据访问过程。
[0075]假设跳表中有N个节点,节点高度调整的时间周期为Ts和Tg,其中Ts为单个节点高度调整的周期,Tg为跳表中所有节点调整的周期。每个节点插入跳表时的高度均设置为随机数。假设每个节点均在跳表中节点高度调整时插入跳表。记每个节点插入跳表时的时间为τ=0,此后每个时间周期分别标记为Τ0,Tl, Τ2,....,Tm。在每个节点上增加两个记录节点访问频率的字段fl和f2,其中fl用来保存上一个周期内节点的访问次数,f2用来记录当前周期内节点已被访问的次数。其中,T可随节点高度调整的频率确定。节点高度调整的频率越高,T越小;节点高度调整的频率越低,T越大。本发明设置T=30秒。
[0076]具体实施步骤如下:
[0077]步骤SlOl:将键为Ki的键值对插入跳表,作为跳表的一个节点。将键为Ki的节点的fl设置为0,f2设置为O。
[0078]步骤S102:对键为Ki的键值对每访问一次,将f2的值加I。
[0079]步骤S103:当Tj=j*Ts时,其中0〈=j〈=m,判断f2与fl的比值。
[0080]步骤S1031:如果f 1=0,则将f2赋值给fl,并将f2重置为O
[0081]步骤S1032:如果Π!=0,则判断f2/fl的值。
[0082]步骤S1033:如果f2/fl大于等于1.2,即键为Ki的节点在周期Tj内较周期Tj-1内的访问次数增加20%,此时如果键为Ki的节点的高度已经达到跳表高度的最大值MAX_HIGHT,则保持该节点高度不变,否则如果键为Ki的节点的高度小于跳表高度的最大值MAX_HIGHT,则将键为Ki的节点的高度增加I。
[0083]步骤S1034:如果f2/fl小于等于0.8,即键为Ki的节点在周期Tj内较周期Tj-1内的访问次数降低20%,此时如果键为Ki的节点的高度已经达到最小值I,则保持该节点高度不变,否则如果将键为Ki的节点的高度大于1,则将键位Ki的节点的高度减去I。
[0084]步骤S1035:如果f2/fl大于0.8且小于1.2,即键为Ki的节点在周期Tj内较周期Tj-1内的访问次数变化幅度较小,此时保持该节点高度不变。[0085]步骤S104:当Ty=y*Tg时,其中0〈=g〈=m,判断跳表中所有节点的平均高度Ta。
[0086]步骤S1041:如果Ta大于(50%+20%) *最大高度,或小于(50%_20%)*最大高度,则计算每个节点在前一个时间周期内的访问次数占所有节点总的访问次数的百分比R,并将节点的高度重置为R*最大高度。
[0087]本发明还提供了一种键值存储的数据访问系统,图5为本发明键值存储的数据访问系统结构示意图,如图5所示,该系统包括:
[0088]访问频度设置模块1:为跳表中的每个节点动态设置一个访问频度;
[0089]数据节点高度调整模块2:通过动态设置的访问频度调整每个节点高度,实现访问频率高的数据增加节点高度,访问频率低的数据降低节点高度。
[0090]其中,访问频度设置模块I还包括:
[0091]初始化模块11:将键值对插入跳表,作为跳表的一个节点,初始化键值对的上一周期内节点访问次数π和键值对当前周期内节点访问次数f2 ;
[0092]访问频度计算模块12:对键值对每访问一次,则键值对的当前周期内节点访问次数f2增加,在一段时间后,计算fl和f2的比值,以进行节点高度的调整。
[0093]其中,数据节点高度调整模块2还包括:
[0094]单个数据节点高度调整模块21:根据Π和f2的比值,对单个键值对的节点高度进行调整;
[0095]所有数据节点高度调整模块22:根据所有数据节点平均高度与所有节点最大高度进行比较判断,调整所有数据节点平均高度。
[0096]图6为本发明单个数据节点高度调整模块的结构示意图,如图6所示,其中,单个数据节点高度调整模块21还包括:
[0097]判断模块211:判断如果fl为0,则将f2的值赋值给fl,并将f2置为0,若fl不为0,则计算f2与fl的比值;
[0098]节点高度增加模块212:如果f2与fl的比值大于等于K,K大于1,并且键值对的节点高度没有达到跳表的最大值,则将键值对的节点高度增加,如果键值对的节点高度已经达到跳表的最大值,则保持键值对的节点高度不变;
[0099]节点高度降低模块213:如果f2与fl的比值小于等于M,M小于I并且大于0,并且键值对的节点高度没有达到跳表的最小值,则将键值对的节点高度降低,如果键值对的节点高度已经达到跳表的最小值,则保持键值对的节点高度不变;
[0100]节点高度保持模块214:如果f2与Π的比值大于M,并且小于K,则保持键值对的节点高度不变。
[0101]图7为本发明所有数据节点高度调整模块的结构示意图,如图7所示,其中,所有数据节点高度调整模块22还包括:
[0102]数据节点平均高度计算模块221:在一段时间后,计算所有数据节点平均高度,如果节点平均高度大于Q*所有节点最大高度,或小于P*所有节点最大高度,其中,Q和P为大于O并且小于1,并且Q大于P,则计算每个节点所述fI占所有节点总访问次数的百分比R,将节点平均高度设置为R*所有节点最大高度。
[0103]当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
【权利要求】
1.一种键值存储的数据访问方法,其特征在于,所述方法根据跳表中每个数据节点的数据访问频率,动态调整所述每个数据节点高度,以实现高频数据的快速访问,所述方法包括: 访问频度设置步骤:所述跳表中的每个节点动态设置一个访问频度; 数据节点高度调整步骤:通过动态设置的所述访问频度调整所述每个节点高度,实现访问频率高的数据增加所述节点高度,访问频率低的数据降低所述节点高度。
2.根据权利要求1所述键值存储的数据访问方法,其特征在于,所述访问频度设置步骤还包括: 初始化步骤:将键值对插入所述跳表,作为所述跳表的一个节点,初始化所述键值对的上一周期内节点访问次数π和所述键值对当前周期内节点访问次数f2 ; 访问频度计算步骤:对所述键值对每访问一次,则将所述键值对的当前周期内节点访问次数f2增加,在一段时间后,计算所述fl和所述f2的比值,以进行所述节点高度的调難iF.0
3.根据权利要求1或2所述键值存储的数据访问方法,其特征在于,所述数据节点高度调整步骤还包括: 单个数据节点高度调整步骤:根据所述Π和所述f2的比值,对单个所述键值对的节点高度进行调整; 所有数据节点高度调整步骤:根据所`有数据节点平均高度与所有节点最大高度进行比较判断,调整所有数据节点平均高度。
4.根据权利要求3所述键值存储的数据访问方法,其特征在于,所述单个数据节点高度调整步骤还包括: 判断步骤:判断如果所述Π为O,则将所述f2的值赋值给所述Π,并将所述f2置为O,若所述fl不为O,则计算f2与fl的比值; 节点高度增加步骤:如果所述f2与Π的比值大于等于K,所述K大于I,并且所述键值对的节点高度没有达到所述跳表的最大值,则将所述键值对的节点高度增加,如果所述键值对的节点高度已经达到所述跳表的最大值,则保持所述键值对的节点高度不变; 节点高度降低步骤:如果所述f2与Π的比值小于等于M,所述M小于I并且大于O,并且所述键值对的节点高度没有达到所述跳表的最小值,则将所述键值对的节点高度降低,如果所述键值对的节点高度已经达到所述跳表的最小值,则保持所述键值对的节点高度不变; 节点高度保持步骤:如果所述f2与Π的比值大于所述M,并且小于所述K,则保持所述键值对的节点高度不变。
5.根据权利要求3所述键值存储的数据访问方法,其特征在于,所述所有数据节点高度调整步骤还包括: 数据节点平均高度计算步骤:在一段时间后,计算所有数据节点平均高度,如果所述节点平均高度大于Q*所有节点最大高度,或小于P*所有节点最大高度,其中,Q和P为大于O并且小于1,并且Q大于P,则计算所述每个节点所述fI占所有节点总访问次数的百分比R,将所述节点平均高度设置为R*所有节点最大高度。
6.一种键值存储的数据访问系统,采用如权利要求1-5中任一项所述的键值存储的数据访问方法,其特征在于,所述系统包括: 访问频度设置模块:为所述跳表中的每个节点动态设置一个访问频度; 数据节点高度调整模块:通过动态设置的所述访问频度调整所述每个节点高度,实现访问频率高的数据增加所述节点高度,访问频率低的数据降低所述节点高度。
7.根据权利要求6所述键值存储的数据访问系统,其特征在于,所述访问频度设置模块还包括: 初始化模块:将键值对插入所述跳表,作为所述跳表的一个节点,初始化所述键值对的上一周期内节点访问次数Π和所述键值对当前周期内节点访问次数f2 ; 访问频度计算模块:对所述键值对每访问一次,则所述键值对的当前周期内节点访问次数f2增加,在一段时间后,计算所述fl和所述f2的比值,以进行所述节点高度的调整。
8.根据权利要求6或7所述键值存储的数据访问系统,其特征在于,所述数据节点高度调整模块还包括: 单个数据节点高度调整模块:根据所述Π和所述f2的比值,对单个所述键值对的节点高度进行调整; 所有数据节点高度调整模块:根据所有数据节点平均高度与所有节点最大高度进行比较判断,调整所有数据节点平均高度。
9.根据权利要求8所 述键值存储的数据访问系统,其特征在于,所述单个数据节点高度调整模块还包括: 判断模块:判断如果所述Π为O,则将所述f2的值赋值给所述Π,并将所述f2置为O,若所述fl不为O,则计算f2与fl的比值; 节点高度增加模块:如果所述f2与Π的比值大于等于K,所述K大于I,并且所述键值对的节点高度没有达到所述跳表的最大值,则将所述键值对的节点高度增加,如果所述键值对的节点高度已经达到所述跳表的最大值,则保持所述键值对的节点高度不变; 节点高度降低模块:如果所述f2与Π的比值小于等于M,所述M小于I并且大于O,并且所述键值对的节点高度没有达到所述跳表的最小值,则将所述键值对的节点高度降低,如果所述键值对的节点高度已经达到所述跳表的最小值,则保持所述键值对的节点高度不变; 节点高度保持模块:如果所述f2与Π的比值大于所述M,并且小于所述K,则保持所述键值对的节点高度不变。
10.根据权利要求8所述键值存储的数据访问系统,其特征在于,所述所有数据节点高度调整模块还包括: 数据节点平均高度计算模块:在一段时间后,计算所有数据节点平均高度,如果所述节点平均高度大于Q*所有节点最大高度,或小于P*所有节点最大高度,其中,Q和P为大于O并且小于1,并且Q大于P,则计算所述每个节点所述fI占所有节点总访问次数的百分比R,将所述节点平均高度设置为R*所有节点最大高度。
【文档编号】H04L29/08GK103780692SQ201410027157
【公开日】2014年5月7日 申请日期:2014年1月13日 优先权日:2014年1月13日
【发明者】岳银亮, 熊劲, 陈明宇 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1