WILKERSON威尔克森过滤器结构组合有哪些
WILKERSON威尔克森过滤器结构组合有哪些
现有排重算法中,文件级排重尽管排重开销小,但排重粒度过粗,难以取得存储空间的高效利用;数据块级排重算法能实现高效存储,但其附带的存储开销过高,排重的时间开销大。研究分层排重结构,应用双布鲁姆WILKERSON过滤器实现数据排重,优化数据排重性能,主要工作如下:针对数据重复有文件级的重复和数据块级的重复之分,提出一种基于双布鲁姆WILKERSON过滤器的数据排重算法。该算法使用两个布鲁姆WILKERSON过滤器构成二级排重结构,将排重过程分解成文件排重和数据块排重两部分。算法首*入*级进行文件排重,然后将*级排重判定为不重复的文件分割成块进行第二级数据块排重。利用这种分层排重结构,通过*级将重复文件直接过滤掉,不进入第二级排重,减少了数据块排重的工作量;通过第二级进入不重复文件内部进行数据块排重,获得了数据块级的排重粒度。
将上述算法应用于文档备份系统中,实现对文档的排重,由于算法采用布鲁姆WILKERSON过滤器对数据进行压缩表达,存在误判可能,即假阳性误判问题。本文设计通过查询元数据(保存数据相关信息)来为误判纠错。当布鲁姆WILKERSON过滤器判断数据为重复时,首先将元数据预读到内存中,在内存中匹配元数据信息,若没有找到,再读取保存元数据的文件—索引文件查询元数据。通过内存、索引文件两级元数据查询,杜绝了假阳性误判的情况。由于为假阳性误判纠错需要对元数据进行大量访问,增加了排重时间开销,设计将索引文件缓存,保证元数据操作的高效,以此提高排重效率。但系统的句柄数限制了同时缓存的索引文件数目,若索引文件过多,则不能同时缓存全部索引文件,需要进行更多的磁盘IO,此时排重开销与耗时都急剧升高,针对这种情况,采用动态哈希算法来分配元数据地址,将元数据保存在少数几个索引文件内,从而克服了句柄限制问题