【技术实现步骤摘要】
基于范围简图的有序链表快速查询方法和装置
本专利技术涉及键值存储数据库领域,具体为一种利用RangeSketch(范围简图)来进行有序链表的快速查询的方法。
技术介绍
随着互联网生态的不断发展,大型互联网公司需要存储的数据已经达到PB量级,部分中小型互联网公司也逐渐积累了TB量级的数据。为了应对如此大规模的数据存储要求,键值存储数据库逐渐取代了传统的关系型数据库成为大规模数据存储的第一选择。键值存储数据库通常将不同的键值对按照键值大小的顺序组织成有序链表的形式,并且存储在磁盘等存储设备中。因此,如何快速地判断一个给定的键值是否在有序链表中,如何快速地查询该键值在有序链表中对应的结点的地址,就成为了决定键值存储数据库性能的关键问题。著名的键值存储数据库,例如LevelDB、RocksDB和Redis等,基本都使用了辅助数据结构加速有序链表的成员关系测试和查询。目前常见的做法是将有序链表维护为块状链表的形式,通过二分查找算法定位一个特定的链表块,并通过布隆过滤器进行待查询键值的成员关系测试,对于通过了成员关系测试的键值在 ...
【技术保护点】
1.一种基于Range Sketch的有序链表快速查询方法,其特征在于,包括以下步骤:/n将有序链表切分为多个首尾相连的链表段,每一个链表段包含常数个结点,并建立数据结构以记录每一个链表段的信息;/n在查询一个特定的键值所对应的结点时,判断该对应的结点在有序链表中所属的特定链表段,顺序地搜索该特定链表段上的结点并依次判断其键值和待查询的键值是否相等。/n
【技术特征摘要】
20200527 CN 20201045984861.一种基于RangeSketch的有序链表快速查询方法,其特征在于,包括以下步骤:
将有序链表切分为多个首尾相连的链表段,每一个链表段包含常数个结点,并建立数据结构以记录每一个链表段的信息;
在查询一个特定的键值所对应的结点时,判断该对应的结点在有序链表中所属的特定链表段,顺序地搜索该特定链表段上的结点并依次判断其键值和待查询的键值是否相等。
2.根据权利要求1所述的方法,其特征在于,采用桶数组BucketsArray维护有序链表的每一个链表段的信息;BucketsArray是一个由多个桶组成的数组,桶的数量和有序链表被切分成的链表段的数量相等,第k个桶维护第k个链表段的信息。
3.根据权利要求2所述的方法,其特征在于,每一个桶包含三个域,分别是:
最小键值min,记录桶对应的链表段中所有结点的键值的最小值,即链表段第一个结点的键值;
最大键值max,记录桶对应的链表段中所有结点的键值的最大值,即链表段最后一个结点的键值;
段首地址address,记录桶对应的链表段的起始地址,即链表段第一个结点的地址。
4.根据权利要求2或3所述的方法,其特征在于,采用范围简图RangeSketch判断待查询的键值所对应的结点在有序链表中所属的特定链表段;RangeSketch是一个由多个单元组成的数组,其功能是维护每一个键值对应的结点可能属于哪些桶。
5.根据权利要求4所述的方法,其特征在于,RangeSketch含有d个相互独立的哈希函数,每一个哈希函数将一个键值随机地映射到一个单元内;每一个单元包含两个域即下界LB和上界UB,分别记录被映射到该单元的键值对应的结点所属的桶的编号的最小值和最大值;当对有序链表切分完并建立BucketsArray之后,将有序链表中的每一个结点和其所属的桶的编号插入到RangeSketch中。
6.根据权利要求5所述的方法,其特征在于,所述将有序链表中的每一个结点和其所属的桶的编号插入到RangeSketch中,包括:
通过结点的键值和d个哈...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。