【技术实现步骤摘要】
基于跳跃表的数据读写方法、系统、设备及存储介质
[0001]本说明书一个或多个实施例涉及数据读写
,尤其涉及一种基于跳跃表的数据读写方法、存储系统、电子设备及计算机可读存储介质。
技术介绍
[0002]跳跃表(SkipList)是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。在数据增删查改的过程中,不可避免的步骤是将待增删查改的元组的键(也即Key
‑
Value(键值对)存储方式中的key)与跳跃表的节点存储的键进行比较,从而定位出增删查改位置。
[0003]比如在查找过程中,需要将待查找元素的键与跳表的节点中的键进行比较,以定位待查找节点,从而以待查找节点的键为索引读取待查找元素的具体内容;但是,在键较长的情况下,比较操作所需的运行资源开销较大。
技术实现思路
[0004]有鉴于此,本说明书一个或多个实施例提供一种基于跳跃表的数据读写方法、存储系统、电子设备及计算机可读存储介质。
[0005]为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
[0006]根据本说明书一个或多个实施例的第一方面,提出了一种基于跳跃表的数据读写方法,所述跳跃表包括多个索引层,所述跳跃表中的节点用于存储键以及第一特征值,所述第一特征值用于记录本节点的键相对于前驱节点的键的分叉位置、以及本节点的键自分叉位置后的至少部分值;所述方法
【技术保护点】
【技术特征摘要】
1.一种基于跳跃表的数据读写方法,其特征在于,所述跳跃表包括多个索引层,所述跳跃表中的节点用于存储键以及第一特征值,所述第一特征值用于记录本节点的键相对于前驱节点的键的分叉位置、以及本节点的键自分叉位置后的至少部分值;所述方法包括:获取待读写元素的目标键;若所述目标键不同于所述跳跃表的首个节点的键,确定首个节点在最高索引层指向的下一个节点为待比较节点,循环执行以下过程直到满足预设条件:将所述目标键的第二特征值与所述待比较节点的第一特征值进行比较;其中,所述第二特征值用于记录所述目标键相对于待比较节点的前驱节点的键的分叉位置、以及所述目标键自分叉位置后的至少部分值;若两者不同,根据比较结果指示的大小关系确定下一次循环过程中的待比较节点;若满足预设条件,根据最后一次循环过程中的待比较节点进行所述待读写元素的读写操作。2.根据权利要求1所述的方法,其特征在于,所述待读写元素包括待读元素和待写元素;若是待读元素,所述预设条件包括:所述目标键与所述待比较节点的键相同;若是待写元素,所述预设条件包括:所述目标键与所述待比较节点的键相同或者无下一个待比较节点。3.根据权利要求1所述的方法,其特征在于,所述根据比较结果指示的大小关系确定下一次循环过程中的待比较节点,包括:若跳跃表中的节点是按照键从小到大排序,如果比较结果指示目标键小于所述待比较节点的键,将所述待比较节点的前驱节点在下一索引层指向的下一个节点确定为下一次循环过程中的待比较节点;如果比较结果指示所述目标键大于所述待比较节点的键,将所述待比较节点在本索引层指向的下一个节点确定为下一次循环过程中的待比较节点;若跳跃表中的节点是按照键从大到小排序,如果比较结果指示目标键大于所述待比较节点的键,将所述待比较节点的前驱节点在下一索引层指向的下一个节点确定为下一次循环过程中的待比较节点;如果比较结果指示所述目标键小于所述待比较节点的键,将所述待比较节点在本索引层指向的下一个节点确定为下一次循环过程中的待比较节点。4.根据权利要求1至3任意一项所述的方法,其特征在于,所述跳跃表中的任一节点存储的键的数据类型为字符串类型;任一节点的第一特征值包括:该节点的键与前驱节点的键之间的公共前缀的第一长度、以及该节点的键自公共前缀后的至少部分字符;所述目标键的第二特征值包括:所述目标键与所述待比较节点的前驱节点的键之间的公共前缀的第二长度、以及所述目标键自公共前缀后的至少部分字符。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:若所述目标键不同于所述跳跃表的首个节点的键,生成所述目标键相对于所述首个节点的第二特征值;若所述跳跃表中的节点是按照键从小到大排序的,所述若两者不同,根据比较结果指示的大小关系确定下一次循环过程中的待比较节点,包括:
若所述第二长度大于所述第一长度,指示所述目标键小于所述待比较节点的键,将所述待比较节点的前驱节点在下一索引层指向的下一个节点确定为下一次循环过程中的待比较节点;若所述第二长度小于所述第一长度,指示所述目标键大于所述待比较节点的键,生成所述目标键相对于所述待比较节点的第二特征值,以及将所述待比较节点在本索引层指向的下一个节点确定为下一次循环过程中的待比较节点;若所述第二长度等于所述第一长度、且所述第二特征值中的字符小于所述第一特征值中的字符,指示所述目标键小于所述待比较节点的键,将所述待比较节点的前驱节点在下一索引层指向的下一个节点确定为下一次循环过程中的待比较节点;若所述第二长度等于所述第一长度、且所述第二特征值中的字符大于所述第一特征值中的字符,指示所述目标键大于所述待比较节点的键,生成所述目标键相对于所述待比较节点的第二特征值,以及将所述待比较节点在本索引层指向的下一个节点确定为下一次循环过程中的待比较节点。6.根据权利要求5所述的方法,其特征在于,在所述第一特征值中的字符和所述第二特征值中的字符非自公共前缀后的剩余全部字符的情况下,还包括:若所述第二特征值与所述第一特征值相同,将所述目标键中自公共前缀后的剩余字符和所述待比较节点自公共前缀后的剩余字符进行比较;若前者大于后者,生成所述目标键相对于所述待比较节点的第二特征值,以及将所述待比较节点在本索引层指向的下一个节点确定为下一次循环过程中的待比较节点;若前者小于后者,将所述待比较节点的前驱节点在下一索引层指向的下一个节点确定为下一次循环过程中的待比较节点;若前者等于后者,表征所述目标键与所述待比较节点的键相同,结束循环。7.根据权利要求1至3任意一项所述的方法,其特征在于,所述跳跃表中的任一节点存储的键为复合键,且复合键中的不同键的数据类型包括字符串类型或整数类型;任一节点的第一特征值包含该节点与前驱节点分叉的键的索引;如果分叉的键的数据类型为字符串类型,则所述第一特征值还包括该节点的分叉的键与前驱节点的分叉的键之间的公共前缀的第一长度、以及该节点的分叉的键自公共前缀后的至少部分字符;如果分叉的键的数据类型为...
【专利技术属性】
技术研发人员:赵树起,
申请(专利权)人:杭州阿里巴巴飞天信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。