CN101923568B - 布隆过滤器的元素增加、删除方法以及布隆过滤器 - Google Patents
布隆过滤器的元素增加、删除方法以及布隆过滤器 Download PDFInfo
- Publication number
- CN101923568B CN101923568B CN 201010216947 CN201010216947A CN101923568B CN 101923568 B CN101923568 B CN 101923568B CN 201010216947 CN201010216947 CN 201010216947 CN 201010216947 A CN201010216947 A CN 201010216947A CN 101923568 B CN101923568 B CN 101923568B
- Authority
- CN
- China
- Prior art keywords
- bloom filter
- attribute
- subset
- count value
- somatotype
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种布隆过滤器的元素增加、删除方法以及布隆过滤器,包括至少一组拆分型布隆过滤器和计数型布隆过滤器、元素增加模块及元素删除模块,每组拆分型布隆过滤器和计数型布隆过滤器对应一个子集,元素增加模块用于在增加元素时,将待增加元素添加至当前子集中,并将待增加元素表示至与当前子集对应的拆分型布隆过滤器和计数型布隆过滤器中;而元素删除模块用于在删除元素时,查询待删除元素所对应的子集,在对应的子集中删除待删除元素,并将待删除元素从对应的拆分型布隆过滤器和计数型布隆过滤器中删除。本发明采用拆分型布隆过滤器和计数型过滤器相结合的方法,解决了元素动态增加和动态删除所带来的位相量重建问题。
Description
技术领域
本发明涉及元素查询匹配的算法领域,尤其涉及一种布隆过滤器的元素增加、删除方法以及布隆过滤器。
背景技术
在设计计算机软件时,经常需要判断一个元素是否在一个集合中。判断元素是否在集合中最直接的方法就是:将集合中的全部元素存储在计算机中,遇到一个新元素时,将它和集合中的元素直接进行比较。但是为了提高查找的速度,通常使用散列表来存储集合。散列表是一种根据元素的关键码值来快速映射其存储位置的数据结构,其优点在于能够快速准确的判断元素是否在集合中,而缺点则在于需要较大的存储空间。当集合中存储的元素较少时,该缺点并不显著,但是随着集合中元素的增多,当集合元素很庞大时,散列表存储空间的问题就显现出来了。
布隆过滤器应用而生,布隆过滤器由巴顿布隆于一九七零年提出,其原理如下:一个布隆过滤器由k个相互独立的散列函数h1,h2,......,hk和一个长度为m的位向量组成,其中,每个散列函数的值域均为{1,......,m},且位向量的所有的位均初始化为0。假设集合S中包含n个元素,用k个散列函数对集合S中的每一个元素都计算一个散列序列值(h1(s),h2(s),......,hk(s)),然后将位向量中与该散列序列值对应的位均设为1,则称该布隆过滤器装入了数据元素集合S,或者说该布隆过滤器表示了数据元素集合S。例如若h1(s1)=5,则将位向量的第5位设为1,h2(s1)=10,则将位向量的第10位设为1,直到hk(s1)=n,将位向量的第n位设为1,则称布隆过滤器中装入了数据元素s1,当集合S中的每一个数据元素均装入布隆过滤器中,则称布 隆过滤器表示了数据元素集合S。当查询某个数据元素是否在集合S中时,用同样的k个散列函数对数据元素计算一个散列序列,如果散列序列所对应的位向量上的每一位均为1,则认为该数据元素属于S,否则不属于S。
与完全存储数据相比,采用布隆过滤器,能够节省存储空间,而且使用布隆过滤器最大的优点在于:绝不会漏掉任何一个属于集合中的元素。但是在实际应用中,由于一个布隆过滤器同时表示集合中的多个元素,即位向量的同一位可能同时被多个不同的元素多次置1,因此在通过布隆过滤器进行元素查询时,可能会出现“假通过”的现象,即将不属于集合中的元素误判为属于布隆过滤器的集合中。而且布隆过滤器所表示的元素越多,假通过率将会越大。但是在实际应用中,只要这种假通过的概率是使用者可以接受的,使用布隆过滤器来进行元素查找便不会出现任何问题。因而在假通过率可接受的前提下,布隆过滤器能够很好的解决存储空间的问题,不失为一种很好的进行元素查询的方法。
但是传统的布隆过滤器还是会存在一些不足之处,例如当布隆过滤器表示的集合中的元素需要动态地增加或删除时,传统的布隆过滤器便会无法较好的适应。具体地,当需要删除布隆过滤器表示的集合中的某个元素时,位向量的每一位将无法确定具体的值,因而必须要对整个布隆过滤器的位向量进行重建;而当需要在集合中增加元素时,随着集合元素的增加,布隆过滤器的假通过率会不断攀升,因而可能最终会导致假通过率超出使用者可接受的范围。因此在这种情况下,若要使假通过率仍然在可接受的范围内时,则需要在集合元素增加时,也重建整个布隆过滤器的位向量。当集合中的元素较少时,重建整个布隆过滤器的问题可能并不显著,但当集合元素很庞大的时候,重建布隆过滤器所带来的时间开销是不容忽视的。
发明内容
本发明提供一种布隆过滤器的元素增加、删除方法以及布隆过滤器,用 以克服现有的布隆过滤器在增加集合元素时,容易导致布隆过滤器的假通过率不断上升,而超出该布隆过滤器的可接受范围,从而导致布隆过滤器需要重建,以及在删除集合中的元素时,需要对整个布隆过滤器进行重建的缺陷。
为实现上述目的,本发明提供一种布隆过滤器的元素增加方法,应用于包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器中,每组所述拆分型布隆过滤器和计数型布隆过滤器对应所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器表示的集合中的一个子集,每个所述计数型布隆过滤器的位向量记录:对应的所述子集包含的所有元素通过所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器对应的散列函数组计算得到的所有散列序列值标识在每一位的计数值,所述方法包括:
当需在所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器所表示的集合中增加元素时,检测当前子集包含的元素个数是否达到了预设的元素容量阈值;
若所述当前子集包含的元素个数达到了预设的元素容量阈值,则在所述集合中创建一个新的子集,以及为所述新的子集对应的创建一组新的拆分型布隆过滤器和计数型布隆过滤器,并选取所述新的子集为所述当前子集;
将待增加的元素添加至所述当前子集中;
根据所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器对应的散列函数组,将所述待增加的元素分别表示至与所述当前子集对应的拆分型布隆过滤器和计数型布隆过滤器中。
为实现上述目的,本发明还提供一种布隆过滤器的元素删除方法,应用于包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器中,每组所述拆分型布隆过滤器和计数型布隆过滤器对应所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器表示的集合中的一个子集,每个所述计数型布隆过滤器的位向量记录:对应的所述子集包含的所有元素通过所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器对应的散列函数组计算得到的所有散列序列值标识在每一位的计数值,所述方法包括:
当需在所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆 过滤器所表示的集合中删除元素时,根据所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器对应的散列函数组,查询待删除的元素所对应的子集;
在查询到的子集中删除所述待删除的元素;
根据所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器对应的散列函数组,将所述待删除的元素分别从与查询到的子集对应的拆分型布隆过滤器和计数型布隆过滤器中删除。
为实现上述目的,本发明还提供一种布隆过滤器,包括:
至少一组拆分型布隆过滤器和计数型布隆过滤器、元素增加模块以及元素删除模块,其中,
每组所述拆分型布隆过滤器和计数型布隆过滤器对应所述布隆过滤器所表示的集合中的一个子集,每个所述计数型布隆过滤器的位向量均记录:对应的所述子集包含的所有元素通过所述布隆过滤器的散列函数组计算得到的所有散列序列值标识在每一位的计数值;
所述元素增加模块至少包括:
元素检测单元,用于当需在所述布隆过滤器所表示的集合中增加元素时,检测当前子集包含的元素个数是否达到了预设的元素容量阈值;
子集创建单元,用于若所述当前子集包含的元素个数达到了预设的元素容量阈值,则在所述集合中创建一个新的子集,以及为所述新的子集对应的创建一组新的拆分型布隆过滤器和计数型布隆过滤器,并选取所述新的子集为所述当前子集;
元素增加单元,用于将待增加的元素添加至所述当前子集中;
元素表示单元,用于根据所述布隆过滤器对应的散列函数组,将所述待增加的元素分别表示至与所述当前子集对应的拆分型布隆过滤器和计数型布隆过滤器中;
所述元素删除模块至少包括:
元素查询单元,用于当需在所述集合中删除元素时,根据所述散列函数组,查询待删除的元素所对应的子集;
子集删除单元,用于在查询到的子集中删除所述待删除的元素;
元素删除单元,用于根据所述散列函数组,将所述待删除的元素分别从与查询到的子集对应的拆分型布隆过滤器和计数型布隆过滤器中删除。
本发明提供的布隆过滤器的元素增加、删除方法以及布隆过滤器,通过采用拆分型布隆过滤器和计数型过滤器相结合的方法,在系统中设置至少一组对应的计数型过滤器以及拆分型过滤器,每一组计数型过滤器以及拆分型过滤器均表示集合中一个子集的所有元素,其中,计数型过滤器用于通过位向量的位扩展,解决集合元素动态删除的问题,而拆分型过滤器则用于集合元素的匹配查询,对传统布隆过滤器快速查找的优点予以继承;在需要对元素进行动态增加,且检测到当前子集容量已满时,通过在集合中新增一个子集,以及对应地新增一组与该子集对应的计数型过滤器和拆分型过滤器,以容纳并表示该新增元素,由于子集中可容纳的元素个数已优先设置,因而元素的增加不会导致假通过率的上升,从而同时很好的解决了布隆过滤器中集合元素的动态增加所带来的需重建位向量的问题。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明布隆过滤器的元素增加方法实施例一的流程图;
图2为本发明布隆过滤器的元素增加方法实施例二的流程图;
图3为本发明布隆过滤器中用于表示计数型布隆过滤器位向量的位计数器溢出情况的映射表的结构示意图;
图4为本发明布隆过滤器的一种位计数值映射表的结构示意图;
图5为本发明布隆过滤器的元素删除方法实施例一的流程图;
图6为本发明布隆过滤器的元素删除方法实施例二的流程图;
图7为本发明布隆过滤器实施例一的结构示意图;
图8为本发明布隆过滤器实施例二的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的布隆过滤器主要用于克服现有技术中传统的布隆过滤器在动态增加集合元素或者动态删除集合元素时,需要对布隆过滤器的位向量进行重建的缺陷,提供了一种能够很好地解决该问题的改进的布隆过滤器,在该改进的布隆过滤器中,当进行集合元素的增加操作时,不会导致假通过率的升高,从而无需对位向量进行重建,而在进行集合元素的删除操作时,位向量依然能够准确表示各元素是否存在于集合中,从而也无需对位向量进行重建。
具体地,本发明的改进的布隆过滤器通过采用拆分型布隆过滤器和计数型布隆过滤器相结合的方法,来解决上述提到的集合元素动态增加与删除的问题。具体指在一个布隆过滤器中,同时设置对应的拆分型布隆过滤器和计数型布隆过滤器,等价地表示集合中的所有元素,其中拆分型布隆过滤器可以设置在系统内存中,以保证元素查询的速度,而计数型布隆过滤器则可以设置在系统硬盘中,以借助于硬盘的海量存储空间来存储计数型布隆过滤器的位相量长度。每一组对应的拆分型布隆过滤器和计数型布隆过滤器等价地表示集合中的一个子集,根据使用者所能容忍的假通过率的大小,设置单个子集中能容纳元素的最大数目,从而当集合中元素不断增多时,本发明的双布隆过滤器可以通过相应地增加子集的个数、以及增加对应的拆分型布隆过滤器和计数型布隆过滤器的个数,来解决需要对位向量进行重建的问题。
由于本发明的双布隆过滤器中,每个计数型布隆过滤器的位向量均能够记录:对应的子集中的所有元素通过散列函数组计算得到的所有散列序列值 分布在各个位的计数值,即计数型布隆过滤器中对位向量的每一个单元位进行了扩展,使得每一个单元位不再只是记录“0”或“1”,而是具有记录“1”的数目的功能。从而在对集合中的元素进行删除时,即使根据该待删除元素对应的散列序列值,在位向量中对应的位置将计数值减“1”,对应的计数值在减“1”之后,仍然能够正确地反映对应的子集中的剩余元素所对应的散列序列值在对应位置的映射状况,从而仍然无需进行位向量的重建,即通过计数型布隆过滤器的设置,很好地解决了元素动态删除时的问题。
具体地,基于上述对布隆过滤器的组成及功能的介绍,下面将对本发明的布隆过滤器进行元素动态增加以及元素动态删除时的具体过程进行详细的描述。由于本发明的布隆过滤器采用拆分型布隆过滤器和计数型布隆过滤器相结合的方法,因而在本发明中,可以对应地将本发明的布隆过滤器称为双布隆过滤器。
图1为本发明布隆过滤器的元素增加方法实施例一的流程图。本发明的布隆过滤器的元素增加方法应用于上述的双布隆过滤器中,即应用于包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器中,其中,拆分型布隆过滤器用以在集合元素的匹配查询时,通过内存对元素快速查找的优点予以继承,而计数型布隆过滤器则用以借助于位向量的位扩展机制,以解决集合元素动态删除的问题。每组拆分型布隆过滤器和计数型布隆过滤器对应于该布隆过滤器表示的集合中的一个子集,每个计数型布隆过滤器的位向量均记录:对应的子集包含的所有元素通过该双布隆过滤器的散列函数组计算得到的所有散列序列值标识在每一位的数目。如图1所示,本实施例的方法具体包括如下步骤:
步骤100,当需在布隆过滤器所表示的集合中增加元素时,检测当前子集包含的元素个数是否达到了预设的容量阈值;
本发明中,在初始状态时,可以根据使用者能容忍的假通过率的大小,设置双布隆过滤器的单个子集中所能容纳元素的最大数目,而且在初始状态 时,可以仅在双布隆过滤器的集合中设置一个子集,对应地仅设置一组拆分型布隆过滤器和计数型布隆过滤器,该拆分型布隆过滤器和计数型布隆过滤器等价地表示对应的子集中的所有元素。在当需要在双布隆过滤器所表示的集合中进行元素增加时,本发明中,该双布隆过滤器首先将检测集合的当前子集所包含的元素个数是否达到了本发明为每个子集预设的容量阈值,以判断该当前子集中是否还能够增加一新的元素。
步骤101,若当前子集包含的元素个数达到了预设的容量阈值,则在集合中创建一个新的子集,以及为该新的子集对应的创建一组新的拆分型布隆过滤器和计数型布隆过滤器,并选取该新的子集为当前子集;
若经过上述步骤的检测,该双布隆过滤器检测到当前子集中包含的元素个数已经达到了子集预设的元素容量阈值,即已经达到了子集能容纳的最大元素个数时,由于本发明中,单个子集所能容置的元素的最大个数是根据使用者可容忍的假通过率大小而对应设置的,其次布隆过滤器中所表示元素个数的增多,必然会引起该布隆过滤器的假通过率的上升,因而若仍然在该当前子集中增加元素,很有可能会导致对应的拆分型布隆过滤器和计数型布隆过滤器的假通过率由于继续上升,而超过使用者的可接受范围。
因此,为了避免出现在此种情况下需要对拆分型布隆过滤器和计数型布隆过滤器的位向量进行重建的现象,本发明中,当当前子集的容纳元素已满时,为了容置该新的元素,在双布隆过滤器所表示的集合中为该新增的元素创建了一个新的子集,该创建的新的子集的元素容量符合本发明的双布隆过滤器为子集预设的元素容量阈值,即与当前子集预设的元素容量阈值相等。同时对应地,本发明中,在创建了新的子集之后,为创建的新的子集对应的分别创建了一个新的拆分型布隆过滤器和计数型布隆过滤器,该新的拆分型布隆过滤器和计数型布隆过滤器用于等价地表示新的子集中所容纳的所有元素。与此同时,在创建了新的子集之后,双布隆过滤器将该创建的新的子集选取作为新的当前子集,以代替之前的当前子集。
需要说明的是,若在上述步骤100中,双布隆过滤器通过检测判断得知当前子集中包含的元素个数还未达到该子集预设的容量阈值,即该当前子集中还能够容置新的元素,双布隆过滤器将无需执行上述的操作,而是仍然在该当前子集中进行元素的增加操作即可。
步骤102,将待增加的元素添加至当前子集中;
步骤103,根据布隆过滤器对应的散列函数组,将待增加的元素分别表示至与当前子集对应的拆分型布隆过滤器和计数型布隆过滤器中。
根据检测的不同结果,在为新增的元素创建了新的子集,或者仍然选择容量未满的当前子集作为容置该新元素的当前子集后,双布隆过滤器将该待增加的新元素添加至当前子集中,同时,为了将该待增加的新元素表示至双布隆过滤器中,本发明中,双布隆过滤器还将根据其对应的散列函数组,将待增加的元素分别表示至与当前子集对应的一组拆分型布隆过滤器和计数型布隆过滤器中,从而完成了对元素的动态增加。
本实施例的布隆过滤器的元素增加方法,通过采用拆分型布隆过滤器和计数型过滤器相结合的方法,在系统中设置至少一组对应的计数型过滤器以及拆分型过滤器,每一组计数型过滤器以及拆分型过滤器均表示集合中一个子集的所有元素,在需要对元素进行动态增加,且检测到当前子集容量已满时,通过在集合中新增一个子集,以及对应地新增一组与该子集对应的计数型过滤器和拆分型过滤器,以容纳并表示该新增元素,由于子集中可容纳的元素个数已优先设置,因而元素的增加不会导致假通过率的上升,从而同时很好的解决了布隆过滤器中集合元素的动态增加所带来的需重建位向量的问题。
图2为本发明隆过滤器的元素增加方法实施例二的流程图。如图2所示,在上述实施例的基础上,本实施例的方法具体包括如下步骤:
步骤200,设置子集的元素容量阈值、布隆过滤器的位向量长度、以及散列函数组中包含的散列函数的个数;
在应用本发明的双布隆过滤器进行元素动态增加、元素动态删除甚至元 素查询之前,首先需要为该双布隆过滤器所表示的集合中的每个子集设置一个元素容量阈值,该元素容置阈值表示每个子集最大可容置元素的个数,同时还需要为布隆过滤器的位向量设置合适的长度,以及设置散列函数组中包含的散列函数的数目。
具体地,双布隆过滤器可以根据使用该双布隆过滤器过滤元素时设定的最高假通过率,以及根据假通过率的计算公式p=[1-(1-1/m)kn]k,设置双布隆过滤器的上述这些参数值。在假通过率的计算公式p=[1-(1-1/m)kn]k中,p代表对应的布隆过滤器的假通过率,m代表该布隆过滤器的位向量的位长度,k代表该布隆过滤器所采用的散列函数组中包含的散列函数的个数,而n则代表则该布隆过滤器所表示的集合或子集中包含的最大元素个数,即元素容量阈值。基于上述假通过率的计算公式,在双布隆过滤器的最高假通过率已设定的前提下,只要能够满足使该双布隆过滤器的假通过率不超出该最高假通过率的条件,根据上述公式,可以设置出一组较为合适的k、n、m的数值。
实际应用中,在上述参数的设置过程中,每个子集中所包含的最大元素个数,即子集的元素容量阈值n,可以根据该双布隆过滤器所需容置的所有元素的个数,以及根据实际需要而设置。而在设置了该子集的元素容量阈值n之后,对布隆过滤器的位向量长度m以及散列函数组中包含的散列函数的个数k的取值的设置,则可以通过下述两种方法实现:
第一种方法为结合上文的假通过率的计算公式,由于m和k一定为一个自然数,因此,在设置m及k的具体数值时,可以采用逐个代入计算的方式,比如将k=1以及该双布隆过滤器设定的最高假通过率代入上述计算公式中,在假通过率p、散列函数的个数k以及子集的元素个数n已知的前提下,通过求解方程即可求得当k=1时对应的m的值。同理,当k=2,3,...时都可以计算出一个对应的m值。最终取哪一组值,可以根据实际情况选取最合适的m和k的数值。
第二种方法为测试的方法;具体地,在测试过程中,可以首先将一个子集中的所有元素都装入对应的拆分型布隆过滤器的位向量中,然后用一个测试元素集(该测试集中的元素都不属于集合S)来对拆分型布隆过滤器进行测试。通过不断地调整m的值以及散列函数的个数k的数值,使得测试元素集的假通过率在可接受的范围内即可。
需要说明的是,实际实施的过程中,为了适应集合元素的动态增加,在设置位向量的长度m时,实际上可以在保证双布隆过滤器的假通过率不超过设定的最高假通过率的最小的m值的基础上,为位向量预留一定的存储空间。即在实际设置时,可以设置的m的数值比能够保证双布隆过滤器的假通过率不超过设定的最高假通过率的最小m值稍大一点,使得当增加的元素个数在预留空间额度内时,无需进行子集及布隆过滤器的新建,只需将新增元素增加至当前子集即可。
此外还需要说明的是,实际应用时,在本实施例中,对应设置的拆分型布隆过滤器和计数型布隆过滤器可以分别设置在系统内存和系统硬盘中,其中,拆分型布隆过滤器设置在系统内存中,可以保证元素查询的速度,而计数型布隆过滤器设置在系统硬盘中,则可以借助于系统硬盘的海量存储空间,以存储计数型布隆过滤器扩展的位相量长度。具体地,对于设置在系统硬盘中的计数型布隆过滤器而言,由于计数型布隆过滤器的位相量中对每一位进行了扩展,使得每一位具有对其表示的所有元素在散列函数组的计算下在该位为“1”的数目的计数功能,而在本实施例中,每组拆分型布隆过滤器和计数型布隆过滤器均等价地表示一个子集。因而在本实施例中所谓设置双布隆过滤器的位相量长度为m事实上是指:设置每个拆分型布隆过滤器的位相量为m,以及设置每个计数型布隆过滤器的位计数器个数为m。
进一步地,在设置计数型布隆过滤器的位相量长度时,还有一个参数需要考虑,即计数型布隆过滤器的位相量中每一个计数器的位数,若设置的位数过小,则在实际应用中进行计数时很容易发生溢出的现象,一旦发生溢出 计数便会发生错误,另一方面,若设置的位数过大,又会引起存储空间的浪费,尤其是当位计数器的个数m较大时,这种存储空间浪费的情况将更加严重。因而,在本实施例中,在设置了该上述双布隆过滤器的位相量长度m之后,对于计数型布隆过滤器而言,还需为计数型布隆过滤器的每个位计数器设置合适长度的位数。结合目前计数型布隆过滤器的算法,4位的计数器已经拥有非常小的溢出概率,因而本实施例中,取每个位计数器的位数为4,即计数的最大值为15。
步骤201,当需在布隆过滤器所表示的集合中增加元素时,检测当前子集包含的元素个数是否达到了预设的容量阈值,若是执行步骤202,若否执行步骤203;
在对双布隆过滤器进行上述初始化参数设置完成之后,拆分型布隆过滤器和计数型布隆过滤器可以等价地表示集合中的所有元素。根据该双布隆过滤器的集合中包含的所有元素个数,以及上述步骤中为每个子集设置的最大可容置数目,在双布隆过滤器中可以包含一组或多组的拆分型布隆过滤器和计数型布隆过滤器,对应地,双布隆过滤器所表示的集合中也可以包含一个或多个子集。图3为本发明布隆过滤器中用于表示计数型布隆过滤器位向量的位计数器溢出情况的映射表的结构示意图。如图3所示,假设双布隆过滤器所表示的集合S中包含的子集个数为i(S1,S2,......,Si),对应地,在系统内存和系统硬盘中对应地设置了i个拆分型布隆过滤器(V1,V2,......,Vi)和i个计数型布隆过滤器(J1,J2,......,Ji)。
因而,在当需要在集合S中进行元素增加时,该双布隆过滤器首先将对集合S中的当前子集(通常为Si)进行检测,以检测子集Si中所包含的元素个数是否达到了预设的元素容量阈值n,即判断该当前子集中是否还能够增加一新的元素。若当前子集的容置空间还未满,即还能容置新的元素,双布隆过滤器将仍然将该当前子集作为这一轮元素增加时的当前子集,即仍然在该子集中进行元素增加的操作。
步骤202,在集合中创建一个新的子集,以及为该新的子集对应的创建一组新的拆分型布隆过滤器和计数型布隆过滤器,并选取该新的子集为当前子集;
而反之,若经过上述步骤的检测,双布隆过滤器检测到当前子集中包含的元素个数已经达到了预设的元素容量阈值,即已经达到了子集能容纳的最大元素个数,为了避免出现新的元素的增加引起的需要对布隆过滤器的位向量进行重建的现象,以及为了容置该新增加的元素,双布隆过滤器将在集合S中为该新增的元素新创建一个子集Si+1,并对应地分别在系统内存和系统硬盘中创建一个新的拆分型布隆过滤器Vi+1和一个新的计数型布隆过滤器Ji+1,以与该新的子集Si+1相对应。与此同时,在创建了新的子集之后,双布隆过滤器还将该创建的新的子集选取作为新的当前子集,以代替之前的当前子集,以在该新创建的子集中进行元素增加的操作。
步骤203,将待增加的元素添加至当前子集中;
步骤204,根据布隆过滤器对应的散列函数组,将待增加的元素分别表示至与当前子集对应的拆分型布隆过滤器和计数型布隆过滤器中;
在为新增的元素创建了新的子集,或者仍然选择容量未满的当前子集作为容置该新元素的当前子集之后,双布隆过滤器可以将该待增加的新元素添加至当前子集中。同时,为了将该待增加的新元素在双布隆过滤器中进行表示,本实施例中,双布隆过滤器还将根据其对应的散列函数组(H1,H2,......,Hk),将待增加的元素分别表示至与该当前子集对应的一组拆分型布隆过滤器和计数型布隆过滤器中,以完成对元素的动态增加。
具体地,本实施例中,将待增加的元素分别表示至与当前子集对应的拆分型布隆过滤器和计数型布隆过滤器中还可以进一步地包含下述几个子步骤:
步骤2040,根据散列函数组,计算待增加的元素对应的一组散列序列值;
针对待增加的元素,为了将该待增加元素表示至与当前子集对应的拆分型布隆过滤器和计数型布隆过滤器中,双布隆过滤器首先将采用预设的散列 函数组(H1,H2,......,Hk),对待增加元素对应的散列序列值(H1(s),H2(s),......,Hk(s))进行计算。
步骤2041,在与当前子集对应的拆分型布隆过滤器的位相量中,将计算得到的散列序列值所对应的各个位的数值进行标识;
计算得到与待增加元素对应的散列序列值之后,针对与当前子集对应的拆分型布隆过滤器,双布隆过滤器可以根据计算得到的该散列序列值(H1(s),H2(s),......,Hk(s)),在对应的拆分型布隆过滤器的位向量中,对与散列序列值(H1(s),H2(s),......,Hk(s))对应的位的数值进行标识。即若计算得到的H1(s)=6,则将位向量的第6位设为1,当H2(s1)=11,则将位向量的第11位设为1,直至标识完与Hk(s)对应的位为止。在将计算得到的散列序列值均标识至对应的拆分型布隆过滤器的位向量中之后,则称将该待增加的元素装入了对应的拆分型布隆过滤器中,此装入过程与传统布隆过滤器的元素装入过程是一致的。
步骤2042,在与当前子集对应的计数型布隆过滤器的位相量中,将计算得到的散列序列值所对应的各个位计数值加1。
而针对与当前子集对应的计数型布隆过滤器而言,由于计数型布隆过滤器的位向量的表示机制与拆分型布隆过滤器不同,因而在将待增加的元素装入至对应的计数型布隆过滤器时,本实施例中,双布隆过滤器需要根据计算得到的该散列序列值(H1(s),H2(s),......,Hk(s)),在对应的计数型布隆过滤器的位向量中,将与该散列序列值(H1(s),H2(s),......,Hk(s))对应的位的各个位计数值进行加1。例如若计算得到的H1(s)=6时,则将对应的计数型布隆过滤器的位向量的第6位的位计数值加1,当H2(s1)=11时,则将位向量的第11位的位计数值加1,直至将与Hk(s)对应的位的位计数值加1完毕为止。
同样地,在将与计算得到的散列序列值对应的计数型布隆过滤器的位向量中的位计数值均加1之后,则称将该待增加的元素装入了对应的计数型布隆过滤器中。
此外在本步骤中还需要说明的是,由于对于计数型布隆过滤器而言,在上述步骤200的设置过程中,设置了计数型过滤器的每个位计数器的位数为4,即设置每个位计数器的最大可计数值为15。虽然结合目前计数型布隆过滤器的算法,4位的计数器已经拥有非常小的溢出概率,但是不可避免的,当子集中容置的元素较多,且对应某一位的散列序列值为1的元素也较多时,将很有可能会出现位向量中某一位的位计数值发生溢出的现象。因而在本实施例中,为了避免当位向量的位计数值发生溢出时,位计数器在位向量中的计数值发生错误的现象,对应于每一个计数型布隆过滤器的位向量,还设置了一个对应的位计数值映射表。该位计数值映射表用于记录对应的计数型布隆过滤器的位相量中,每一位的位计数值在发生溢出后超出最大值部分的溢出计数值。例如,若每个位计数器的最大可计数值为15,那么位计数值映射表中记录的便为每个位计数器的实际计数值在超出15后,溢出的那部分的溢出计数值。
因而,基于该设置的位计数值映射表,将计算得到的散列序列值所对应的各个位计数值加1还应具体包括如下子步骤:首先,双布隆过滤器根据对应的计数型布隆过滤的位向量的各个位计数值,查询计算得到的散列序列值(H1(s),H2(s),......,Hk(s))对应的各位计数值是否发生溢出的现象,即对应的计数型布隆过滤的位向量中,与散列序列值(H1(s),H2(s),......,Hk(s))对应的任一位计数值是否已经达到了最大值15。若双布隆过滤器查询到计数型布隆过滤的位向量中,与散列序列值(H1(s),H2(s),......,Hk(s))对应的某个位计数值已经达到了最大值,代表该位计数器即将发生溢出的现象,因而此时若仍然在位计数值的基础上加1,将导致对应的位计数器出现计数值不正确的情况。因而为了使发生溢出的实质位计数值能够在对应的计数型布隆过滤器中予以记录,双布隆过滤器还将使位向量中相应的位计数值的最大值保持不变,并在对应的位计数值映射表中,将查询到的达到最大值的位计数器对应的溢出计数值加1,以在位计数值映射表记录位向量的对应 位的溢出计数值,该溢出计数值与位向量中对应的位计数值相加,便是位向量中该对应位的实质计数值。
从而,通过为每个计数型布隆过滤器设置一个对应的位计数值映射表,本实施例的双布隆过滤器可以在计数型布隆过滤器的位向量发生溢出的情况下,仍然能够准确地记录溢出后的溢出位计数值,从而很好地解决了计数型过滤器的位计数值在过小容易溢出、在过大时又浪费存储空间两者之间的矛盾,保证了计数型布隆过滤器的位向量的准确性。
需要说明的是,由于在设置了计数型过滤器的每个位计数器的位数为4的前提下,溢出的概率是非常低的,因此在位计数值映射表中记录的“成员”应该是非常少的,而为了快速查找映射表是否有某个位计数器,在本实施例中,还可以通过散列表(散列的键值即为位计数器)的方式来组织该位计数值映射表。具体地,位计数值映射表的结构可以如图4所示,图4为本发明布隆过滤器的一种位计数值映射表的结构示意图。
此外还需要说明的是,虽然本发明的双布隆过滤器相对于现有技术中布隆过滤器的优点在于:能够很好地解决布隆过滤器中集合元素的动态增加以及动态删除所带来的位向量需重建的问题,但是由于在本发明的双布隆过滤器中,对应的拆分型布隆过滤器和计数型过滤器均等价地表示了集合中的每一个元素,且拆分型布隆过滤器设置于系统内存中,具有很好的查询响应速度性能,因而在进行元素查询时,本发明中只需在拆分型布隆过滤器中,对待查询的元素进行查询即可,以此能够保证元素查询的速度。而由于该元素查询的方法与现有技术中在传统布隆过滤器中进行元素查询的方法相同,因而在本发明中并不对此进行赘述。
本实施例的布隆过滤器的元素增加方法,通过采用拆分型布隆过滤器和计数型过滤器相结合的方法,分别在系统硬盘及系统内存中对应设置计数型过滤器以及拆分型过滤器,每一组计数型过滤器以及拆分型过滤器均表示集合中一个子集的所有元素,在需要对元素进行动态增加,且检测到当前子集 容量已满时,通过在集合中新增一个子集,以及对应地新增一组与该子集对应的计数型过滤器和拆分型过滤器,以容纳并表示该新增元素,由于子集中可容纳的元素个数已优先设置,因而元素的增加不会导致假通过率的上升,从而同时很好的解决了布隆过滤器中集合元素的动态增加所带来的需重建位向量的问题。
进一步地,本实施例中,还通过为每个计数型过滤器设置合适的位计数器的位数,以及设置位计数值映射表,用于存储发生溢出的位计数值以及溢出后的溢出计数值,从而很好地解决了计数型过滤器的位计数值在过小容易溢出、在过大时又浪费存储空间两者之间的矛盾。
图5为本发明布隆过滤器的元素删除方法实施例一的流程图,本实施例主要描述在应用上述双布隆过滤器进行元素删除时的具体处理流程。与上述元素增加的方式实施例一样,本实施例的布隆过滤器的元素删除方法同样应用于上述的双布隆过滤器中,即应用于包含至少一组拆分型布隆过滤器和计数型布隆过滤器的双布隆过滤器中,其中每组对应的拆分型布隆过滤器和计数型布隆过滤器均与集合中的一个子集相对应,每个计数型布隆过滤器的位向量均记录:对应的子集包含的所有元素通过该双布隆过滤器的散列函数组计算得到的所有散列序列值标识在每一位的计数值。
如图5所示,本实施例的方法具体包括如下步骤:
步骤300,当需在布隆过滤器所表示的集合中删除元素时,根据布隆过滤器对应的散列函数组,查询待删除的元素所对应的子集;
在本实施例中,当需要在双布隆过滤器所表示的集合中删除某一个元素时,为了了解需要在哪一个子集中对该元素进行删除的操作,双布隆过滤器首先将根据该布隆过滤器的散列函数组,查询该待删除的元素所对应的子集。
步骤301,在查询到的子集中删除待删除的元素;
步骤302,根据布隆过滤器的散列函数组,将待删除的元素分别从与查询到的子集对应的拆分型布隆过滤器和计数型布隆过滤器中删除。
在查询到与待删除的元素对应子集之后,双布隆过滤器首先将在查询到的子集中删除该待删除的元素,进一步地,为了将该待删除元素从装入该待删除元素的拆分型布隆过滤器和计数型布隆过滤器中删除,本实施例中,在从对应的子集中删除该待删除的元素之后,双布隆过滤器还将根据布隆过滤器的散列函数组,将待删除的元素分别从对应的拆分型布隆过滤器和计数型布隆过滤器中删除。
由于在本实施例中,每个计数型布隆过滤器的位向量均能够记录:对应的子集中的所有元素通过散列函数组计算得到的所有散列序列值分布在各个位的计数值,即计数型布隆过滤器中对位向量的每一个单元位进行了扩展,使得每一个单元位不再只是记录“0”或“1”,而是具有记录“1”的数目的功能,即具有对每一位进行计数的功能。从而在对某一子集中的元素进行删除时,即使根据双布隆过滤器的散列函数组,在对应的计数型布隆过滤器的位向量中,将该待删除的元素进行了删除,该位相量对应的位的计数值在减“1”之后,仍然能够正确地反映对应的子集中的剩余元素所对应的散列序列值在对应位置的映射状况,从而仍然无需进行位向量的重建,即通过计数型布隆过滤器的设置,很好地解决了元素动态删除时的问题。
本实施例的布隆过滤器的元素删除方法,通过采用拆分型布隆过滤器和计数型过滤器相结合的方法,在系统中设置至少一组对应的计数型过滤器以及拆分型过滤器,每一组计数型过滤器以及拆分型过滤器均表示集合中一个子集的所有元素,其中,由于计数型过滤器能够对位向量的每一位进行扩展,使得位相量能够记录每一位为“1”的计数值,从而即使将该待删除的元素从布隆过滤器中进行了删除之后,计数型过滤器的位相量仍然能够正确地反映对应的子集中的剩余元素所对应的散列序列值在对应位的映射状况,从而无需进行位向量的重建,仅通过计数型布隆过滤器的设置,同样能够很好地解决了元素动态删除时的问题,而拆分型过滤器则用于集合元素的匹配 查询,对传统布隆过滤器快速查找的优点予以继承。
图6为本发明布隆过滤器的元素删除方法实施例二的流程图,在上述实施例的基础上,本实施例的布隆过滤器的元素删除方法具体可以包括如下步骤:
步骤400,设置子集的元素容量阈值、布隆过滤器的位向量长度、以及散列函数组中包含的散列函数的个数;
与上述在双布隆过滤器中进行元素增加时的流程一样,在本实施例中,在应用本发明的双布隆过滤器进行元素动态删除之前,首先需要该双布隆过滤器所表示的集合中的每个子集设置一个元素容量阈值n,该元素容置阈值表示每个子集最大可容置元素的个数,同时还需要为布隆过滤器的位向量设置合适的长度m,以及设置散列函数组中包含的散列函数的数目k。具体地,本实施例中对布隆过滤器的初始参数进行设置的方法与上述双布隆过滤器的元素增加方法中的参数设置方法一致,具体可以参见上述步骤200,因而在本实施例中对于本步骤并不再赘述。
需要说明的是,同样地在本实施例中,对应设置的至少一组拆分型布隆过滤器和计数型布隆过滤器可以分别设置在系统内存和系统硬盘中,其中,拆分型布隆过滤器设置在系统内存中,可以保证元素查询的速度,而计数型布隆过滤器设置在系统硬盘中,则可以借助于系统硬盘的海量存储空间,以存储计数型布隆过滤器扩展的位相量长度。
步骤401,当需在布隆过滤器所表示的集合中删除元素时,根据布隆过滤器的散列函数组,查询待删除的元素所对应的子集;
在对双布隆过滤器进行上述初始化参数设置完成之后,当需要在集合S中进行元素删除时,为了了解需要在哪一个子集中对该元素进行删除的操作,双布隆过滤器首先将根据该布隆过滤器的散列函数组(H1,H2,......,Hk),查询该待删除的元素所对应的子集。
具体地,本步骤的对待删除元素从属的集合进行查询的过程可以为:双布 隆过滤器可以首先根据该布隆过滤器的散列函数组(H1,H2,......,Hk),计算得到与待删除的元素对应的一组散列序列值(H1(s),H2(s),......,Hk(s))。在计算得到对应的散列序列值后,双布隆过滤器可以根据该计算得到的散列序列值,在与各个子集对应的各个拆分型布隆过滤器的各个位相量中,查询该散列序列值(H1(s),H2(s),......,Hk(s))在各位相量中对应的各个位的数值是否均标识为1。若在某一拆分型布隆过滤器的位相量中,双布隆过滤器查询到该位相量中与散列序列值(H1(s),H2(s),......,Hk(s))对应的所有位的数值均标识为1,这代表该拆分型布隆过滤器装入了该待删除的元素,因而可以判定,该待删除的元素一定存储于与该拆分型布隆过滤器对应的子集中。
步骤402,在查询到的子集中删除待删除的元素;
步骤403,根据布隆过滤器的散列函数组,将待删除的元素分别从与查询到的子集对应的拆分型布隆过滤器和计数型布隆过滤器中删除;
在查询到待删除的元素对应的子集后,双布隆过滤器可以将该待删除的新元素从查询到的子集中删除。同时,为了将该待删除的元素从装入该元素的布隆过滤器中进行删除,本实施例中,双布隆过滤器还将根据自身对应的散列函数组(H1,H2,......,Hk),将待删除元素分别从与查询到的子集对应的一组拆分型布隆过滤器和计数型布隆过滤器中进行删除,以完成对元素的动态删除操作。
具体地,本实施例中,将待删除的元素分别从与查询到的子集对应的一组拆分型布隆过滤器和计数型布隆过滤器中删除还可以进一步地包括下述几个子步骤:
步骤4030,通过散列函数组,计算待删除的元素对应的一组散列序列值;
针对待删除的元素,为了将该待删除元素从与查询到的子集对应的拆分型布隆过滤器和计数型布隆过滤器中删除,双布隆过滤器首先将采用预设的散列函数组(H1,H2,......,Hk),对待删除元素对应的散列序列值(H1(s),H2(s),......,Hk(s))进行计算。
步骤4031,在与查询到的子集对应的计数型布隆过滤器的位相量中,将计算得到的散列序列值所对应的各个位计数值减1;
计算得到与待删除元素对应的散列序列值之后,针对与查询到的子集对应的计数型布隆过滤器,双布隆过滤器首先应当根据计算得到的该散列序列值(H1(s),H2(s),......,Hk(s)),在对应的计数型布隆过滤器的位向量中,将与该散列序列值(H1(s),H2(s),......,Hk(s))对应的位的位计数值进行减1。例如若计算得到的H1(s)=6时,则将对应的计数型布隆过滤器的位向量的第6位的位计数值减1,当H2(s1)=11时,则将位向量的第11位的位计数值减1,直至将与Hk(s)对应的位的位计数值减1完毕为止。
此外当本实施例中,若计数型布隆过滤器的位向量对应设置了用于记录该位相量每一位的位计数值是否发生溢出、以及发生溢出后的溢出计数值的位计数值映射表时,本步骤的将计算得到的散列序列值所对应的各个位计数值减1的过程具体应该为:
首先,双布隆过滤器根据包含待删除元素的子集对应的计数型布隆过滤器的位计数值映射表中记录的各个位的溢出计数值,查询与计算得到的散列序列值(H1(s),H2(s),......,Hk(s))所对应的各个位计数值是否发生溢出,具体指查询该对应的位计数值映射表中是否记录有与计算得到的散列序列值(H1(s),H2(s),......,Hk(s))的任一位对应的溢出计数值。若双布隆过滤器查询到某一对应的位计数值已经发生溢出现象,即查询到计数值映射表中已经记录了与某一位对应的溢出计数器时,为了使溢出后的实际位计数值能够在对应的计数型布隆过滤器中予以记录,双布隆过滤器还将在对应的位计数值映射表中,将与发生溢出的位计数值的超出最大值部分的溢出计数值进行减1,以在位计数值映射表以及位向量中记录位向量的对应位的实际计数值,该实际计数值便为位向量的位计数值与位计数值映射表中对应的溢出计数值的相加值。进一步地,若位计数值映射表中,减1后的位计数器的溢出计数值为零时,代表此时该位计数器在减1之后,不存在位溢出的现象,因 而相对应地,双布隆过滤器可以将该溢出计数值为零的位计数器从位计数值映射表中删除,以保持位计数值映射表记录的正确性。
步骤4032,检测位相量中减1后的任一位的位计数值是否为零,若是则执行步骤4033,若否则执行步骤404;
步骤4033,在与查询到的子集对应的拆分型布隆过滤器的位相量中,将位计数值为零的位所对应的数值标识为零;
在对待删除元素在对应的计数型布隆过滤器的位相量中进行减1操作之后,为了能够得知是否应该在对应的拆分型布隆过滤器的位相量中,将与计算得到的散列序列值对应的位的数值标识为零,即为了了解对于位相量中的某一位,子集中的所有元素在该位的散列值是否全都为“0”,双布隆过滤器需要对对应的计数型布隆过滤器的位相量中减1后的所有位的位计数值进行检测。若双布隆过滤器检测到某一位的位计数值为零时,代表对应的子集中的所有元素在该位的散列值全都为“0”,因而,双布隆过滤器可以在对应的拆分型布隆过滤器的位相量中,将检测到的计数值为零的所有位所对应的数值均标识为零,从而完成了将待删除的元素在对应的拆分型布隆过滤器进行删除的操作。
由于本实施例中,设置于系统硬盘中的计数型过滤器能够对位向量的每一位进行扩展,使得位相量能够记录每一位为“1”的计数值,从而即使将该待删除的元素从布隆过滤器中进行了删除之后,计数型过滤器的位相量仍然能够正确地反映对应的子集中的剩余元素所对应的散列序列值在对应位的映射状况,在此基础上在拆分型布隆过滤器的位相量中进行的对应位的标识也能够准确地反映对应子集中的剩余元素的散列序列值在对应位的映射状况,而不会出现错误。
步骤404,检测集合中的任意两个子集所包含的元素之和是否小于或等于子集预设的元素容量阈值,若是执行步骤405,若否则结束本流程;
步骤405,将两个子集合并为一个子集,将两个子集对应的两组拆分型布隆过滤器和计数型布隆过滤器合并为一组拆分型布隆过滤器和计数型布隆 过滤器。
此外还需要说明的是,在本实施例中,在将待删除元素从双布隆过滤器中进行上述删除操作之后,基于节约布隆过滤器所占用的资源,以及避免造成位相量的存储空间的浪费的角度考虑,在实施例中,还可以通过对集合中的任意两个子集所包含的元素之和是否小于一个子集预设的元素容量阈值的检测,检测集合中两个容量未满的子集是否能够进行合并。若通过检测,双布隆过滤器得知两个子集所包含的元素之和已经小于或等于一个子集所能容置的最大元素个数时,双布隆过滤器可以将该两个容量未满的子集合并为一个子集,同时将该两个子集对应的两组拆分型布隆过滤器和计数型布隆过滤器合并为一组拆分型布隆过滤器和计数型布隆过滤器。
具体地,在上述将两个子集对应的两组拆分型布隆过滤器和计数型布隆过滤器合并为一组拆分型布隆过滤器和计数型布隆过滤器的具体过程可以为:将两个拆分型布隆过滤器的位相量进行“或”的操作,而将两个计数型布隆过滤器的位相量对应的各个位计数值进行相加的操作。若计数型布隆过滤器的位相量存在对应的位计数值映射表时,本实施例中,在将两个计数型布隆过滤器的位相量对应的各个位计数值进行相加的操作之后,在合并后的计数型布隆过滤器的位相量对应的位计数值映射表中,还应根据每一位的实际计数值的相加结果以及是否发生溢出的结果,在位计数值映射表中,对记录的位计数器以及对应的溢出计数值进行相应的更新。
此外还需要说明的是,虽然本发明的双布隆过滤器相对于现有技术中布隆过滤器的优点在于:能够很好地解决布隆过滤器中集合元素的动态增加以及动态删除所带来的位向量需重建的问题,但是由于在本发明的双布隆过滤器中,对应的拆分型布隆过滤器和计数型过滤器均等价地表示了集合中的每一个元素,且拆分型布隆过滤器设置于系统内存中,具有很好的查询响应速度性能,因而在进行元素查询时,本发明中只需在拆分型布隆过滤器对待查询的元素进行查询即可,能够以此保证元素查询的速度。而由于该元素查询 的方法与现有技术中在传统布隆过滤器中进行元素查询的方法相同,因而在本发明中并不对此进行赘述。
本实施例的布隆过滤器的元素删除方法,通过采用拆分型布隆过滤器和计数型过滤器相结合的方法,分别在系统硬盘及系统内存中对应设置计数型过滤器以及拆分型过滤器,每一组计数型过滤器以及拆分型过滤器均表示集合中一个子集的所有元素,其中,由于设置于系统硬盘中的计数型过滤器能够对位向量的每一位进行扩展,使得位相量能够记录每一位为“1”的计数值,从而即使将该待删除的元素从布隆过滤器中进行了删除之后,计数型过滤器的位相量仍然能够正确地反映对应的子集中的剩余元素所对应的散列序列值在对应位的映射状况,从而无需进行位向量的重建,仅通过计数型布隆过滤器的设置,以及借助于硬盘的大容量存储,同样能够很好地解决了元素动态删除时的问题,而设置于内存中拆分型过滤器则用于集合元素的匹配查询,对传统布隆过滤器快速查找的优点予以继承。
进一步地,本实施例中,还通过为每个计数型过滤器设置合适的位计数器的位数,以及设置位计数值映射表,用于存储发生溢出的位计数器以及溢出后的溢出计数值,从而很好地解决了计数型过滤器的位计数值在过小容易溢出、在过大时又浪费存储空间两者之间的矛盾;同时还通过在检测到两个子集的容量均未满且能够合并为一个子集时,将两个子集予以合并,且将对应的两组拆分型布隆过滤器和计数型布隆过滤器予以合并,还同时达到了节约布隆过滤器所占用的资源,以及避免造成位相量的存储空间的浪费的效果。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图7为本发明布隆过滤器实施例一的结构示意图,如图7所示,本实施例的布隆过滤器包括:至少一组拆分型布隆过滤器1和计数型布隆过滤器2 (图中仅示出一组)、元素增加模块3以及元素删除模块4。其中,每组拆分型布隆过滤器和计数型布隆过滤器均对应布隆过滤器所表示的集合中的一个子集,每个计数型布隆过滤器的位向量均记录:对应的子集包含的所有元素通过布隆过滤器的散列函数组计算得到的所有散列序列值标识在每一位的计数值。
具体地,元素增加模块3至少包括:元素检测单元31、子集创建单元32、元素增加单元33和元素表示单元34四个单元。其中,元素检测单元31用于当需在布隆过滤器所表示的集合中增加元素时,检测当前子集包含的元素个数是否达到了预设的元素容量阈值;子集创建单元32用于元素检测单元31检测到当前子集包含的元素个数达到了预设的元素容量阈值,则在集合中创建一个新的子集,以及为该新的子集对应的创建一组新的拆分型布隆过滤器和计数型布隆过滤器,并选取新的子集为当前子集;元素增加单元33用于将待增加的元素添加至当前子集中;元素表示单元34则用于根据布隆过滤器对应的散列函数组,将待增加的元素分别表示至与当前子集对应的拆分型布隆过滤器和计数型布隆过滤器中。
具体地,元素删除模块4至少包括:元素查询单元41、子集删除单元42以及元素删除单元43三个单元。其中元素查询单元41用于当需在集合中删除元素时,根据散列函数组,查询待删除的元素所对应的子集;子集删除单元42用于在元素查询单元41查询到的子集中删除待删除的元素;而元素删除单元43则用于根据散列函数组,将待删除的元素分别从与查询到的子集对应的拆分型布隆过滤器和计数型布隆过滤器中删除。
具体地,本实施例布隆过滤器中的所有模块所涉及的具体工作过程,可以参考上述布隆过滤器的元素增加方法以及布隆过滤器的元素删除方法、所涉及的相关实施例揭露的相关内容,在此不再赘述。
本实施例的布隆过滤器,通过采用拆分型布隆过滤器和计数型过滤器相结合的方法,在系统中设置至少一组对应的计数型过滤器以及拆分型过滤器,每 一组计数型过滤器以及拆分型过滤器均表示集合中一个子集的所有元素,其中,计数型过滤器用于通过位向量的位扩展,解决集合元素动态删除的问题,而拆分型过滤器则用于集合元素的匹配查询,对传统布隆过滤器快速查找的优点予以继承;在需要对元素进行动态增加,且检测到当前子集容量已满时,通过在集合中新增一个子集,以及对应地新增一组与该子集对应的计数型过滤器和拆分型过滤器,以容纳并表示该新增元素,由于子集中可容纳的元素个数已优先设置,因而元素的增加不会导致假通过率的上升,从而同时很好的解决了布隆过滤器中集合元素的动态增加所带来的需重建位向量的问题。
图8为本发明布隆过滤器实施例二的结构示意图,如图8所示,在上述布隆过滤器实施例一的基础上,本实施例的布隆过滤器中,拆分型布隆过滤器1和计数型布隆过滤器2可以分别设置在系统内存和系统硬盘中,其中,拆分型布隆过滤器1设置在系统内存中,可以保证元素查询时具有较快的查询速度,而计数型布隆过滤器2设置在系统硬盘中,则可以借助于系统硬盘的海量存储空间,以存储计数型布隆过滤器扩展的位相量长度。
进一步地,在实施例的布隆过滤器中,元素表示单元34还可以包括:第一计算子单元341、第一数值标识子单元342以及计数值增加子单元343。其中,第一计算子单元341用于根据散列函数组,计算待增加的元素对应的一组散列序列值;第一数值标识子单元342用于在与当前子集对应的拆分型布隆过滤器的位相量中,将第一计算子单元341计算得到的散列序列值所对应的各个位的数值进行标识;而计数值增加子单元343用于在与当前子集对应的计数型布隆过滤器的位相量中,将第一计算子单元341计算得到的散列序列值所对应的各个位计数值加1。
具体地,若计数型布隆过滤器2的位向量对应设置了用于记录该位相量每一位的位计数值是否发生溢出、以及每一位的位计数值在发生溢出后超出最大值的溢出计数值的位计数值映射表时,上述计数值增加子单元343还具体用于:若计算得到的散列序列值所对应的任一位计数值达到最大值时,在与该 对应的计数型布隆过滤器的位计数值映射表中,将达到最大值的位计数值所对应的位计数器的溢出计数值加1,并在在计算得到的散列序列值所对应的任一位计数值未达到最大值时,便在与当前子集对应的计数型布隆过滤器的位相量中,将未达到最大值的、计算得到的散列序列值所对应的位计数值加1。
进一步地,在上述布隆过滤器实施例一的基础上,本实施例的布隆过滤器中,元素删除单元43还可以包括:第二计算子单元431、计数值删减子单元432以及第二数值标识子单元433。其中第二计算子单元431用于通过散列函数组,计算待删除的元素对应的一组散列序列值;计数值删减子单元432用于在与元素查询单元41查询到的子集对应的计数型布隆过滤器的位相量中,将第二计算子单元431计算得到的散列序列值所对应的各个位计数值减1;而第二数值标识子单元433则用于若计数值删减子单元432减1后的任一位计数值为零时,则在与元素查询单元41查询到的子集对应的拆分型布隆过滤器的位相量中,将位计数值为零所对应的位的数值标识为零。
具体地,若计数型布隆过滤器2的位向量对应设置了用于记录该位相量每一位的位计数值是否发生溢出、以及每一位的位计数值在溢出后超出最大值的溢出计数值的位计数值映射表时,上述计数值删减子单元432还具体用于:若在与对应的计数型布隆过滤器的位计数值映射表中,记录有与第二计算子单元431计算得到的散列序列值所对应的任一位的溢出计数值时,即第二计算子单元431计算得到的散列序列值对应的任一位计数值发生溢出时,在对应的位计数值映射表中,将与发生溢出的位计数值对应的位计数器的溢出计数值减1,并在若减1后的位计数器的溢出计数值为零时,将溢出计数值为零的位计数器从对应的位计数值映射表中删除;以及在与当前子集对应的计数型布隆过滤器的位相量中,将未发生溢出的、与第二计算子单元431计算得到的散列序列值对应的位计数值减1。
更进一步地,本实施例的布隆过滤器中,元素删除模块4还可以包括子 集合并单元44。该子集合并单元44用于在元素删除单元43将待删除的元素分别从与元素查询单元41查询到的子集对应的拆分型布隆过滤器和计数型布隆过滤器中删除之后,若检测到集合中的任意两个子集所包含的元素之和小于所述子集预设的元素容量阈值时,将该两个子集合并为一个子集,并将该两个子集对应的两组拆分型布隆过滤器和计数型布隆过滤器合并为一组拆分型布隆过滤器和计数型布隆过滤器。
更进一步地,在本实施例的布隆过滤器中,还可以包括参数设置模块5,用于根据使用布隆过滤器过滤元素时设定的最高假通过率,以及根据假通过率的计算公式p=[1-(1-1/m)kn]k,设置每个子集的元素容量阈值n、位向量长度m、以及散列函数组中包含的散列函数的个数k、以使布隆过滤器的假通过率p小于所述最高假通过率。
其中,该参数设置模块5中至少包括位相量长度设置单元。该相量长度设置单元用于设置拆分型布隆过滤器的位相量长度为m,以及设置计数型过滤器的位计数器个数为m,并设置计数型过滤器的每个位计数器的位数为4。
更进一步地,在本实施例的布隆过滤器中,还可以包括元素查询模块6。该元素查询模块6用于在对集合中的元素进行查询时,根据布隆过滤器的散列函数组,在各拆分型布隆过滤器中查询待查询的元素是否存在于布隆过滤器表示的集合中。具体地,由于该元素查询的方法与现有技术中在传统布隆过滤器中进行元素查询的方法,以及与上述元素删除模块4中的元素查询单元41的元素查询方法相同,因而在本发明中并不对此进行赘述。
具体地,本实施例布隆过滤器中的所有模块所涉及的具体工作过程,可以参考上述布隆过滤器的元素增加方法以及布隆过滤器的元素删除方法、所涉及的相关实施例揭露的相关内容,在此不再赘述。
本实施例的布隆过滤器,通过采用拆分型布隆过滤器和计数型过滤器相结合的方法,分别在系统硬盘及系统内存中对应设置计数型过滤器以及拆分型过滤器,每一组计数型过滤器以及拆分型过滤器均表示集合中一个子集的所有元 素,其中,设置于系统硬盘的计数型过滤器用于通过位向量的位扩展,以及借助于硬盘的大容量存储,解决集合元素动态删除以及存储空间的问题,而设置于内存中的拆分型过滤器则用于集合元素的匹配查询,对传统布隆过滤器快速查找的优点予以继承;在需要对元素进行动态增加,且检测到当前子集容量已满时,通过在集合中新增一个子集,以及对应地新增一组与该子集对应的计数型过滤器和拆分型过滤器,以容纳并表示该新增元素,由于子集中可容纳的元素个数已优先设置,因而元素的增加不会导致假通过率的上升,从而同时很好的解决了布隆过滤器中集合元素的动态增加所带来的需重建位向量的问题。
进一步地,本实施例中,还通过为每个计数型过滤器设置合适的位计数器的位数,以及设置位计数值映射表,用于存储发生溢出的位计数值以及溢出后的实际计数值,从而很好地解决了计数型过滤器的位计数值在过小容易溢出、在过大时又浪费存储空间两者之间的矛盾;同时还通过在检测到两个子集的容量均未满且能够合并为一个子集时,将两个子集予以合并,且将对应的两组拆分型布隆过滤器和计数型布隆过滤器予以合并,还同时达到了节约布隆过滤器所占用的资源,以及避免造成位相量的存储空间的浪费的效果。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (11)
1.一种布隆过滤器的元素增加方法,其特征在于,应用于包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器中,每组所述拆分型布隆过滤器和计数型布隆过滤器对应所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器表示的集合中的一个子集,每个所述计数型布隆过滤器的位向量记录:对应的所述子集包含的所有元素通过所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器对应的散列函数组计算得到的所有散列序列值标识在每一位的计数值,所述方法包括:
当需在所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器所表示的集合中增加元素时,检测当前子集包含的元素个数是否达到了预设的元素容量阈值;
若所述当前子集包含的元素个数达到了预设的元素容量阈值,则在所述集合中创建一个新的子集,以及为所述新的子集对应的创建一组新的拆分型布隆过滤器和计数型布隆过滤器,并选取所述新的子集为所述当前子集;
将待增加的元素添加至所述当前子集中;
根据所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器对应的散列函数组,将所述待增加的元素分别表示至与所述当前子集对应的拆分型布隆过滤器和计数型布隆过滤器中。
2.根据权利要求1所述的布隆过滤器的元素增加方法,其特征在于,所述将所述待增加的元素分别表示至与所述当前子集对应的拆分型布隆过滤器和计数型布隆过滤器中具体包括:
根据所述散列函数组,计算所述待增加的元素对应的一组散列序列值;
在与所述当前子集对应的所述拆分型布隆过滤器的位向量中,将计算得到的散列序列值所对应的各个位的数值标识为1;
在与所述当前子集对应的所述计数型布隆过滤器的位向量中,将计算得到的散列序列值所对应的各个位的位计数值加1。
3.根据权利要求2所述的布隆过滤器的元素增加方法,其特征在于,所述在与所述当前子集对应的所述计数型布隆过滤器的位向量中,将计算得到的散列序列值所对应的各个位的位计数值加1具体包括:
若计算得到的散列序列值所对应的任一位计数值达到最大值时,在与对应的所述计数型布隆过滤器的位计数值映射表中,将达到最大值的位计数值所对应的位计数器的溢出计数值加1;
在与所述当前子集对应的所述计数型布隆过滤器的位向量中,将未达到最大值的、所述计算得到的散列序列值所对应的位计数值加1;
所述位计数值映射表用于记录对应的计数型布隆过滤器的位向量中、每一位的位计数值在发生溢出后超出所述最大值的溢出计数值。
4.根据权利要求1或2或3所述的布隆过滤器的元素增加方法,其特征在于,所述检测当前子集包含的元素个数是否达到了预设的元素容量阈值之前,所述方法还包括:
根据使用所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器过滤元素时设定的最高假通过率,以及根据假通过率的计算公式p=[1-(1-1/m)kn]k,设置所述子集的所述元素容量阈值n、所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器的位向量长度m、以及所述散列函数组中包含的散列函数的个数k、以使所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器的假通过率p小于所述最高假通过率。
5.根据权利要求4所述的布隆过滤器的元素增加方法,其特征在于,所述设置所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器的位向量长度m具体包括:
设置所述拆分型布隆过滤器的位向量长度为m,以及设置所述计数型过滤器的位计数器个数为m;
设置所述计数型过滤器的每个位计数器的位数为4。
6.一种布隆过滤器的元素删除方法,其特征在于,应用于包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器中,每组所述拆分型布隆过滤器和计数型布隆过滤器对应所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器表示的集合中的一个子集,每个所述计数型布隆过滤器的位向量记录:对应的所述子集包含的所有元素通过所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器对应的散列函数组计算得到的所有散列序列值标识在每一位的计数值,所述方法包括:
当需在所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器所表示的集合中删除元素时,根据所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器对应的散列函数组,查询待删除的元素所对应的子集;
在查询到的子集中删除所述待删除的元素;
根据所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器对应的散列函数组,将所述待删除的元素分别从与查询到的子集对应的拆分型布隆过滤器和计数型布隆过滤器中删除。
7.根据权利要求6所述的布隆过滤器的元素删除方法,其特征在于,所述将所述待删除的元素分别从与查询到的子集对应的拆分型布隆过滤器和计数型布隆过滤器中删除具体包括:
通过所述散列函数组,计算所述待删除的元素对应的一组散列序列值;
在与查询到的子集对应的所述计数型布隆过滤器的位向量中,将计算得到的散列序列值所对应的各个位的位计数值减1;
若减1后的任一位计数值为零时,则在与查询到的子集对应的所述拆分型布隆过滤器的位向量中,将位计数值为零的位所对应的数值标识为零。
8.根据权利要求7所述的布隆过滤器的元素删除方法,其特征在于,所述在与查询到的子集对应的所述计数型布隆过滤器的位向量中,将计算得到的散列序列值所对应的各个位的位计数值减1具体包括:
若在与对应的所述计数型布隆过滤器的位计数值映射表中,记录有与计算得到的散列序列值对应的任一位的溢出计数值时,在所述位计数值映射表中,将对应的溢出计数值减1;
若减1后的位计数器的溢出计数值为零,则将溢出计数值为零的位计数器从所述位计数值映射表中删除;
在与所述查询到的子集对应的所述计数型布隆过滤器的位向量中,将未记录有溢出计数值的、所述计算得到的散列序列值所对应的位计数值减1;
所述位计数值映射表用于记录对应的计数型布隆过滤器的位向量中、每一位的位计数值在发生溢出后超出最大值的溢出计数值,所述最大值为计算得到的散列序列值所对应的任一位计数值能够达到的最大值。
9.根据权利要求6~8任一所述的布隆过滤器的元素删除方法,其特征在于,所述将所述待删除的元素分别从与查询到的子集对应的拆分型布隆过滤器和计数型布隆过滤器中删除之后,所述方法还包括:
若检测到所述集合中任意两个子集所包含的元素之和小于所述子集预设的元素容量阈值时,将所述两个子集合并为一个子集,将所述两个子集对应的两组拆分型布隆过滤器和计数型布隆过滤器合并为一组拆分型布隆过滤器和计数型布隆过滤器。
10.根据权利要求6所述的布隆过滤器的元素删除方法,其特征在于,所述根据所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器对应的散列函数组,查询待删除的元素所对应的子集之前,所述方法还包括:
根据使用所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器过滤元素时设定的最高假通过率,以及根据假通过率的计算公式p=[1-(1-1/m)kn]k,设置所述子集的所述元素容量阈值n、所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器的位向量长度m、以及所述散列函数组中包含的散列函数的个数k、以使所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器的假通过率p小于所述最高假 通过率。
11.根据权利要求10所述的布隆过滤器的元素删除方法,其特征在于,所述设置所述包含至少一组拆分型布隆过滤器和计数型布隆过滤器的布隆过滤器的位向量长度m具体包括:
设置所述拆分型布隆过滤器的位向量长度为m,以及设置所述计数型过滤器的位计数器个数为m;
设置所述计数型过滤器的每个位计数器的位数为4。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010216947 CN101923568B (zh) | 2010-06-23 | 2010-06-23 | 布隆过滤器的元素增加、删除方法以及布隆过滤器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010216947 CN101923568B (zh) | 2010-06-23 | 2010-06-23 | 布隆过滤器的元素增加、删除方法以及布隆过滤器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101923568A CN101923568A (zh) | 2010-12-22 |
CN101923568B true CN101923568B (zh) | 2013-06-19 |
Family
ID=43338501
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010216947 Expired - Fee Related CN101923568B (zh) | 2010-06-23 | 2010-06-23 | 布隆过滤器的元素增加、删除方法以及布隆过滤器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101923568B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253991B (zh) * | 2011-05-25 | 2014-07-30 | 北京星网锐捷网络技术有限公司 | Url存储方法、网页过滤方法、装置及系统 |
US8526603B2 (en) * | 2011-07-08 | 2013-09-03 | Sap Ag | Public-key encrypted bloom filters with applications to private set intersection |
CN103116599A (zh) * | 2012-11-30 | 2013-05-22 | 浙江工商大学 | 一种基于改进Bloom Filter结构的城市海量数据流快速冗余消除方法 |
CN104424256B (zh) * | 2013-08-28 | 2017-12-12 | 华为技术有限公司 | 布隆过滤器生成方法和装置 |
CN105320654B (zh) * | 2014-05-28 | 2018-08-31 | 中国科学院深圳先进技术研究院 | 动态布隆过滤器和基于动态布隆过滤器的元素操作方法 |
CN105718455B (zh) * | 2014-12-01 | 2019-06-14 | 阿里巴巴集团控股有限公司 | 一种数据查询方法及装置 |
CN104504011B (zh) * | 2014-12-10 | 2018-05-15 | 华南师范大学 | 一种查存算法的比较方法 |
JP6646847B2 (ja) * | 2015-09-09 | 2020-02-14 | アマゾン・テクノロジーズ、インコーポレイテッド | 確率的データ構造からの要素の削除 |
CN105574076B (zh) * | 2015-11-27 | 2019-02-12 | 湖南大学 | 一种基于Bloom Filter的键值对存储结构及方法 |
CN107368596A (zh) * | 2017-07-26 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种布隆过滤器查询集合元素的方法及装置 |
CN110362590A (zh) * | 2018-04-02 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 数据管理方法、装置、系统、电子设备及计算机可读介质 |
CN110377225B (zh) * | 2019-05-23 | 2023-04-28 | 杨展鹏 | 一种支持外包数据安全转移与可验证删除的方法 |
CN112948370B (zh) * | 2019-11-26 | 2023-04-11 | 上海哔哩哔哩科技有限公司 | 数据分类方法、装置以及计算机设备 |
CN111930923B (zh) * | 2020-07-02 | 2021-07-30 | 上海微亿智造科技有限公司 | 布隆过滤器系统及过滤方法 |
CN111857850B (zh) * | 2020-07-21 | 2022-03-25 | 掌阅科技股份有限公司 | 过滤器的初始化方法、电子设备及存储介质 |
CN112818188A (zh) * | 2020-08-19 | 2021-05-18 | 北京辰信领创信息技术有限公司 | 一种支持删除的布隆过滤的设计方法 |
CN112068958A (zh) * | 2020-08-31 | 2020-12-11 | 常州微亿智造科技有限公司 | 布隆过滤器和数据处理方法 |
CN112532598B (zh) * | 2020-11-19 | 2021-10-26 | 南京大学 | 一种用于实时入侵检测系统的过滤方法 |
US20230221864A1 (en) * | 2022-01-10 | 2023-07-13 | Vmware, Inc. | Efficient inline block-level deduplication using a bloom filter and a small in-memory deduplication hash table |
CN116258524B (zh) * | 2023-03-14 | 2024-02-02 | 深圳乐信软件技术有限公司 | 基于布隆过滤器的广告投放方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101150483A (zh) * | 2007-11-02 | 2008-03-26 | 华为技术有限公司 | 路由表调整方法、路由查询方法和装置及路由表存储装置 |
CN101359325A (zh) * | 2007-08-01 | 2009-02-04 | 北京启明星辰信息技术有限公司 | 一种快速内容分析的多关键词匹配方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352421B2 (en) * | 2008-05-28 | 2013-01-08 | Red Hat, Inc. | Recording distributed transactions using probabalistic data structures |
-
2010
- 2010-06-23 CN CN 201010216947 patent/CN101923568B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101359325A (zh) * | 2007-08-01 | 2009-02-04 | 北京启明星辰信息技术有限公司 | 一种快速内容分析的多关键词匹配方法 |
CN101150483A (zh) * | 2007-11-02 | 2008-03-26 | 华为技术有限公司 | 路由表调整方法、路由查询方法和装置及路由表存储装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101923568A (zh) | 2010-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101923568B (zh) | 布隆过滤器的元素增加、删除方法以及布隆过滤器 | |
TWI515561B (zh) | 使用快閃記憶體之頁結構的資料樹儲存方法、系統以及電腦產品 | |
CN102663090B (zh) | 元数据查询方法和装置 | |
CN102541757B (zh) | 写缓存方法、缓存同步方法和装置 | |
CN105242871A (zh) | 一种数据写入方法及装置 | |
CN101645043B (zh) | 写数据的方法、读数据的方法及存储设备 | |
CN104281535B (zh) | 一种映射表在内存中的处理方法和装置 | |
CN109213432B (zh) | 利用日志结构合并树将数据写入的存储设备及其方法 | |
CN104461925B (zh) | 一种存储设备地址对齐的自动纠正方法和装置 | |
CN103473298B (zh) | 数据归档方法和装置以及存储系统 | |
CN104156407B (zh) | 索引数据的存储方法、装置及存储设备 | |
CN103019887A (zh) | 数据备份方法及装置 | |
CN107391544B (zh) | 列式存储数据的处理方法、装置、设备及计算机储存介质 | |
US10552335B2 (en) | Method and electronic device for a mapping table in a solid-state memory | |
CN103412826A (zh) | 固态硬盘的垃圾回收方法及系统 | |
CN107273046A (zh) | 一种基于固态盘阵列的数据处理方法及系统 | |
CN104408128B (zh) | 一种基于b+树异步更新索引的读优化方法 | |
CN108334277A (zh) | 一种日志写入及同步方法、装置、系统、计算机存储介质 | |
CN105988719A (zh) | 存储装置及其处理数据的方法 | |
RU2017104408A (ru) | Составные топологии хранения данных для объектов данных | |
CN103176753B (zh) | 存储设备及其数据管理方法 | |
KR20120082176A (ko) | 데이터베이스 관리 시스템의 데이터 처리 방법 및 시스템 | |
CN104731716A (zh) | 一种数据存储方法 | |
CN103425802A (zh) | 一种磁盘文件的快速检索方法 | |
CN102929976B (zh) | 备份数据访问方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130619 Termination date: 20210623 |
|
CF01 | Termination of patent right due to non-payment of annual fee |