CN104504011A - 一种查存算法的比较方法 - Google Patents
一种查存算法的比较方法 Download PDFInfo
- Publication number
- CN104504011A CN104504011A CN201410758136.9A CN201410758136A CN104504011A CN 104504011 A CN104504011 A CN 104504011A CN 201410758136 A CN201410758136 A CN 201410758136A CN 104504011 A CN104504011 A CN 104504011A
- Authority
- CN
- China
- Prior art keywords
- data structure
- data
- algorithm
- candidate data
- space
- 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.)
- Granted
Links
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/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种查存算法的比较方法,包括有以下步骤:A、用候选数据结构表示存储在***中的已存集合;B、计算候选数据结构的评估参数;C、根据上述评估参数比较评估指标从而得出最合适的查存算法。本发明通过候选数据结构表示存储在***中的已存集合,对不同的查存算法作出统一的描述,以便于后面在选择和评估查存算法中的比较和分析;并计算出相关的评估参数,包括有拒绝时间、空间开销、表示效率和误判率,用于评估和针对特定的应用需求选择适合的查存算法。本发明作为一种查存算法的比较方法可广泛应用于大数据处理领域。
Description
技术领域
本发明涉及大数据处理领域,尤其是一种查存算法的比较方法。
背景技术
在大数据环境下,每天新产生的海量数据,将会存储在数据库***中。在很多情况下,***新来一个数据,都需要查询该数据是否已经在***中,也就是对数据的查存。随着存储在***中的数据量的增加,需要消耗更多的时间来查询一个数据是否已经存在***中。然而,在实际应用中,却需要***能快速地响应这类查询。例如,快盘存储应用,需要快速查找文件是否存在,从而确定文件的变化来进行同步。再如,近日,网络曝光成都工行ATM机吐出同号***,若能快速查询同号***的冠字号是否存在银行的金库中,这样在出现***时,可以快速确定具有相同冠字号的钞票是否出自银行ATM机以厘清银行与顾客的责任,这也是快速查询数据是否存在***中一个应用实例。因此,快速响应一个数据是否已经存在已存储着海量数据的存储***中,是一个具有实际意义的应用需求。
现存的位图数据结构、布隆过滤器及其相关引申的数据结构算法,各有优势,均可用来表示存储在***中的所有数据,以快速响应数据是否已存在***中的查询。位图数据结构在实际数据库应用中通常用作索引,布隆过滤器是一个以准确率换取高效空间的数据结构。
在大数据环境下,每天新产生的海量数据,将会存储在数据库***中。在很多情况下,***新来一个数据,都需要查询该数据是否已经在***中,也就是对数据的查存。随着存储在***中的数据量的增加,需要消耗更多的时间来查询一个数据是否已经存在***中。然而,在实际应用中,却需要***能快速地响应这类查询。例如,快盘存储应用,需要快速查找文件是否存在,从而确定文件的变化来进行同步。再如,近日,网络曝光成都工行ATM机吐出同号***,若能快速查询同号***的冠字号是否存在银行的金库中,这样在出现***时,可以快速确定具有相同冠字号的钞票是否出自银行ATM机以厘清银行与顾客的责任,这也是快速查询数据是否存在***中一个应用实例。因此,快速响应一个数据是否已经存在已存储着海量数据的存储***中,是一个具有实际意义的应用需求。
现存的位图数据结构、布隆过滤器及其相关引申的数据结构算法,各有优势,均可用来表示存储在***中的所有数据,以快速响应数据是否已存在***中的查询。位图数据结构在实际数据库应用中通常用作索引,布隆过滤器是一个以准确率换取高效空间的数据结构。
针对上述的如何表示存储在***中的数据,并快速响应一个数据是否已经存在已存储着海量数据的存储***中应用场景需求,常见的方案是通过客户端访问数据库***,查询某一特定的数据是否已经在存储***中。这种方案虽然可行,但直接访问数据库查询相关的交易记录,将会引起不必要的时间开销。另外,还有一种方案是,在内存中实现一个数据结构,用来表示***中的所有数据。当要查询某一数据是否已经存在***中时,只需要访问这个数据结构即可。
相对于第一种方案,第二种方案不需要访问数据库,相关查询只需要在内存中完成,就可以知道这条数据是否已经存在***中,在时间开销上优于第一种方案。现存的数据结构,例如位图数据结构、布隆过滤器及其相关引申的数据结构算法,各有优势,均可用来表示存储在***中的所有数据。然而,这些算法并非在所有场景中都表现出良好的性能。另一方面,到目前为止,大多数相关工作侧重于对查存算法的改进,还没有对这些算法的比较选择。
发明内容
为了解决上述技术问题,本发明的目的是:提供一种针对现有查存算法进行计算评估的查存算法的比较方法。
本发明所采用的技术方案是:一种查存算法的比较方法,包括有以下步骤:
A、用候选数据结构表示存储在***中的已存集合;
B、计算候选数据结构的评估参数;
C、根据上述评估参数比较评估指标从而得出最合适的查存算法。
进一步,所述候选数据结构中包括有该数据结构中涉及的包含于不同集合的操作数据对象、上述操作数据对象之间的映射关系和候选数据结构的操作函数组成的集合。
进一步,所述操作数据对象包括有数据集和可提供置位的空间单元。
进一步,所述评估参数包括有拒绝时间、空间开销、表示效率和误判率。
进一步,所述步骤C中拒绝时间和空间开销用于评估查存算法判断数据不在***中的时间与查存数据结构的空间开销的权衡。
进一步,所述步骤C中表示效率用于针对不同的数据量或在涉及数据的变化情况下评估查存算法表示每个数据所用的空间开销。
进一步,所述步骤C中误判率用于评估查存算法的反映***数据的能力。
本发明的有益效果是:本发明通过候选数据结构表示存储在***中的已存集合,对不同的查存算法作出统一的描述,以便于后面在选择和评估查存算法中的比较和分析;并计算出相关的评估参数,包括有拒绝时间、空间开销、表示效率和误判率,用于评估和针对特定的应用需求选择适合的查存算法。
附图说明
图1为本发明方法的步骤流程图;
图2为候选数据结构判断任意一个元素是否存在于***中的示意图;
图3为候选数据结构与已存集合增删元素示意图;
图4为位图数据结构示意图;
图5为标准型布隆过滤器结构示意图;
图6为计数型布隆过滤器结构示意图;
图7为D-left布隆过滤器的结构示意图。
具体实施方式
相关定义
定义1全集:全集是指由***中的数据对应的整个数据范围空间。
形式化描述为,由涉及问题中的所有数据元素组成的集合,记为U。全集U的元素个数为|U|,记为nu。
定义2已存集合:是指存在***中的海量数据集。形式化描述为,由存储在***中的数据元素组成的集合,记为DS。DS是全集U的一个子集,即集合DS的元素个数是|DS|,记为n。
定义3测试集合:是指由任意一个到达***,需要测试是否已经存在于***中的新数据组成的集合,记为TS。集合TS的元素个数是|TS|,记为nt。同样,它满足
定义4空间单元:表示内存中由1个或1个以上组成的连续比特位,记为C,单位是比特,空间单元中,比特位的个数记为b。
定义5候选数据结构:是指在内存中实现的用于表示存储***中的海量数据和查存的数据结构算法,即是用于表示***中的已存集合DS的数据结构,记为A=(D,R,F)。其中,D是指在该数据结构中涉及的包含于不同集合的操作数据对象,R是指在D上不同数据对象的映射关系,F是由候选数据结构的操作函数组成的集合。
定义6置位:表示对空间单元(见定义4)的置1或赋值操作,记为Set。形式化表示为,对于内存中任意的空间单元C,有Set使得Set(C)=1。
定义7置位集合:用于表示在候选数据结构(见定义5)中内存中连续的空间单元(见定义4),形式化描述为,由需要进行置位(见定义6)的空间单元组成的集合,记为M,置位集合的元素个数nm=|M|。在这里需要注意,M属于候选数据结构A=(D,R,F)的D中的其中一种集合。
定义8置位映射:表示将数据库***中的数据映射至候选数据结构的空间单元的映射函数,即已存集合到候选数据结构的置位集合的映射函数,形式化描述为,对于1≤i≤nu,映射函数f使得f:U→Mr,Mr表示从集合M选择r个元素进行置位。
置位映射满足以下特性:
1)置位映射可以是一对一,也可以是一对多。r表示每次进行映射时,选中置位集合中的元素的个数,其中r≥1。
2)置位映射的定义域
3)若f:U→Mr可逆,则它的逆映射是f-1:U→Mr。
定义9表示集合:当***数据时,候选数据结构(见定义5)的部分或全部空间单元产生置位后,候选数据结构可以表示的数据集。形式化描述如下:候选数据结构A=(D,R,F)的置位映射产生后,候选数据结构A=(D,R,F)的可以表示的集合,称为表示集合,记为S,它满足集合S的元素个数是|S|,记为ns。
定义10表示关系:是指当候选数据结构的部分或全部空间单元产生置位后时,组成候选数据结构的连续空间单元与它可以表示的数据集的映射关系。形式化描述如下:候选数据结构A=(D,R,F)的从已存集合DS的所有元素通过置位映射(见定义8)映射到置位集合后,置位集合已选择t个元素进行置位,这种被置位后的置位集合与表示集合的映射关系,记为<Mt,S>。特别地,t=0时,表示***元素,此时当t=|M|=nm时,S=U。
定义11成员查询:给定某一数据,用户访问候选数据结构查询该数据是否存在于存储***中。形式化描述如下:对任意d∈TS(见定义3),返回d是否包含于DS的查询应答的函数,记为query(d)。
定义12误判率:用于描述进行成员查询query(d)(见定义11)时出现不准确应答的概率。误判率包括两类,一类是假阳性误判率,即是将不存在于数据集中的元素误判为存在的误差;另一类是假阴性误判率,即将存在于数据集DS误判为不存在的误差。
误判率的形式表示如下:
1)假阳性误判率FP:对于给定成员查询query(d)返回表示d∈DS的真值,记为
2)假阴性误判率FN:对于给定d∈DS,成员查询query(d)返回表示 的假值,
定义13空间开销:是指候选数据结构A=(D,R,F)(见定义5)在内存中需要空间单元的个数,即置位集合(见定义6)的元素个数,与每个空间单元所需的比特位个数(见定义4)的乘积,记为Mem,单位是比特位。
定义14表示效率:是指候选数据结构A=(D,R,F)(见定义5)的空间开销Mem(见定义13)与集合DS的全部元素个数n=|DS|之比,记为E。用于描述候选数据结构A=(D,R,F)表示集合DS时,平均每个元素需要的比特位的个数(通常用位数bits表示)。
定义15表示性能:候选数据结构A=(D,R,F)表示一个元素的能力,通过表示效率来度量。表示效率越大,已存集合DS中每个元素所需比特位的个数越多,表明候选数据结构A=(D,R,F)的表示性能越差。
定义16拒绝时间:给定某一查询数据,候选数据结构A=(D,R,F)判定该数据不在***中的时间。形式化描如下:给定元素d∈TS,成员查询query(d)判断d不属于DS所需要的时间,记为T。(在这里,不考虑判断d属于DS所需要的时间的定义是因为这个时间是若干个单位时间,注意这里所说的时间并不包括访问外存以判断d属于DS所需的时间。)
定义17一致性:是指候选数据结构A=(D,R,F)(见定义5)反映***中的已存集合DS及其变化的度量。通常一致性用误判率(见定义12)来度量。
下面结合附图对本发明的具体实施方式作进一步说明:
参照图1,一种查存算法的比较方法,包括有以下步骤:
A、用候选数据结构表示存储在***中的已存集合;
B、计算候选数据结构的评估参数;
C、根据上述评估参数比较评估指标从而得出最合适的查存算法。
以下分步骤详细说明:
问题建模:
根据前面的相关定义,问题建模如下:考虑一个大数据集,将这个数据集中全部数据或部分数据存储在***,并在存储过程中,***的内存里实现一个数据结构,用来表示存储在***中的海量数据。这就是用内存小空间的数据结构表示***中的大空间的数据。当往******数据时,数据结构相应地***新数据,当***要删除某一数据时,数据结构若可删除元素,则相应地删除该数据。若要查询任意一个元素是否在***中,只要访问内存中该数据结构即可。
形式化表示为,全集U是大数据集所有不同的元素所组成的集合,其所有元素的个数是nu。DS是存储在***中的所有元素的集合,该集合元素个数是n。根据定义,n≤nu,显然,集合DS本身就是其全集时,等号成立。候选数据结构A=(D,R,F)中的表示集合测试集合TS是由任意一个属于全集的并用来测试是否存在于***的数据组成的集合。
下面结合附图对问题建模进行说明。
如图2,对于访问候选数据结构A=(D,R,F),查询d是否在***中,即d是否包含DS,候选数据结构A=(D,R,F)有操作函数,返回d∈DS或具体的实施方式是,对于任意的新来数据,访问***内存中的候选数据结构,查询这个数据是否在***中,实施的效果是这个候选数据结构返回真假值以应答本次查询。
如图3,当***中新***一个数据,候选数据结构若具有***数据的属性,则它能同步反映***中的数据集新***新数据。形式化描述为,对于但已存集合DS=DS+{d},若候选数据结构具有***元素的属性,则A=(D,R,F)有操作函数使得S=S+{d}。具体的实施方案是,当***新***一条数据的时候,候选数据结构通过对若干个空间单元进行置位,以表示该数据。
如图3,当***中新删除一个数据,候选数据结构若具有删除数据的属性,则它能同步反映***中的数据集删除旧数据。对于当DS=DS-{d},若候选数据结构A=(D,R,F)具有可删除元素的属性,则有操作函数使得S=S-{d}。具体的实施方案是,当***删除数据时,若这个候选数据结构的连续空间单元可以恢复置位前的状态,则它可以将删除的数据对应的空间单元恢复置位前的状态。
算法建模:
根据前面的问题建模,全集U是大数据集所有不同的元素所组成的集合,其所有元素的个数是nu。DS是存储在***中的所有元素的集合,该集合元素个数是n。根据定义,n≤nu,显然,集合DS本身就是其全集时,等号成立。因此对候选数据结构的统一建模如下:
用候选数据结构A=(D,R,F)表示存储在***中的已存集合DS,
1)由问题中涉及的不同数据对象组成的集合D,相当于已存集合DS的全集U与置位集合M的并集。指已存集合DS对应于***中的数据,全集U就是数据的范围,置位集合M对应于***内存中的数据结构的空间。直观来说,这里的数据对象是候选数据结构操作的对象的统称。因此,集合D就是候选数据结构直接操作的数据对象组成的集合,包括有数据集、可提供置位的空间单元。
2)R是在D上不同数据对象的映射关系:置位映射关系R1=<d,Mr>,其中d∈DS,Mr表示从集合M选择r个元素进行置位(见定义6),直观来说,它就是一个数据与在候选数据结构中的所有连续空间单元的选出若干个空间单元进行置位的对应关系;表示关系R2=<Mt,S>,其中Mt表示从集合M选择t个元素进行置位,S是表示集合(见定义9)。实际上,置位映射关系R1是指******一条数据后,内存中的数据结构选择若干个空间单元置位。表示关系R2则是指内存中的数据结构的部分或全部空间单元被置位后,可表示的数据。
3)候选数据结构的操作函数F={f:U→Mr,query(d)},其中,f:U→Mr是置位映射(见定义8),其定义域dom(f)=DS,query(d)是成员查询(见定义11),d∈TS,TS是测试集合,
这时,候选数据结构A=(D,R,F)的空间开销是置位集合的元素个数与候选数据结构的空间单元的比特位个数的乘积,即
Mem=nm×b (1)
特别地,当映射个数r=1,空间单元的比特位个数b=1时,由于DS的随机性,关系R2<Mt,S>中的表示集合S必须是DS的全集,才能表示DS,此时
Mem=nu (2)
由于候选数据结构A=(D,R,F)的置位集合M中每个元素是内存中的一个空间单元(见定义4),当每个空间单元的比特位个数是b>1时,则候选数据结构A=(D,R,F)的置位集合M中任意一个元素发生赋值操作的置位(见定义6),且产生的空间单元的赋值置位相等的概率是
已知置位映射f:U→Mr进行一次映射从置位集合M中选择的元素个数r>1,且每个元素是仅由一个比特位组成的置位空间时,当DS中的所有元素都通过置位映射将置位集合M相应的空间单元置位后,这时,M有t个元素被置位,表示为Mt,其中t≤|M|=nm,因而产生关系R2<Mt,S>。因此,候选数据结构A=(D,R,F)的置位集合M中任意一个元素发生置1操作的置位(见定义6)时,置位集合M的一个元素仍未发生置位的概率是
候选数据结构A=(D,R,F)的成员查询query(d)的假阳性误差率(本具体实施例算法建模暂不考虑假阴性误差率)是
由上可得,候选数据结构A=(D,R,F)的空间开销取决于置位集合的元素个数以及空间单元的比特位个数,而误差率受已存集合的元素个数、置位集合的元素个数、置位映射的映射个数以及空间单元的比特位个数决定。
评估指标
1)拒绝时间与空间开销的评估
拒绝时间与空间开销的评估主要是评估候选数据结构的空间开销对它判定任意一数据不存在***中的时间的影响。
置位集合M表示候选数据结构A=(D,R,F)内存中连续的空间单元,Mem表示候选数据结构A=(D,R,F)的空间开销(见定义13)。对于置位函数f(d)=f:U→Mr将从置位集合M中选出r个元素进行置位,每个元素,即每个置位集合中的空间单元均以1/nm的概率被置位。
首先,考虑置位映射f:U→Mr进行一次映射从置位集合M中选择的元素个数r=1情况。当r=1,b=1时,候选数据结构A=(D,R,F)的置位集合M每个元素是由一个比特位组成的空间单元。置位映射f:U→Mr进行一次映射时,只会产生一个空间单元的置位,即对一个比特位进行置位。换言之,已存集合DS的一个元素对应于置位集合中的一个空间单元。当DS中的所有元素都通过置位映射将置位集合M相应的空间单元置位后,M有t个元素被置位,表示为Mt,产生关系R2<Mt,S>。直观上来说,就是将候选数据结构A=(D,R,F)的nm个空间单元的相应t个位置位后,它表示的数据集与置位后的候选数据结构的对应关系。因此,置位集合M的一个元素仍未发生置位的概率是P=(1-1/nm)n,此时FP=1-P=1-(1-1/nm)n,由nm>>1,可得FP=0。又因为DS的随机性,关系R2<Mt,S>中的表示集合S必须是DS的全集,才能表示DS,因此
Mem=nm×b=nu×1=nu (6)
由上式可得,当r=1,b=1时,判定元素不存在集合里只需要一个单元的时间O(1),因此,空间Mem与拒绝时间T不产生依赖。
再看,当r=1,b>1时,空间Mem越大,意味着置位集合M中的元素的空间单元的比特位个数越多,空间单元中相同的置位的可能性就越低,因而候选数据结构A=(D,R,F)判定元素不存在集合的拒绝时间就越少。
再考虑置位映射f:U→Mr进行一次映射从置位集合M中选择的元素个数r>1的情况。当DS中的所有元素都通过置位映射将置位集合M相应的空间单元置位后,M有t个元素被置位,表示为Mt,其中t≤|M|=nm,产生关系R2<Mt,S>。易得,置位集合M的一个元素仍未发生置位的概率是
易得,对于d∈T,成员查询query(d)函数错误认为元素d已出现在DS的假阳性误判率是
由于r>1,假设r《nm,nm》1,根据相关文献1(Zhong M,LuP,Shen K,et al.Optimizing data popularity conscious bloomfilters[C].Proceedings of the twenty-seventh ACM symposium onPrinciples of distributed computing.ACM,2008:355-364.)的推导,r往往远小于nm,近似得到如下公式,
同样,由上述文献求得到拒绝时间T的近似值是
由定义13,空间开销是Mem置位集合的元素个数与每个空间单元所需的比特位个数的乘积,再根据上述文献,结合公式9,可得时间、空间以及误差率的权衡如下式,
根据公式(11)可知,给定误差率范围内,当空间开销Mem越少,判断d不属于DS所需要的时间会相对越长,反之,时间相对会越短。从直观意义上来解释,空间开销Mem越少,意味着候选数据结构A=(D,R,F)的置位集合M的元素个数越少,那么随着置位映射f(d)=f:U→Mr的定义域集合dom(f)=DS范围增大,即元素个数增大,置位集合M的元素被选中置位的个数相应增加,成员查询query(d)找到置位集合M未被选中的时间越长,从而导致拒绝时间的增加。
2)空间开销与表示性能的评估
空间开销与表示性能的评估候选数据结构的空间开销和表示性能随着已存集合的元素个数以及全集的范围的变化趋势。表示性能用表示效率度量,表示效率是指***中每个数据在内存中平均需要的比特位的个数,表示效率越高,查存算法的表示性能越低。
首先,考虑置位映射f:U→Mr进行一次映射从置位集合M中选择的元素个数r=1情况。当r=1,b=1时,由于DS的随机性,关系R2<Mt,S>中的表示集合S必须是DS的全集U,才能表示全集U中的任意子集DS,Mem=nu×b,因此,此时的表示效率是直观上来说,当r=1,b=1时,当集合DS相对于全集U越稀疏,集合DS中每个元素在候选数据结构A=(D,R,F)中,所需要元素的比特位的个数越多,表明候选数据结构A=(D,R,F)的表示效率越高,则它的表示性能越差。
再考虑置位映射f:U→Mr进行一次映射从置位集合M中选择的元素个数r>1的情况。当DS中的所有元素都通过置位映射将置位集合M相应的空间单元置位后,产生关系R2<Mt,S>,其中t≤|M|=nm,又因为DS是一个由全集U中任意n个元素组成的集合,要表示全集U中任意n个元素组成的集合DS,则(这里与r=1的情况不同。r>1时,关系R2<Mt,S>意味着置位集合M有t个元素被置位,其中t≤|M|=nm,这时只有t=nm时,S=U。)。结合相关文献2(Aguilar-Saborit J,Trancoso P,Muntes-MuleroV,et al.Dynamic count filters[J].ACM SIGMOD Record,2006,35(1):26-32.)的推导,令0<∈<1,表示集合S至多包含ns=n+∈(nu-n)个元素,关系R2<Mt,S>中的集合S就是包含ns=n+∈(nu-n)个元素的特定集合,当t≤|M|=nm,满足由于表示集合S的任意一个包含n个这些元素的子集的组合个数是那么,要使S表示全集U中所有个组合的集合,则需要满足相关文献2:
由于置位集合M中每个元素是需要进行置位的空间单元,每个空间单元由b个比特位组成,结合相关文献2第490页的推导结果,易得,
同时,相关文献2中指出取r=ln2·(nm/n)时,FP取最小值,要使误差率不超过∈,FP≤∈,则
此时,候选数据结构A=(D,R,F)的表示效率是log2e·log2(1/∈),显然,它与误差率相关,不随已存集合的元素个数变化而变化。因此,在给定的误差率范围内,候选数据结构A=(D,R,F)的表示性能不变。
综上,当r=1,b=1时,其空间开销Mem=nu×b,存储效率显然,当要表示的集合只占全集的一小部分,候选数据结构A=(D,R,F)的表示性能明显不高。因此,若要表示的集合的全集范围不大,且其所有元素占全集的比重超过一半时,建议置位映射f:U→Mr中的r取r=1。
当r>1,其空间开销 ∈表示给定的误判率范围。表示效率 在给定误判率的范围下,空间开销Mem与候选数据结构要表示的集合DS的所有元素个数n以及单元空间的比特位个数b的乘积呈线性相关,通常情况下,n>>b,且b一般给定的,因此,空间开销Mem可看作与n成正比。而表示效率仅与候选数据结构A=(D,R,F)的置位集合M的每个元素,即空间单元,所需的比特位的个数b成正比。因此,当要DS仅占全集U的一小部分时的情况下,亦即当集合DS相对于全集U较稀疏时,建议置位映射f:U→Mr中的r取r>1。
3)一致性评估
一致性评估是指候选数据结构A=(D,R,F)的表示集合S能反映***中的已存集合DS的变化的度量。它包括三方面,首先,已存集合DS新增元素时,相应地,候选数据结构A=(D,R,F)的两组关系R1=<d,Mr>,R2<Mt,S>能及时反映这一变化,即表示集合S亦同时新增元素。其次,当已存集合DS删除元素时,候选数据结构A=(D,R,F)若及时反映这一变化,它的表示集合S相应地删除该元素。最后,对测试集合TS中的任意元素进行成员查询时,query(d)是否能准确或是在一定误差范围内反映该元素是否存在***。具体的形式化描述如下:
1)候选数据结构A=(D,R,F)新增元素时,一致性评估为:若DS=DS∪{d},则有f:U→Mr使得S=S∪{d}。
2)候选数据结构A=(D,R,F)删除元素时,一致性评估为:若DS=DS-{d}且f:U→Mr可逆,则有f-1:U→Mr,使得S=S-{d}。
3)候选数据结构A=(D,R,F)进行成员查询时,一致性评估为:query(d)返回d∈DS的真假值。
一致性评估可用误判率来度量,(或),query(d)以一定误差范围内返回真(假)。
3.4算法建模评估流程
针对前面的问题建模和算法建模,如图1所示,给定候选数据结构,首先,根据前面的相关定义,用上述的统一建模描述这个候选数据结构,这一步的主要结果是:给出候选数据结构要处理的数据全集以及候选数据结构在内存中可置位的空间表示的集合组成的处理数据对象集合表示、候选数据结构要处理的不同数据对象的映射关系以及候选数据结构的操作函数;操作函数包括有候选数据结构中,在存储任一数据时,选择对应的内存中的置位空间的映射函数,还有对任意一条数据的成员查询函数。然后,由上面的统一描述数学模型,即用本模型的符号***,推导出候选数据结构的拒绝时间、空间开销、表示效率以及误判率。最后,根据给出的三方面评估指标,推导出拒绝时间和空间开销的变化趋势、空间开销与表示性能的关系以及候选数据结构内存表示与***数据的一致性是否在可接受范围内。在这里需要注意的是,具体的接受范围与实际硬件资源条件(例如内存大小等)息息相关,因此,在此模型中只给出三方面的评估比较指标,并不给出具体的阈值。
举例说明五种查存算法建模
1)位图数据结构
用位图来表示***中的静态数据集,就是将位图中一个位用于表示集合元素中对应的值,在这里假设我们的静态数据集中没有重复的元素。与在相关工作里提到的简单位图索引的思路一样,即简单地将每一个位表示每个不同的值。***新元素时,将新元素在位图上的对应位置1。在应答一个元素的成员查询的时候,直接查询该元素对应位。例如,假设要表示集合{3,7,8,10},若用位图的表示方案,则如图4所示,位图中对应的第3位、第7位、第8位以及第10位均置1。简单的位图方案在集合范围不大的时候,在空间上和查询处理时间上很有效。但是,随着集合范围的增加,相应的空间开销也会随之增大,因而引起了稀疏问题。
位图数据结构的建模描述如下:
1)D={U,M},其中,U是全集,M是由位图数据结构BM的位数组上连续的空间单元组成的置位集合,M中每个元素是一个比特位的空间单元,且|M|=nm,nm表示BM的位数组的长度。
2)R={R1,R2},其中R1=<d,Mr>,d∈DS,DS是已存集合,Mr表示从BM的置位集合中选择r个比特位置位,其中r=1。R2=<Mt,S>表示BM的置位集合中选择t个元素置位后,Mt对应的表示集合S。
3)F={f:U→Mr,query(d)},其中f:U→Mr,且r=1,dom(f)=DS,d∈TS,TS是测试集合,
2)标准型布隆过滤器
布隆过滤器是用于判断一个元素是否在集合中的数据结构,是一个由m个比特位的位数组,具有k个独立的哈希函数,每个哈希函数的映射范围落在范围{1,2,3…m},用于产生置位的比特位。
初始时,该数据结构,即该位数组的m个比特位均为0。当一个元素***集合中时,布隆过滤器将分别计算这k个独立的哈希函数,然后根据结果,将位数组的对应位置1。在检测一个元素是否在集合中时,布隆过滤器将根据该元素的值计算相应的k个哈希值,求出位数组中对应的k个位,然后检测这k个位是否全部置1,若有任意一位是0,则可判断该元素不在集合中,若全部为1,则该元素有可能在集合中,也有可能不在集合中。显然,当检测元素存在性时,若对应的k位全部置1,元素有不存在的可能性。
如图5所示,最初布隆过滤器初始值为0,元素x1,x2分别通过哈希函数将对布隆过滤器相应位的置1。而在检测元素y1和y2是否在布隆过滤器所表示的集合中时,分别计算它们的对应位,易见y1对应的位中有一个位为0,可以确定它不在集合中。而对于y2对应的位全是1,因此,要么在布隆过滤器表示的集合中,要么只是一个假阳性的误差。标准型布隆过滤器的建模描述如下:
1)D={U,M},其中,U是已存集合DS的全集,M是由标准型布隆过滤器BF的位数组上连续的空间单元组成的置位集合,M中每个元素是一个比特位的空间单元,且|M|=nm,nm表示BF的位数组的长度。
2)R={R1,R2},其中R1=<d,Mr>,d∈DS,DS是已存集合,Mr表示从布隆过滤器BF的置位集合,即这个位数组中选择r个比特位置位。R2=<Mt,S>表示布隆过滤器BF的位数组中选择t个比特位置位后,Mt对应的表示集合S。
3)F={f:U→Mr,query(d)},其中f:U→Mr,且r=k,布隆过滤器BF的哈希函数个数,d∈TS,TS是测试集合,
3)计数型布隆过滤器
计数型布隆过滤器是通过将布隆过滤器的位数组扩展成统计该位置被置1的次数的数据结构,以弥补布隆过滤器无法删除元素的局限。在这个数据结构中,布隆过虑器的每个记录就是一个与基本的布隆过滤器相关的小型计数器,用于记录该位被设为1值的次数。最初,这些计数器全部初始化为0。当一个元素a***或删除时,布隆过滤器将分别计算这k个独立的哈希函数,然后根据得出的结果,将位数组的对应位置的计数器,进行相应地自增或自减,例如,(c(h1(a)),c(h2(a)),…,c(hk(a)))。与标准型布隆过滤器一样,在进行元素的成员查询时,计数型布隆过滤器将根据该元素的值计算这k个哈希函数,分别求出该元素在位数组中对应的k个位的计数器,如果任意一个为0,则可判断该元素不在计数型布隆过滤器这个数据结构所表示的集合。若对应的计数器全部是非0,与标准型布隆过滤器一样,该元素有可能存在集合中,也存在这只是一个假阳性误差的可能性。如图6所示,最初布隆过滤器初始值为0,元素x1,x2分别通过哈希函数将对布隆过滤器相应位的置1,发生碰撞的位,于是计数器自增1。计数型布隆过滤器CBF=(D,R,F)的算法建模描述如下:
1)D={U,M},其中,U是已存集合DS的全集,M是由计数型布隆过滤器BF的位数组上连续的空间单元组成的置位集合,M中每个元素是由若干比特位(记为b个比特位)组成的空间单元,对应于CBF的每个计数器,且|M|=nm,nm表示CBF的计数器的个数。
2)R={R1,R2},其中R1=<d,Mr>,d∈DS,DS是已存集合,Mr表示从CBF的置位集合,即CBF的m个计数器中选择r个计数器进行自增1的置位。R2=<Mt,S>表示CBF中有t个计数器进行自增1的置位后,Mt对应的表示集合S。
3)F={f:U→Mr,query(d)},其中f:U→Mr,且r=k,k是CBF的哈希函数个数,d∈TS,TS是测试集合,
4)Dynamic Bloom Filter
Dynamic Bloom Filter是一个动态的s×m位矩阵,该矩阵包含s个标准的(或计数型)布隆过滤器。该矩阵包含s个大小是m,哈希函数个数是k标准型布隆过滤器(或计数型布隆过滤器)。在一个特定时间,Dynamic Bloom Filter中仅有一个布隆过滤器是活动,其他均非活动状态。***布隆过滤器的元素的个数将会被跟踪。当***元素时,第一个拥有该元素计数器小于特定的阈值的布隆过滤器将被选为活动的布隆过滤器。如果这个活动的布隆过滤器不能找到,将创建新的并设为活动的布隆过滤器,然后元素将***活动布隆过滤器。当进行成员查询操作时,将对集合中的布隆过滤器进行迭代,若任一个布隆过滤器包含该元素,则返回真值。若这个矩阵是由计数型布隆过滤器组成,则可以删除元素,因此,在删除元素时,需要找到第一个声称含有该元素的子布隆过滤器。只有一个布隆过滤器声称含有该元素的情况下,只需要将对应的位自减1即可,多于一个布隆过滤器的情况下,元素的删除最多会导致k个潜在的假阴性错误。在这种情况下,若保留不存在假阴性的错误,则元素的位不能自减,这样就删除操作失败,会增加一定的假阳性错误率。Dynamic布隆过滤器DY=(D,R,F)的建模描述如下:
1)D={U,M},其中,U是已存集合DS的全集,M是由s个标准型布隆过滤器BF(或计数型布隆过滤器CBF)的位数组上连续的空间单元组成的置位集合并集,记为M=M1∪M2…∪Ms,Mi中每个元素是由若干个比特位组成的空间单元,且|Mi|=m,1≤i≤s,m表示BF(或CBF)的位数组的长度,因此,置位集合的元素个数M=nm。
2)R={R1,R2},其中R1=<d,Mi r>,d∈DS,DS是已存集合,Mi r表示从矩阵中第i个活跃BF(或CBF)的置位集合中,选出r个元素置位。R2=<Mi t,Si>表示第i个活跃BF(或CBF)的位数组中选择t个比特位置位后,Mt对应的表示集合Si,于是可得整个Dynamic布隆过滤器DY的表示集合
3)F={f:U→Mr,query(d)},其中f:U→Mr,且r=k,BF(或CBF)的哈希函数个数,d∈TS,TS是测试集合,
5)D-left布隆过滤器
D-left哈希和指纹(fingerprint)的数据结构,将哈希表分成d个子表,每个子表大小相同,并且有n/d个桶,其中n是桶的总数。对于每个元素,都会通过哈希函数产生一个指纹(fingerprint),这个指纹(fingerprint)包含两部分,一部分是桶索引,另一部分是剩余指纹(remainder),桶索引是指存放剩余指纹(remainder)的桶地址。而每个桶有c个单元(cell)的空间,每个单元是一些具有固定大小的位,用于存储剩余指纹(remainder)和计数器。
如图7所示,假设哈希表分成4个子表,每个子表中分别含有8个桶,每个桶有4个单元。当***元素时,计算该元素的哈希值fx=H(x)=(b,r),选出d个子表中相同位置的候选桶和一个指纹哈希值(fingerprint)。然后,用附加的(伪随机的)随机排列计算出与fx对应的d个位置以及相应的指纹Pi(fx)=(bi,ri),其中1≤i≤d。这样做是为了使得给定元素,它的存储在子表中的指纹各不相同。接着,先检测对于任意的剩余指纹(remainder)ri是否存在于任意桶bi中,如果是,就将相应的计数器加1。否则,将该指纹***到元素最少的子表中。在平均情况下,则放到最左边的子表的桶里。查询时,元素的查询利用d个子表的并行查询,找出剩余指纹(remainder)和包含该值的计数器。删除时,计数器减1。这些计数器比标准的CountingBloom Filter要少得多,主要原因是由基于指纹的D-left构造产生较少的碰撞。
假设k表示子表个数,m表示每个子表包含桶的个数,c表示每个桶包含的单元个数,D-Left布隆过滤器DL=(D,R,F)的建模描述如下:
1)D={U,M},其中,U是已存集合DS的全集,M是由D-Left布隆过滤器上的每个子表的所有桶组成的置位集合,相当于每个子表中的桶组成的集合的并集,形式化描述为M=M1∪M2…∪Mk,其中Mi中每个元素是由c个D-Left布隆过滤器中的单元(cell)组成,每个单元包含若干比特位(记为b个比特位),|M|=nm,nm表示DL的所有桶的总数,因此,nm=k·m。
2)R={R1,R2},其中R1=<d,Mr>,d∈DS,DS是已存集合,Mr表示从DL的置位集合,选择r个单元(cell)进行存放指纹和计数器自增1的置位。R2=<Mt,S>表示DL中有t个单元(cell)存放指纹后,Mt对应的表示集合S。
3)F={f:U→Mr,query(d)},其中置位映射f:U→Mr,r=1,即每次映射时只选择1个桶(cell)作为存放剩余指纹(remainder)的桶地址,d∈TS,TS是测试集合,
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可以作出种种的等同变换或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (7)
1.一种查存算法的比较方法,其特征在于:包括有以下步骤:
A、用候选数据结构表示存储在***中的已存集合;
B、计算候选数据结构的评估参数;
C、根据上述评估参数比较评估指标从而得出最合适的查存算法。
2.根据权利要求1所述的一种查存算法的比较方法,其特征在于:所述候选数据结构中包括有该数据结构中涉及的包含于不同集合的操作数据对象、上述操作数据对象之间的映射关系和候选数据结构的操作函数组成的集合。
3.根据权利要求2所述的一种查存算法的比较方法,其特征在于:所述操作数据对象包括有数据集和可提供置位的空间单元。
4.根据权利要求1所述的一种查存算法的比较方法,其特征在于:所述评估参数包括有拒绝时间、空间开销、表示效率和误判率。
5.根据权利要求4所述的一种查存算法的比较方法,其特征在于:所述步骤C中拒绝时间和空间开销用于评估查存算法判断数据不在***中的时间与查存数据结构的空间开销的权衡。
6.根据权利要求4所述的一种查存算法的比较方法,其特征在于:所述步骤C中表示效率用于针对不同的数据量或在涉及数据的变化情况下评估查存算法表示每个数据所用的空间开销。
7.根据权利要求4所述的一种查存算法的比较方法,其特征在于:所述步骤C中误判率用于评估查存算法的反映***数据的能力。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410758136.9A CN104504011B (zh) | 2014-12-10 | 2014-12-10 | 一种查存算法的比较方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410758136.9A CN104504011B (zh) | 2014-12-10 | 2014-12-10 | 一种查存算法的比较方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104504011A true CN104504011A (zh) | 2015-04-08 |
CN104504011B CN104504011B (zh) | 2018-05-15 |
Family
ID=52945409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410758136.9A Active CN104504011B (zh) | 2014-12-10 | 2014-12-10 | 一种查存算法的比较方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104504011B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105228265A (zh) * | 2015-08-25 | 2016-01-06 | 深圳市唯传科技有限公司 | 一种基于物联网设备的分享方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7788242B2 (en) * | 2006-08-23 | 2010-08-31 | Oracle America, Inc. | Method and system for implementing a concurrent set of objects |
CN101923568A (zh) * | 2010-06-23 | 2010-12-22 | 北京星网锐捷网络技术有限公司 | 布隆过滤器的元素增加、删除方法以及布隆过滤器 |
CN103559303A (zh) * | 2013-11-15 | 2014-02-05 | 南京大学 | 一种对数据挖掘算法的评估与选择方法 |
US20140074819A1 (en) * | 2012-09-12 | 2014-03-13 | Oracle International Corporation | Optimal Data Representation and Auxiliary Structures For In-Memory Database Query Processing |
-
2014
- 2014-12-10 CN CN201410758136.9A patent/CN104504011B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7788242B2 (en) * | 2006-08-23 | 2010-08-31 | Oracle America, Inc. | Method and system for implementing a concurrent set of objects |
CN101923568A (zh) * | 2010-06-23 | 2010-12-22 | 北京星网锐捷网络技术有限公司 | 布隆过滤器的元素增加、删除方法以及布隆过滤器 |
US20140074819A1 (en) * | 2012-09-12 | 2014-03-13 | Oracle International Corporation | Optimal Data Representation and Auxiliary Structures For In-Memory Database Query Processing |
CN103559303A (zh) * | 2013-11-15 | 2014-02-05 | 南京大学 | 一种对数据挖掘算法的评估与选择方法 |
Non-Patent Citations (4)
Title |
---|
J. AGUILAR-SABORIT ET AL: ""Dynamic Count Filters"", 《SIGMOD RECORD》 * |
MING ZHONG ET AL: ""Optimizing Data Popularity Conscious Bloom Filters"", 《PODC’08》 * |
吴黎兵 等: ""一种面向网格资源预留的索引链表研究"", 《武汉理工大学学报·信息与管理工程版》 * |
董改芳 等: ""游戏中寻找路径的改进算法"", 《计算机工程与应用》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105228265A (zh) * | 2015-08-25 | 2016-01-06 | 深圳市唯传科技有限公司 | 一种基于物联网设备的分享方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104504011B (zh) | 2018-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103080924B (zh) | 用于处理数据集的方法和装置 | |
CN104756106B (zh) | 表征数据存储***中的数据源 | |
CN110781246A (zh) | 一种企业关联关系构建方法及*** | |
US20200097483A1 (en) | Novel olap pre-calculation model and method for generating pre-calculation result | |
CN102722554B (zh) | 位置敏感哈希随机性减弱方法 | |
Clifford et al. | A statistical analysis of probabilistic counting algorithms | |
CN109299334A (zh) | 一种知识图谱的数据处理方法及装置 | |
CN105117442A (zh) | 一种基于概率的大数据查询方法 | |
CN113486392B (zh) | 一种基于大数据平台的敏感数据识别与脱敏方法 | |
Szathmary et al. | Zart: A multifunctional itemset mining algorithm | |
CN110825817B (zh) | 一种企业疑似关联关系判定方法及*** | |
CN116150191A (zh) | 一种用于云端数据架构的数据运算加速方法及*** | |
Thurow et al. | Imputing missings in official statistics for general tasks–our vote for distributional accuracy | |
CN104504011A (zh) | 一种查存算法的比较方法 | |
CN116881687B (zh) | 一种基于特征提取的电网敏感数据识别方法及装置 | |
CN105787800A (zh) | 一种智能化的社交平台潜在人脉检索装置、***及方法 | |
CN106557583A (zh) | 档案存储装置和档案存储方法 | |
CN113360551B (zh) | 一种靶场中时序数据的存储与快速统计方法及*** | |
CN105989095A (zh) | 顾及数据不确定性的关联规则显著性检验方法及装置 | |
CN112365248B (zh) | 一种分析数字货币交易路径的方法及*** | |
US20020032683A1 (en) | Method and device for sorting data, and a computer product | |
Garstka et al. | Ratio estimation in accounting populations with probabilities of sample selection proportional to size of book values | |
US20080270479A1 (en) | System and Method for Minimization of Calculation Retrieval in a Multidimensional Database | |
CN112258151A (zh) | 一种基于pandas的对账方法、装置、计算机设备和存储介质 | |
CN115292297B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |