使用二級過濾提高列存數(shù)據(jù)庫精確查詢速度的方法與裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)據(jù)庫技術(shù)領(lǐng)域,尤其是涉及列存數(shù)據(jù)庫中的精確查詢操作。
【背景技術(shù)】
[0002]列存數(shù)據(jù)庫是為應(yīng)對大數(shù)據(jù)分析業(yè)務(wù)的需求而產(chǎn)生的數(shù)據(jù)庫種類。借由將數(shù)據(jù)按照邏輯列的形式進行集中存儲,可以減少訪問數(shù)據(jù)過程中的磁盤10數(shù)量,從而提高訪問數(shù)據(jù)的速度。
[0003]如圖1所示,一個典型的列存儲據(jù)庫系統(tǒng)通過數(shù)據(jù)庫接口接收來自數(shù)據(jù)庫客戶端的訪問請求。數(shù)據(jù)庫處理器對訪問請求進行處理,并通過數(shù)據(jù)庫存儲引擎訪問數(shù)據(jù)庫中的數(shù)據(jù)。一個數(shù)據(jù)庫存儲引擎可以同時管理多個數(shù)據(jù)庫(DB),每個數(shù)據(jù)庫包含多個表(Table),每個表都是由行與列組成的二維表格。在列存數(shù)據(jù)庫中,表的數(shù)據(jù)按照列(Column)集中存儲,每一列的數(shù)據(jù)由若干個數(shù)據(jù)包(DC,Data Cell)組成,每一個數(shù)據(jù)包都包含此列中的若干行數(shù)據(jù)。在實際磁盤和文件系統(tǒng)上,一個列會包含若干個保存單元(文件,F(xiàn)ile),每個保存單元中包含若干數(shù)據(jù)包。
[0004]對數(shù)據(jù)庫進行“精確查詢”,就是給定一個數(shù)值,然后在某一列中確定這個數(shù)值是否存在,如果存在,就定位到這個數(shù)值所在的行。
[0005]布隆過濾器(Bloom Filter)是一種近似成員查詢工具,用以查詢某個元素是否是某個集合的成員。布隆過濾器不是100%精確地,其查詢結(jié)果有2種可能:“可能是成員”、“一定不是成員”。當(dāng)它認(rèn)為“可能是成員”時,有可能其實不是成員,但當(dāng)它認(rèn)為“一定不是成員”時,就一定不是成員。
[0006]圖2是布隆過濾器的示意圖,對元素x、y、z分別使用若干(圖中是三個)哈希函數(shù)求得元素在布隆過濾器中的對應(yīng)位(bit),然后在對應(yīng)位中填1,其余位的值為0。當(dāng)需要判斷元素w是否是成員時,只需使用同樣的哈希函數(shù),計算w對應(yīng)的位,檢查其中的值是否全都為1。如果全是1,結(jié)果是“可能是成員”;如果不全是1,結(jié)果就是“一定不是成員”。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的在于使用二級布隆過濾器作為精確查詢操作中的粗粒度索引,過濾掉不包含查詢目標(biāo)的數(shù)據(jù)保存單元,提高列存數(shù)據(jù)庫中的精確查詢操作的速度。
[0008]本發(fā)明采取的技術(shù)方案為:一種使用二級過濾提高列存數(shù)據(jù)庫精確查詢速度的方法,包括如下步驟:
[0009](1)使用布隆過濾器過濾列存數(shù)據(jù)庫中不包含查詢目標(biāo)的數(shù)據(jù)保存單元;
[0010](2)使用帶有布隆過濾器的精確查詢模塊查詢包含查詢目標(biāo)的數(shù)據(jù)保存單元。
[0011]進一步的,步驟(2)所述查詢步驟為:
[0012](201)使用布隆過濾器過濾數(shù)據(jù)保存單元中的不包含查詢目標(biāo)的數(shù)據(jù)包;
[0013](202)使用精確查詢模塊查詢包含查詢目標(biāo)的數(shù)據(jù)包。
[0014]更進一步的,通過布隆過濾器開關(guān)對布隆過濾器進行使用控制。
[0015]本發(fā)明的另一面,一種使用二級過濾提高列存數(shù)據(jù)庫精確查詢速度的裝置,包括保存單元級布隆過濾器模塊、精確查詢模塊,所述保存單元級布隆過濾器模塊用于過濾列存數(shù)據(jù)庫中不包含查詢目標(biāo)的數(shù)據(jù)保存單元,所述精確查詢模塊用于查詢包含查詢目標(biāo)的數(shù)據(jù)保存單元。
[0016]進一步的,所述精確查詢模塊還設(shè)有數(shù)據(jù)包級布隆過濾器模塊,所述數(shù)據(jù)包級布隆過濾器模塊用于過濾數(shù)據(jù)保存單元中的不包含查詢目標(biāo)的數(shù)據(jù)包,所述精確查詢模塊用于查詢包含查詢目標(biāo)的數(shù)據(jù)包。
[0017]更進一步的,所述保存單元級布隆過濾器模塊和數(shù)據(jù)包級布隆過濾器模塊設(shè)有開關(guān)單元,所述開關(guān)單元用于對保存單元級布隆過濾器模塊和數(shù)據(jù)包級布隆過濾器模塊進行使用控制。
[0018]本發(fā)明的有益效果為:
[0019]因為布隆過濾器能夠過濾掉大量不包含查詢數(shù)值的數(shù)據(jù)保存單元,因此減少了不必要的遍歷數(shù)據(jù)包級布隆過濾器的操作,極大提高了列存數(shù)據(jù)庫的精確查詢性能。
【附圖說明】
[0020]圖1是現(xiàn)有技術(shù)的列存數(shù)據(jù)庫不意圖;
[0021]圖2是現(xiàn)有技術(shù)的布隆過濾器示意圖;
[0022]圖3是本發(fā)明使用帶有二級布隆過濾器的精確查詢模塊的列存數(shù)據(jù)庫示意圖;
[0023]圖4是本發(fā)明使用帶有二級布隆過濾器的精確查詢模塊的精確查詢過程示意圖;
[0024]圖5是本發(fā)明使用帶有二級布隆過濾器的精確查詢模塊的精確查詢過程示例圖。
【具體實施方式】
[0025]下面是本發(fā)明應(yīng)用的實施例,在本實施例中布隆過濾器簡稱為BF。
[0026]如圖3所示,本發(fā)明在數(shù)據(jù)庫處理器中設(shè)有保存單元級BF、帶有BF的數(shù)據(jù)包級精確查詢模塊、傳統(tǒng)精確查詢模塊,所述BF設(shè)有BF開關(guān)。
[0027]如圖5所示,假設(shè)用戶希望查詢的數(shù)值是100,假設(shè)數(shù)據(jù)庫列中包含3個保存單元,每個保存單元包括3個數(shù)據(jù)包,并且使用BF。其中:
[0028]1)第一個保存單元中的BF中不包含100的成員信息;
[0029]2)第二個保存單元中的BF中包含100的成員信息,即其認(rèn)為“100可能是第二個保存單元的成員”,但第二個保存單元中實際并不包含100 ;
[0030]3)第三個保存單元中的BF中包含100的成員信息,即其認(rèn)為“ 100可能是第三個保存單元的成員”,第三個保存單元中的3個數(shù)據(jù)包中,DC3-3實際不包含100,DC3-1和DC3-2確實包含100。
[0031]那么結(jié)合圖4所示的流程,其操作步驟如下:
[0032]1)檢查BF開關(guān),確定使用BF ;
[0033]2)獲取第一個保存單元,使用保存單元級BF確定100是否是保存單元的成員,結(jié)果為不是,結(jié)束第一個保存單元的查詢;
[0034]3)獲取第二個保存單元,使用保存單元級BF確定100是否是保存單元的成員,結(jié)果為可能是;
[0035]4)在第二個保存單元中使用帶BF的數(shù)據(jù)包級精確查詢模塊查詢100,結(jié)果是3個數(shù)據(jù)包中都不存在,結(jié)束第二個保存單元的查詢;
[0036]5)獲取第三個保存單元,使用保存單元級BF確定100是否是保存單元的成員,結(jié)果為可能是;
[0037]6)在第三個保存單元中使用帶BF的數(shù)據(jù)包級精確查詢模塊查詢100,結(jié)果是DC3-UDC3-2存在,而DC3-3中不存在,將結(jié)果加入結(jié)果集,結(jié)束第三個保存單元的查詢;
[0038]7)返回結(jié)果集。
【主權(quán)項】
1.一種使用二級過濾提高列存數(shù)據(jù)庫精確查詢速度的方法,其特征在于,包括如下步驟: (1)使用布隆過濾器過濾列存數(shù)據(jù)庫中不包含查詢目標(biāo)的數(shù)據(jù)保存單元; (2)使用帶有布隆過濾器的精確查詢模塊查詢包含查詢目標(biāo)的數(shù)據(jù)保存單元。2.根據(jù)權(quán)利要求1所述的一種使用二級過濾提高列存數(shù)據(jù)庫精確查詢速度的方法,其特征在于,步驟(2)所述查詢步驟為: (201)使用布隆過濾器過濾數(shù)據(jù)保存單元中的不包含查詢目標(biāo)的數(shù)據(jù)包; (202)使用精確查詢模塊查詢包含查詢目標(biāo)的數(shù)據(jù)包。3.根據(jù)權(quán)利要求1或2所述的一種使用二級過濾提高列存數(shù)據(jù)庫精確查詢速度的方法,其特征在于,通過布隆過濾器開關(guān)對布隆過濾器進行使用控制。4.一種使用二級過濾提高列存數(shù)據(jù)庫精確查詢速度的裝置,其特征在于,包括保存單元級布隆過濾器模塊、精確查詢模塊,所述保存單元級布隆過濾器模塊用于過濾列存數(shù)據(jù)庫中不包含查詢目標(biāo)的數(shù)據(jù)保存單元,所述精確查詢模塊用于查詢包含查詢目標(biāo)的數(shù)據(jù)保存單元。5.根據(jù)權(quán)利要求4所述的一種使用二級過濾提高列存數(shù)據(jù)庫精確查詢速度的裝置,其特征在于,所述精確查詢模塊設(shè)有數(shù)據(jù)包級布隆過濾器模塊,所述數(shù)據(jù)包級布隆過濾器模塊用于過濾數(shù)據(jù)保存單元中的不包含查詢目標(biāo)的數(shù)據(jù)包,所述精確查詢模塊用于查詢包含查詢目標(biāo)的數(shù)據(jù)包。6.根據(jù)權(quán)利要求4或5所述的一種使用二級過濾提高列存數(shù)據(jù)庫精確查詢速度的裝置,其特征在于,所述保存單元級布隆過濾器模塊和數(shù)據(jù)包級布隆過濾器模塊設(shè)有開關(guān)單元,所述開關(guān)單元用于對保存單元級布隆過濾器模塊和數(shù)據(jù)包級布隆過濾器模塊進行使用控制。
【專利摘要】本發(fā)明旨在提供一種在列存數(shù)據(jù)庫中使用布隆過濾器快速精確查詢數(shù)據(jù)的方法。包括,在列存數(shù)據(jù)庫的精確查詢數(shù)據(jù)操作中使用保存單元級的布隆過濾器對數(shù)據(jù)保存單元進行篩選。布隆過濾器可以有效減少精確查詢數(shù)據(jù)操作過程中對磁盤和文件系統(tǒng)的I/O訪問,加快精確查詢數(shù)據(jù)操作的速度。
【IPC分類】G06F17/30
【公開號】CN105354323
【申請?zhí)枴緾N201510786399
【發(fā)明人】趙偉, 武新, 李東海, 王雪松
【申請人】天津南大通用數(shù)據(jù)技術(shù)股份有限公司
【公開日】2016年2月24日
【申請日】2015年11月16日