亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種流式重復(fù)數(shù)據(jù)檢測方法

文檔序號:6426472閱讀:1056來源:國知局
專利名稱:一種流式重復(fù)數(shù)據(jù)檢測方法
技術(shù)領(lǐng)域
本發(fā)明屬于計算機(jī)數(shù)據(jù)傳輸及存儲系統(tǒng),具體涉及一種數(shù)據(jù)流中的重復(fù)數(shù)據(jù)刪除方法。
背景技術(shù)
互聯(lián)網(wǎng)的擴(kuò)展使得數(shù)據(jù)信息呈幾何級數(shù)爆炸性增長,圖靈獎得主吉姆.格雷(Jim Gray)指出網(wǎng)絡(luò)環(huán)境下每18個月新增的數(shù)據(jù)量等于有史以來數(shù)據(jù)量的總和。數(shù)字圖書館、電子商務(wù)、醫(yī)學(xué)影像、生物工程、科學(xué)計算、虛擬現(xiàn)實、數(shù)字化地球、網(wǎng)站多媒體等應(yīng)用的不斷發(fā)展,對建立高性能、高可靠的海量信息存儲系統(tǒng)提出了需求,未來的存儲系統(tǒng)其規(guī)模將達(dá)到PB級甚至EB級。海量的數(shù)據(jù)的傳輸與存儲對網(wǎng)絡(luò)系統(tǒng)及存儲設(shè)備及服務(wù)器系統(tǒng)提出了非常高的要求,另一方面虛擬技術(shù)及云存儲及各種網(wǎng)絡(luò)應(yīng)用的發(fā)展,使得大數(shù)據(jù)的流動變成了經(jīng)常的事情。大量數(shù)據(jù)的轉(zhuǎn)移、上載、下載給網(wǎng)絡(luò)造成了沉重的負(fù)擔(dān),降低了用戶的網(wǎng)絡(luò)體驗。同時大數(shù)據(jù)量的流動也加劇了存儲系統(tǒng)的開銷。但在這些數(shù)據(jù)流中實際上存在大量的數(shù)據(jù)冗余,即數(shù)據(jù)流中存在許多重復(fù)的數(shù)據(jù)塊,這些冗余及重復(fù)的數(shù)據(jù)占據(jù)著大量的網(wǎng)絡(luò)帶寬和存儲空間。而這些重復(fù)數(shù)據(jù)完全可以通過重復(fù)數(shù)據(jù)刪除技術(shù)進(jìn)行清洗,以達(dá)到節(jié)約存儲空間提高帶寬利用率的目的。關(guān)于重復(fù)數(shù)據(jù)刪除技術(shù),近幾年來,國際上對重復(fù)數(shù)據(jù)的檢測與刪除進(jìn)行了大量的研究并提出了幾種重復(fù)數(shù)據(jù)檢測方法。主要有完全文件檢測(whole file detection, 簡稱WFD)、固定塊(fixed-sized chunking,簡稱FSC)檢測技術(shù)、基于內(nèi)容的塊檢測技術(shù) (content-defined chunking,簡稱 CDC)、滑動塊(sliding block)技術(shù)、shingle 檢測技術(shù)、bloom filter檢測技術(shù)、模式匹配的檢測技術(shù)等。這些重復(fù)數(shù)據(jù)檢測技術(shù)盡管方法不同,但目的都是為了檢測出存儲系統(tǒng)中不同文件或數(shù)據(jù)對象間存在的相同數(shù)據(jù)塊。流式重復(fù)數(shù)據(jù)檢測,目前已知的有三種方法,(分段窗口模型(Landmark window model)、跳躍窗口模型(Jumping window model)、滑動窗口模型(Sliding window model)。分段窗口模型是按照等時或等長條件將數(shù)據(jù)流分成多個段,在每次檢查重復(fù)數(shù)據(jù)時,只需放置一段于內(nèi)存中。該方法的主要缺點是無法同時檢測各段之間的重復(fù)數(shù)據(jù)。跳躍窗口模型是先定義一個能容納N個數(shù)據(jù)段的滑動窗口,然后將數(shù)據(jù)流分成很多小段;每次從窗口的一端跳入一個數(shù)據(jù)段進(jìn)入窗口,同時從窗口的另一端淘汰一個數(shù)據(jù)段;窗口內(nèi)的所有數(shù)據(jù)段之間可以進(jìn)行重復(fù)數(shù)據(jù)檢測。該方法的主要缺點,是數(shù)據(jù)流不夠流暢,同時無法精確分析重復(fù)數(shù)據(jù)檢測的結(jié)果?;瑒哟翱谀P蛢H僅維持最近的N個元素,當(dāng)一個新元素到達(dá)時,同時淘汰到期的舊元素。該方法的主要缺點是當(dāng)N的取值過大時檢測的開銷不可接受。

發(fā)明內(nèi)容
本發(fā)明的目的在于提出一種高效精準(zhǔn)的流式重復(fù)數(shù)據(jù)檢測方法,在減小內(nèi)存開銷的同時提高了查詢效率和精準(zhǔn)度。一種流式重復(fù)數(shù)據(jù)檢測方法,涉及由多個布隆過濾器TBF在邏輯上構(gòu)成的循環(huán)先入先出隊列,將邏輯上從隊首到隊尾的TBF依次計為TBF1JBF2,…,TBFg,g為TBF的個數(shù), 每個TBF包含一個位向量BV和k個哈希函數(shù),每個位向量關(guān)聯(lián)一組計時器TA,位向量用于插入數(shù)據(jù)元素,計時器數(shù)用于記錄插入數(shù)據(jù)元素時的時間戳,該檢測方法具體為(1)插入數(shù)據(jù)元素χ 采用所述k個哈希函數(shù)分別對數(shù)據(jù)元素χ進(jìn)行計算得到k個哈希值 hi (χ),1 (χ),. . .,hk (χ),將處于隊尾的 TBFg 中偏移量為 hi (χ), h2 (χ),. . . , hk (χ)的 k個位的值分別置1,同時啟用這k個位關(guān)聯(lián)的計時器記錄置1時的時間戳;若TBFgft時已裝滿數(shù)據(jù)元素,則清空處于隊頭的TBF1并將其摘下置為隊尾;(2)檢測數(shù)據(jù)元素χ是否為重復(fù)數(shù)據(jù)Ql)在TBF1, TBF2,…,TBF^中查詢是否存在一個TBF,其偏移量為Ii1 (χ), h2(x), hk(x)的k個位的值全為1,若存在,則說明該TBF插入過數(shù)據(jù)元素X,進(jìn)入步驟 (22),否則,χ不為重復(fù)元素(22)判斷插入過數(shù)據(jù)元素χ的TBF是否是TBF1,若不是TBF1,則表明χ為重復(fù)元素,若是TBF1,則進(jìn)入步驟(23);(23)查詢TBF1插入χ時的時間戳是否小于TBFg插入χ的時間戳,若小于,則表明 χ邏輯上已被TBF1刪除,χ不為重復(fù)元素;否則,表明χ為重復(fù)元素。本發(fā)明的技術(shù)效果體現(xiàn)在本發(fā)明通過構(gòu)建一個計時型布隆過濾器陣列(Timing Bloom Filter Array, TBFA),在滑動窗口模型內(nèi)靈活高效地檢測重復(fù)數(shù)據(jù)。一個TBFA由多個同構(gòu)的計時型布隆過濾器(Timing Bloom Filter, TBF)構(gòu)成。而每個TBF包含一個布隆過濾器和一個分離的用于保存時間戳的計時器組。整個TBFA以一種循環(huán)先入先出隊列(First-In First-Out, FIFO)的方式工作,在記錄新元素的同時,淘汰已經(jīng)移出數(shù)據(jù)流監(jiān)控窗口的舊元素。該發(fā)明在滑動窗口模型下工作,對元素的監(jiān)測可以精確到一個元素,從而使基于該發(fā)明的統(tǒng)計結(jié)果具有穩(wěn)定性。TBFA中的部分計時器組可以被卸載到磁盤中,從而減少內(nèi)存開銷。理論分析和實驗數(shù)據(jù)表明,DCBA在加載10%以內(nèi)數(shù)據(jù)內(nèi)容到內(nèi)存的情況下,能夠保持95%以上的查詢效率,從而使該發(fā)明在空間效率和可擴(kuò)展性上優(yōu)于已有解決方案。


圖1為布隆過濾初始狀態(tài)示意圖;圖2為布隆過濾插入Xl和x2后的狀態(tài)示意圖;圖3為布隆過濾的檢驗示意圖;圖4為本發(fā)明單節(jié)點布隆過濾重刪檢測示意圖;圖5為本發(fā)明多節(jié)點布隆過濾重刪檢測示意圖;圖6為布隆過濾隊列示意圖。
具體實施例方式本發(fā)明是針對數(shù)據(jù)流利用布隆過濾檢測技術(shù)檢測重復(fù)數(shù)據(jù)。在描述發(fā)明方案前先簡要介紹一下布隆過濾(bloom filter)的工作原理。Bloom Filter是一種空間效率很高的隨機(jī)數(shù)據(jù)結(jié)構(gòu),它利用位數(shù)組很簡潔地表示一個集合,并能判斷一個元素是否屬于這個集合。Bloom Filter的這種高效是有一定代價的在判斷一個元素是否屬于某個集合時,有可能會把不屬于這個集合的元素誤認(rèn)為屬于這個集合(false positive)。因此,Bloom Filter不適合那些“零錯誤”的應(yīng)用場合。而在能容忍低錯誤率的應(yīng)用場合下,Bloom Filter通過極少的錯誤換取了存儲空間的極大節(jié)省。下面我們具體來看Bloom Filter是如何用位數(shù)組表示集合的。初始狀態(tài)時,Bloom Filter是一個包含m位的位數(shù)組,每一位都置為0。見圖1。為了表達(dá)S= {Xl,&,...,xn}這樣一個η個元素的集合,Bloom Filter使用k個相互獨立的哈希函數(shù)(Hash Function),它們分別將集合中的每個元素映射到{1,· · ·,m} 的范圍中。對任意一個元素χ,第i個哈希函數(shù)映射的位置Iii (χ)就會被置為l(i = 1,2..., k)。如果一個位置多次被置為1,那么只有第一次會起作用,后面幾次將沒有任何效果。在圖2中,k = 3,且有兩個哈希函數(shù)選中同一個位置(從左邊數(shù)第8位)。在判斷y是否屬于這個集合時,我們對y應(yīng)用k個哈希函數(shù),如果所有Iii (y)的位置都是1 (i = 1,2. . .,k),那么我們就認(rèn)為y是集合中的元素,否則就認(rèn)為y不是集合中的元素。圖3中yl就不是集合中的元素。y2或者屬于這個集合,或者剛好是一個“假陽性 (false positive),,。前面提到,Bloom Filter在判斷一個元素是否屬于它表示的集合時會有一定的錯誤率(假陽性率,false positive rate),下面就來估下計錯誤率的大小。在估計之前為了簡化模型,假設(shè)k,n<m且各個哈希函數(shù)是完全隨機(jī)的。當(dāng)集合S= {Xl,&,..., }的所有元素都被k個哈希函數(shù)映射到m位的位數(shù)組中時,這個位數(shù)組中某一位還是0的概率是, =〔1-丄〕ae-knlm本發(fā)明是針對數(shù)據(jù)流,利用bloom filte技術(shù)檢測數(shù)據(jù)流中重復(fù)數(shù)據(jù)的技術(shù),通過采用布隆過濾隊列及與之關(guān)聯(lián)的計數(shù)器數(shù)組,能有效地檢測數(shù)據(jù)流中的重復(fù)數(shù)據(jù),同時提高內(nèi)存的使用率,具體的設(shè)計如下計時型布隆過濾器陣列的數(shù)據(jù)結(jié)構(gòu)如圖4所示。計時型布隆過濾器陣列(Timing Bloom Filter Array, TBFA)在滑動窗口模型下以循環(huán)先入先出隊列方式工作?;瑒哟翱谀P蛯⒋髷?shù)據(jù)流抽象為無限長度的時序隊列,并通過一個固定長度的窗口監(jiān)控距離當(dāng)前時間點最近的N個已知元素(N的大小與布隆過濾器隊列的容量相關(guān),它的值與TBFA的容量相等)隨著數(shù)據(jù)的更新和流動,窗口以一個元素為單位向前滑動,在記錄一個新元素的同時淘汰一個舊元素,保持尺寸不變。數(shù)據(jù)元素可以是數(shù)據(jù)塊,或者是文件構(gòu)成。如果是由數(shù)據(jù)塊構(gòu)成,則數(shù)據(jù)流需要事先通過一些分塊算法進(jìn)行分塊,這可以由滑動指紋算法(Rabin) 或同步算法(Rsync)等來完成。一個計時型布隆過濾器陣列包含g(l < g < N)個計時型布隆過濾器(Timing Bloom Filter, TBF),在邏輯上構(gòu)成一個循環(huán)先入先出隊列,將邏輯上位于隊首的TBF計為 TBFl,并依次標(biāo)記每個TBF直到隊尾的TBFg。每個TBF包含一個位向量(Bit Vector,BV), 一個計時器組(TimerArray,ΤΑ)和一組哈希函數(shù)(Hash Function),其中位向量和哈希函數(shù)組的工作原理與傳統(tǒng)的布隆過濾器(Bloom Filter, BF)的工作原理相同,位向量用于記錄插入的元素,而計時器數(shù)組用于記錄元素插入時的時間戳。若滑動窗口尺寸為N,則每個 TBF的設(shè)計容量為N/(g-l),即可記錄N/(g-l)個元素和其時間戳信息。規(guī)定新元素總是插入位于隊尾的TBFg,每當(dāng)插入一個新元素則相應(yīng)地從隊首的TBFl中淘汰一個最舊的元素, 當(dāng)TBFg充滿時TBFl則會被置空,然后隊列循環(huán)移動一個單元,TBFl從隊首轉(zhuǎn)移到隊尾用于記錄新元素并被重新標(biāo)記為TBFg。從而TBFl和TBFg所記錄的有效元素總數(shù)保持為N/ (g-Ι),考慮中間g_2個充滿的TBF,則整個TBFA記錄的有效元素總數(shù)為N。在物理數(shù)據(jù)組織上,TBFA把g個TBF的位向量與他們所關(guān)聯(lián)的計時器組分離存儲。 具體來說,g個TBF具有同構(gòu)性,即它們具有相同的位向量長度、計時器組長度且共享同一組哈希函數(shù)。g個位向量中具有相同偏移量的位單元被存放到連續(xù)的內(nèi)存空間中,見圖6所示,因此偏移量相同的位單元能夠被同時訪問,這種數(shù)據(jù)布局能夠允許上層應(yīng)用同時查詢 g個位向量,以判斷待查詢的元素是否被其中某個位向量所記錄,其查詢效率遠(yuǎn)高于傳統(tǒng)的順序檢測方法。另一方面,每個位向量被關(guān)聯(lián)一個長度相等的計時器組,用于存儲被記錄元素的時間戳。TBFA允許TBF2,…,TBFg-I對應(yīng)的g_2個計時器組被卸載到硬盤,從而很大程度上減少內(nèi)存開銷。TBFA的數(shù)據(jù)結(jié)構(gòu)同時適用于單節(jié)點和分布式環(huán)境。見圖5所示,在具有r個節(jié)點的分布式環(huán)境下,可將構(gòu)成TBFA的g個TBF分為r組,每組s個TBF由一個節(jié)點存儲和維護(hù),其中rXs = g。在每個節(jié)點中,s個TBF仍然按照前段所述的方法優(yōu)化內(nèi)存數(shù)據(jù)布局以提高查詢效率。此外,存儲節(jié)點之間需要保持計時同步,當(dāng)維護(hù)TBFg的節(jié)點插入一個新元素時,維護(hù)TBFl的節(jié)點將相應(yīng)地刪除一個舊元素,所有g(shù)個TBF仍然在邏輯上以循環(huán)先入先出隊列的方式工作。計時型布隆過濾器陣列的重復(fù)數(shù)據(jù)檢測原理。計時型布隆過濾器陣列(Timing Bloom Filter Array,TBFA)通過插入、刪除和查詢?nèi)N操作支持滑動窗口模型下的流式重復(fù)數(shù)據(jù)檢測。具體說明如下元素的插入方法。如前所述,TBFA所包含的所有TBF是同構(gòu)的,新元素總是被插入到邏輯上位于隊尾的TBFg。TBFg包含一個長度為m的位向量(布隆過濾器)和一個由 m個計時器構(gòu)成的計時器組(TimerArray,ΤΑ),同時與其它TBF共享一個基礎(chǔ)時鐘(Base Clock, BC)和一組哈希函數(shù)hl,h2,…,hk?;A(chǔ)時鐘在W,l,…,N/(g-l)-l]的范圍內(nèi)循環(huán)計時并以0為一個計時周期的開始。初始階段,基礎(chǔ)時鐘和布隆過濾器的各個位都被置0 ;當(dāng)插入一個新元素χ時,TBFg的布隆過濾器中偏移量為hi (x),h2(x),…,hk(x)的k 個位被置1,用以記錄χ ;另一方面,TBFg的計時器組中偏移量為hl(x), h2(x),…,hk(x) 的k個計時器被設(shè)置為基礎(chǔ)時鐘的當(dāng)前值。完成上述操作后,基礎(chǔ)時鐘自增到下一個計時點ο 素被認(rèn)為已經(jīng)失效。理論上在TBFl與TBFg中元素的和為N/(g-Ι)個,隨著TBFg滿載, TBFl中的所有元素將會失效從而其數(shù)據(jù)結(jié)構(gòu)會被重新初始化,同時基礎(chǔ)時鐘進(jìn)入下一個循環(huán)計時周期,這時可以把TBFl摘下來,插入到TBFgW前面。這樣形成一個循環(huán)隊列。所有 TBF在邏輯上前移動了一個單元,形成新的先入先出隊列。這種被動刪除元素的方法可以有效減少刪除元素的內(nèi)存訪問頻度,提高整個TBFA的查詢效率。元素的查詢方法。查詢元素χ的重復(fù)性時,首先通過哈希函數(shù)組計算χ的k個映射值hl(x),h2(x),…,hk(x)。對于一個具體的TBF,當(dāng)且僅當(dāng)其布隆過濾器中偏移量為hl(x), h2(x),…,hk (χ)的k個位單元全為1時,認(rèn)為χ已經(jīng)被該TBF所記錄。由于g個 TBF的布隆過濾器具有優(yōu)化的內(nèi)存數(shù)據(jù)布局,TBFA可以同時查詢χ在所有TBF中的存在性,從而判斷χ是否是當(dāng)前滑動窗口中的重復(fù)元素。具體做法見圖6所示,取出偏移量分別
為 hi (χ),h2(x),…,hk(x)的 k 處向量,即{Bit Vectorhiw, Bit Vectorh2w, ......,Bit
VeCtorhk(x)},對這k個向量按位進(jìn)行“與”運(yùn)算,得到的結(jié)果,如果除最后一位外(最后位必為1,它代表剛插入的元素),其它的某位為“ 1,,則表示該位對應(yīng)的布隆過濾中有個元素與剛插入的數(shù)據(jù)內(nèi)容重復(fù),即為查找到的重復(fù)元素;如果計算得到的結(jié)果所有位都為“O”則表示沒有找到重復(fù)元素。 特別地,當(dāng)χ出現(xiàn)在TBFl中時,需要進(jìn)一步檢測χ的時間戳以判斷其是否已經(jīng)失效,并根據(jù)檢測結(jié)果對最終判斷作必要修正。由于TBF2,…,TBFg-I的計時器組在查詢期間不被訪問,他們可以被卸載到硬盤中以減少內(nèi)存開銷,當(dāng)各TBF構(gòu)成的先入先出隊列循環(huán)時,再重新加載必要的計時器組。
權(quán)利要求
1. 一種流式重復(fù)數(shù)據(jù)檢測方法,涉及由多個布隆過濾器TBF在邏輯上構(gòu)成的循環(huán)先入先出隊列,將邏輯上從隊首到隊尾的TBF依次計為TBF1JBF2,…,TBFg,g為TBF的個數(shù),每個TBF包含一個位向量BV和k個哈希函數(shù),每個位向量關(guān)聯(lián)一組計時器TA,位向量用于插入數(shù)據(jù)元素,計時器數(shù)用于記錄插入數(shù)據(jù)元素時的時間戳,該檢測方法具體為(1)插入數(shù)據(jù)元素χ采用所述k個哈希函數(shù)分別對數(shù)據(jù)元素χ進(jìn)行計算得到k個哈希值 Ill (χ),1 (χ),. . .,hk (χ),將處于隊尾的 TBFg 中偏移量為 Ii1 (χ), h2 (χ),. . . , hk (χ)的 k 個位的值分別置1,同時啟用這k個位關(guān)聯(lián)的計時器記錄置1時的時間戳;若TBFg此時已裝滿數(shù)據(jù)元素,則清空處于隊頭的TBF1并將其摘下置為隊尾;(2)檢測數(shù)據(jù)元素χ是否為重復(fù)數(shù)據(jù)(21)在TBF1,TBF2,…,TBFp1中查詢是否存在一個TBF,其偏移量為Ii1(X),Ii2(X),..., hk(x)的k個位的值全為1,若存在,則說明該TBF插入過數(shù)據(jù)元素X,進(jìn)入步驟(22),否則, χ不為重復(fù)元素;(22)判斷插入過數(shù)據(jù)元素χ的TBF是否是TBF1,若不是TBF1,則表明χ為重復(fù)元素,若是TBF1,則進(jìn)入步驟(23);(23)查詢TBF1插入χ時的時間戳是否小于TBFg插入χ的時間戳,若小于,則表明χ邏輯上已被TBF1刪除,χ不為重復(fù)元素;否則,表明χ為重復(fù)元素。
全文摘要
本發(fā)明提供了一種流式重復(fù)數(shù)據(jù)檢測方法,通過構(gòu)建一個計時型布隆過濾器陣列TBFA,在滑動窗口模型內(nèi)靈活高效地檢測重復(fù)數(shù)據(jù)。TBFA由多個同構(gòu)的計時型布隆過濾器TBF構(gòu)成,每個TBF包含一個布隆過濾器和一個分離的用于保存時間戳的計時器組,整個TBFA以一種循環(huán)先入先出隊列的方式工作,在記錄新元素的同時,淘汰已經(jīng)移出數(shù)據(jù)流監(jiān)控窗口的舊元素。本發(fā)明在滑動窗口模型下工作,對元素的監(jiān)測可以精確到一個元素,從而使基于本發(fā)明的統(tǒng)計結(jié)果具有穩(wěn)定性,另外TBFA中的部分計時器組可以被卸載到磁盤中,從而減少內(nèi)存開銷。理論分析和實驗數(shù)據(jù)表明,DCBA在加載10%以內(nèi)數(shù)據(jù)內(nèi)容到內(nèi)存的情況下,能夠保持95%以上的查詢效率,從而使本發(fā)明在空間效率和可擴(kuò)展性上優(yōu)于現(xiàn)有技術(shù)方案。
文檔編號G06F5/06GK102253820SQ201110162619
公開日2011年11月23日 申請日期2011年6月16日 優(yōu)先權(quán)日2011年6月16日
發(fā)明者周可, 張攀峰, 李春花, 王樺, 魏建生 申請人:華中科技大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1