本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種對數(shù)據(jù)進(jìn)行去重復(fù)處理的方法及裝置。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,計(jì)算機(jī)應(yīng)用程序所產(chǎn)生的數(shù)據(jù)也大量增加,為了節(jié)約存儲資源,經(jīng)常需要對某一個計(jì)算機(jī)應(yīng)用程序所產(chǎn)生或采集的數(shù)據(jù)進(jìn)行去重復(fù)處理。
目前,對數(shù)據(jù)進(jìn)行去重復(fù)處理時,通常需要將各個待處理數(shù)據(jù)寫入到非易失性存儲介質(zhì)中,然后對存儲在非易失性存儲介質(zhì)中的各個待處理數(shù)據(jù)進(jìn)行逐一比較,當(dāng)存在多個待處理數(shù)據(jù)相同時,則可對相應(yīng)的待處理數(shù)據(jù)進(jìn)行刪除,以實(shí)現(xiàn)對各個待處理數(shù)據(jù)進(jìn)行去重復(fù)處理。
但是,上述技術(shù)方案中,當(dāng)大量的待處理數(shù)據(jù)被存儲至非易失性存儲介質(zhì)時,則不易對各個待處理數(shù)據(jù)進(jìn)行逐一比較,需要花費(fèi)大量的處理時間才能實(shí)現(xiàn)對各個待處理數(shù)據(jù)進(jìn)行去重復(fù)處理。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種對數(shù)據(jù)進(jìn)行去重復(fù)處理的方法及裝置,可更為快速的實(shí)現(xiàn)對大量待處理數(shù)據(jù)進(jìn)行去重復(fù)處理。
第一方面,本發(fā)明提供了一種對數(shù)據(jù)進(jìn)行去重復(fù)處理的方法,包括:
s0:在內(nèi)存中設(shè)置緩存區(qū)域,以及預(yù)先在非易失性存儲介質(zhì)中設(shè)置指定存儲區(qū)域;
s1:在采集到一個待處理數(shù)據(jù)時,檢測所述緩存區(qū)域中是否存在與所述待處理數(shù)據(jù)相同的目標(biāo)緩存數(shù)據(jù);
s2:當(dāng)所述緩存區(qū)域中不存在與所述待處理數(shù)據(jù)相同的目標(biāo)緩存數(shù)據(jù)時,將所述待處理數(shù)據(jù)作為緩存數(shù)據(jù)存儲至所述緩存區(qū)域;
s3:檢測所述緩存區(qū)域的剩余存儲空間,在所述剩余存儲空間小于預(yù)設(shè)閾值時,將所述緩存區(qū)域中存儲的各個所述緩存數(shù)據(jù)分別作為存儲數(shù)據(jù)存儲至所述指定存儲區(qū)域,并清除所述緩存區(qū)域中存儲的各個所述緩存數(shù)據(jù)。
優(yōu)選地,
所述預(yù)先在非易失性存儲介質(zhì)中設(shè)置指定存儲區(qū)域,包括:
預(yù)先在非易失性存儲介質(zhì)中設(shè)置包括至少一個存儲分區(qū)的指定存儲區(qū)域,其中,每一個所述存儲分區(qū)分別對應(yīng)一個設(shè)定長度的數(shù)據(jù)鏈;
則,所述將所述緩存區(qū)域中存儲的各個所述緩存數(shù)據(jù)分別作為存儲數(shù)據(jù)存儲至所述指定存儲區(qū)域,包括:
針對于所述緩存區(qū)域中存儲的每一個所述緩存數(shù)據(jù),均執(zhí)行:
a1:計(jì)算所述緩存數(shù)據(jù)的摘要值;
a2:根據(jù)所述摘要值及各個所述存儲分區(qū)分別對應(yīng)的數(shù)據(jù)鏈,確定所述緩存數(shù)據(jù)所對應(yīng)的目標(biāo)存儲分區(qū);
a3:當(dāng)所述目標(biāo)存儲分區(qū)中不存在與所述緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)時,將所述緩存數(shù)據(jù)作為存儲數(shù)據(jù)存儲至所述目標(biāo)存儲分區(qū)。
優(yōu)選地,
所述預(yù)先在非易失性存儲介質(zhì)中設(shè)置包括至少一個存儲分區(qū)的指定存儲區(qū)域,進(jìn)一步包括:根據(jù)各個所述存儲分區(qū)分別對應(yīng)的數(shù)據(jù)鏈設(shè)置各個所述存儲分區(qū)分別對應(yīng)的摘要值索引;
則,所述a2進(jìn)一步包括:根據(jù)所述摘要值以及各個所述存儲分區(qū)分別對應(yīng)的數(shù)據(jù)鏈,確定所述緩存數(shù)據(jù)所對應(yīng)的目標(biāo)摘要值索引;
所述a3,包括:查詢所述目標(biāo)摘要索引中是否存在所述摘要值;當(dāng)所述目標(biāo)摘要索引中不存在所述摘要值時,將所述緩存數(shù)據(jù)作為存儲數(shù)據(jù)存儲至所述目標(biāo)存儲分區(qū),并將所述摘要值新增至所述目標(biāo)摘要索引。
優(yōu)選地,
所述將所述摘要值新增至所述目標(biāo)摘要索引,包括:根據(jù)所述摘要值的大小,將所述摘要值插入到所述目標(biāo)摘要索引中。
優(yōu)選地,
針對于每一個所述緩存數(shù)據(jù),當(dāng)前所述緩存數(shù)據(jù)的摘要值的前n個數(shù)據(jù)位所形成的數(shù)據(jù)鏈,與存儲當(dāng)前所述緩存數(shù)據(jù)的目標(biāo)存儲分區(qū)所對應(yīng)的數(shù)據(jù)鏈相同,其中,n為所述設(shè)定長度。
第二方面,本發(fā)明實(shí)施例提供了一種對數(shù)據(jù)進(jìn)行去重復(fù)處理的裝置,包括:
設(shè)置模塊,用于在內(nèi)存中設(shè)置緩存區(qū)域,以及預(yù)先在非易失性存儲介質(zhì)中設(shè)置指定存儲區(qū)域;
檢測模塊,用于在采集到一個待處理數(shù)據(jù)時,檢測所述緩存區(qū)域中是否存在與所述待處理數(shù)據(jù)相同的目標(biāo)緩存數(shù)據(jù);
緩存處理模塊,用于當(dāng)所述緩存區(qū)域中不存在與所述待處理數(shù)據(jù)相同的目標(biāo)緩存數(shù)據(jù)時,將所述待處理數(shù)據(jù)作為緩存數(shù)據(jù)存儲至所述緩存區(qū)域;
存儲處理模塊,用于檢測所述緩存區(qū)域的剩余存儲空間,在所述剩余存儲空間小于預(yù)設(shè)閾值時,將所述緩存區(qū)域中存儲的各個所述緩存數(shù)據(jù)分別作為存儲數(shù)據(jù)存儲至所述指定存儲區(qū)域,并清除所述緩存區(qū)域中存儲的各個所述緩存數(shù)據(jù)。
優(yōu)選地,
所述設(shè)置模塊,用于預(yù)先在非易失性存儲介質(zhì)中設(shè)置包括至少一個存儲分區(qū)的指定存儲區(qū)域,其中,每一個所述存儲分區(qū)分別對應(yīng)一個設(shè)定長度的數(shù)據(jù)鏈;
則,所述存儲處理模塊,包括:計(jì)算單元、確定單元和存儲處理單元;
所述計(jì)算單元,用于針對于所述緩存區(qū)域中存儲的每一個所述緩存數(shù)據(jù),計(jì)算所述緩存數(shù)據(jù)的摘要值;
所述確定單元,用于根據(jù)所述摘要值及各個所述存儲分區(qū)分別對應(yīng)的數(shù)據(jù)鏈,確定所述緩存數(shù)據(jù)所對應(yīng)的目標(biāo)存儲分區(qū);
所述存儲處理單元,用于當(dāng)所述目標(biāo)存儲分區(qū)中不存在與所述緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)時,將所述緩存數(shù)據(jù)作為存儲數(shù)據(jù)存儲至所述目標(biāo)存儲分區(qū)。
優(yōu)選地,
所述設(shè)置模塊,進(jìn)一步用于根據(jù)各個所述存儲分區(qū)分別對應(yīng)的數(shù)據(jù)鏈設(shè)置各個所述存儲分區(qū)分別對應(yīng)的摘要值索引;
則,
所述確定單元,進(jìn)一步用于根據(jù)所述摘要值以及各個所述存儲分區(qū)分別對應(yīng)的數(shù)據(jù)鏈,確定所述緩存數(shù)據(jù)所對應(yīng)的目標(biāo)摘要值索引;
所述存儲處理單元,用于查詢所述目標(biāo)摘要索引中是否存在所述摘要值;當(dāng)所述目標(biāo)摘要索引中不存在所述摘要值時,將所述緩存數(shù)據(jù)作為存儲數(shù)據(jù)存儲至所述目標(biāo)存儲分區(qū),并將所述摘要值新增至所述目標(biāo)摘要索引。
優(yōu)選地,所述存儲處理單元,用于根據(jù)所述摘要值的大小,將所述摘要值插入到所述目標(biāo)摘要索引中。
優(yōu)選地,
針對于每一個所述緩存數(shù)據(jù),當(dāng)前所述緩存數(shù)據(jù)的摘要值的前n個數(shù)據(jù)位所形成的數(shù)據(jù)鏈,與存儲當(dāng)前所述緩存數(shù)據(jù)的目標(biāo)存儲分區(qū)所對應(yīng)的數(shù)據(jù)鏈相同,其中,n為所述設(shè)定長度。
本發(fā)明實(shí)施例提供了一種對數(shù)據(jù)進(jìn)行去重復(fù)處理的方法及裝置,該方法中,由于在采集大量的待處理數(shù)據(jù)時,相同的待處理數(shù)據(jù)通常在時間上具有一定的連續(xù)性,通過在內(nèi)存中設(shè)置緩存區(qū)域,以及在非易失性存儲介質(zhì)中設(shè)置指定存儲區(qū)域,在每采集到一個待處理數(shù)據(jù)后,當(dāng)且僅當(dāng)在檢測到緩存區(qū)域中不存在與該待處理數(shù)據(jù)相同的目標(biāo)緩存數(shù)據(jù)時,才將該待處理數(shù)據(jù)作為緩存數(shù)據(jù)存儲至緩存區(qū)域,從而實(shí)現(xiàn)對一個連續(xù)的時間段內(nèi)采集的各個待處理數(shù)據(jù)進(jìn)行去重復(fù)處理,后續(xù)則可在檢測到緩存區(qū)域的剩余存儲空間小于預(yù)設(shè)閾值時,將緩存區(qū)域中存儲的各個緩存數(shù)據(jù)分別作為存儲數(shù)據(jù)存儲至指定存儲區(qū)域,并清除緩存區(qū)域中存儲的各個緩存數(shù)據(jù),以便利用空閑的緩存區(qū)域?qū)罄m(xù)時間段內(nèi)采集的各個待處理數(shù)據(jù)再次進(jìn)行去重復(fù)處理。綜上可見,本發(fā)明實(shí)施例提供的技術(shù)方案中,無需將各個待處理數(shù)據(jù)全部存儲至非易失性存儲介質(zhì)以對各個待處理數(shù)據(jù)進(jìn)行去重復(fù)處理,僅需要通過緩存區(qū)域?qū)Ω鱾€不同時間段內(nèi)分別連續(xù)采集的少量待處理數(shù)據(jù)進(jìn)行去重復(fù)處理則可,可更為快速的實(shí)現(xiàn)對大量待處理數(shù)據(jù)進(jìn)行去重復(fù)處理。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明一實(shí)施例提供的一種對數(shù)據(jù)進(jìn)行去重復(fù)處理的方法的流程圖;
圖2是本發(fā)明一實(shí)施例提供的另一種對數(shù)據(jù)進(jìn)行去重復(fù)處理的方法的流程圖;
圖3是本發(fā)明一實(shí)施例提供的一種對數(shù)據(jù)進(jìn)行去重復(fù)處理的裝置的結(jié)構(gòu)示意圖;
圖4是本發(fā)明一實(shí)施例提供的另一種對數(shù)據(jù)進(jìn)行去重復(fù)處理的裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例,基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
如圖1所示,本發(fā)明實(shí)施例提供了一種對數(shù)據(jù)進(jìn)行去重復(fù)處理的方法,包括:
s0:在內(nèi)存中設(shè)置緩存區(qū)域,以及預(yù)先在非易失性存儲介質(zhì)中設(shè)置指定存儲區(qū)域;
s1:在采集到一個待處理數(shù)據(jù)時,檢測所述緩存區(qū)域中是否存在與所述待處理數(shù)據(jù)相同的目標(biāo)緩存數(shù)據(jù);
s2:當(dāng)所述緩存區(qū)域中不存在與所述待處理數(shù)據(jù)相同的目標(biāo)緩存數(shù)據(jù)時,將所述待處理數(shù)據(jù)作為緩存數(shù)據(jù)存儲至所述緩存區(qū)域;
s3:檢測所述緩存區(qū)域的剩余存儲空間,在所述剩余存儲空間小于預(yù)設(shè)閾值時,將所述緩存區(qū)域中存儲的各個所述緩存數(shù)據(jù)分別作為存儲數(shù)據(jù)存儲至所述指定存儲區(qū)域,并清除所述緩存區(qū)域中存儲的各個所述緩存數(shù)據(jù)。
本發(fā)明上述實(shí)施例中,由于在采集大量的待處理數(shù)據(jù)時,相同的待處理數(shù)據(jù)通常在時間上具有一定的連續(xù)性,通過在內(nèi)存中設(shè)置緩存區(qū)域,以及在非易失性存儲介質(zhì)中設(shè)置指定存儲區(qū)域,在每采集到一個待處理數(shù)據(jù)后,當(dāng)且僅當(dāng)在檢測到緩存區(qū)域中不存在與該待處理數(shù)據(jù)相同的目標(biāo)緩存數(shù)據(jù)時,才將該待處理數(shù)據(jù)作為緩存數(shù)據(jù)存儲至緩存區(qū)域,從而實(shí)現(xiàn)對一個連續(xù)的時間段內(nèi)采集的各個待處理數(shù)據(jù)進(jìn)行去重復(fù)處理,后續(xù)則可在檢測到緩存區(qū)域的剩余存儲空間小于預(yù)設(shè)閾值時,將緩存區(qū)域中存儲的各個緩存數(shù)據(jù)分別作為存儲數(shù)據(jù)存儲至指定存儲區(qū)域,并清除緩存區(qū)域中存儲的各個緩存數(shù)據(jù),以便利用空閑的緩存區(qū)域?qū)罄m(xù)時間段內(nèi)采集的各個待處理數(shù)據(jù)再次進(jìn)行去重復(fù)處理。綜上可見,本發(fā)明實(shí)施例提供的技術(shù)方案中,無需將各個待處理數(shù)據(jù)全部存儲至非易失性存儲介質(zhì)以對各個待處理數(shù)據(jù)進(jìn)行去重復(fù)處理,僅需要通過緩存區(qū)域?qū)Ω鱾€不同時間段內(nèi)分別連續(xù)采集的少量待處理數(shù)據(jù)進(jìn)行去重復(fù)處理則可,可更為快速的實(shí)現(xiàn)對大量待處理數(shù)據(jù)進(jìn)行去重復(fù)處理。
本發(fā)明一個實(shí)施例中,所述步驟s1中,所述預(yù)先在非易失性存儲介質(zhì)中設(shè)置指定存儲區(qū)域,包括:
預(yù)先在非易失性存儲介質(zhì)中設(shè)置包括至少一個存儲分區(qū)的指定存儲區(qū)域,其中,每一個所述存儲分區(qū)分別對應(yīng)一個設(shè)定長度的數(shù)據(jù)鏈;
則,所述將所述緩存區(qū)域中存儲的各個所述緩存數(shù)據(jù)分別作為存儲數(shù)據(jù)存儲至所述指定存儲區(qū)域,包括:
針對于所述緩存區(qū)域中存儲的每一個所述緩存數(shù)據(jù),均執(zhí)行:
a1:計(jì)算所述緩存數(shù)據(jù)的摘要值;
a2:根據(jù)所述摘要值及各個所述存儲分區(qū)分別對應(yīng)的數(shù)據(jù)鏈,確定所述緩存數(shù)據(jù)所對應(yīng)的目標(biāo)存儲分區(qū);
a3:當(dāng)所述目標(biāo)存儲分區(qū)中不存在與所述緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)時,將所述緩存數(shù)據(jù)作為存儲數(shù)據(jù)存儲至所述目標(biāo)存儲分區(qū)。
具體地,針對于每一個所述緩存數(shù)據(jù),當(dāng)前所述緩存數(shù)據(jù)的摘要值的前n個數(shù)據(jù)位所形成的數(shù)據(jù)鏈,與存儲當(dāng)前所述緩存數(shù)據(jù)的目標(biāo)存儲分區(qū)所對應(yīng)的數(shù)據(jù)鏈相同,其中,n為所述設(shè)定長度。
通過本發(fā)明上述實(shí)施例,由于已經(jīng)被存儲至非易失性存儲介質(zhì)的各個存儲數(shù)據(jù)中,可能存在目標(biāo)存儲數(shù)據(jù)與即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)相同,通過將對應(yīng)摘要值前n個數(shù)據(jù)位相同的各個緩存數(shù)據(jù)作為存儲數(shù)據(jù)存儲到同一個存儲分區(qū)內(nèi),在后續(xù)過程中需要對已經(jīng)存儲至非易失性存儲介質(zhì)中進(jìn)行讀取,以確定非易失性存儲介質(zhì)中是否存在與緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)時,僅需要根據(jù)即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)的摘要值,讀取所對應(yīng)數(shù)據(jù)鏈與該摘要值相對應(yīng)的目標(biāo)存儲分區(qū)內(nèi)的各個存儲數(shù)據(jù)則可,無需讀取已經(jīng)被存儲至非易失性存儲介質(zhì)的全部存儲數(shù)據(jù),則可快速確定出非易失性存儲介質(zhì)中是否存在與即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)。
具體地,為了更為快速的確定出非易失性存儲介質(zhì)中是否存在與即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù),本發(fā)明一個實(shí)施例中,所述預(yù)先在非易失性存儲介質(zhì)中設(shè)置包括至少一個存儲分區(qū)的指定存儲區(qū)域,進(jìn)一步包括:根據(jù)各個所述存儲分區(qū)分別對應(yīng)的數(shù)據(jù)鏈設(shè)置各個所述存儲分區(qū)分別對應(yīng)的摘要值索引;
則,所述a2進(jìn)一步包括:根據(jù)所述摘要值以及各個所述存儲分區(qū)分別對應(yīng)的數(shù)據(jù)鏈,確定所述緩存數(shù)據(jù)所對應(yīng)的目標(biāo)摘要值索引;
所述a3,包括:查詢所述目標(biāo)摘要索引中是否存在所述摘要值;當(dāng)所述目標(biāo)摘要索引中不存在所述摘要值時,將所述緩存數(shù)據(jù)作為存儲數(shù)據(jù)存儲至所述目標(biāo)存儲分區(qū),并將所述摘要值新增至所述目標(biāo)摘要索引。
本發(fā)明上述實(shí)施例中,各個存儲分區(qū)所分別對應(yīng)的摘要值索引具體可以由已經(jīng)被存儲至當(dāng)前存儲分區(qū)的各個存儲數(shù)據(jù)所分別對應(yīng)的摘要值構(gòu)成,當(dāng)需要確定非易失性存儲介質(zhì)中是否存在與即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)時,僅需要計(jì)算出即將被存儲至非易失存儲介質(zhì)的摘要值,然后根據(jù)該摘要值確定出對應(yīng)的目標(biāo)摘要值索引,進(jìn)而通過判斷目標(biāo)摘要值索引中是否存在與該摘要值相同的目標(biāo)摘要值,來確定非易失性存儲介質(zhì)中是否存在與即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)。綜上可見,無需讀取已經(jīng)被存儲至相應(yīng)目標(biāo)存儲分區(qū)的各個存儲數(shù)據(jù),可更為快速的確定出非易失性存儲介質(zhì)中是否存在與即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)。
相應(yīng)的,當(dāng)且僅當(dāng)確定出非易失性存儲介質(zhì)中不存在與即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)時,才將即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)作為存儲數(shù)據(jù)存儲至非易失性存儲介質(zhì)中相應(yīng)的存儲分區(qū),確保非易失性存儲介質(zhì)中不會存儲相同的存儲數(shù)據(jù)。
進(jìn)一步的,為了實(shí)現(xiàn)快速判斷目標(biāo)摘要值索引中是否存在與該摘要值相同的目標(biāo)摘要值,本發(fā)明一個實(shí)施例中,所述將所述摘要值新增至所述目標(biāo)摘要索引,包括:根據(jù)所述摘要值的大小,將所述摘要值插入到所述目標(biāo)摘要索引中。摘要值索引中的各個摘要值具體可以按照由小到大或由大大小的順序進(jìn)行排序,在針對計(jì)算的摘要值與確定的摘要值索引中的各個摘要值進(jìn)行比較時,無需將計(jì)算的摘要值與確定的目標(biāo)摘要值索引中的各個摘要值進(jìn)行逐一比較則可確定出目標(biāo)摘要值索引中是否存在與該摘要值相同的目標(biāo)摘要值。
舉例來說,計(jì)算得到緩存區(qū)域中即將需要被存儲至非易失性存儲介質(zhì)的一個緩存數(shù)據(jù)所對應(yīng)的摘要值為a,確定的目標(biāo)摘要值索引中包括有4個按照由小到大的順序排列的摘要值b、c、d、e;當(dāng)需要判斷目標(biāo)摘要值索引中是否存在目標(biāo)摘要值與計(jì)算得到的摘要值相同時,如果判斷出a大于b且小于c,則明顯說明后續(xù)的d與e均不與a相同,無需繼續(xù)比較a與d、a與e則可快速判斷出確定的目標(biāo)摘要值索引中不存在與計(jì)算的摘要值相同的目標(biāo)摘要值。
相應(yīng)的,當(dāng)計(jì)算得到的a需要被新增到確定的目標(biāo)摘要值索引時,則可將a新增到b與c之間,形成的新的摘要值索引中各個摘要值的排序則為:b、a、c、d、e。
為了更加清楚的說明本發(fā)明的就似乎方案及優(yōu)點(diǎn),下面以非易失性存儲介質(zhì)包括緩存分區(qū)a和緩存分區(qū)b,緩存分區(qū)a和b分別對應(yīng)的摘要值索引中,各個摘要值按照由小達(dá)到的順序進(jìn)行排序,且當(dāng)前采集的一個待處理數(shù)據(jù)是a為例,如圖2所示,具體可以通過如下各個步驟實(shí)現(xiàn)對多個待處理數(shù)據(jù)中的待處理數(shù)據(jù)a進(jìn)行去重復(fù)處理:
步驟201,在內(nèi)存中設(shè)置緩存區(qū)域;以及在非易失性存儲介質(zhì)中設(shè)置至少一個存儲分區(qū),并根據(jù)各個存儲分區(qū)分別對應(yīng)的數(shù)據(jù)鏈設(shè)置各個存儲分區(qū)分別對應(yīng)的摘要值索引。
這里,緩存區(qū)域具體可以是一張緩存表格,非易失性存儲介質(zhì)中設(shè)置有多個存儲分區(qū),為了方便描述,這里僅以非易失性存儲介質(zhì)包括存儲分區(qū)a和存儲分區(qū)b為例,且以存儲分區(qū)a對應(yīng)一個設(shè)定長度為4的數(shù)據(jù)鏈0001,存儲分區(qū)b對應(yīng)一個設(shè)定長度為4的數(shù)據(jù)鏈0010為例。
這里,各個存儲分區(qū)所分別對應(yīng)的摘要值索引可利用當(dāng)前存儲分區(qū)所對應(yīng)的數(shù)據(jù)鏈來命名。針對于每一個摘要值索引,在當(dāng)前摘要值索引所對應(yīng)的存儲分區(qū)中未存儲存儲數(shù)據(jù)時,摘要值索引為空;在當(dāng)前摘要值索引所對應(yīng)的存儲分區(qū)中存在至少一個存儲數(shù)據(jù)時,當(dāng)前摘要值索引中則包括當(dāng)前摘要值索引所對應(yīng)的存儲分區(qū)中存儲的各個存儲數(shù)據(jù)的摘要值,且前述各個存儲數(shù)據(jù)的摘要值按照由小到大的順序排列在當(dāng)前摘要值索引中。
步驟202,在采集到一個待處理數(shù)據(jù)a時,檢測緩存區(qū)域中是否存在與a相同的目標(biāo)緩存數(shù)據(jù)。
步驟203,當(dāng)緩存區(qū)域中不存在與待處理數(shù)據(jù)a相同的目標(biāo)緩存數(shù)據(jù)時,將待處理數(shù)據(jù)a作為緩存數(shù)據(jù)存儲至緩存區(qū)域。
這里,當(dāng)緩存區(qū)域中不存在已經(jīng)存儲的緩存數(shù)據(jù)時,緩存數(shù)據(jù)a可直接存儲到緩存區(qū)域中。當(dāng)且僅當(dāng)緩存區(qū)域中不存在與待處理數(shù)據(jù)a相同的目標(biāo)緩存數(shù)據(jù)時,才將待處理數(shù)據(jù)a作為緩存數(shù)據(jù)存儲至緩存區(qū)域;當(dāng)緩存區(qū)域中存在與待處理數(shù)據(jù)a相同的目標(biāo)緩存數(shù)據(jù)時,則釋放待處理數(shù)據(jù)a,無需將待處理數(shù)據(jù)a作為緩存數(shù)據(jù)存儲到緩存區(qū)域中,避免待處理數(shù)據(jù)a被重復(fù)存儲至非易失存儲介質(zhì)。
步驟204,檢測緩存區(qū)域的剩余存儲空間是否小于預(yù)設(shè)閾值,如果是,則執(zhí)行步驟205;否則,結(jié)束當(dāng)前流程。
步驟205,計(jì)算緩存數(shù)據(jù)a的摘要值。
應(yīng)當(dāng)理解的是,本發(fā)明實(shí)施例的各個步驟中僅針對待處理數(shù)據(jù)a進(jìn)行舉例說明,針對于緩存區(qū)域中的其它數(shù)據(jù),均可通過步驟205至步驟209中相同或相似的方法對其進(jìn)行相應(yīng)的處理。
本發(fā)明實(shí)施例中具體以計(jì)算出緩存數(shù)據(jù)a的摘要值是00010010為例。
步驟206,根據(jù)計(jì)算的摘要值及各個存儲分區(qū)分別對應(yīng)的數(shù)據(jù)鏈,確定緩存數(shù)據(jù)a所對應(yīng)的目標(biāo)存儲分區(qū),以及確定出緩存數(shù)據(jù)a所對應(yīng)的目標(biāo)摘要值索引。
這里,通過計(jì)算的摘要值的前4位所形成的二進(jìn)制數(shù)據(jù)鏈0001,確定出目標(biāo)存儲分區(qū)是對應(yīng)二進(jìn)制數(shù)據(jù)鏈為0001的存儲分區(qū)a;同時,可確定出目標(biāo)摘要值索引是被命名為0001的摘要值索引。
步驟207,查詢確定的目標(biāo)摘要值索引中是否存在計(jì)算的摘要值,如果是,則結(jié)束當(dāng)前流程;否則,執(zhí)行步驟208。
本發(fā)明實(shí)施例中,當(dāng)存儲分區(qū)a中未存儲存儲數(shù)據(jù)時,則被命名為0001的目標(biāo)摘要值索引中不存在摘要值,可將計(jì)算的摘要值00010010直接寫入被命名為為0001的目標(biāo)摘要值索引中。
這里以存儲分區(qū)a中已經(jīng)存儲了存儲數(shù)據(jù)b、c、d、e為例,且b、c、d、e分別對應(yīng)的摘要值為:00010011、00010001、00010111、00011111,具體以目標(biāo)摘要值索引中對存儲數(shù)據(jù)b、c、d、e分別對應(yīng)的摘要值以由小到大的順序排列為例,即確定的目標(biāo)存儲區(qū)域中存儲的摘要值依次為:00010001、00010011、00010111、00011111;在查詢目標(biāo)存儲區(qū)域中是否存在目標(biāo)摘要值與計(jì)算的摘要值相同時,可利用計(jì)算的摘要值與目標(biāo)摘要值索引中存儲的各個摘要值依次比較,比如,可比較出目標(biāo)摘要值索引中排序?yàn)?的摘要值00010001小于計(jì)算的摘要值00010010,排序?yàn)?的摘要值00010011大于計(jì)算的摘要值00010010,由于對應(yīng)排序在2之后的各個摘要值均大于排序?yàn)?的摘要值00010011,因此,無需將計(jì)算的摘要值與確定的目標(biāo)摘要值索引中排序?yàn)?、4的摘要值進(jìn)行比較則可確定出目標(biāo)摘要值索引中不存在目標(biāo)摘要值與計(jì)算的摘要值相同。
步驟208,將緩存數(shù)據(jù)a作為存儲數(shù)據(jù)存儲至目標(biāo)存儲分區(qū)。
步驟209,根據(jù)計(jì)算的摘要值的大小,將計(jì)算的摘要值插入到確定的目標(biāo)摘要索引中。
這里,則可將計(jì)算的摘要值索引插入到確定的目標(biāo)摘要值索引中,位于對飲排序?yàn)?的摘要值和對應(yīng)排序?yàn)?的摘要值之間,如此,形成的對應(yīng)于存儲分區(qū)a的摘要值索引中,各個摘要值排序?yàn)椋?0010001、00010010、00010011、00010111、00011111。
步驟210,清除緩存區(qū)域中存儲的各個緩存數(shù)據(jù)。
在針對緩存區(qū)域中存儲各個緩存數(shù)據(jù)均執(zhí)行上述205至209中相同或相似的步驟之后,則可清除緩存區(qū)域中存儲的各個緩存數(shù)據(jù),以便利用空閑的緩存區(qū)域?qū)罄m(xù)時間段內(nèi)采集的各個待處理數(shù)據(jù)再次進(jìn)行去重復(fù)處理。
通過本發(fā)明實(shí)施例的上述各個步驟,則可實(shí)現(xiàn)對待處理數(shù)據(jù)a進(jìn)行去重復(fù)處理,避免待處理數(shù)據(jù)a被重復(fù)存儲到非易失性存儲介質(zhì)中。
如圖3所示,本發(fā)明實(shí)施例提供了一種對數(shù)據(jù)進(jìn)行去重復(fù)處理的裝置,包括:
設(shè)置模塊301,用于在內(nèi)存中設(shè)置緩存區(qū)域,以及預(yù)先在非易失性存儲介質(zhì)中設(shè)置指定存儲區(qū)域;
檢測模塊302,用于在采集到一個待處理數(shù)據(jù)時,檢測所述緩存區(qū)域中是否存在與所述待處理數(shù)據(jù)相同的目標(biāo)緩存數(shù)據(jù);
緩存處理模塊303,用于當(dāng)所述緩存區(qū)域中不存在與所述待處理數(shù)據(jù)相同的目標(biāo)緩存數(shù)據(jù)時,將所述待處理數(shù)據(jù)作為緩存數(shù)據(jù)存儲至所述緩存區(qū)域;
存儲處理模塊304,用于檢測所述緩存區(qū)域的剩余存儲空間,在所述剩余存儲空間小于預(yù)設(shè)閾值時,將所述緩存區(qū)域中存儲的各個所述緩存數(shù)據(jù)分別作為存儲數(shù)據(jù)存儲至所述指定存儲區(qū)域,并清除所述緩存區(qū)域中存儲的各個所述緩存數(shù)據(jù)。
如圖4所示,本發(fā)明一個優(yōu)選實(shí)施例中,所述設(shè)置模塊301,用于預(yù)先在非易失性存儲介質(zhì)中設(shè)置包括至少一個存儲分區(qū)的指定存儲區(qū)域,其中,每一個所述存儲分區(qū)分別對應(yīng)一個設(shè)定長度的數(shù)據(jù)鏈;
則,所述存儲處理模塊304,包括:計(jì)算單元3041、確定單元3042和存儲處理單元3043;
所述計(jì)算單元3041,用于針對于所述緩存區(qū)域中存儲的每一個所述緩存數(shù)據(jù),計(jì)算所述緩存數(shù)據(jù)的摘要值;
所述確定單元3042,用于根據(jù)所述摘要值及各個所述存儲分區(qū)分別對應(yīng)的數(shù)據(jù)鏈,確定所述緩存數(shù)據(jù)所對應(yīng)的目標(biāo)存儲分區(qū);
所述存儲處理單元3043,用于當(dāng)所述目標(biāo)存儲分區(qū)中不存在與所述緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)時,將所述緩存數(shù)據(jù)作為存儲數(shù)據(jù)存儲至所述目標(biāo)存儲分區(qū)。
如圖4所示,本發(fā)明一個優(yōu)選實(shí)施例中,所述設(shè)置模塊301,進(jìn)一步用于根據(jù)各個所述存儲分區(qū)分別對應(yīng)的數(shù)據(jù)鏈設(shè)置各個所述存儲分區(qū)分別對應(yīng)的摘要值索引;
則,
所述確定單元3042,進(jìn)一步用于根據(jù)所述摘要值以及各個所述存儲分區(qū)分別對應(yīng)的數(shù)據(jù)鏈,確定所述緩存數(shù)據(jù)所對應(yīng)的目標(biāo)摘要值索引;
所述存儲處理單元3043,用于查詢所述目標(biāo)摘要索引中是否存在所述摘要值;當(dāng)所述目標(biāo)摘要索引中不存在所述摘要值時,將所述緩存數(shù)據(jù)作為存儲數(shù)據(jù)存儲至所述目標(biāo)存儲分區(qū),并將所述摘要值新增至所述目標(biāo)摘要索引。
如圖4所示,本發(fā)明一個優(yōu)選實(shí)施例中,所述存儲處理單元3043,用于根據(jù)所述摘要值的大小,將所述摘要值插入到所述目標(biāo)摘要索引中。
本發(fā)明一個實(shí)施例中,針對于每一個所述緩存數(shù)據(jù),當(dāng)前所述緩存數(shù)據(jù)的摘要值的前n個數(shù)據(jù)位所形成的數(shù)據(jù)鏈,與存儲當(dāng)前所述緩存數(shù)據(jù)的目標(biāo)存儲分區(qū)所對應(yīng)的數(shù)據(jù)鏈相同,其中,n為所述設(shè)定長度。
上述裝置內(nèi)的各單元之間的信息交互、執(zhí)行過程等內(nèi)容,由于與本發(fā)明方法實(shí)施例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實(shí)施例中的敘述,此處不再贅述。
本發(fā)明實(shí)施例提供了一種可讀介質(zhì),包括執(zhí)行指令,當(dāng)存儲控制器的處理器執(zhí)行所述執(zhí)行指令時,所述存儲控制器執(zhí)行本發(fā)明任意一個實(shí)施例中提供的方法。
本發(fā)明實(shí)施例提供了一種存儲控制器,包括:處理器、存儲器和總線;
所述處理器和所述存儲器通過所述總線連接;
所述存儲器,當(dāng)所述存儲控制器運(yùn)行時,所述處理器執(zhí)行所述存儲器存儲的所述執(zhí)行指令,以使所述存儲控制器執(zhí)行本發(fā)明任意一個實(shí)施例中提供的方法。
綜上所述,本發(fā)明各個實(shí)施例至少具有如下有益效果:
1、本發(fā)明一實(shí)施例中,由于在采集大量的待處理數(shù)據(jù)時,相同的待處理數(shù)據(jù)通常在時間上具有一定的連續(xù)性,通過在內(nèi)存中設(shè)置緩存區(qū)域,以及在非易失性存儲介質(zhì)中設(shè)置指定存儲區(qū)域,在每采集到一個待處理數(shù)據(jù)后,當(dāng)且僅當(dāng)在檢測到緩存區(qū)域中不存在與該待處理數(shù)據(jù)相同的目標(biāo)緩存數(shù)據(jù)時,才將該待處理數(shù)據(jù)作為緩存數(shù)據(jù)存儲至緩存區(qū)域,從而實(shí)現(xiàn)對一個連續(xù)的時間段內(nèi)采集的各個待處理數(shù)據(jù)進(jìn)行去重復(fù)處理,后續(xù)則可在檢測到緩存區(qū)域的剩余存儲空間小于預(yù)設(shè)閾值時,將緩存區(qū)域中存儲的各個緩存數(shù)據(jù)分別作為存儲數(shù)據(jù)存儲至指定存儲區(qū)域,并清除緩存區(qū)域中存儲的各個緩存數(shù)據(jù),以便利用空閑的緩存區(qū)域?qū)罄m(xù)時間段內(nèi)采集的各個待處理數(shù)據(jù)再次進(jìn)行去重復(fù)處理。綜上可見,本發(fā)明實(shí)施例提供的技術(shù)方案中,無需將各個待處理數(shù)據(jù)全部存儲至非易失性存儲介質(zhì)以對各個待處理數(shù)據(jù)進(jìn)行去重復(fù)處理,僅需要通過緩存區(qū)域?qū)Ω鱾€不同時間段內(nèi)分別連續(xù)采集的少量待處理數(shù)據(jù)進(jìn)行去重復(fù)處理則可,可更為快速的實(shí)現(xiàn)對大量待處理數(shù)據(jù)進(jìn)行去重復(fù)處理。
2、本發(fā)明一實(shí)施例中,通過將對應(yīng)摘要值前n個數(shù)據(jù)位相同的各個緩存數(shù)據(jù)作為存儲數(shù)據(jù)存儲到同一個存儲分區(qū)內(nèi),在后續(xù)過程中需要對已經(jīng)存儲至非易失性存儲介質(zhì)中進(jìn)行讀取,以確定非易失性存儲介質(zhì)中是否存在與緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)時,僅需要根據(jù)即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)的摘要值,讀取所對應(yīng)數(shù)據(jù)鏈與該摘要值相對應(yīng)的目標(biāo)存儲分區(qū)內(nèi)的各個存儲數(shù)據(jù)則可,無需讀取已經(jīng)被存儲至非易失性存儲介質(zhì)的全部存儲數(shù)據(jù),則可快速確定出非易失性存儲介質(zhì)中是否存在與即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)。
3、本發(fā)明一實(shí)施例中,各個存儲分區(qū)所分別對應(yīng)的摘要值索引具體可以由已經(jīng)被存儲至當(dāng)前存儲分區(qū)的各個存儲數(shù)據(jù)所分別對應(yīng)的摘要值構(gòu)成,當(dāng)需要確定非易失性存儲介質(zhì)中是否存在與即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)時,僅需要計(jì)算出即將被存儲至非易失存儲介質(zhì)的摘要值,然后根據(jù)該摘要值確定出對應(yīng)的目標(biāo)摘要值索引,進(jìn)而通過判斷目標(biāo)摘要值索引中是否存在與該摘要值相同的目標(biāo)摘要值,來確定非易失性存儲介質(zhì)中是否存在與即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)。綜上可見,無需讀取已經(jīng)被存儲至相應(yīng)目標(biāo)存儲分區(qū)的各個存儲數(shù)據(jù),可更為快速的確定出非易失性存儲介質(zhì)中是否存在與即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)。
4、本發(fā)明一實(shí)施例中,當(dāng)且僅當(dāng)確定出非易失性存儲介質(zhì)中不存在與即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)相同的目標(biāo)存儲數(shù)據(jù)時,才將即將被存儲至非易失性存儲介質(zhì)的緩存數(shù)據(jù)作為存儲數(shù)據(jù)存儲至非易失性存儲介質(zhì)中相應(yīng)的存儲分區(qū),確保非易失性存儲介質(zhì)中不會存儲相同的存儲數(shù)據(jù)。
5、本發(fā)明一實(shí)施例中,摘要值索引中的各個摘要值具體可以按照由小到大或由大大小的順序進(jìn)行排序,在針對計(jì)算的摘要值與確定的摘要值索引中的各個摘要值進(jìn)行比較時,無需將計(jì)算的摘要值與確定的目標(biāo)摘要值索引中的各個摘要值進(jìn)行逐一比較則可確定出目標(biāo)摘要值索引中是否存在與該摘要值相同的目標(biāo)摘要值。
需要說明的是,在本文中,諸如第一和第二之類的關(guān)系術(shù)語僅僅用來將一個實(shí)體或者操作與另一個實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個〃·····”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同因素。
最后需要說明的是:以上所述僅為本發(fā)明的較佳實(shí)施例,僅用于說明本發(fā)明的技術(shù)方案,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。