【技術實現步驟摘要】
基于離散型的雙指紋存儲布谷鳥過濾器的數據處理方法
[0001]本專利技術涉及計算機信息表示與信息檢索領域,具體涉及一種基于離散型的雙指紋存儲布谷鳥過濾器的數據處理方法。
技術介紹
[0002]“正確判定一個成員是否在一個巨大的集合當中”、“在一個巨大的集合當中能否正確刪除一個成員”和“在一個巨大的集合當中能否成功插入一個成員”,這三個問題是三種常見的數據處理問題,特別是在滿足存儲空間開銷低、快速查詢等幾個關鍵需求下處理以上問題,這幾個問題的實現就成了一個巨大的挑戰。目前研究人員普遍采用布隆過濾器(Bloom Filter)、布隆過濾器及其變種、布谷鳥過濾器(Cuckoo Filter)以及布谷鳥過濾器的變種等來解決以上問題,但是對于布隆過濾器(Bloom Filter)包括其變種來說,已經無法再適應和解決以上問題。例如,標準的布隆過濾器不支持集合成員的刪除操作,計數布隆過濾器雖然支持成員刪除,但是其會導致空間開銷急劇增加。對于布谷鳥過濾器(Cuckoo Filter),它是一種基于布谷鳥hash算法實現的過濾器,本質上是存儲了存儲項哈希值的布谷鳥哈希表。它克服了布隆過濾器不支持成員刪除的缺點,同時顯著降低了布隆過濾器變種出現的存儲開銷高的問題。但是標準的布谷鳥過濾器存在無法適應高速動態的數據變換,且容易出現裝填循環問題和刪除數據時Hash沖突所引起誤刪等問題。現有技術中,布谷鳥過濾變種所存在的問題是,無法自適應動態高速的數據變換,存儲空間在生成后即無法改變,雖然有方案提出了通過指針的形式動態生成相同的布谷鳥過濾器來裝 ...
【技術保護點】
【技術特征摘要】
1.一種基于離散型的雙指紋存儲布谷鳥過濾器的數據處理方法,其特征在于,包括以下步驟:S1、建立基于離散型的雙指紋存儲布谷鳥過濾器的主索引表并初始化;S2、獲取當前指令類型,若指令類型為數據插入,則進入步驟S3;若指令類型為數據查詢,則進行數據查詢;若指令類型為數據刪除,則進行數據刪除;S3、計算待插入數據成員的指紋信息,并選取指紋信息的前k位作為前置指紋,選取指紋信息的后k
?
1位作為后置指紋;S4、判斷待插入數據成員的指紋信息是否在雙指紋存儲布谷鳥過濾器中,若是則結束此次數據插入并進入步驟S13;否則進入步驟S5;S5、計算待插入數據成員的兩個候選桶的位置,并選中候選桶中的一個桶作為待插入候選桶;S6、判斷待插入數據成員對應的待插入候選桶的主索引指針所指的主索引儲存的地址是否為空,若是則進入步驟S7;否則送入步驟S8;S7、生成主索引存儲單元,將重定位標識值置0,將步驟S3中選取的前置指紋和后置指紋填入主索引存儲單元中,將對應候選桶的主索引指針指向該主索引存儲單元,并結束此次數據插入并進入步驟S13;S8、判斷待插入數據成員對應的待插入候選桶的主索引儲存的地址所指是否為主索引存儲單元,若是進入步驟S9,否則進入步驟S10;S9、保留該主索引存儲單元,生成一級索引表并將其0號位地址置為NULL,將對應候選桶的主索引指針指向一級索引表;生成一級索引表的兩個次級索引存儲單元,并將一級索引表中兩個待插入數據的次級索引存儲單元地址存儲位分別指向生成的兩個次級索引存儲單元,同時將兩者的重定位標識值均置0,將待插入數據成員的前置指紋和保留的主索引存儲單元中的前置指紋按順序插入一級索引表的前置指紋位中,以及將待插入數據成員的后置指紋和保留的主索引存儲單元中的后置指紋按順序插入一級索引表的生成的兩個次級索引存儲單元中,結束插入后,注銷保留的主索引存儲單元,同時將一級索引表的剩余地址數
?
2;結束此次數據插入并進入步驟S13;S10、判斷當前索引表的剩余地址數是否為0,若是則進入步驟S12;否則進入步驟S11;S11、生成當前索引表的次級索引存儲單元,將其重定位標識值置0,并將當前索引表中待插入數據的次級索引存儲單元地址存儲位指向生成的次級索引存儲單元,按順序將待插入數據成員的前置指紋插入當前索引表的前置指紋位中,以及按順序將待插入數據成員的后置指紋插入當前索引表生成的次級索引存儲單元中,并將該索引表的剩余地址數
?
1,結束此次數據插入并進入步驟S13;S12、判斷是否有下一級索引表,若是則進入步驟S10,否則進行重定位操作并進入步驟S13;S13、判斷是否繼續獲取當前指令類型,若是則返回步驟S2,否則結束布谷鳥過濾器的指紋過濾。2.根據權利要求1所述的基于離散型的雙指紋存儲布谷鳥過濾器的數據處理方法,其特征在于:步驟S1初始化時,整個布谷鳥過濾器系統只存在一張地址位為空的索引表,即主索引表;主索引表地址所指存儲的最小單位為主索引存儲單元,其由前置指紋位、后置指紋
存儲位和重定位標識值組成;兩個存儲位的占位相同,重定位標識值占位1個bit且具有0、1和n三種狀態;其中0代表新插入指紋,1代表此存儲單元發生過1次重定位操作,n代表該存儲單元發生過n次重定位操作。3.根據權利要求1所述的基于離散型的雙指紋存儲布谷鳥過濾器的數據處理方法,其特征在于:一級索引表由剩余地址數存儲位、0號地址位和次級索引表存儲位組成;其中剩余地址數存儲位存儲著該級索引表次級索引表存儲位的剩余數量,其初始化為n,且不包括0號地址位;次級索引表存儲位包括次級索引表的前置指紋位和次級索引存儲單元地址存儲位,次級索引存儲單元地址存儲位指向該級索引表對應生成的次級索引存儲單元,且以倒序的原則從n號位開始依次存儲,直到1號位被使用時,該索引表的剩余地址數為0,即滿載,滿載則插入下一級索引表,且下一級索引表的結構與一級索引表相同;0號地址位初始化時為NULL,當具有下一級索引表時,該位存儲的是下一級索引表的存儲地址。4.根據權利要求1所述的基于離散型的雙指紋存儲布谷鳥過濾器的數據處理方法,其特征在于:步驟S3的k小于等于hash函數計算出的待插入數據成員ξ
X
的指紋信息的總位數的1/2。5.根據權利要求1所述的基于離散型的雙指紋存儲布谷鳥過濾器的數據處理方法,其特征在于:步驟S4中待插入數據成員ξ
X
的兩個候選桶位置χ和γ分別為χ=h1(ξ
X
)和其中,為異或運算;f
X
為待插入數據成員的指紋信息;h1(
·
)為hash函數;一個數據成員擁有的兩個候選桶,其數據信息只儲存在其中一個候選桶中。6.根據權利要求1所述的基于離散型的雙指紋存儲布谷鳥過濾器的數據處理方法,其特征在于,步驟S12中重定位操作的具體方法包括以下子步驟:S12
?
1、生成一個格式為主索引存儲單元的中間變量temp,并隨機將原本一級索引表中的一個已有的數據成員的指紋信息全部填入中間變量temp中,結束填入后,置空該數據成員的次級索引表存儲位信息并注銷原本的次級索引存儲單元;S12
?
2、在一級索引表中生成一個新的次級索引存儲單元,并將其重定位標識值置為0,并將一級索引表置空的次級索引存儲單元地址存儲位指向一級索引表新的次級索引存儲單元;按順序將待插入數據成員ξ
X
的前置指紋插入一級索引表置空的前置指紋位中,以及按順序將待插入數據成員ξ
X
的后置指紋插入一級索引表新的次級索引存儲單元中;S12
?
3、判斷中間變量temp的重定位標識值是否為0,若是則進入步驟S12
?
4;否則進入步驟S12
?
11;S12
?
4、計算中間變量temp的另一個候選桶位置,判斷該候選桶的主索引指針所指的主索引存儲的地址是否為空,若是則進入步驟S12
?
5;否則進入步驟S12
?
6;S12
?
5、將中間變量temp的重定位標識值置為1,同時將該候選桶的主索引指針指向中間變量temp,并結束重定位操作并進入步驟S14;S12
?
6、判斷中間變量temp的另一個候選桶的主索引指針所指是否為主索引存儲單元,若是則進入步驟S12
?
7;否則進入步驟S12
?
9;S12
?
7、保留該主索引存儲單元,生成一級索引表并將其0號位地址置為NULL,并將對應候選桶的主索引指針指向該一級索引表;S12
?
8、生成一級索引表的兩個次級索引存儲單元,一個將重定位標識值置為0,一個將重定位標識值置為1;將中間變量temp的前置指紋和保留的主索引存儲單元的前置指紋按
順序插入一級索引表待插入數據的次級索引表存儲位中的前置指紋位中,同時將插入中間變量temp的前置指紋的次級索引表存儲位中的次級索引存儲單元地址存儲位指向重定位標識值置為1的...
【專利技術屬性】
技術研發人員:鄧顯輝,李斌勇,趙蘭,蔣娜,張小輝,宋學江,
申請(專利權)人:成都探碼科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。