WILKERSON威爾克森過濾器結構組合有哪些
WILKERSON威爾克森過濾器結構組合有哪些
現有排重算法中,文件級排重盡管排重開銷小,但排重粒度過粗,難以取得存儲空間的高效利用;數據塊級排重算法能實現高效存儲,但其附帶的存儲開銷過高,排重的時間開銷大。研究分層排重結構,應用雙布魯姆WILKERSON過濾器實現數據排重,優化數據排重性能,主要工作如下:針對數據重復有文件級的重復和數據塊級的重復之分,提出一種基于雙布魯姆WILKERSON過濾器的數據排重算法。該算法使用兩個布魯姆WILKERSON過濾器構成二級排重結構,將排重過程分解成文件排重和數據塊排重兩部分。算法首*入*級進行文件排重,然后將*級排重判定為不重復的文件分割成塊進行第二級數據塊排重。利用這種分層排重結構,通過*級將重復文件直接過濾掉,不進入第二級排重,減少了數據塊排重的工作量;通過第二級進入不重復文件內部進行數據塊排重,獲得了數據塊級的排重粒度。
將上述算法應用于文檔備份系統中,實現對文檔的排重,由于算法采用布魯姆WILKERSON過濾器對數據進行壓縮表達,存在誤判可能,即假陽性誤判問題。本文設計通過查詢元數據(保存數據相關信息)來為誤判糾錯。當布魯姆WILKERSON過濾器判斷數據為重復時,首先將元數據預讀到內存中,在內存中匹配元數據信息,若沒有找到,再讀取保存元數據的文件—索引文件查詢元數據。通過內存、索引文件兩級元數據查詢,杜絕了假陽性誤判的情況。由于為假陽性誤判糾錯需要對元數據進行大量訪問,增加了排重時間開銷,設計將索引文件緩存,保證元數據操作的高效,以此提高排重效率。但系統的句柄數限制了同時緩存的索引文件數目,若索引文件過多,則不能同時緩存全部索引文件,需要進行更多的磁盤IO,此時排重開銷與耗時都急劇升高,針對這種情況,采用動態哈希算法來分配元數據地址,將元數據保存在少數幾個索引文件內,從而克服了句柄限制問題