CN110222088B - 基于插入位置选择的数据近似集合表示方法及系统 - Google Patents
基于插入位置选择的数据近似集合表示方法及系统 Download PDFInfo
- Publication number
- CN110222088B CN110222088B CN201910419541.0A CN201910419541A CN110222088B CN 110222088 B CN110222088 B CN 110222088B CN 201910419541 A CN201910419541 A CN 201910419541A CN 110222088 B CN110222088 B CN 110222088B
- Authority
- CN
- China
- Prior art keywords
- hash bucket
- candidate
- relocation
- fingerprint information
- hash
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Fuzzy Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Databases & Information Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Collating Specific Patterns (AREA)
- Measurement Of The Respiration, Hearing Ability, Form, And Blood Characteristics Of Living Organisms (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于插入位置选择的数据近似集合表示方法及系统,属于计算机信息表示领域,包括:为布谷鸟过滤器中每一个哈希桶维护一个重定位计数;对于待插入的成员x,执行如下步骤:分别获得其指纹信息ξx和两个候选哈希桶;若两个候选哈希桶中均未存储指纹信息ξx,则判断其中是否存在空槽;否则,插入操作结束;若只有一个存在空槽,将指纹信息ξx插入到存在空槽的候选哈希桶中;若两个均不存在空槽,则通过重定位操作将指纹信息ξx插入到重定位计数较小的候选哈希桶中,并相应更新哈希桶的重定位次数;若两个均存在空槽,则将指纹信息ξx插入到全局插入数目较小的候选哈希桶中。本发明能够同时支持集合成员删除操作和高效的插入操作。
Description
技术领域
本发明属于计算机信息表示领域,更具体地,涉及一种基于插入位置选择的数据近似集合表示方法及系统。
背景技术
随着大数据应用的蓬勃发展,高效的数据集合表示(Set Representation)成为一个重要的问题。数据集合表示,具体是指通过某种数据结构将集合中的元素高效的组织和存储起来;成员判定,即判断特定成员是否已经存在集合中,是数据集合表示中的一个重要操作。存储空间高效的集合表示及快速成员判定对云存储、移动缓存等大数据应用至关重要。例如,云存储系统中,通常需要重复文件仅存储一份来实现高效的空间利用,因此需要快速的检测出需要存储的文件是否已经存在于云存储系统中。
哈希编码(hash coding)是一种经典的数据集合表示方法,哈希编码通过保存集合中成员的完整信息来实现集合成员精确判定,然而这样的数据集合表示方法在空间效率不高,而且由于该方法采用链式法来应对哈希冲突,所以其成员判定效率不高。对于可以接受近似成员判定结果的应用,可采用数据近似集合表示方法,仅保存布尔值或者对应成员的指纹信息,而不是完整的数据成员信息,因此能够降低空间和时间开销。目前,从所采用的数据结构来看,数据近似集合表示方主要包括以下两种:(1)基于布隆过滤器(BloomFilter,BF)的数据近似集合表示方法,该方法使用布尔值来标志集合成员的存在,具有较高的空间效率和时间效率,但不支持集合成员的删除操作,因此无法应用于数据集合动态变化的应用;(2)基于布谷鸟过滤器(Cuckoo Filter,CF)的数据近似集合表示方法,该方法保存对应集合成员的指纹信息来标志集合成员,并通过匹配指纹信息进行集合成员判定;基于布谷鸟过滤器的数据近似集合表示方法支持集合成员的删除操作,但是所使用的布谷鸟过滤器在集合成员插入过程中可能发生重定位操作,随着布谷鸟过滤器存储空间变得越来越满,重定位的次数会快速增加,因此,该方法存在集合成员插入效率低下的问题。
总的来说,现有的数据近似集合表示方法,无法同时支持集合成员删除操作和高效的集合成员插入操作。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种基于插入位置选择的数据近似集合表示方法及系统,其目的在于,同时支持集合成员删除操作和高效的集合成员插入操作。
为实现上述目的,按照本发明的一个方面,提供了一种基于插入位置选择的数据近似集合表示方法,包括:
预先建立用于存储集合成员指纹信息的布谷鸟过滤器,并分别为其中的每一个哈希桶维护一个重定位计数;重定位计数用于记录成员插入对应的哈希桶中所需要的最大重定位次数;
对于每一个待插入的成员x,执行如下步骤:
(1)分别获得成员x的指纹信息ξx和对应的两个候选哈希桶;
(2)若两个候选哈希桶中均未存储指纹信息ξx,则转入步骤(3);否则,插入操作结束;
(3)若只有一个候选哈希桶中存在空槽,则转入步骤(4);若两个候选哈希桶中均不存在空槽,则转入步骤(5);若两个候选哈希桶中均存在空槽,则转入步骤(6);
(4)将指纹信息ξx插入到存在空槽的候选哈希桶中,插入操作结束;
(5)通过重定位操作将指纹信息ξx插入到重定位计数较小的候选哈希桶中,并相应更新该重定位操作所涉及到的哈希桶的重定位次数,插入操作结束;
(6)分别估计两个候选哈希桶的全局插入数目后,将指纹信息ξx插入到全局插入数目较小的候选哈希桶中,插入操作结束;
其中,哈希桶的全局插入数目为所有集合成员均插入完成后,插入到该哈希桶中的指纹总数。
本发明在待插入成员所对应的两个候选哈希桶中均存在空槽时,会选择全局插入数目较少的候选哈希桶作为实际的插入位置,由于哈希桶的全局插入数目表示所有集合成员均插入完成后,插入到该哈希桶中的指纹总数,因此,本发明通过对插入位置进行选择,能够使得不同哈希桶中的指纹总数趋于相等,即使得负载均匀地分布在各哈希桶中,达到一种负载均衡的效果,由此能够有效减少布谷鸟过滤器中满哈希桶的数量,从而能够在集合成员插入时有效减少重定位的次数,提高集合成员的插入效率;本发明利用布谷鸟过滤器作为存储集合成员的数据结构,由于布谷鸟过滤器本身支持对集合成员的删除操作,因此,本发明也能支持对集合成员的删除操作。总的来说,本发明所提供的数据近似集合表示方法,能够同时支持集合成员删除操作和高效的集合成员插入操作。
进一步地,步骤(5)包括:
(51)将指纹信息ξx作为待重定位指纹,将重定位次数较小的候选哈希桶作为目标哈希桶,并初始化计数变量为Counter=1;
(52)若计数变量Counter>MNK,则重定位操作结束;否则,转入步骤(53);
(53)若目标哈希桶中存在空槽,则将待重定位指纹插入目标哈希桶的空槽中,并转入步骤(54);否则,转入步骤(55);
(54)若目标哈希桶的重定位计数RC[r]<Counter,则更新目标哈希桶的重定位计数为RC[r]=Counter,重定位操作结束;否则,目标哈希桶的重定位计数RC[r]保持不变,重定位操作结束;
(55)从目标哈希桶中随机选择一个槽,将其中原本存储的指纹信息踢出,并将待重定位指纹插入该槽;
(56)若目标哈希桶的重定位计数RC[r]<Counter,则更新目标哈希桶的重定位计数为RC[r]=Counter,并转入步骤(57);否则,目标哈希桶的重定位计数RC[r]保持不变,转入步骤(57);
(57)将被踢出的指纹信息作为新的待重定位指纹,将被踢出的指纹信息所对应的另外一个哈希桶(非当前的目标哈希桶)作为新的目标哈希桶,并将计数变量Counter的值加1后,转入步骤(52);
其中,MNK为预设的最大重定位次数。
本发明为布谷鸟过滤器中的每一个哈希桶分别维护一个重定位计数,用于记录成员插入对应的哈希桶中所需要的最大重定位次数,该重定位计数也可用于反映了对应的哈希桶中成员需要进行重定位时,该重定位操作可能涉及到的最大重定位次数;本发明在待插入成员所对应的两个候选哈希桶中均不存在空槽时,选择重定位计数较小的候选哈希桶进行重定位操作,能够尽量减少重定位次数,提高集合成员的插入效率。
进一步地,估计任意一个候选哈希桶的全局插入数目,其方法包括:
其中,m为布谷鸟过滤器的总容量,f为布谷鸟过滤器中当前的指纹数目,b为每个哈希桶所包含的槽数。
本发明根据负载在各哈希桶中的分布情况对哈希桶的全局插入数目进行了准确估计。具体来说,本发明基于布谷鸟过滤器的负载因子以及哈希桶的重定位计数估计后续集合成员插入到该哈希桶中的概率,能够较为准确的估计剩余集合成员插入到该哈希桶中的数量,从而结合该哈希桶中当前的指纹数目估计全部集合成员插入完成后,插入到该哈希桶中的指纹数目。
进一步地,估计任意一个候选哈希桶的全局插入数目,其方法还包括:
对全局插入数目S进行简化,以得到该候选哈希桶最终的全局插入数目为:S′=n+b(1-α)×RC。
上述简化操作,略去了各全局估计数目中b(1-α)这一项;由于本发明所估计的全局插入数目,最终用于两个比较两个候选哈希桶,以选择实际的插入位置,上述简化操作,在不影响比较结果和所选择的插入位置的情况下,简化了计算,提高了集合成员的插入效率。
进一步地,步骤(1)包括:
根据ξx=fingerprint(x)计算成员x的指纹信息ξx;
根据候选哈希桶位置μ和v,获得成员x所对应的两个候选哈希桶;
进一步地,判定任意一个候选哈希桶中是否存储有指纹信息ξx的方法包括:
遍历该候选哈希桶中的槽,并将槽中存储的值与指纹信息ξx进行比较;在遍历候选哈希桶的同时,记录其中所存储的指纹数目;
若所有槽中存储的值均与指纹信息ξx不相等,则判定该候选哈希桶中未存储指纹信息ξx;否则,判定该候选哈希桶中存储有指纹信息ξx。
本发明在成员判定的同时记录哈希桶中的指纹数目,在后续操作中,无需通过额外的操作获取哈希桶中的指纹数目,由此能够简化计算。
进一步地,判定任意一个候选哈希桶中是否存在空槽的方法包括:
若该候选哈希桶中所存储的指纹数目n<b,则判定该候选哈希桶中存在空槽;否则,判定该候选哈希桶中不存在空槽。
按照本发明的另一方面,提供了一种基于插入位置选择的数据近似集合表示系统,包括:计算模块、去重模块、判定模块、直接插入模块、重定位模块以及选择插入模块;
计算模块,用于分别获得待插入成员x的指纹信息ξx和成员x在布谷鸟过滤器中对应的两个候选哈希桶;布谷鸟过滤器为预先建立的用于存储集合成员指纹信息的数据结构,并且其中的每一个哈希桶均有一个重定位计数;重定位计数用于记录成员插入对应的哈希桶中所需要的最大重定位次数;
去重模块,用于判定候选哈希桶中是否存储有指纹信息ξx,并在任意一个候选哈希桶中存储有指纹信息ξx时,结束插入操作;
判定模块,用于在去重模块判定两个候选哈希桶中均未存储指纹信息ξx时,判定候选哈希桶中是否存在空槽;
直接插入模块,用于在判定模块判定只有一个候选哈希桶中存在空槽时,将指纹信息ξx插入到存在空槽的候选哈希桶中,以结束插入操作;
重定位模块,用于在判定模块判定两个候选哈希桶中均不存在空槽时,通过重定位操作将指纹信息ξx插入到重定位计数较小的候选哈希桶中,并相应更新该重定位操作所涉及到的哈希桶的重定位次数,以结束插入操作;
选择插入模块,用于在判定模块判定两个候选哈希桶中均存在空槽时,分别估计两个候选哈希桶的全局插入数目后,将指纹信息ξx插入到全局插入数目较小的候选哈希桶中,插入操作结束;
其中,哈希桶的全局插入数目为所有集合成员均插入完成后,插入到该哈希桶中的指纹总数。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)本发明所提供的基于插入位置选择的数据近似集合表示方法及系统,通过对插入位置进行选择,能够使得不同哈希桶中的指纹总数趋于相等,达到一种负载均衡的效果,由此能够在集合成员插入时有效减少重定位的次数,提高集合成员的插入效率;利用布谷鸟过滤器作为存储集合成员的数据结构,由于布谷鸟过滤器本身支持对集合成员的删除操作,因此,本发明也能支持对集合成员的删除操作。总的来说,本发明能够同时支持集合成员删除操作和高效的集合成员插入操作。
(2)本发明所提供的基于插入位置选择的数据近似集合表示方法及系统,在待插入成员所对应的两个候选哈希桶中均不存在空槽时,选择重定位计数较小的候选哈希桶进行重定位操作,能够尽量减少重定位次数,提高集合成员的插入效率。
附图说明
图1为现有的布谷鸟过滤器(CF)示意图;
图2为本发明实施例提供的基于插入位置选择的数据近似集合表示方法流程图;
图3为本发明实施例提供的成员判定方法流程图;
图4为本发明实施例提供的集合成员x的插入示意图;
图5为本发明实施例提供的重定位操作示意图;
图6为本发明实施例提供的集合成员l的判定示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
在详细解释本发明的技术方案之前,先对本发明所涉及的技术术语进行简要介绍:
数据集合表示:通过一种数据结构将集合中的元素完整信息存储起来,可以精确的判定任一元素是否属于该集合。
数据近似集合表示:通过一种数据结构将集合中的元素高效的组织和存储起来,可以快速的判定任一元素是否属于该集合,但是有很小的概率将不是集合中的元素误判为集合中的一员。
布谷鸟过滤器(CF):布谷鸟过滤器本质上是由m个哈希桶组成的桶数组组成,每个哈希桶有b个槽,槽是用来保存元素指纹信息的基本单位;对于任一待插入的元素,先计算对应的指纹,再通过两个哈希函数计算两个候选桶位置,如图1所示;支持元素插入、元素查询和元素删除操作。
重定位:在布谷鸟过滤器中,当待插入元素的两个候选桶位置都是满的时候,需要选择一个候选桶将其中的某个指纹踢出来用来保存待插入元素的指纹信息,这个为一次重定位操作;如果被踢出的指纹的另一个候选位置还是满的,则继续重定位操作,直到所有被踢出的指纹都找到了空的槽来保存。
针对现有的数据近似集合表示方法无法同时支持集合成员删除操作和集合成员的高效插入操作的问题,本发明提供的基于插入位置选择的数据近似集合表示方法,如图2所示,包括:
预先建立用于存储集合成员指纹信息的布谷鸟过滤器,并分别为其中的每一个哈希桶维护一个重定位计数;重定位计数用于记录成员插入对应的哈希桶中所需要的最大重定位次数;布谷鸟过滤器中各哈希桶的重定位计数均为0;
对于每一个待插入的成员x,执行如下步骤:
(1)分别获得成员x的指纹信息ξx和对应的两个候选哈希桶;
在本实施例中,步骤(1)具体包括:
根据ξx=fingerprint(x)计算成员x的指纹信息ξx;
根据候选哈希桶位置μ和v,获得成员x所对应的两个候选哈希桶;
(2)若两个候选哈希桶中均未存储指纹信息ξx,则转入步骤(3);否则,插入操作结束;
在一个可选的实施方式中,判定任意一个候选哈希桶中是否存储有指纹信息ξx的方法包括:
遍历该候选哈希桶中的槽,并将槽中存储的值与指纹信息ξx进行比较;在遍历候选哈希桶的同时,记录其中所存储的指纹数目;
若所有槽中存储的值均与指纹信息ξx不相等,则判定该候选哈希桶中未存储指纹信息ξx;否则,判定该候选哈希桶中存储有指纹信息ξx;
具体地,如图3所示,在本实施例中对成员x进行判定时,具体是遍历两个候选哈希桶位置μ和v上的所有槽(entry),依次比较每个槽中保存的值和集合成员x的指纹信息ξx,同时分别记录位置μ和v中含有的指纹数目nμ和nν;
本发明在成员判定的同时记录哈希桶中的指纹数目,在后续操作中,无需通过额外的操作获取哈希桶中的指纹数目,由此能够简化计算;
(3)若只有一个候选哈希桶中存在空槽,则转入步骤(4);若两个候选哈希桶中均不存在空槽,则转入步骤(5);若两个候选哈希桶中均存在空槽,则转入步骤(6);
在一个可选的实施方式中,判定任意一个候选哈希桶中是否存在空槽的方法包括:
若该候选哈希桶中所存储的指纹数目n<b,则判定该候选哈希桶中存在空槽;否则,判定该候选哈希桶中不存在空槽;
在本实施例中,基于步骤(2)中以获取到的指纹数目nμ和nv,可直接判定两个候选哈希桶中是否有空槽,若nμ<b,则判定位置μ所对应的候选哈希桶中含有空槽;若nv<b,则判定位置v所对应的候选哈希桶中含有空槽;
(4)将指纹信息ξx插入到存在空槽的候选哈希桶中,插入操作结束;
(5)通过重定位操作将指纹信息ξx插入到重定位计数较小的候选哈希桶中,并相应更新该重定位操作所涉及到的哈希桶的重定位次数,插入操作结束;
在一个可选的实施方式中,步骤(5)包括:
(51)将指纹信息ξx作为待重定位指纹,将重定位次数较小的候选哈希桶作为目标哈希桶,并初始化计数变量为Counter=1;
(52)若计数变量Counter>MNK,则重定位操作结束;否则,转入步骤(53);
(53)若目标哈希桶中存在空槽,则将待重定位指纹插入目标哈希桶的空槽中,并转入步骤(54);否则,转入步骤(55);
(54)若目标哈希桶的重定位计数RC[r]<Counter,则更新目标哈希桶的重定位计数为RC[r]=Counter,重定位操作结束;否则,目标哈希桶的重定位计数RC[r]保持不变,重定位操作结束;
(55)从目标哈希桶中随机选择一个槽,将其中原本存储的指纹信息踢出,并将待重定位指纹插入该槽;
(56)若目标哈希桶的重定位计数RC[r]<Counter,则更新目标哈希桶的重定位计数为RC[r]=Counter,并转入步骤(57);否则,目标哈希桶的重定位计数RC[r]保持不变,转入步骤(57);
(57)将被踢出的指纹信息作为新的待重定位指纹,将被踢出的指纹信息所对应的另外一个哈希桶(非当前的目标哈希桶)作为新的目标哈希桶,并将计数变量Counter的值加1后,转入步骤(52);指纹信息所对应的哈希桶,即该指纹信息所对应的集合成员所对应的候选哈希桶;
其中,MNK为预设的最大重定位次数;MNK大小一般设置为500;
若达到了最大重定位次数,重定位操作还没有结束,则终止该重定位操作;此时,可通过扩充布谷鸟过滤器容量的方法,将待重定位指纹插入布谷鸟过滤器中,这样可以提供较为准确的集合成员判定结果;在对集合成员判定结果的准确度要求较低的应用中,则可直接将带重定位指纹丢弃,以简化计算;
本发明为布谷鸟过滤器中的每一个哈希桶分别维护一个重定位计数,用于记录成员插入对应的哈希桶中所需要的最大重定位次数,该重定位计数也可用于反映了对应的哈希桶中成员需要进行重定位时,该重定位操作可能涉及到的最大重定位次数;本发明在待插入成员所对应的两个候选哈希桶中均不存在空槽时,选择重定位计数较小的候选哈希桶进行重定位操作,能够尽量减少重定位次数,提高集合成员的插入效率
(6)分别估计两个候选哈希桶的全局插入数目后,将指纹信息ξx插入到全局插入数目较小的候选哈希桶中,插入操作结束;
其中,哈希桶的全局插入数目为所有集合成员均插入完成后,插入到该哈希桶中的指纹总数;
在一个可选的实施方式中,估计任意一个候选哈希桶的全局插入数目,其方法包括:
其中,m为布谷鸟过滤器的总容量,f为布谷鸟过滤器中当前的指纹数目,b为每个哈希桶所包含的槽数;
本发明根据负载在各哈希桶中的分布情况对哈希桶的全局插入数目进行了准确估计;具体来说,本发明基于布谷鸟过滤器的负载因子以及哈希桶的重定位计数估计后续集合成员插入到该哈希桶中的概率,能够较为准确的估计剩余集合成员插入到该哈希桶中的数量,从而结合该哈希桶中当前的指纹数目估计全部集合成员插入完成后,插入到该哈希桶中的指纹数目;
为进一步简化计算,提高集合成员的插入效率,在另一个可选的实施方式中,估计任意一个候选哈希桶的全局插入数目,其方法除了上述操作之外,还包括:
对全局插入数目S进行简化,以得到该候选哈希桶最终的全局插入数目为:S′=n+b(1-α)×RC;
上述简化操作,略去了各全局估计数目中b(1-α)这一项;由于本发明所估计的全局插入数目,最终用于两个比较两个候选哈希桶,以选择实际的插入位置,上述简化操作,在不影响比较结果和所选择的插入位置的情况下,简化了计算,提高了集合成员的插入效率。
上述基于插入位置选择的数据近似集合表示方法,在待插入成员所对应的两个候选哈希桶中均存在空槽时,会选择全局插入数目较少的候选哈希桶作为实际的插入位置,由于哈希桶的全局插入数目表示所有集合成员均插入完成后,插入到该哈希桶中的指纹总数,因此,通过对插入位置进行选择,能够使得不同哈希桶中的指纹总数趋于相等,即使得负载均匀地分布在各哈希桶中,达到一种负载均衡的效果,由此能够有效减少布谷鸟过滤器中满哈希桶的数量,从而能够在集合成员插入时有效减少重定位的次数,提高集合成员的插入效率;利用布谷鸟过滤器作为存储集合成员的数据结构,由于布谷鸟过滤器本身支持对集合成员的删除操作,因此,上述基于插入位置选择的数据近似集合表示方法,也能支持对集合成员的删除操作;总的来说,本发明所提供的数据近似集合表示方法,能够同时支持集合成员删除操作和高效的集合成员插入操作。
本发明还提供了一种基于插入位置选择的数据近似集合表示系统,用于实现上述基于插入位置选择的数据近似集合表示方法,该系统包括:计算模块、去重模块、判定模块、直接插入模块、重定位模块以及选择插入模块;
计算模块,用于分别获得待插入成员x的指纹信息ξx和成员x在布谷鸟过滤器中对应的两个候选哈希桶;布谷鸟过滤器为预先建立的用于存储集合成员指纹信息的数据结构,并且其中的每一个哈希桶均有一个重定位计数;重定位计数用于记录成员插入对应的哈希桶中所需要的最大重定位次数;
去重模块,用于判定候选哈希桶中是否存储有指纹信息ξx,并在任意一个候选哈希桶中存储有指纹信息ξx时,结束插入操作;
判定模块,用于在去重模块判定两个候选哈希桶中均未存储指纹信息ξx时,判定候选哈希桶中是否存在空槽;
直接插入模块,用于在判定模块判定只有一个候选哈希桶中存在空槽时,将指纹信息ξx插入到存在空槽的候选哈希桶中,以结束插入操作;
重定位模块,用于在判定模块判定两个候选哈希桶中均不存在空槽时,通过重定位操作将指纹信息ξx插入到重定位计数较小的候选哈希桶中,并相应更新该重定位操作所涉及到的哈希桶的重定位次数,以结束插入操作;
选择插入模块,用于在判定模块判定两个候选哈希桶中均存在空槽时,分别估计两个候选哈希桶的全局插入数目后,将指纹信息ξx插入到全局插入数目较小的候选哈希桶中,插入操作结束;
其中,哈希桶的全局插入数目为所有集合成员均插入完成后,插入到该哈希桶中的指纹总数;
在本发明实施例中,各模块的具体实施方式可参考上述方法实施例中的描述,在此将不作复述。
上述基于插入位置选择的数据近似集合表示方法及系统,可应用于云存储系统和移动缓存领域。
应用实例:
用于存储集合成员的指纹信息的布谷鸟过滤器(CF),包含8个哈希桶,每个哈希桶包含4个槽,哈希桶的重定位计数存储于重定位计数器数组ReCounters;初始时刻,重定位计数器数组ReCounters初始化为0。假设在插入成员x时,布谷鸟过滤器CF及重定位计数器数组ReCounters的值如图4所示,对成员x的插入操作包括如下步骤:
(S1)通过哈希函数fingerprint计算得到集合成员x对应的指纹信息ξx;通过哈希函数hash计算得到集合成员x对应的两个候选桶位置,μ=3、v=6;
(S2)遍历两个候选桶位置上的所有entry,依次比较每个entry中保存的值和集合成员x的指纹信息ξx,同时记录两个候选桶位置μ,v中含有的指纹数目nμ=2和nv=3,在两个候选桶中没有找到集合成员x对应的指纹ξx,所以进入步骤(S3);
(S3)因为nu<4并且nv<4,所以两个候选桶位置上有空的entry,进入步骤(S4);
(S4)此时负载因子α=0.5,Sμ=nμ+b(1-α)×ReCounters[μ]=2+4×0.5×1=4,Sv=nv+b(1-α)×ReCounters[v]=3+4×0.5×1=5;因为Sμ<Sν,则选择候选桶位置μ=3作为插入位置插入集合成员x的指纹ξx,插入操作结束。
经过上述操作,将成员x插入布谷鸟过滤器CF后,CF的指纹分布和重定位计数器数组ReCounters的值如图5所示;此是对成员y进行插入,具体操作步骤如下:
(T1)通过哈希函数计算得到集合成员y对应的指纹信息ξy,通过哈希函数得到集合成员y对应的两个候选桶位置,μ=2、v=4;
(T2)遍历两个候选桶位置上的所有entry,依次比较每个entry中保存的值和集合成员y的指纹信息ξy,同时记录两个候选桶位置μ,v中含有的指纹数目nμ=4和nv=4,在两个候选桶中没有找到集合成员y对应的指纹ξy,所以进入步骤(T3);
(T3)因为两个候选桶位置上没有空的entry,所以进入步骤(T4)以进行重定位操作;
(T4)因为两个候选桶位置上都没有空的entry,而且ReCounters[2]=0的值小于ReCounters[4]=1的值,所以选择候选桶位置2进行重定位操作,初始化计数器Counter为1,进入步骤(T5);
(T5)从候选桶位置2随机选择一个entry,并随机选择了保存集合成员l指纹信息ξl的entry,将踢出的ξl保存为ξkick,该entry重新保存集合成员y的指纹信息ξy;
(T6)此时记录重定位次数的Counter值为1,小于预设的最大重定位次数MNK=500,所以进入步骤(T7);
(T7)计算ξkick=ξl的另一个候选桶位置为4,候选桶位置4中也没有空的entry,计数器Counter值为1小于MNK,此时选择候选桶位置4并进入步骤(T8);
(T8)从候选桶位置4中随机选择了保存集合成员r指纹信息ξr的entry,将踢出的ξr保存为ξkick,该entry保存集合成员l的指纹信息ξl,因为此时计数器Counter的值为1不大于ReCounters[4],所以不更新ReCounters[4]的值,计数器Counter加一;
(T9)计算ξkick=ξr的另一个候选桶位置为6,此时记录重定位次数的计数器Counter值为2,小于MNK=500,所以进入步骤(T10);
(T10)候选桶位置6中有空的entry,直接将集合成员r指纹信息ξr插入,因为此时计数器Counter的值为2大于ReCounters[6],所以ReCounters[6]=2,重定位操作结束。
下面以集合成员l为例,详细的说明集合成员的判定过程;对集合成员l进行插入时,布谷鸟过滤器CF及重定位计数器数组ReCounters中存储的值如图6所示,对成员l的判定过程包括如下步骤:
(W1)通过哈希函数计算得到待判定的集合成员l的指纹信息ξl及其对应的两个候选桶位置μ′=2和v′=6;
(W2)遍历两个候选桶位置μ′和v′上的所有entry,依次比较每个entry中保存的值和集合成员l的指纹信息ξl,并累计两个候选位置保存的指纹数目nμ′=4和nv′=3;因为集合成员l的指纹信息ξl已经保存在候选桶位置2的entry中,所以不对成员l进行插入,以保证集合成员的互异性,对成员l的插入操作结束。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于插入位置选择的数据近似集合表示方法,其特征在于,包括:
预先建立用于存储集合成员指纹信息的布谷鸟过滤器,并分别为其中的每一个哈希桶维护一个重定位计数;所述重定位计数用于记录成员插入对应的哈希桶中所需要的最大重定位次数;
对于每一个待插入的成员x,执行如下步骤:
(1)分别获得所述成员x的指纹信息ξx和对应的两个候选哈希桶;
(2)若两个候选哈希桶中均未存储所述指纹信息ξx,则转入步骤(3);否则,插入操作结束;
(3)若只有一个候选哈希桶中存在空槽,则转入步骤(4);若两个候选哈希桶中均不存在空槽,则转入步骤(5);若两个候选哈希桶中均存在空槽,则转入步骤(6);
(4)将所述指纹信息ξx插入到存在空槽的候选哈希桶中,插入操作结束;
(5)通过重定位操作将所述指纹信息ξx插入到两个候选哈希桶中重定位计数较小的候选哈希桶中,并相应更新该重定位操作所涉及到的哈希桶的重定位次数,插入操作结束;
(6)分别估计两个候选哈希桶的全局插入数目后,将所述指纹信息ξx插入到两个候选哈希桶中全局插入数目较小的候选哈希桶中,插入操作结束;
其中,哈希桶的全局插入数目为所有集合成员均插入完成后,插入到该哈希桶中的指纹总数;
所述步骤(5)包括:
(51)将所述指纹信息ξx作为待重定位指纹,将两个候选哈希桶中重定位次数较小的候选哈希桶作为目标哈希桶,并初始化计数变量为Counter=1;
(52)若所述计数变量Counter>MNK,则重定位操作结束;否则,转入步骤(53);
(53)若所述目标哈希桶中存在空槽,则将待重定位指纹插入所述目标哈希桶的空槽中,并转入步骤(54);否则,转入步骤(55);
(54)若所述目标哈希桶的重定位计数RC[r]<Counter,则更新所述目标哈希桶的重定位计数为RC[r]=Counter,重定位操作结束;否则,所述目标哈希桶的重定位计数RC[r]保持不变,重定位操作结束;
(55)从所述目标哈希桶中随机选择一个槽,将其中原本存储的指纹信息踢出,并将待重定位指纹插入该槽;
(56)若所述目标哈希桶的重定位计数RC[r]<Counter,则更新所述目标哈希桶的重定位计数为RC[r]=Counter,并转入步骤(57);否则,所述目标哈希桶的重定位计数RC[r]保持不变,转入步骤(57);
(57)将被踢出的指纹信息作为新的待重定位指纹,将被踢出的指纹信息所对应的另外一个哈希桶作为新的目标哈希桶,并将所述计数变量Counter的值加1后,转入步骤(52);
其中,MNK为预设的最大重定位次数。
3.如权利要求2所述基于插入位置选择的数据近似集合表示方法,其特征在于,估计任意一个候选哈希桶的全局插入数目,其方法还包括:
对所述全局插入数目S进行简化,以得到该候选哈希桶最终的全局插入数目为:S′=n+b(1-α)×RC。
5.如权利要求1所述的基于插入位置选择的数据近似集合表示方法,其特征在于,判定任意一个候选哈希桶中是否存储有所述指纹信息ξx的方法包括:
遍历该候选哈希桶中的槽,并将槽中存储的值与所述指纹信息ξx进行比较;在遍历候选哈希桶的同时,记录其中所存储的指纹数目;
若所有槽中存储的值均与所述指纹信息ξx不相等,则判定该候选哈希桶中未存储所述指纹信息ξx;否则,判定该候选哈希桶中存储有所述指纹信息ξx。
6.如权利要求5所述的基于插入位置选择的数据近似集合表示方法,其特征在于,判定任意一个候选哈希桶中是否存在空槽的方法包括:
若该候选哈希桶中所存储的指纹数目n<b,则判定该候选哈希桶中存在空槽;否则,判定该候选哈希桶中不存在空槽。
7.一种基于插入位置选择的数据近似集合表示系统,其特征在于,包括:计算模块、去重模块、判定模块、直接插入模块、重定位模块以及选择插入模块;
所述计算模块,用于分别获得待插入成员x的指纹信息ξx和所述成员x在布谷鸟过滤器中对应的两个候选哈希桶;所述布谷鸟过滤器为预先建立的用于存储集合成员指纹信息的数据结构,并且其中的每一个哈希桶均有一个重定位计数;所述重定位计数用于记录成员插入对应的哈希桶中所需要的最大重定位次数;
所述去重模块,用于判定候选哈希桶中是否存储有所述指纹信息ξx,并在任意一个候选哈希桶中存储有所述指纹信息ξx时,结束插入操作;
所述判定模块,用于在所述去重模块判定两个候选哈希桶中均未存储所述指纹信息ξx时,判定候选哈希桶中是否存在空槽;
所述直接插入模块,用于在所述判定模块判定只有一个候选哈希桶中存在空槽时,将所述指纹信息ξx插入到存在空槽的候选哈希桶中,以结束插入操作;
所述重定位模块,用于在所述判定模块判定两个候选哈希桶中均不存在空槽时,通过重定位操作将所述指纹信息ξx插入到两个候选哈希桶中重定位计数较小的候选哈希桶中,并相应更新该重定位操作所涉及到的哈希桶的重定位次数,以结束插入操作,包括:
(51)将所述指纹信息ξx作为待重定位指纹,将两个候选哈希桶中重定位次数较小的候选哈希桶作为目标哈希桶,并初始化计数变量为Counter=1;
(52)若所述计数变量Counter>MNK,则重定位操作结束;否则,转入步骤(53);
(53)若所述目标哈希桶中存在空槽,则将待重定位指纹插入所述目标哈希桶的空槽中,并转入步骤(54);否则,转入步骤(55);
(54)若所述目标哈希桶的重定位计数RC[r]<Counter,则更新所述目标哈希桶的重定位计数为RC[r]=Counter,重定位操作结束;否则,所述目标哈希桶的重定位计数RC[r]保持不变,重定位操作结束;
(55)从所述目标哈希桶中随机选择一个槽,将其中原本存储的指纹信息踢出,并将待重定位指纹插入该槽;
(56)若所述目标哈希桶的重定位计数RC[r]<Counter,则更新所述目标哈希桶的重定位计数为RC[r]=Counter,并转入步骤(57);否则,所述目标哈希桶的重定位计数RC[r]保持不变,转入步骤(57);
(57)将被踢出的指纹信息作为新的待重定位指纹,将被踢出的指纹信息所对应的另外一个哈希桶作为新的目标哈希桶,并将所述计数变量Counter的值加1后,转入步骤(52);
其中,MNK为预设的最大重定位次数;
所述选择插入模块,用于在所述判定模块判定两个候选哈希桶中均存在空槽时,分别估计两个候选哈希桶的全局插入数目后,将所述指纹信息ξx插入到两个候选哈希桶中全局插入数目较小的候选哈希桶中,插入操作结束;
其中,哈希桶的全局插入数目为所有集合成员均插入完成后,插入到该哈希桶中的指纹总数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910419541.0A CN110222088B (zh) | 2019-05-20 | 2019-05-20 | 基于插入位置选择的数据近似集合表示方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910419541.0A CN110222088B (zh) | 2019-05-20 | 2019-05-20 | 基于插入位置选择的数据近似集合表示方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110222088A CN110222088A (zh) | 2019-09-10 |
CN110222088B true CN110222088B (zh) | 2021-08-31 |
Family
ID=67821393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910419541.0A Active CN110222088B (zh) | 2019-05-20 | 2019-05-20 | 基于插入位置选择的数据近似集合表示方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110222088B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538865B (zh) * | 2020-03-27 | 2023-06-02 | 中国人民解放军国防科技大学 | 多方集合同步方法、装置和电子设备 |
CN111552693B (zh) * | 2020-04-30 | 2023-04-07 | 南方科技大学 | 一种标签布谷鸟过滤器 |
CN112148928B (zh) * | 2020-09-18 | 2024-02-20 | 鹏城实验室 | 一种基于指纹家族的布谷鸟过滤器 |
CN113535706B (zh) * | 2021-08-03 | 2023-05-23 | 佛山赛思禅科技有限公司 | 两阶段布谷鸟过滤器及基于两阶段布谷鸟过滤器的重复数据删除方法 |
CN113360516B (zh) * | 2021-08-11 | 2021-11-26 | 成都信息工程大学 | 集合成员管理方法 |
CN114268501B (zh) * | 2021-12-24 | 2024-02-23 | 深信服科技股份有限公司 | 数据处理方法、防火墙生成方法、计算设备及存储介质 |
CN114844638B (zh) * | 2022-07-03 | 2022-09-20 | 浙江九州量子信息技术股份有限公司 | 一种基于布谷鸟过滤器的大数据量密钥的去重方法及系统 |
CN115048402B (zh) * | 2022-08-16 | 2022-11-18 | 成都信息工程大学 | 带时效的自适应动态数据集合成员插入、删除及检索方法 |
CN115510092B (zh) * | 2022-09-27 | 2023-05-12 | 青海师范大学 | 一种基于布谷鸟过滤器的近似成员查询优化方法 |
CN116701440B (zh) * | 2023-06-15 | 2024-04-16 | 泉城省实验室 | 一种布谷鸟过滤器及数据插入、查询、删除方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630955A (zh) * | 2015-12-24 | 2016-06-01 | 华中科技大学 | 一种高效动态的数据集合成员管理方法 |
CN105959117A (zh) * | 2016-07-19 | 2016-09-21 | 安徽大学 | 基于Cuckoo过滤器的车载自组织网络安全认证方法 |
US10209909B1 (en) * | 2017-07-28 | 2019-02-19 | EMC IP Holding Company LLC | Storage element cloning in presence of data storage pre-mapper |
-
2019
- 2019-05-20 CN CN201910419541.0A patent/CN110222088B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630955A (zh) * | 2015-12-24 | 2016-06-01 | 华中科技大学 | 一种高效动态的数据集合成员管理方法 |
CN105959117A (zh) * | 2016-07-19 | 2016-09-21 | 安徽大学 | 基于Cuckoo过滤器的车载自组织网络安全认证方法 |
US10209909B1 (en) * | 2017-07-28 | 2019-02-19 | EMC IP Holding Company LLC | Storage element cloning in presence of data storage pre-mapper |
Non-Patent Citations (2)
Title |
---|
An improved construction for counting bloom filters;Bonomi F等;《In:proceedings of European symposium on Algorithms(ESA)》;20061231;正文第684-695页 * |
the dynamic bloom filters;Guo D等;《IEEE transactions on knowlegde and data engineering》;20101231;正文第120-133页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110222088A (zh) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110222088B (zh) | 基于插入位置选择的数据近似集合表示方法及系统 | |
CN105630955B (zh) | 一种高效动态的数据集合成员管理方法 | |
US9575984B2 (en) | Similarity analysis method, apparatus, and system | |
US7558802B2 (en) | Information retrieving system | |
CN107391554B (zh) | 高效分布式局部敏感哈希方法 | |
CN104238962B (zh) | 向缓存中写入数据的方法及装置 | |
CN107341507B (zh) | 一种基于gpu与级联哈希的快速图像sift特征匹配方法 | |
US20150058352A1 (en) | Thin database indexing | |
CN110569245A (zh) | 重复数据删除系统中基于强化学习的指纹索引预取方法 | |
US20120158774A1 (en) | Computing Intersection of Sets of Numbers | |
CN111858651A (zh) | 一种数据处理方法以及数据处理装置 | |
CN111552692A (zh) | 一种加减法布谷鸟过滤器 | |
CN103150260A (zh) | 重复数据删除方法和装置 | |
CN106980680B (zh) | 数据存储方法及存储设备 | |
CN110704199A (zh) | 数据压缩方法、装置、计算机设备及存储介质 | |
CN110837555A (zh) | 海量文本去重筛选的方法、设备和存储介质 | |
CN114936188A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN117369731B (zh) | 一种数据的缩减处理方法、装置、设备及介质 | |
CN114721594A (zh) | 一种分布式存储方法、装置、设备及机器可读存储介质 | |
CN111143587B (zh) | 一种数据检索方法、装置及电子设备 | |
CN105515586A (zh) | 一种快速差量压缩方法 | |
CN114943021B (zh) | 一种tb级增量数据筛选方法和装置 | |
CN111026736A (zh) | 数据血缘管理方法及装置、数据血缘解析方法及装置 | |
CN116521733A (zh) | 一种数据查询方法及装置 | |
CN113419792A (zh) | 一种事件处理方法、装置、终端设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |