CN105320654B - 动态布隆过滤器和基于动态布隆过滤器的元素操作方法 - Google Patents
动态布隆过滤器和基于动态布隆过滤器的元素操作方法 Download PDFInfo
- Publication number
- CN105320654B CN105320654B CN201410231110.9A CN201410231110A CN105320654B CN 105320654 B CN105320654 B CN 105320654B CN 201410231110 A CN201410231110 A CN 201410231110A CN 105320654 B CN105320654 B CN 105320654B
- Authority
- CN
- China
- Prior art keywords
- bloom filter
- sub
- isomorphism
- child list
- dynamic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 42
- 238000003860 storage Methods 0.000 claims abstract description 100
- 239000004744 fabric Substances 0.000 claims description 10
- 238000004064 recycling Methods 0.000 claims description 10
- 230000014759 maintenance of location Effects 0.000 claims description 5
- 238000003780 insertion Methods 0.000 claims description 3
- 230000037431 insertion Effects 0.000 claims description 3
- 230000001174 ascending effect Effects 0.000 claims description 2
- 238000013507 mapping Methods 0.000 abstract description 10
- 238000013461 design Methods 0.000 abstract description 4
- 238000005457 optimization Methods 0.000 abstract description 3
- ZJPGOXWRFNKIQL-JYJNAYRXSA-N Phe-Pro-Pro Chemical compound C([C@H](N)C(=O)N1[C@@H](CCC1)C(=O)N1[C@@H](CCC1)C(O)=O)C1=CC=CC=C1 ZJPGOXWRFNKIQL-JYJNAYRXSA-N 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000011017 operating method Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种动态布隆过滤器,以根据实际应用场景设计布隆过滤器,减小内存空间的消耗和计算元素哈希映射的代价。所述动态布隆过滤器包含sm个同构子布隆过滤器BF,以se为锚点,sm个同构子BF被分为组子链表,组子链表中每组子链表被指派一个索引线程以对组子链表进行并行操作,se为每个子链表的期望长度;根据键‑值存储系统的性能需求,动态布隆过滤器的相关参数被初始化为定值。一方面,键‑值存储系统可以支持不同集合的并行多线程索引查询,提升了索引整体吞吐率;另一方面,支持并行查询优化和BF之间的位向量操作,有利于资源管理;第三方面,能够估算性能和索引空间的最佳平衡点。
Description
技术领域
本发明涉及数据存储领域,具体涉及动态布隆过滤器和基于动态布隆过滤器的元素操作方法。
背景技术
对于当今大规模、高性能的数据密集型应用,基于键-值(Key-Value,K-V)的存储系统是影响应用性能的至关重要的构件。因此,无论在商业领域还是学术范畴,例如,重复数据删除系统、电子商务平台、数据库字典和网络对象缓存技术等,高性能的K-V存储系统设计都得到了广泛的关注。
为了实现低延迟和高吞吐率的性能需求,并充分利用有限的I/O资源,K-V存储系统需要高效、紧凑的内存索引方案来快速确定请求的数据是不是特定集合的成员。一方面,基于内存K-V存储系统,例如,memcached、RAMCloud、Redis等,将索引全部存入内存从而避免磁盘查找导致的性能瓶颈,目前高性能的K-V存储需要每秒能支持数万甚至是数十万的查询请求,然而,内存容量随着存储规模地递增而成倍地增长将导致购买价格和功耗呈指数型增长,因此,索引的空间开销成为影响K-V存储系统可伸缩性和整体成本效益的最重要的要素之一;另一方面,基于磁盘的索引查询效率太低,一般而言,磁盘的查询代价在毫秒级别,因此,每秒吞吐率在千次以下,特别是,当某个请求索引未匹配时将导致磁盘的一次空查找,从而极大地影响了整个K-V系统的吞吐率。
布隆过滤器(Bloom Filter,BF)是一个基于位向量的支持数据高效查询的空间紧凑型数据结构。每个元素查询是基于一组基于key的随机哈希(Hash)函数,若由哈希函数生成的每个在位向量映射的位置的值都非0,则该元素被判定为属于存储集合,若任意一个映射位的值为0,则该元素不属于该存储集合。但是,由于不同key的映射函数可能映射到位向量的同一位置,因此,当插入位向量的元素达到一定规模时,可能存在某个元素不属于某个存储集合但该元素的所有映射位被其它已存储的元素置为非0,从而被误认为属于该存储集合,即假阳性错误(False Postive),只要假阳性错误概率(False Postive Probablity,FPP)在能容忍的合理范围内,由于其哈希映射的常数时间和紧凑的存储空间开销,使得它在K-V存储系统设计中得到了广泛地应用。
现有的一种布隆过滤器即可扩展布隆过滤器(Scalable Bloom Filter,SBF)是支持元素动态扩展的主要方案,其基本原理是将BF的空间分配以粒度更小的子BF为单位,若当前所有子BF存储的元素已满,那么将分配一个新的子BF来支持元素的插入,每个新分配的子BF加入到一个链表的队首。当对元素进行查询操作时,将从链表的队首即最新插入的子BF起遍历查询(保证空间局部性原理,最近访问的数据可能会被再次访问)。若存在某个子BF确实包含了该元素,则遍历结束返回查找成功的信息,若当前子BF并没有包含该元素(包括发生假阳性错误),则继续查找下一个子BF,若所有子BF均遍历但未查找到该元素,则返回元素查找失败的信息。
上述现有的SBF的主要缺陷在于,一方面,对每个子BF的初始化值并没有考虑到实际应用场景,例如,内存消耗的限制、索引吞吐率的需求等,参数值往往是随机获取,缺乏实用性;另一方面,在实际应用中,SBF因为子BF的异构性,除了不支持位向量的代数操作以外,还存在两大缺陷:(1)相比第一个BF,在第l个BF中,每个key消耗的内存空间增加了(l-1),(2)不同子BF都需要重新计算映射位置,这是由于每个子BF的大小不一样,从而得到的映射位也不相等,因此,SBF计算元素哈希映射的代价随着l的增大而递增。
发明内容
本发明提供一种动态布隆过滤器和基于动态布隆过滤器的操作方法,以根据实际应用场景设计布隆过滤器,减小内存空间的消耗和计算元素哈希映射的代价。
本发明实施例提供一种动态布隆过滤器,所述动态布隆过滤器包含sm个同构子布隆过滤器BF,以se为锚点,所述sm个同构子BF被分为组子链表,所述组子链表中每组子链表被指派一个索引线程以对所述组子链表进行并行操作,所述se为每个子链表的期望长度;
根据键-值存储系统的性能需求,所述动态布隆过滤器的相关参数被初始化为定值,所述相关参数包括元素查询的最坏时间代价Qw、动态布隆过滤器的假阳性错误概率的上限期望值Fmax、每个所述同构子BF的假阳性错误概率的期望值fppe、每个所述同构子BF最多索引元素个数n、每个所述同构子BF的内存消耗空间大小m、所述sm个同构子BF总的内存消耗空间大小M和所述每个子链表的期望长度se。
本发明另一实施例提供一种基于动态布隆过滤器的元素操作方法,所述动态布隆过滤器为包含sm个同构子布隆过滤器BF的动态布隆过滤器,其中,以se为锚点,所述sm个同构子BF被分为组子链表,所述组子链表中每组子链表被指派一个索引线程以对所述组子链表进行并行操作,所述se为每个子链表的期望长度,根据键-值存储系统的性能需求,所述动态布隆过滤器的相关参数被初始化为定值,所述相关参数包括元素查询的最坏时间代价Qw、动态布隆过滤器的假阳性错误概率的上限期望值Fmax、每个所述同构子BF的假阳性错误概率的期望值fppe、每个所述同构子BF最多索引元素个数n、每个所述同构子BF的内存消耗空间大小m、所述sm个同构子BF总的内存消耗空间大小M和所述每个子链表的期望长度se;所述方法包括:
个索引线程并行查询组子链表,所述每个索引线程递归查询中组子链表对应的一组子链表,所述一组子链表对应se个同构子布隆过滤器BF,所述|Xt|为当前索引空间的存储规模,所述sm为所述动态布隆过滤器中同构子BF的个数,所述se为每个子链表的期望长度;
所述每个索引线程递归查询中组子链表对应的一组子链表包括:
所述个索引线程中的任意一个索引线程Pi查询所述组子链表中任意一组子链表Li下的任意一个子BF;
若子链表Li下的任意一个子BF没有匹配到待查找元素x,则遍历所述子链表Li下的另一个子BF;
若任意一个子BF匹配到所述待查找元素x,则返回匹配到所述待查找元素x的子BF;
若遍历所述组子链表中所有子链表Li下的子BF均没有匹配到所述待查找元素x,则返回所述待查找元素x未被存储的消息。
本发明另一实施例提供一种基于动态布隆过滤器的元素操作方法,所述动态布隆过滤器为包含sm个同构子布隆过滤器BF的动态布隆过滤器,其中,以se为锚点,所述sm个同构子BF被分为组子链表,所述组子链表中每组子链表被指派一个索引线程以对所述组子链表进行并行操作,所述se为每个子链表的期望长度,根据键-值存储系统的性能需求,所述动态布隆过滤器的相关参数被初始化为定值,所述相关参数包括元素查询的最坏时间代价Qw、动态布隆过滤器的假阳性错误概率的上限期望值Fmax、每个所述同构子BF的假阳性错误概率的期望值fppe、每个所述同构子BF最多索引元素个数n、每个所述同构子BF的内存消耗空间大小m、所述sm个同构子BF总的内存消耗空间大小M和所述每个子链表的期望长度se,所述方法包括:
确定所述动态布隆过滤器是否存在活跃的子布隆过滤器BF;
若所述动态布隆过滤器存在活跃的子BF,则将待插入元素x插入所述活跃的子BF对应的键-值存储容器;
若所述动态布隆过滤器不存在活跃的子BF,则获取新的子BF和所述新的子BF对应的键-值存储容器以插入所述待插入元素x。
本发明另一实施例提供一种基于动态布隆过滤器的元素操作方法,所述动态布隆过滤器为包含sm个同构子布隆过滤器BF的动态布隆过滤器,其中,以se为锚点,所述sm个同构子BF被分为组子链表,所述组子链表中每组子链表被指派一个索引线程以对所述组子链表进行并行操作,所述se为每个子链表的期望长度,根据键-值存储系统的性能需求,所述动态布隆过滤器的相关参数被初始化为定值,所述相关参数包括元素查询的最坏时间代价Qw、动态布隆过滤器的假阳性错误概率的上限期望值Fmax、每个所述同构子BF的假阳性错误概率的期望值fppe、每个所述同构子BF最多索引元素个数n、每个所述同构子BF的内存消耗空间大小m、所述sm个同构子BF总的内存消耗空间大小M和所述每个子链表的期望长度se,所述方法包括:
对所述动态布隆过滤器包含的每个子布隆过滤器BF存储的元素量进行递增排序,所述排序的结果为所述ri是每个子BF的标识符,1≤ri≤sm;
当不等式成立时,对和执行代数并操作得到回收所占据的存储资源;
若回收所占据的存储资源后,回收后依然成立,则回收所占据的存储空间;
递归执行上述操作,直至时停止存储资源的回收。
从上述本发明实施例可知,一方面,由于组子链表中每组子链表被指派一个索引线程以对所述组子链表进行并行操作,因此,键-值存储系统可以支持不同集合的并行多线程索引查询,提升了索引整体吞吐率;另一方面,由于动态布隆过滤器包含的是同构子BF,因此,每个元素通过哈希函数的映射位置一致,支持并行查询优化和BF之间的位向量操作,有利于资源管理;第三方面,动态布隆过滤器的相关参数初始化是根据键-值存储系统的性能需求而定,因此,能够估算性能和索引空间的最佳平衡点。
附图说明
图1是本发明实施例提供的将sm个同构子BF分为组子链表后,每组子链表的实际FPP示意图;
图2是本发明实施例提供的将整个键-值(K-V)存储系统有效地分类成独立的存储空间示意图;
图3-a是本发明实施例提供的每个索引线程递归查询中组子链表对应的一组子链表的方法流程示意图;
图3-b是本发明另一实施例提供的每个索引线程递归查询中组子链表对应的一组子链表的方法流程示意图;
图4-a是本发明另一实施例提供的基于动态布隆过滤器的元素操作方法示意图;
图4-b是本发明另一实施例提供的基于动态布隆过滤器的元素操作方法示意图;
图5是本发明另一实施例提供的基于动态布隆过滤器的元素操作方法示意图。
具体实施方式
本发明提供动态布隆过滤器,所述动态布隆过滤器包含sm个同构子布隆过滤器BF,以se为锚点,所述sm个同构子BF被分为组子链表,所述组子链表中每组子链表被指派一个索引线程以对所述组子链表进行并行操作,所述se为每个子链表的期望长度;根据键-值存储系统的性能需求,所述动态布隆过滤器的相关参数被初始化为定值,所述相关参数包括元素查询的最坏时间代价Qw、动态布隆过滤器的假阳性错误概率的上限期望值Fmax、每个所述同构子BF的假阳性错误概率的期望值fppe、每个所述同构子BF最多索引元素个数n、每个所述同构子BF的内存消耗空间大小m、所述sm个同构子BF总的内存消耗空间大小M和所述每个子链表的期望长度se。本发明实施例还提供相应的基于动态布隆过滤器的元素操作方法。以下分别进行详细说明。
在本发明实施例中,动态布隆过滤器(Dynamic Bloom Filter,DBF)包含sm个同构子布隆过滤器BF。所谓同构,是指每个子BF初始化的k和m分别相同,其中,k指的是每个子BF的随机哈希映射函数的个数,m指的是每个子BF中,其位向量的大小,即,每个子BF的内存消耗空间大小。由于动态布隆过滤器包含的子BF是同构的,因此,可以基于BF的位向量进行代数操作,例如位向量的交(Union)、并(Intersection)和折半(Halving)等代数操作。
所谓位向量的交,是指给定两个集合S1和S2,分别用B1和B2表示基于BF的位向量,那么对于集合S=S1∩S2,通过与B1和B2的同构的位向量B表示成功的概率为其中B由如下公式
得出。
所谓位向量的并,是指给定两个集合S1和S2,分别用B1和B2表示基于BF的位向量,那么对于集合S=S1∪S2,通过与B1和B2的同构的位向量B表示,其中B由如下公式
得出。因为B受FPP的限制,一般约定||S1|+|S2|≤n时,B1和B2之间的并操作才有意义,否则,B存储的元素大于预先设定的最大容量,导致实际FPP的值不可接受,这种方案的实际意义在于:两个BF之间的并操作,将二个索引信息整合进一个BF,从而高效地节省了另外一个BF所占据的内存空间。
所谓折半,是指给定某个集合S,如果集合的大小|S|≤n/2时,可以对它的位向量B进行折半操作,此时,位向量B所占空间的大小缩小一半(取前m/2位),其位操作如下公式
所示,支持存储的最大元素个数为n/2,而相比未折半的数据映射位,新的位计算方法分为二个条件,即:
若动态布隆过滤器的假阳性错误概率(False Postive Probablity,FPP)的上限期望值用Fmax表示,每个子BF的FPP的期望值用fppe表示,每个子链表的期望长度使用se表示,则se=Fmax/fppe。假设在共享的存储空间内最多有sm个子BF,那么,当子链表长度s满足条件se<s≤sm时,链表的实际FPP将会超过Fmax。因此,在本发明实施例中,可以以se为锚点,将sm个同构子BF分为(“”表示对sm/se的运算结果向上取整,下同)组子链表,利用操作系统多线程机制,将组子链表中每组子链表被指派一个索引线程以对所述组子链表进行并行操作,例如,并行查询,从而支持子链表之间进行操作,例如,查询操作。将sm个同构子BF分为组子链表后,每组子链表的实际FPP如附图1所示。从附图1可知,其每组子链表的实际FPP在下限期望值fppe与上限期望值Fmax之间,即不会超过Fmax。相比一般DBF的串行查询过程,个独立索引线程对组子链表进行的并行操作将极大地提升索引的吞吐率。
本发明实施例提供的动态布隆过滤器,其另一个特征是:根据键-值存储系统的性能需求,动态布隆过滤器的相关参数被初始化为定值。键-值存储系统的性能需求主要包括键-值存储系统的读写代价CA、每个同构子BF的平均查询代价Sb、键-值存储系统确定元素是否存在的平均查询代价Sq、从键-值存储系统读取一个元素的平均代价sr和将一个元素写入键-值存储系统的平均代价sw等等。动态布隆过滤器与键-值(K-V)存储系统的操作密切相关,因此,分析元素查询的最坏时间代价Qw、键-值(K-V)存储系统的读元素代价CR和写元素代价CW具有重要意义,以下详细说明。
针对每个分组的索引线程,一个元素查询的最坏时间代价Qw表示该元素并没有被存储,却需要遍历整个子链表才能确定这种状况所付出的时间代价。如以下公式
所示,由于每个子BF的假阳性错误,从而得出Qw。因此,根据公式(3),如果根据键-值存储系统的性能需求,预先设定Qw,则可以推出Fmax。此处有一个关键的关于性能和内存开销的权衡点,例如,Bufferhash将所有的子BF放入内存,从而每个同构子BF的平均查询代价Sb的值可以忽略不计。因为,一般地,相比基于磁盘(即使备份介质为SSD)的键-值(K-V)存储系统的查找代价Sq,Sb远小于Sq成立,另一方面,Bloomstore提出只将最近活跃的子BF放入内存,从而减少内存的消耗空间,那么可以近似认为Sb=Sq,从而Qw相比Bufferhash可能成倍地增加。
不失一般性地,假设元素随机地存入在子链表对应的存储区间内,元素的期望匹配位置在标识符为的子BF及其对应的存储容器中,因此,读取该元素的期望代价CR如公式
所示。一般元素访问具有时间局部性特征,因此,最近存储的元素具有更高的可能性被再次访问,因此,最近分配的子BF具有优先访问权将导致实际的元素读代价小于CR。
写某个元素的前提条件是查询动态布隆过滤器未匹配,因此,键-值(K-V)存储系统的写元素代价CW是查询未匹配代价与将元素写入相对应的键-值存储容器的期望代价之和,即如公式
CW=QW+sW (5)
所示。
不失一般性地,若键-值(K-V)存储系统的读写请求是混合,设读请求所占的比例为R∈[0,1],那么键-值存储系统的读写代价CA的计算如公式
CA=R·CR+(1-R)CW (6)
所示。特别地,MAX{CR,CW}≤CA,当R分别为1和0时必须成立。因此,根据公式(4)和公式(5),将CR和CW分别用CA表示,QW的最大值为MAX{2(CA-Sb-Sr),CA-sw}。
元素查询的最坏时间代价Qw、键-值(K-V)存储系统的读元素代价CR和写元素代价CW等确定后,以下说明动态布隆过滤器的相关参数的初始化值。
设置合适的最大并行索引线程的数量T,对于多核计算机系统获得最大的处理性能特别重要。一方面,索引线程的数量过少将不能充分地利用系统资源,另一方面,索引线程的数量过多也会由于并行锁机制对共享资源的同步化导致降低整个应用程序的性能。因此,一种简单但是非常高效的方案是设置索引线程的数量T为CPU内核数乘以每个内核支持的最大并行线程数。由于一组最长为se的子BF构成的子链表对应一个索引线程查询,因此,子链表的总数量也为索引线程的数量T。此时,M的值由公式
计算,这是因为由如下表1
元素符号 | 初始值 |
k | log2(FPP) |
m | log2(e)·k·n |
表1 标准BF相关参数设定
计算得到,Fmax由公式(3)可得,由表1可知fppe=0.5k。
如果索引的最大内存消耗空间定义为M',那么根据公式(7)可知,同时,根据附图1和公式(3)可知,因此,k的取值范围如公式
所示。因此,根据整个键-值(K-V)存储系统对应的索引性能需求,例如,CA、Sb、Sq、sr和sw已知,并确定了k的取值范围,则本发明实施例对应的动态布隆过滤器对应的参数初始化值如表3所示
表3
将sm个同构子BF分为组子链表并对每组子链表指派一个索引线程后,sm个同构子BF每个同构子BF分别对应负责键-值存储系统中每个独立键-值存储容器,如此,可以将整个键-值(K-V)存储系统有效地分类成独立的存储空间,保证每个子BF对应的K-V存储容器的数据独立性,如附图2所示。附图2所示的键-值存储系统遵照了并行程序的一条最基本原则:保证不同线程之间数据的轻耦合,从而避免数据共享造成的昂贵的同步化代价,例如,锁机制。
从上述本发明实施例提供的动态布隆过滤器可知,一方面,由于组子链表中每组子链表被指派一个索引线程以对所述组子链表进行并行操作,因此,键-值存储系统可以支持不同集合的并行多线程索引查询,提升了索引整体吞吐率;另一方面,由于动态布隆过滤器包含的是同构子BF,因此,每个元素通过哈希函数的映射位置一致,支持并行查询优化和BF之间的位向量操作,有利于资源管理;第三方面,动态布隆过滤器的相关参数初始化是根据键-值存储系统的性能需求而定,因此,能够估算性能和索引空间的最佳平衡点。
本发明实施例还提供一种基于动态布隆过滤器的元素操作方法,其中,动态布隆过滤器是前述本发明实施例的动态布隆过滤器,该方法包括:个索引线程并行查询组子链表,每个索引线程递归查询中组子链表对应的一组子链表,其中,一组子链表对应se个同构子布隆过滤器BF,|Xt|为当前索引空间的存储规模,sm为动态布隆过滤器中同构子BF的个数,se为每个子链表的期望长度。每个索引线程递归查询中组子链表对应的一组子链表的方法流程如附图3-a所示,主要包括步骤S301至步骤S304,说明如下:
S301,个索引线程中的任意一个索引线程Pi查询组子链表中任意一组子链表Li下的任意一个子BF。
S302,若子链表Li下的任意一个子BF没有匹配到待查找元素x,则遍历子链表Li下的另一个子BF。
S303,若任意一个子BF匹配到待查找元素x,则返回匹配到所述待查找元素x的子BF。
若任意一个子BF匹配到待查找元素x,则进一步查找所述匹配到所述待查找元素x的任意一个子BF对应的键-值(K-V)存储容器是否真正存在所述待查找元素x。具体地,是将K-V请求,例如,上层应用的查询请求传递至所述匹配到待查找元素x的任意一个子BF对应的K-V存储容器,利用数据库访问机制确定该K-V存储容器是否真正存在所述待查找元素x。
针对每次匹配,本发明提供的动态布隆过滤器索引查找键-值(K-V)存储系统的期望次数为1+Fmax,而现有的动态布隆过滤器的期望次数为比本发明提供的动态布隆过滤器增加了次。
若所述匹配到所述待查找元素x的任意一个子BF对应的键-值存储容器真正存在所述待查找元素x,则向所述个索引线程中的其他索引线程发送信号以结束查找过程。
S304,若遍历组子链表中所有子链表Li下的子BF均没有匹配到待查找元素x,则返回所述待查找元素x未被存储的消息。
附图3-a更为详细的每个索引线程递归查询中组子链表对应的一组子链表的方法可参阅附图3-b。
本发明另一实施例提供一种基于动态布隆过滤器的元素操作方法,如附图4-a所示,其中,动态布隆过滤器是前述本发明实施例的动态布隆过滤器,该方法主要包括步骤S401至步骤S404,说明如下:
S401,确定所述动态布隆过滤器是否存在活跃的子布隆过滤器BF。
S402,若所述动态布隆过滤器存在活跃的子BF,则将待插入元素x插入所述活跃的子BF对应的键-值存储容器。
S403,若所述动态布隆过滤器不存在活跃的子BF,则获取新的子BF和所述新的子BF对应的键-值存储容器以插入所述待插入元素x。
获取新的子BF和所述新的子BF对应的键-值存储容器之前还包括:判断当前共享存储空间是否已满,即,是否成立,其中,这里i是假设的k个应用集合的游标,j是在这个应用集合中的某个子BF游标,本发明实施例提供的动态布隆过滤器是针对多个键-值(K-V)应用集合共享存储空间的应用场景,而|BFij|是子布隆过滤器BFij对应一组存储的元素集合规模,因此,在这里使用集合表示符号“||”表示规模。
在判断当前共享存储空间未满时,获取新的子BF和所述新的子BF对应的键-值存储容器以插入所述待插入元素x包括:申请新的子BF和所述新的子BF对应的键-值存储容器以插入所述待插入元素x。
附图4-a更为详细的基于动态布隆过滤器的元素操作方法可参阅附图4-b。
本发明另一实施例提供一种基于动态布隆过滤器的元素操作方法,如附图5所示,其中,动态布隆过滤器是前述本发明实施例的动态布隆过滤器,该方法主要包括步骤S501至步骤S504,说明如下:
S501,对动态布隆过滤器包含的每个子布隆过滤器BF存储的元素量进行递增排序,排序的结果为 是同一应用的某个子BF,而ri是每个子BF的标识符,1≤ri≤sm。
S502,当不等式成立时,对和执行代数并操作得到回收所占据的存储资源,其中,n为每个子BF最多可索引元素个数,和分别是子布隆过滤器和对应一组存储的元素集合规模的存储规模。
S503,若回收所占据的存储资源后,回收后依然成立,则回收所占据的存储空间,其中,和分别是子布隆过滤器和对应一组存储的元素集合规模的存储规模。
S504,递归执行上述S501至S503的操作,直至时停止存储资源的回收,其中,和分别是子布隆过滤器和对应一组存储的元素集合规模的存储规模。
在附图5示例的基于动态布隆过滤器的元素操作方法中,子BF为计数型(Counting)布隆过滤器。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
以上对本发明实施例所提供的动态布隆过滤器和基于动态布隆过滤器的元素操作方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种动态布隆过滤器,其特征在于,所述动态布隆过滤器包含sm个同构子布隆过滤器BF,以se为锚点,所述sm个同构子布隆过滤器BF被分为组子链表,所述组子链表中每组子链表被指派一个索引线程以对所述组子链表进行并行操作,所述se为每个子链表的期望长度;
根据键-值存储系统的性能需求,所述动态布隆过滤器的相关参数被初始化为定值,所述相关参数包括元素查询的最坏时间代价Qw、动态布隆过滤器的假阳性错误概率的上限期望值Fmax、每个所述同构子布隆过滤器BF的假阳性错误概率的期望值fppe、每个所述同构子布隆过滤器BF最多索引元素个数n、每个所述同构子布隆过滤器BF的内存消耗空间大小m、所述sm个同构子布隆过滤器BF总的内存消耗空间大小M和所述每个子链表的期望长度se。
2.根据权利要求1所述的动态布隆过滤器,其特征在于,所述sm个同构子布隆过滤器BF中每个同构子布隆过滤器BF分别对应负责键-值存储系统中每个独立键-值存储容器。
3.根据权利要求1所述的动态布隆过滤器,其特征在于,所述键-值存储系统的性能需求包括键-值存储系统的读写代价CA、每个所述同构子布隆过滤器BF的平均查询代价Sb、键-值存储系统确定元素是否存在的平均查询代价Sq、从键-值存储系统读取一个元素的平均代价sr和将一个元素写入键-值存储系统的平均代价sw。
4.一种基于动态布隆过滤器的元素操作方法,其特征在于,所述动态布隆过滤器为权利要求1至3任意一项所述的动态布隆过滤器,所述方法包括个索引线程并行查询组子链表,每个所述索引线程递归查询所述组子链表对应的一组子链表,所述一组子链表对应se个同构子布隆过滤器BF,所述|Xt|为当前索引空间的存储规模,所述sm为所述动态布隆过滤器中同构子布隆过滤器BF的个数,所述se为每个子链表的期望长度;
所述每个索引线程递归查询所述组子链表对应的一组子链表包括:
所述个索引线程中的任意一个索引线程Pi查询所述组子链表中任意一组子链表Li下的任意一个同构子布隆过滤器BF;
若子链表Li下的任意一个同构子布隆过滤器BF没有匹配到待查找元素x,则遍历所述子链表Li下的另一个同构子布隆过滤器BF;
若任意一个同构子布隆过滤器BF匹配到所述待查找元素x,则返回匹配到所述待查找元素x的同构子布隆过滤器BF;
若遍历所述组子链表中所有子链表Li下的同构子布隆过滤器BF均没有匹配到所述待查找元素x,则返回所述待查找元素x未被存储的消息。
5.根据权利要求4所述的方法,其特征在于,所述若任意一个同构子布隆过滤器BF匹配到所述待查找元素x,则所述方法还包括:
进一步查找所述匹配到所述待查找元素x的任意一个同构子布隆过滤器BF对应的键-值存储容器是否真正存在所述待查找元素x。
6.根据权利要求5所述的方法,其特征在于,若所述匹配到所述待查找元素x的任意一个同构子布隆过滤器BF对应的键-值存储容器真正存在所述待查找元素x,则向所述个索引线程中的其他索引线程发送信号以结束查找过程。
7.一种基于动态布隆过滤器的元素操作方法,其特征在于,所述动态布隆过滤器为权利要求1至3任意一项所述的动态布隆过滤器,所述方法包括:
确定所述动态布隆过滤器是否存在活跃的同构子布隆过滤器BF;
若所述动态布隆过滤器存在活跃的同构子布隆过滤器BF,则将待插入元素x插入所述活跃的同构子布隆过滤器BF对应的键-值存储容器;
若所述动态布隆过滤器不存在活跃的同构子布隆过滤器BF,则获取新的同构子布隆过滤器BF和所述新的同构子布隆过滤器BF对应的键-值存储容器以插入所述待插入元素x。
8.根据权利要求7所述的方法,其特征在于,所述获取新的同构子布隆过滤器BF和所述新的同构子布隆过滤器BF对应的键-值存储容器之前还包括:判断当前共享存储空间是否已满;
在判断当前共享存储空间未满时,所述获取新的同构子布隆过滤器BF和所述新的同构子布隆过滤器BF对应的键-值存储容器以插入所述待插入元素x包括:申请新的同构子布隆过滤器BF和所述新的同构子布隆过滤器BF对应的键-值存储容器以插入所述待插入元素x。
9.一种基于动态布隆过滤器的元素操作方法,其特征在于,所述动态布隆过滤器为权利要求1至3任意一项所述的动态布隆过滤器,所述方法包括:
对所述动态布隆过滤器包含的每个同构子布隆过滤器BF存储的元素量进行递增排序,所述排序的结果为所述ri是每个同构子布隆过滤器BF的标识符,1≤ri≤sm;
当不等式成立时,对和执行取并集的代数操作得到回收所占据的存储资源;
若回收所占据的存储资源后,依然成立,则回收所占据的存储空间,所述n为每个同构子布隆过滤器BF最多可索引元素个数;
递归执行上述对所述同构子布隆过滤器BF存储的元素量进行的操作,直至时停止存储资源的回收。
10.根据权利要求9所述的方法,其特征在于,所述同构子布隆过滤器BF为计数型布隆过滤器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410231110.9A CN105320654B (zh) | 2014-05-28 | 2014-05-28 | 动态布隆过滤器和基于动态布隆过滤器的元素操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410231110.9A CN105320654B (zh) | 2014-05-28 | 2014-05-28 | 动态布隆过滤器和基于动态布隆过滤器的元素操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105320654A CN105320654A (zh) | 2016-02-10 |
CN105320654B true CN105320654B (zh) | 2018-08-31 |
Family
ID=55248058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410231110.9A Active CN105320654B (zh) | 2014-05-28 | 2014-05-28 | 动态布隆过滤器和基于动态布隆过滤器的元素操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105320654B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105812203B (zh) * | 2016-03-07 | 2019-05-10 | 亚信科技(南京)有限公司 | 一种请求消息处理方法及设备 |
CN106970930B (zh) * | 2016-10-10 | 2021-01-05 | 创新先进技术有限公司 | 消息发送确定方法及装置、数据表创建方法及装置 |
CN106874458B (zh) * | 2017-02-14 | 2019-10-22 | 中国科学技术大学 | 一种基于分层分配的多层数据库的布隆过滤器构造方法 |
CN108460030B (zh) * | 2017-02-17 | 2022-01-11 | 北京大学 | 一种基于改进的布隆过滤器的集合元素判断方法 |
CN108572789B (zh) * | 2017-03-13 | 2022-01-28 | 阿里巴巴集团控股有限公司 | 磁盘存储方法和装置、消息推送方法和装置及电子设备 |
CN107329903B (zh) * | 2017-06-28 | 2021-03-02 | 苏州浪潮智能科技有限公司 | 一种内存垃圾回收方法及系统 |
CN109918074B (zh) * | 2017-12-08 | 2022-09-27 | 中标软件有限公司 | 编译链接优化方法 |
CN109150537B (zh) * | 2018-06-25 | 2021-08-17 | 广东工业大学 | 一种基于动态Bloom Filter的文件所有权证明方法 |
CN109656901A (zh) * | 2018-10-15 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 数据处理方法和装置、电子设备 |
CN111857850B (zh) * | 2020-07-21 | 2022-03-25 | 掌阅科技股份有限公司 | 过滤器的初始化方法、电子设备及存储介质 |
CN112925629B (zh) * | 2021-03-31 | 2023-10-20 | 恩亿科(北京)数据科技有限公司 | 布隆过滤器动态调整方法、系统、电子设备及存储介质 |
CN113782097B (zh) * | 2021-09-07 | 2022-06-24 | 中国人民解放军国防科技大学 | 一种基于布隆过滤器的锚点筛选方法、装置和计算机设备 |
CN115292248B (zh) * | 2022-09-30 | 2023-01-03 | 中孚安全技术有限公司 | 一种基于多数据版本的数据清理方法、系统及设备 |
CN117891858A (zh) * | 2024-03-14 | 2024-04-16 | 苏州大学 | 一种时空高效的并行近似成员查询方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5701464A (en) * | 1995-09-15 | 1997-12-23 | Intel Corporation | Parameterized bloom filters |
CN101082923A (zh) * | 2007-07-18 | 2007-12-05 | 湖南大学 | 一种可扩展的布鲁姆过滤器查询方法及其元素插入方法 |
CN101577721A (zh) * | 2008-12-05 | 2009-11-11 | 湖南大学 | 一种索引拆分布鲁姆过滤器及其插入、删除和查询方法 |
CN101923568A (zh) * | 2010-06-23 | 2010-12-22 | 北京星网锐捷网络技术有限公司 | 布隆过滤器的元素增加、删除方法以及布隆过滤器 |
CN102243657A (zh) * | 2011-07-06 | 2011-11-16 | 太原理工大学 | 一种可扩充型Bloom Filter方法 |
-
2014
- 2014-05-28 CN CN201410231110.9A patent/CN105320654B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5701464A (en) * | 1995-09-15 | 1997-12-23 | Intel Corporation | Parameterized bloom filters |
CN101082923A (zh) * | 2007-07-18 | 2007-12-05 | 湖南大学 | 一种可扩展的布鲁姆过滤器查询方法及其元素插入方法 |
CN101577721A (zh) * | 2008-12-05 | 2009-11-11 | 湖南大学 | 一种索引拆分布鲁姆过滤器及其插入、删除和查询方法 |
CN101923568A (zh) * | 2010-06-23 | 2010-12-22 | 北京星网锐捷网络技术有限公司 | 布隆过滤器的元素增加、删除方法以及布隆过滤器 |
CN102243657A (zh) * | 2011-07-06 | 2011-11-16 | 太原理工大学 | 一种可扩充型Bloom Filter方法 |
Non-Patent Citations (1)
Title |
---|
一种面向深度数据包检测的索引拆分Bloom过滤器;黄昆 等;《中国科学》;20100831;第40卷(第8期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN105320654A (zh) | 2016-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105320654B (zh) | 动态布隆过滤器和基于动态布隆过滤器的元素操作方法 | |
US11681754B2 (en) | Technologies for managing connected data on persistent memory-based systems | |
US9489409B2 (en) | Rollover strategies in a N-bit dictionary compressed column store | |
US9619430B2 (en) | Active non-volatile memory post-processing | |
WO2017107414A1 (zh) | 文件操作方法和装置 | |
JP6280214B2 (ja) | メモリで制御されるデータ移動及びタイミング | |
CN104115134A (zh) | 复合非易失性存储设备的数据迁移 | |
US20160210313A1 (en) | System for high-throughput handling of transactions in a data-partitioned, distributed, relational database management system | |
Han et al. | A novel ReRAM-based processing-in-memory architecture for graph traversal | |
WO2024036985A1 (zh) | 存储系统及其计算存储处理器、固体硬盘和数据读写方法 | |
CN110147345A (zh) | 一种基于rdma的键值存储系统及其工作方法 | |
US9304946B2 (en) | Hardware-base accelerator for managing copy-on-write of multi-level caches utilizing block copy-on-write differential update table | |
CN106933491B (zh) | 用于管理数据访问的方法及装置 | |
CN106294189B (zh) | 内存碎片整理方法及装置 | |
US20200065016A1 (en) | Embedded reference counter and special data pattern auto-detect | |
CN111221773B (zh) | 一种基于rdma高速网络和跳表的数据存储架构方法 | |
CN117608856A (zh) | NVMe加速卡内存扩展方法、系统、终端及存储介质 | |
US9697048B2 (en) | Non-uniform memory access (NUMA) database management system | |
US11940972B2 (en) | Execution of operations on partitioned tables | |
WO2022002128A1 (zh) | 一种读数据的方法、写数据的方法、设备和系统 | |
CN112068948B (zh) | 数据散列方法、可读存储介质和电子设备 | |
CN104285223B (zh) | 修改根结点的方法和修改装置 | |
CN110968577B (zh) | 一种写入、读取资源的方法和系统以及时序存储系统 | |
US10331560B2 (en) | Cache coherence in multi-compute-engine systems | |
US20180012033A1 (en) | Method and apparatus of non-volatile memory system having capability of key-value store database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20160210 Assignee: Shenzhen Zhikong Yunhai Technology Co.,Ltd. Assignor: SHENZHEN INSTITUTES OF ADVANCED TECHNOLOGY CHINESE ACADEMY OF SCIENCES Contract record no.: X2023980043398 Denomination of invention: Dynamic Bloom Filter and Element Operation Method Based on Dynamic Bloom Filter Granted publication date: 20180831 License type: Common License Record date: 20231013 |