索引独立布谷过滤器、一致性布谷过滤器及操作方法技术

技术编号:21686091 阅读:26 留言:0更新日期:2019-07-24 14:39
本发明专利技术提供了数据结构领域的索引独立布谷过滤器、一致性布谷过滤器及操作方法。索引独立布谷过滤器包括多个桶,每个桶有b个槽位,多个桶被映射到一个范围从1到M‑1的一致性哈希环中。一致性布谷过滤器,包括上述任意所述的s个异构的索引独立布谷过滤器,任意索引独立布谷过滤器有mi≥1个桶,每个桶有bi≥1个槽位,其中,s≥1,初始为1,i∈[0,s‑1]。本发明专利技术还从插入、查询、删除元素介绍了一致性布谷过滤器的操作方法,以及一致性布谷过滤器的容量调整问题。本发明专利技术在容量弹性、空间效率以及设计伸缩性方面都有着良好的表现。

Indexed Independent Valley Filter, Consistent Valley Filter and Operating Method

【技术实现步骤摘要】
索引独立布谷过滤器、一致性布谷过滤器及操作方法
本专利技术属于网络应用数据结构领域,具体是涉及到索引独立布谷过滤器、一致性布谷过滤器及操作方法。
技术介绍
在数据库、缓存、路由器、存储和网络应用中,集合表示同时支持成员关系查询是一个基本的问题。这些系统通常采用概率型数据结构来表示集合元素,在很小的假阳性比率下支持常数时间成员查询操作。用于成员查询广泛使用的的概率型数据结构有布隆过滤器,布谷过滤器以及它们的变种。布隆过滤器和布谷过滤器用不同的方式表示元素。布隆过滤器是一个固定长度的初始比特为0的数组。为了插入一个元素,k个独立的哈希函数用于将元素映射到比特向量,然后相应的比特会被置1。当检测任意元素x的成员关系时,布隆过滤器只检查k个相应的比特位是否为0。如果都是1,布隆过滤器得出x是集合成员(可能隐含一个假阳性元素);否则,可以正确的得出x不是集合成员(无假阴性)。和布隆过滤器不同,布谷过滤器在桶中直接存储元素指纹。布谷过滤器通过部分布谷哈希得出元素的两个候选桶,将指纹存入其中之一。如果元素的指纹在任意一个候选桶中找到,则认为元素是集合成员。然而布谷过滤器和布隆过滤器因为不能重新设置容量大小不能处理动态集合成员。为此,动态布隆过滤器(DBF)和动态布谷过滤器(DCF)已经被提出。DBF和DCF尝试根据需求增加和合并同构的布隆过滤器和布谷过滤器来实现容量的伸缩性。在DBF和DCF中,每个过滤器的长度都是预置的,因为格或桶的索引是基于过滤器的长度取余得到,所以过滤器的长度不能改变。只能通过增加和合并同构的过滤器来调整容量。在最坏的情况下,因为一个额外的元素需要一个过滤器,导致空间利用率低于50%的结果。因此,在空间稀缺的场景下,桶级别的容量调整对于节省空间是必要的。而且,DBF主要的缺陷在于由于可能有多个布隆过滤器满足查询条件,不能支持可靠的删除操作。尽管DCF保证可靠的元素删除,利用异或操作在重新放置时得到第二个候选桶。所以,每个布谷过滤器的长度只能是m=2γ(γ≥0)。否则,异或操作会超出范围。用于动态集合表示的概率型数据结构主要关注以下三个准则:容量弹性(CE)。数据结构的容量是依据集合基数来适应性调整的。尽管要表示的元素数量不可预测,但是可用容量大小要适应性的随着集合基数趋势变化一致调整;空间效率(SE)。无论集合基数的变化如何,空间利用率都保持在较高水平。这对空间稀缺的场景十分重要,例如:无线传感器网络。设计伸缩性(DF)。所有的参数都是可调整的,用户可以根据设计目标定制自身的配置。例如:哈希函数的数量可能为了更高的空间利用而增加,为了更好的查询吞吐而减少。如果这些准则可以实现,将会给集合表示和成员关系查询带来前所未有的好处,保证空间节省和服务质量。设计伸缩性进一步将数据结构扩展到更多有不同需求的一般场景。然而,现有的概率数据结构不能正确的同时实现上述三条准则。布隆过滤器和DBF有低的空间使用率。原因是为了最小的假阳性比率,保持一半的比特位为0。相反,布谷过滤器和它的变种通过在每次插入中的重放置策略提高了空间利用率。DBF和DCF通过动态增加和合并过滤器在一定程度上提供了容量弹性。然而,在现实中,需要更加细粒度的容量伸缩来处理小规模的容量溢出和在一些元素被删除时及时的空间回收。而且,现有的数据结构被设计可伸缩性限制。在布隆过滤器器得框架中,为了目标假阳性比率,参数需要细致的设置。同时,布隆过滤器的现有协议必须使用固定数量的哈希函数和2的幂次方桶数。现有数据结构在实现上述三条准则不足的共同原因是它们都维持了元素的格或桶的索引与过滤器长度之间紧密的依赖。结果它们的容量不管动态集合的变化,必须是预置的和不可修改的。
技术实现思路
本专利技术的目的在于提供索引独立布谷过滤器、一致性布谷过滤器及操作方法,以解决现有方法无法同时实现用于动态集合表示的概率型数据结构的三条准则的现有技术问题。为解决上述问题,本专利技术提供了一种索引独立布谷过滤器,包括多个桶,每个桶有b个槽位,多个桶被映射到一个范围从1到M-1的一致性哈希环中,其中M是一致性哈希环的取值范围。优选地,每个桶可存储0-b个指纹,且为每个元素x提供k≥1个候选桶,为了确定元素x的候选桶,k个相互独立的哈希函数被用于将元素指纹ηx映射到一致性哈希环中,k个哈希函数的k个最近的桶被认为是元素指纹ηx的候选桶。本专利技术还提供了一致性布谷过滤器,包括上述任意所述的s个异构的索引独立布谷过滤器,任意索引独立布谷过滤器有mi≥1个桶,每个桶有bi≥1个槽位,其中,s≥1,初始为1,i∈[0,s-1]。依托于上述一致性布谷过滤器,本专利技术还提供了一致性布谷过滤器的操作方法,操作方式包括元素插入,元素查询和元素删除。优选地,一致性布谷过滤器追踪每个索引独立布谷过滤器中插入的元素数量,并将插入最后一个元素的索引独立布谷过滤器标记为活跃索引独立布谷过滤器,元素插入的操作方式如下:索引独立布谷过滤器将元素x映射到整数区间[0,2f-1]中来生成元素指纹ηx,其中f为元素指纹长度;相互独立的k个哈希函数将元素指纹ηx映射到一致性哈希环中,基于生成的哈希值,一致性哈希决定元素指纹ηx在活跃索引独立布谷过滤器中的候选桶;将元素指纹ηx按布谷哈希中的策略插入到活跃的索引独立布谷过滤器中,如果活跃索引独立布谷过滤器成功存储元素指纹ηx,那么插入结束;否则,一致性布谷过滤器会进行扩容操作或者扩展操作,扩容操作或者扩展操作后,将元素指纹ηx插入到扩展的或者扩展的索引独立布谷过滤器中。优选地,元素查询的操作方式如下:通过相互独立的k个哈希函数对元素指纹ηx哈希来决定元素指纹ηx在一致性哈希环中的位置;基于哈希值,一致性哈希得出对于元素指纹ηx在索引独立布谷过滤器中候选桶的位置:如果任一候选桶持有元素指纹ηx,成员关系查询终止,返回存在;相反,如果在所有的索引独立布谷过滤器中,都没有找到元素指纹ηx,一致性布谷过滤器判定元素x不属于集合A,返回不存在。优选地,元素x的删除需要首先进行成员关系查询来找出元素的可能位置,元素删除的操作方式如下:如果对应的元素指纹ηx在一致性布谷过滤器中未找到,删除操作返回失败;如果对应的元素指纹ηx在一致性布谷过滤器中被找到则直接执行删除。优选地,所述操作方式还包括对一致性布谷过滤器的容量进行调整,调整方式包括扩容、缩容、扩展和压缩。优选地,扩容是指向索引独立布谷过滤器中增加桶,缩容是指通过从指定索引独立布谷过滤器中移除桶;扩容时,在其后继中存储的元素指纹ηx会受到影响:新的桶Bnew被映射到Bi和Bj(i,j∈[0,m-1])之间,Bj是Bnew的后继。在这种情况下,仅在Bj中存储的元素可能需要被重新放置到Bnew中,即如果在Bj中的元素指纹ηx被映射到Bi和Bnew之间,则它应该被移动到Bnew中;否则,应该继续留在Bi中;缩容时,当某个桶从索引独立布谷过滤器中移除时,仅在此桶中的元素需要被重放置到一致性布谷过滤器中:若一致性哈希中的桶Bi和Bj,Bj是Bi的后继,一致性布谷过滤器优先尝试将桶Bi中的元素指纹ηx推到桶Bj中,然后将剩余元素重放置到其余桶中,如果Bi中的元素指纹ηx被全部成功存储,Bi可以被移除,否则,Bi不能被移除。优选地,扩展是指向一致性布本文档来自技高网
...

【技术保护点】
1.索引独立布谷过滤器,其特征是,包括多个桶,每个桶有b个槽位,多个桶被映射到一个范围从1到M‑1的一致性哈希环中,其中M是一致性哈希环的取值范围。

【技术特征摘要】
1.索引独立布谷过滤器,其特征是,包括多个桶,每个桶有b个槽位,多个桶被映射到一个范围从1到M-1的一致性哈希环中,其中M是一致性哈希环的取值范围。2.根据权利要求1所述的索引独立布谷过滤器,其特征是,每个桶可存储0-b个指纹,且为每个元素x提供k之1个候选桶,为了确定元素x的候选桶,k个相互独立的哈希函数被用于将元素指纹ηx映射到一致性哈希环中,k个哈希函数的k个最近的桶被认为是元素指纹ηx的候选桶。3.一致性布谷过滤器,其特征是,包括如权利要求1或2所述的s个异构的索引独立布谷过滤器,任意索引独立布谷过滤器有mi之1个桶,每个桶有bi之1个槽位,其中,s≥1,初始为1,i∈[0,s-1]。4.一致性布谷过滤器的操作方式,其特征是,所述操作方式包括元素插入,元素查询和元素删除,一致性布谷过滤器追踪每个索引独立布谷过滤器中插入的元素数量,并将插入最后一个元素的索引独立布谷过滤器标记为活跃索引独立布谷过滤器,元素插入的操作方式如下:索引独立布谷过滤器将元素x映射到整数区间[0,2f-1]中来生成元素指纹ηx,其中f为元素指纹长度;相互独立的k个哈希函数将元素指纹ηx映射到一致性哈希环中,基于生成的哈希值,一致性哈希决定元素指纹ηx在活跃索引独立布谷过滤器中的候选桶;将元素指纹ηx按布谷哈希中的策略插入到活跃的索引独立布谷过滤器中,如果活跃索引独立布谷过滤器成功存储元素指纹ηx,那么插入结束;否则,一致性布谷过滤器会进行扩容操作或者扩展操作,扩容操作或者扩展操作后,将元素指纹ηx插入到扩展的或者扩展的索引独立布谷过滤器中。5.根据权利要求4所述的一致性布谷过滤器的操作方式,其特征是,元素查询的操作方式如下:通过相互独立的k个哈希函数对元素指纹ηx哈希来决定元素指纹ηx在一致性哈希环中的位置;基于哈希值,一致性哈希得出对于元素指纹ηx在索引独立布谷过滤器中候选桶的位置:如果任一候选桶持有元素指纹ηx,成员关系查询终止,返回存在;相反,如果在所有的索引独立布谷过滤器中,都没有找到元素指纹ηx,一致性布谷过滤器判定元素x不属于集合A,返回不存在。6.根据权利要求4所述的一致性布谷过滤器的操作方式,其特征是,元素x的删除需要首先进行成员关系查询来找出元素的可能位置,元素删除的操作方式如下:如果对应的元素指纹ηx在一致性布谷过滤器中未找到,删除操作返回失败;如果对应的元素指纹ηx在一致性布谷过滤器中被找到则直接执行删除。7.根据权利要求4所述的一致性布谷过滤器的操作方式,其特征是,所述操作方式还包括对一致性布谷过滤器的容量进行调整,调整方式包括扩容、缩容、扩展和压缩。8.根据权...

【专利技术属性】
技术研发人员:郭得科罗来龙李江帆李尚森
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:湖南,43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1