防空緩存方法和裝置制造方法
【專利摘要】本發(fā)明涉及一種防空緩存方法和系統(tǒng)。所述防空緩存方法包括以下步驟:將數(shù)據(jù)標(biāo)識劃分為多個(gè)區(qū)間;統(tǒng)計(jì)每個(gè)區(qū)間中具有預(yù)定功能的數(shù)據(jù)標(biāo)識的密集度;根據(jù)所述每個(gè)區(qū)間的密集度分別配置相應(yīng)的壓縮比,以將每個(gè)區(qū)間中壓縮比數(shù)量的數(shù)據(jù)標(biāo)識對應(yīng)一位。上述防空緩存方法和系統(tǒng),通過將數(shù)據(jù)標(biāo)識分區(qū)并根據(jù)每個(gè)區(qū)的密集度配置相應(yīng)的壓縮比,使得壓縮比數(shù)量的數(shù)據(jù)標(biāo)識對應(yīng)一位存儲空間,節(jié)省了存儲空間,且因壓縮比數(shù)量的數(shù)據(jù)標(biāo)識對應(yīng)一位存儲空間,并非如布隆過濾器中每個(gè)數(shù)據(jù)標(biāo)識由隨機(jī)的多個(gè)位表示其存在而不能刪除任一位,采用壓縮比對應(yīng)的一位存儲空間可以進(jìn)行相應(yīng)的變更操作。
【專利說明】防空緩存方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫查詢技術(shù),特別是涉及一種防空緩存方法和裝置。
【背景技術(shù)】
[0002]數(shù)據(jù)庫中記錄有大量數(shù)據(jù),為了查詢某一條數(shù)據(jù)在數(shù)據(jù)庫中是否存在,需要進(jìn)行一次遍歷查詢,該遍歷查詢的開銷較大,耗費(fèi)時(shí)間較長。若查詢的該用戶信息不存在,也需進(jìn)行一次遍歷查詢,如此會浪費(fèi)大量的時(shí)間以及耗費(fèi)資源。
[0003]為此,若在內(nèi)存中用防空緩存記錄每條數(shù)據(jù)是否存在,只對存在防空緩存中的數(shù)據(jù)才到數(shù)據(jù)庫中查詢,可有效降低空記錄查詢帶來的開銷。傳統(tǒng)的防空緩存技術(shù)一般采用位圖或者布隆過濾器對信息構(gòu)建數(shù)據(jù)防空緩存,以達(dá)到減少大量底層數(shù)據(jù)庫空查詢,減少資源消耗的目的。其中,位圖是指在連續(xù)的存儲空間上,每一位有1或0兩個(gè)值,表示某一目標(biāo)的兩種不同狀態(tài),如圖1所示,一個(gè)號碼的狀態(tài)采用一位存儲空間表示。布隆過濾器是一個(gè)有III位的位數(shù)組,初始全為0,并有&個(gè)各自獨(dú)立的哈希函數(shù),如圖2所示,一個(gè)號碼的狀態(tài)采用多位存儲空間一起表示。
[0004]然而,采用位圖構(gòu)建防空緩存時(shí),在連續(xù)的存儲空間中,每一位表示一條數(shù)據(jù)是否被創(chuàng)建,如此占用空間過大,增加了內(nèi)存負(fù)擔(dān);采用布隆過濾器構(gòu)建防空緩存時(shí),在連續(xù)的存儲空間中,每一條數(shù)據(jù)通過&個(gè)哈希函數(shù),對應(yīng)到&個(gè)不同的位上,這些位共同表示了該條數(shù)據(jù)列表的狀態(tài),如全為1表示該數(shù)據(jù)列表為非空,不全為1表示該數(shù)據(jù)列表為空,而布隆過濾器只支持寫入,無法刪除。
【發(fā)明內(nèi)容】
[0005]基于此,有必要提供一種能減少空間開銷且支持?jǐn)?shù)據(jù)變更的防空緩存方法。
[0006]此外,還有必要提供一種能減少空間開銷且支持?jǐn)?shù)據(jù)變更的防空緩存裝置。
[0007]—種防空緩存方法,包括以下步驟:
[0008]將數(shù)據(jù)標(biāo)識劃分為多個(gè)區(qū)間;
[0009]統(tǒng)計(jì)每個(gè)區(qū)間中具有預(yù)定功能的數(shù)據(jù)標(biāo)識的密集度;
[0010]根據(jù)所述每個(gè)區(qū)間的密集度分別配置相應(yīng)的壓縮比,以將每個(gè)區(qū)間中壓縮比數(shù)量的數(shù)據(jù)標(biāo)識對應(yīng)一位。
[0011]一種防空緩存裝置,包括:
[0012]劃分模塊,用于將數(shù)據(jù)標(biāo)識劃分為多個(gè)區(qū)間;
[0013]統(tǒng)計(jì)模塊,用于統(tǒng)計(jì)每個(gè)區(qū)間中具有預(yù)定功能的數(shù)據(jù)標(biāo)識的密集度;
[0014]配置模塊,用于根據(jù)所述每個(gè)區(qū)間的密集度分別配置相應(yīng)的壓縮比,以將每個(gè)區(qū)間中壓縮比數(shù)量的數(shù)據(jù)標(biāo)識對應(yīng)一位。
[0015]上述防空緩存方法和裝置,通過將數(shù)據(jù)標(biāo)識分區(qū)并根據(jù)每個(gè)區(qū)的密集度配置相應(yīng)的壓縮比,使得壓縮比數(shù)量的數(shù)據(jù)標(biāo)識對應(yīng)一位存儲空間,節(jié)省了存儲空間,且因壓縮比數(shù)量的數(shù)據(jù)標(biāo)識對應(yīng)一位存儲空間,并非如布隆過濾器中每個(gè)數(shù)據(jù)標(biāo)識由隨機(jī)的多個(gè)位表示其存在而不能刪除任一位,采用壓縮比對應(yīng)的一位存儲空間可以進(jìn)行相應(yīng)的變更操作,不會影響其他數(shù)據(jù)標(biāo)識的狀態(tài)表示。
【專利附圖】
【附圖說明】
[0016]圖1為位圖方式表示一個(gè)數(shù)據(jù)標(biāo)識的狀態(tài)示意圖;
[0017]圖2為布隆過濾器表示一個(gè)數(shù)據(jù)標(biāo)識的狀態(tài)示意圖;
[0018]圖3為一個(gè)實(shí)施例中防空緩存方法的流程示意圖;
[0019]圖4為一個(gè)實(shí)施例中防空緩存方法中執(zhí)行操作的流程示意圖;
[0020]圖5為一個(gè)實(shí)施例中讀取操作的流程示意圖;
[0021]圖6為一個(gè)實(shí)施例中寫入操作的流程示意圖;
[0022]圖7為一個(gè)實(shí)施例中刪除操作的流程示意圖;
[0023]圖8為一個(gè)實(shí)施例中防空緩存裝置的內(nèi)部結(jié)構(gòu)示意圖;
[0024]圖9為另一個(gè)實(shí)施例中防空緩存裝置的內(nèi)部結(jié)構(gòu)示意圖;
[0025]圖10為一個(gè)實(shí)施例中位置確定模塊的內(nèi)部結(jié)構(gòu)示意圖;
[0026]圖11為另一個(gè)實(shí)施例中位置確定模塊的內(nèi)部結(jié)構(gòu)示意圖;
[0027]圖12為另一個(gè)實(shí)施例中位置確定模塊的內(nèi)部結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0028]下面結(jié)合具體的實(shí)施例及附圖對防空緩存方法和裝置的技術(shù)方案進(jìn)行詳細(xì)的描述,以使其更加清楚。
[0029]如圖3所示,在一個(gè)實(shí)施例中,一種防空緩存方法,包括以下步驟:
[0030]步驟S102,將數(shù)據(jù)標(biāo)識劃分為多個(gè)區(qū)間。
[0031]具體的,數(shù)據(jù)標(biāo)識是用于區(qū)分?jǐn)?shù)據(jù)唯一性的標(biāo)志,例如即時(shí)通訊帳號、學(xué)號、銀行卡號、員工工號等,但不限于此。本實(shí)施例中,數(shù)據(jù)標(biāo)識為即時(shí)通訊帳號。將即時(shí)通訊帳號按照號碼順序劃分為3個(gè)區(qū)間,例如將10000至9999999劃分為一區(qū)間,10000000至2099999999劃為一區(qū)間,21億至42億劃為一區(qū)間。此外,數(shù)據(jù)標(biāo)識為學(xué)號時(shí),可將I至999劃為一區(qū)間,1000至2999劃為一區(qū)間等。
[0032]步驟S104,統(tǒng)計(jì)每個(gè)區(qū)間中具有預(yù)定功能的數(shù)據(jù)標(biāo)識的密集度。
[0033]具體的,預(yù)定功能是指數(shù)據(jù)標(biāo)識所具有的共同的屬性。本實(shí)施例中,數(shù)據(jù)標(biāo)識為即時(shí)通訊帳號時(shí),其中選擇開啟視頻功能作為預(yù)定功能,統(tǒng)計(jì)開啟視頻功能的即時(shí)通訊帳號的密集度,密集度可通過計(jì)算區(qū)間內(nèi)的開啟視頻功能的即時(shí)通訊帳號的個(gè)數(shù)與該區(qū)間內(nèi)總的即時(shí)通訊帳號的個(gè)數(shù)的比得到,例如計(jì)算得到密集度為80%或30%等。
[0034]步驟S106,根據(jù)所述每個(gè)區(qū)間的密集度分別配置相應(yīng)的壓縮比,以將每個(gè)區(qū)間中壓縮比數(shù)量的數(shù)據(jù)標(biāo)識對應(yīng)一位。
[0035]具體的,計(jì)算得到每個(gè)區(qū)間的密集度后,可將區(qū)間分為高密度區(qū)間、中密度區(qū)間和低密度區(qū)間,可根據(jù)不同的需要設(shè)定劃分基準(zhǔn),例如預(yù)先設(shè)定密集度超過80%的區(qū)間為高密度區(qū)間,密集度小于30%的為低密度區(qū)間,密集度大于等于30%小于等于80%為中密度區(qū)間。再對每個(gè)區(qū)間配置相應(yīng)的壓縮比,壓縮比即為將相鄰的壓縮比數(shù)量的數(shù)據(jù)標(biāo)識對應(yīng)同一位,即同一位存儲空間表示壓縮比數(shù)量的數(shù)據(jù)標(biāo)識的存在狀態(tài)。該壓縮比可根據(jù)誤判率來調(diào)整,在使用內(nèi)存空間固定的情況下,調(diào)整各區(qū)間壓縮比,達(dá)到較好的壓縮率。密集度越低,壓縮比越大。
[0036]如表1所示,為劃分的區(qū)間及對應(yīng)的壓縮比。區(qū)間10000~9999999密集度為中密度,壓縮比為3:1,區(qū)間10000000~2099999999密集度為高密度,壓縮比為2:1,區(qū)間21億~42億密集度為低密度,壓縮比為4:1。
[0037]表1
[0038]
【權(quán)利要求】
1.一種防空緩存方法,包括以下步驟: 將數(shù)據(jù)標(biāo)識劃分為多個(gè)區(qū)間; 統(tǒng)計(jì)每個(gè)區(qū)間中具有預(yù)定功能的數(shù)據(jù)標(biāo)識的密集度; 根據(jù)所述每個(gè)區(qū)間的密集度分別配置相應(yīng)的壓縮比,以將每個(gè)區(qū)間中壓縮比數(shù)量的數(shù)據(jù)標(biāo)識對應(yīng)一位。
2.根據(jù)權(quán)利要求1所述的防空緩存方法,其特征在于,在所述根據(jù)所述每個(gè)區(qū)間的密集度分別配置相應(yīng)的壓縮比,以將每個(gè)區(qū)間中壓縮比數(shù)量的數(shù)據(jù)標(biāo)識對應(yīng)一位的步驟之后,還包括步驟: 獲取對目標(biāo)數(shù)據(jù)標(biāo)識的操作請求; 獲取所述操作請求中的目標(biāo)數(shù)據(jù)標(biāo)識所在的區(qū)間及所在區(qū)間內(nèi)的相應(yīng)位置; 對所述區(qū)間內(nèi)的相應(yīng)位置執(zhí)行對應(yīng)的操作。
3.根據(jù)權(quán)利要求2所述的防空緩存方法,其特征在于,所述操作請求為讀取操作時(shí),所述方法包括: 獲取對目標(biāo)數(shù)據(jù)標(biāo)識的讀取操作; 獲取所述讀取操作中的目標(biāo)數(shù)據(jù)標(biāo)識所在的區(qū)間及所在區(qū)間內(nèi)的相應(yīng)位置; 讀取所述區(qū)間內(nèi)的相應(yīng)位置上的值。
4.根據(jù)權(quán)利要求3所述的防空緩存方法,其特征在于,所述獲取所述讀取操作中的目標(biāo)數(shù)據(jù)標(biāo)識所在的區(qū)間及所在區(qū)間內(nèi)的相應(yīng)位置的步驟包括: 判斷所述讀取操作中的目標(biāo)數(shù)據(jù)標(biāo)識所在的區(qū)間,并獲取所述區(qū)間的首位數(shù)據(jù)標(biāo)識及壓縮比; 將所述目標(biāo)數(shù)據(jù)標(biāo)識減去所述首位數(shù)據(jù)標(biāo)識,再將所述差除以所述壓縮比,得到所述目標(biāo)數(shù)據(jù)標(biāo)識在所述區(qū)間內(nèi)的相應(yīng)位置。
5.根據(jù)權(quán)利要求2所述的防空緩存方法,其特征在于,所述操作請求為寫入操作時(shí),所述方法包括: 獲取對目標(biāo)數(shù)據(jù)標(biāo)識的寫入操作; 獲取所述寫入操作中的目標(biāo)數(shù)據(jù)標(biāo)識所在的區(qū)間及所在區(qū)間內(nèi)的相應(yīng)位置; 將所述區(qū)間內(nèi)的相應(yīng)位置上的值置為第一預(yù)設(shè)值。
6.根據(jù)權(quán)利要求5所述的防空緩存方法,其特征在于,所述獲取所述寫入操作中的目標(biāo)數(shù)據(jù)標(biāo)識所在的區(qū)間及所在區(qū)間內(nèi)的相應(yīng)位置的步驟包括: 判斷所述寫入操作中的目標(biāo)數(shù)據(jù)標(biāo)識所在的區(qū)間,并獲取所述區(qū)間的首位數(shù)據(jù)標(biāo)識及壓縮比; 將所述目標(biāo)數(shù)據(jù)標(biāo)識減去所述首位數(shù)據(jù)標(biāo)識,再將所述差除以所述壓縮比,得到所述目標(biāo)數(shù)據(jù)標(biāo)識在所述區(qū)間內(nèi)的相應(yīng)位置。
7.根據(jù)權(quán)利要求2所述的防空緩存方法,其特征在于,所述操作請求為刪除操作時(shí),所述方法包括: 獲取對目標(biāo)數(shù)據(jù)標(biāo)識的刪除操作; 獲取所述刪除操作中的目標(biāo)數(shù)據(jù)標(biāo)識所在的區(qū)間及所在區(qū)間內(nèi)的相應(yīng)位置,并根據(jù)所述區(qū)間獲取查詢范圍; 判斷所述查詢范圍內(nèi)的數(shù)據(jù)標(biāo)識是否均不存在,若是,則將所述區(qū)間內(nèi)的相應(yīng)位置上的值置第二預(yù)設(shè)值,否則,將所述區(qū)間內(nèi)的位置上的值置為第一預(yù)設(shè)值。
8.根據(jù)權(quán)利要求7所述的防空緩存方法,其特征在于,所述所在區(qū)間內(nèi)的相應(yīng)位置為通過所述目標(biāo)數(shù)據(jù)標(biāo)識與所述首位數(shù)據(jù)標(biāo)識相減得到差,再將所述差除以所述壓縮比得到的位置; 所述根據(jù)所述區(qū)間獲取查詢范圍的步驟包括: 獲取所述區(qū)間的首位數(shù)據(jù)標(biāo)識及壓縮比; 將所述目標(biāo)數(shù)據(jù)標(biāo)識減去所述首位數(shù)據(jù)標(biāo)識,再將所述差除以所述壓縮比的平方,得到查詢范圍的下限值,再將所述下限值加上壓縮比減1得到查詢范圍的上限值。
9.一種防空緩存裝置,其特征在于,包括: 劃分模塊,用于將數(shù)據(jù)標(biāo)識劃分為多個(gè)區(qū)間; 統(tǒng)計(jì)模塊,用于統(tǒng)計(jì)每個(gè)區(qū)間中具有預(yù)定功能的數(shù)據(jù)標(biāo)識的密集度; 配置模塊,用于根據(jù)所述每個(gè)區(qū)間的密集度分別配置相應(yīng)的壓縮比,以將每個(gè)區(qū)間中壓縮比數(shù)量的數(shù)據(jù)標(biāo)識對應(yīng)一位。
10.根據(jù)權(quán)利要求9所述的防空緩存裝置,其特征在于,所述防空緩存系統(tǒng)還包括: 獲取模塊,用于獲取對目標(biāo)數(shù)據(jù)標(biāo)識的操作請求; 位置確定模塊,用于獲取所述操作請求中的目標(biāo)數(shù)據(jù)標(biāo)識所在的區(qū)間及所在區(qū)間內(nèi)的相應(yīng)位置; 執(zhí)行模塊,用于對所述區(qū)間內(nèi)的相應(yīng)位置執(zhí)行對應(yīng)的操作。
11.根據(jù)權(quán)利要求10所述的防空緩存裝置,其特征在于,所述操作請求為讀取操作時(shí),所述獲取模塊用于獲取對目標(biāo)數(shù)據(jù)標(biāo)識的讀取操作; 所述位置確定模塊還用于獲取所述讀取操作中的目標(biāo)數(shù)據(jù)標(biāo)識所在的區(qū)間及所在區(qū)間內(nèi)的相應(yīng)位置; 所述執(zhí)行模塊用于讀取所述區(qū)間內(nèi)的相應(yīng)位置上的值。
12.根據(jù)權(quán)利要求11所述的防空緩存裝置,其特征在于,所述位置確定模塊包括: 第一區(qū)間確定單元,用于判斷所述讀取操作中的目標(biāo)數(shù)據(jù)標(biāo)識所在的區(qū)間,并獲取所述區(qū)間的首位數(shù)據(jù)標(biāo)識及壓縮比; 第一位置確定單元,用于將所述目標(biāo)數(shù)據(jù)標(biāo)識減去所述首位數(shù)據(jù)標(biāo)識,再將所述差除以所述壓縮比,得到所述目標(biāo)數(shù)據(jù)標(biāo)識在所述區(qū)間內(nèi)的相應(yīng)位置。
13.根據(jù)權(quán)利要求10所述的防空緩存裝置,其特征在于,所述操作請求為寫入操作時(shí),所述獲取模塊還用于獲取對目標(biāo)數(shù)據(jù)標(biāo)識的寫入操作; 所述位置確定模塊還用于獲取所述寫入操作中的目標(biāo)數(shù)據(jù)標(biāo)識所在的區(qū)間及所在區(qū)間內(nèi)的相應(yīng)位置; 所述執(zhí)行模塊還用于將所述區(qū)間內(nèi)的相應(yīng)位置上的值置為第一預(yù)設(shè)值。
14.根據(jù)權(quán)利要求13所述的防空緩存裝置,其特征在于,所述位置確定模塊包括: 第二區(qū)間確定單元,用于判斷所述寫入操作中的目標(biāo)數(shù)據(jù)標(biāo)識所在的區(qū)間,并獲取所述區(qū)間的首位數(shù)據(jù)標(biāo)識及壓縮比; 第二位置確定單元,用于將所述目標(biāo)數(shù)據(jù)標(biāo)識減去所述首位數(shù)據(jù)標(biāo)識,再將所述差除以所述壓縮比,得到所述目標(biāo)數(shù)據(jù)標(biāo)識在所述區(qū)間內(nèi)的相應(yīng)位置。
15.根據(jù)權(quán)利要求10所述的防空緩存裝置,其特征在于,所述操作請求為刪除操作時(shí),所述獲取模塊還用于獲取對目標(biāo)數(shù)據(jù)標(biāo)識的刪除操作; 所述位置確定模塊包括: 第三區(qū)間確定單元,用于判斷所述刪除操作中的目標(biāo)數(shù)據(jù)標(biāo)識所在的區(qū)間及所在區(qū)間內(nèi)的相應(yīng)位置; 閾值確定單元,用于根據(jù)所述區(qū)間獲取查詢范圍; 判斷單元,用于判斷所述查詢范圍內(nèi)的數(shù)據(jù)標(biāo)識是否均不存在,若是,則所述執(zhí)行模塊還用于將所述區(qū)間內(nèi)的相應(yīng)位置上的值置第二預(yù)設(shè)值,否則,所述執(zhí)行模塊還用于將所述區(qū)間內(nèi)的相應(yīng)位置上的值置為第一預(yù)設(shè)值。
16.根據(jù)權(quán)利要求15所述的防空緩存裝置,其特征在于,所述所在區(qū)間內(nèi)的相應(yīng)位置為通過所述目標(biāo)數(shù)據(jù)標(biāo)識與所述首位數(shù)據(jù)標(biāo)識相減得到差,再將所述差除以所述壓縮比得到的位置; 所述第三區(qū)間確定單元還用于獲取所述區(qū)間的首位數(shù)據(jù)標(biāo)識及壓縮比; 所述閾值確定單元還用于將所述目標(biāo)數(shù)據(jù)標(biāo)識減去所述首位數(shù)據(jù)標(biāo)識,再將所述差除以所述壓縮比的平方,得到查詢范圍的下限值,再將所述下限值加上壓縮比減I得到查詢范圍的上限值 。
【文檔編號】G06F17/30GK103838766SQ201210486847
【公開日】2014年6月4日 申請日期:2012年11月26日 優(yōu)先權(quán)日:2012年11月26日
【發(fā)明者】張丹楓 申請人:深圳市騰訊計(jì)算機(jī)系統(tǒng)有限公司