數(shù)據(jù)去重方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明實施例涉及計算機技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)去重方法及裝置。
【背景技術(shù)】
[0002] 隨著計算機和通信技術(shù)的發(fā)展,網(wǎng)絡(luò)的應(yīng)用迅速普及,已日益成為成活中不可或 缺的工具。與此同時,為了網(wǎng)絡(luò)安全和服務(wù)的需要,需要對網(wǎng)絡(luò)數(shù)據(jù)進行采集分析。由于網(wǎng) 絡(luò)設(shè)計和采集方案的原因,采集到的數(shù)據(jù)往往有大量重復(fù)數(shù)據(jù),這對后續(xù)的存儲和分析造 成重大影響。因此,實際應(yīng)用中會在存儲和分析前對數(shù)據(jù)進行去重操作。
[0003] 現(xiàn)有技術(shù)中常用的數(shù)據(jù)去重方法為雙哈希法,在雙哈希法去重處理過程中,主要 包括數(shù)據(jù)處理流程和輔助處理流程,數(shù)據(jù)處理流程主要包括如下步驟:
[0004] 步驟101a、創(chuàng)建兩張相同的hash表,命名為哈希表1 (hi)和哈希表2(h2)。
[0005] 步驟102a、當(dāng)t時間有數(shù)據(jù)d到來時,先在hi和h2中查找是否存在d的MD5值, 如果存在,則執(zhí)行步驟103,如果不存在,則執(zhí)行步驟104。
[0006] 步驟103a、確定d為重復(fù)數(shù)據(jù),將其丟棄。
[0007] 步驟104a、將MD5值插入hi和h2中。
[0008] 輔助處理流程主要包括如下步驟:
[0009] 步驟101b、初始化hi和h2。
[0010] 步驟l〇2b、當(dāng)時間到達超時時間的二分之一時,清空hi。
[0011] 步驟l〇3b、當(dāng)時間到達超時時間時,清空h2清空。重復(fù)循環(huán)上述步驟。
[0012] 但是,上述雙哈希算法操作以下不足:
[0013] 1、相同的數(shù)據(jù)會同時保存到hi和h2中,造成資源的浪費;
[0014] 2、需要額外的輔助線程對hi和h2中的數(shù)據(jù)進行清空,造成系統(tǒng)資源浪費。
【發(fā)明內(nèi)容】
[0015] 有鑒于此,本發(fā)明實施例提供一種數(shù)據(jù)去重方法及裝置,以優(yōu)化現(xiàn)有的數(shù)據(jù)去重 方法,只需要存儲一份數(shù)據(jù)就可完成去重,節(jié)約了系統(tǒng)資源。
[0016] 在第一方面,本發(fā)明實施例提供了一種數(shù)據(jù)去重方法,包括:
[0017] 向采集設(shè)備發(fā)送數(shù)據(jù)采集請求,以使所述采集設(shè)備從網(wǎng)絡(luò)上采集數(shù)據(jù),所述數(shù)據(jù) 為網(wǎng)絡(luò)數(shù)據(jù)包或通信信令;
[0018] 接收所述采集設(shè)備發(fā)送的第一數(shù)據(jù);
[0019] 檢測緩存中是否存有所述第一數(shù)據(jù),若存有所述第一數(shù)據(jù),則將所述第一數(shù)據(jù)丟 棄,若未存有所述第一數(shù)據(jù),則將所述第一數(shù)據(jù)插入緩存。
[0020] 在第二方面,本發(fā)明實施例提供了數(shù)據(jù)去重裝置,包括:
[0021] 發(fā)送模塊,用于向采集設(shè)備發(fā)送數(shù)據(jù)采集請求,以使所述采集設(shè)備從網(wǎng)絡(luò)上采集 數(shù)據(jù),所述數(shù)據(jù)為網(wǎng)絡(luò)數(shù)據(jù)包或通信信令;
[0022] 接收模塊,用于接收所述采集設(shè)備發(fā)送的第一數(shù)據(jù);
[0023] 檢測模塊,用于檢測緩存中是否存有所述第一數(shù)據(jù);
[0024] 丟棄模塊,用于若檢測模塊檢測緩存中存有所述第一數(shù)據(jù),則將所述第一數(shù)據(jù)丟 棄;
[0025] 插入模塊,用于若檢測模塊檢測緩存中未存有所述第一數(shù)據(jù),則將所述第一數(shù)據(jù) 插入緩存。
[0026] 本發(fā)明實施例通過向采集設(shè)備發(fā)送數(shù)據(jù)采集請求,以使所述采集設(shè)備從網(wǎng)絡(luò)上采 集數(shù)據(jù),并接收所述采集設(shè)備發(fā)送的第一數(shù)據(jù),檢測緩存中是否存有所述第一數(shù)據(jù),若存有 所述第一數(shù)據(jù),則將所述第一數(shù)據(jù)丟棄,若未存有所述第一數(shù)據(jù),則將所述第一數(shù)據(jù)插入緩 存,只需要存儲一份數(shù)據(jù)就可完成去重,不僅能夠達到數(shù)據(jù)去重的目的,而且節(jié)約了系統(tǒng)資 源。
【附圖說明】
[0027] 圖1是本發(fā)明第一實施例提供的一種數(shù)據(jù)去重方法的流程示意圖;
[0028] 圖2是本發(fā)明第二實施例提供的一種數(shù)據(jù)去重方法的流程示意圖;
[0029] 圖3是本發(fā)明第三實施例提供的一種數(shù)據(jù)去重方法的流程示意圖;
[0030] 圖4是本發(fā)明第四實施例提供的一種數(shù)據(jù)去重裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0031] 為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖對本發(fā)明具體實 施例作進一步的詳細描述??梢岳斫獾氖?,此處所描述的具體實施例僅僅用于解釋本發(fā)明, 而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān) 的部分而非全部內(nèi)容。
[0032] 本發(fā)明實施例的方法可以由數(shù)據(jù)去重裝置來執(zhí)行,該裝置可通過硬件和/或軟件 的方式實現(xiàn)。
[0033] 第一實施例
[0034] 圖1是本發(fā)明第一實施例提供的一種數(shù)據(jù)去重方法的流程示意圖,如圖1所示,包 括如下步驟:
[0035] 步驟101、向采集設(shè)備發(fā)送數(shù)據(jù)采集請求,以使所述采集設(shè)備從網(wǎng)絡(luò)上采集數(shù)據(jù), 所述數(shù)據(jù)為網(wǎng)絡(luò)數(shù)據(jù)包或通信信令。
[0036] 其中,數(shù)據(jù)采集請求中包含采集數(shù)據(jù)的目標地址,例如IP地址,采集設(shè)備根據(jù)所 述目標地址從網(wǎng)絡(luò)上采集數(shù)據(jù)。其中,所述采集數(shù)據(jù)可以為網(wǎng)絡(luò)數(shù)據(jù)包、或通信信令、或數(shù) 據(jù)文件。
[0037] 其中,數(shù)據(jù)采集請求中可以包含多個不同的目標地址,采集設(shè)備根據(jù)所述目標地 址依次從不同的網(wǎng)絡(luò)上獲取數(shù)據(jù)。
[0038] 步驟102、接收所述采集設(shè)備發(fā)送的第一數(shù)據(jù)。
[0039] 這里,為了區(qū)分本發(fā)明實施例中前后出現(xiàn)的不同的采集數(shù)據(jù),將在本文中首次出 現(xiàn)的采集數(shù)據(jù)稱為第一數(shù)據(jù),將后續(xù)出現(xiàn)的采集數(shù)據(jù)稱為第二數(shù)據(jù)。
[0040] 其中,第一數(shù)據(jù)為采集數(shù)據(jù)的一部分,可以為一個數(shù)據(jù),還可以由多個數(shù)據(jù)組成, 這里,優(yōu)選為一個數(shù)據(jù)。在接收所述采集設(shè)備發(fā)送的第一數(shù)據(jù)之后,將所述第一數(shù)據(jù)放置在 緩存中。
[0041] 步驟103、檢測緩存中是否存有所述第一數(shù)據(jù)。
[0042] 具體的,檢測緩存中是否存有所述第一數(shù)據(jù),若緩存中存有所述第一數(shù)據(jù),則執(zhí)行 步驟104,若緩存中未存有所述第一數(shù)據(jù),則步驟105。
[0043] 步驟104、將所述第一數(shù)據(jù)丟棄。
[0044] 具體的,若緩存中存有所述第一數(shù)據(jù),則說明該第一數(shù)據(jù)為重復(fù)數(shù)據(jù),將其丟棄。
[0045] 步驟105、將所述第一數(shù)據(jù)插入緩存。
[0046] 具體的,若緩存中存有所述第一數(shù)據(jù),則說明該第一數(shù)據(jù)為非重復(fù)數(shù)據(jù),將其插入 緩存,以備與后續(xù)接收的采集數(shù)據(jù)進行比較。
[0047] 示例性的,所述檢測緩存中是否存有所述第一數(shù)據(jù),包括:
[0048] 檢測緩存中的第一數(shù)據(jù)結(jié)構(gòu)中是否存有所述第一數(shù)據(jù),所述第一數(shù)據(jù)結(jié)構(gòu)用來保 存數(shù)據(jù)和指向第二數(shù)據(jù)結(jié)構(gòu)中與所述數(shù)據(jù)對應(yīng)節(jié)點的指針,所述第二數(shù)據(jù)結(jié)構(gòu)用來保存指 向第一數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)的指針和數(shù)據(jù)到達緩存的時間;
[0049] 所述將所述第一數(shù)據(jù)丟棄之后,還包括:
[0050] 更新所述第二數(shù)據(jù)結(jié)構(gòu)中所述第一數(shù)據(jù)對應(yīng)的數(shù)據(jù)到達緩存的時間;
[0051] 所述將所述第一數(shù)據(jù)插入緩存,包括:
[0052] 將所述第一數(shù)據(jù)插入第一數(shù)據(jù)結(jié)構(gòu)中,并將所述第一數(shù)據(jù)對應(yīng)的數(shù)據(jù)到達緩存的 時間插入第二數(shù)據(jù)結(jié)構(gòu)中。
[0053] 例如,可以在緩存中設(shè)置數(shù)據(jù)結(jié)構(gòu),其中第一數(shù)據(jù)結(jié)構(gòu)用來保存數(shù)據(jù)和指向第二 數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)對應(yīng)時間節(jié)點的指針,第二數(shù)據(jù)結(jié)構(gòu)用來保存指向數(shù)據(jù)的指針及數(shù)據(jù)到 達緩存的時間,其中,數(shù)據(jù)到達緩存的時間按照先后順序組織排序,以保證后續(xù)掃描再緩