專(zhuān)利名稱(chēng):元數(shù)據(jù)查詢(xún)方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲(chǔ)技術(shù),尤其涉及一種元數(shù)據(jù)查詢(xún)方法和裝置。
背景技術(shù):
重復(fù)數(shù)據(jù)刪除也稱(chēng)為智能壓縮或單一實(shí)例存儲(chǔ),是一種可自動(dòng)查找重復(fù)數(shù)據(jù),將相同數(shù)據(jù)只保留一個(gè)副本,并使用指向單一副本的指針替換掉其他重復(fù)副本,以達(dá)到消除冗余數(shù)據(jù)、降低存儲(chǔ)容量需求的存儲(chǔ)技術(shù)?,F(xiàn)有重復(fù)數(shù)據(jù)刪除技術(shù)的元數(shù)據(jù)查詢(xún)方案中包括如下模塊元數(shù)據(jù)緩存(Metadata Cache)、布隆過(guò)濾器(Bloom Filter)、全索引表(Full Index Table)、容器(Container),其中,Metadata Cache用于緩存元數(shù)據(jù);Bloom Filter用于過(guò)濾掉大部分的新數(shù)據(jù)塊,減少磁盤(pán)訪問(wèn)次數(shù);Full Index Table用于索引元數(shù)據(jù)在磁盤(pán)中的存儲(chǔ)位置;Container用于存放刪除重復(fù)數(shù)據(jù)后的數(shù)據(jù)塊和元數(shù)據(jù)。 現(xiàn)有的元數(shù)據(jù)查詢(xún)流程如下對(duì)于一個(gè)要查詢(xún)的元數(shù)據(jù)(Metadata),首先在元數(shù)據(jù)緩存中查找,如果在緩存中找到相同的元數(shù)據(jù),則該元數(shù)據(jù)對(duì)應(yīng)的分塊是重復(fù)塊。如果在緩存中沒(méi)有找到,再到布隆過(guò)濾器中查找,如果沒(méi)有在布隆過(guò)濾器中找到,則對(duì)應(yīng)的分塊一定是新塊。如果元數(shù)據(jù)在布隆過(guò)濾器中,就到索引表中查找對(duì)應(yīng)的容器,如果能在索引表中找到,則對(duì)應(yīng)的分塊是重復(fù)塊,并把對(duì)應(yīng)的容器的元數(shù)據(jù)全部加載到緩存中。但是,現(xiàn)有技術(shù)中的索引表是全索引包含了所有分塊元數(shù)據(jù)的索引。由于這種索引表占用的空間太大,存放在磁盤(pán)上就導(dǎo)致很多的磁盤(pán)IO操作,降低了查詢(xún)的性能。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種元數(shù)據(jù)查詢(xún)方法和裝置,用于提高查詢(xún)性能,降低占用的內(nèi)存空間。本發(fā)明實(shí)施例提供了一種元數(shù)據(jù)查詢(xún)方法,包括在要查找的元數(shù)據(jù)中抽樣出至少一個(gè)第一元數(shù)據(jù);將抽樣得到的每個(gè)第一元數(shù)據(jù)中的至少部分特征值作為索引,在內(nèi)存中預(yù)置的稀疏索引表中查找對(duì)應(yīng)的容器標(biāo)識(shí),所述稀疏索引表中記錄容器標(biāo)識(shí),每個(gè)容器標(biāo)識(shí)在所述索引表中位置的索引是所述容器標(biāo)識(shí)對(duì)應(yīng)容器中存儲(chǔ)的元數(shù)據(jù)的至少部分特征值;根據(jù)同一個(gè)容器標(biāo)識(shí)被查到的次數(shù),選擇滿(mǎn)足設(shè)定條件的容器標(biāo)識(shí)對(duì)應(yīng)的容器;將所述選擇的容器中的元數(shù)據(jù)加載到元數(shù)據(jù)緩存中;從所述元數(shù)據(jù)緩存中查找與所述要查找的元數(shù)據(jù)相同的數(shù)據(jù)塊。本發(fā)明實(shí)施例提供了一種元數(shù)據(jù)查詢(xún)裝置,包括抽樣模塊,用于在要查找的元數(shù)據(jù)中抽樣出至少一個(gè)第一元數(shù)據(jù);確定模塊,用于將抽樣得到的每個(gè)第一元數(shù)據(jù)中的至少部分特征值作為索引,在內(nèi)存中預(yù)置的稀疏索引表中查找對(duì)應(yīng)的容器標(biāo)識(shí),所述稀疏索引表中記錄容器標(biāo)識(shí),每個(gè)容器標(biāo)識(shí)在所述索引表中位置的索引是所述容器標(biāo)識(shí)對(duì)應(yīng)容器中存儲(chǔ)的元數(shù)據(jù)的至少部分特征值;選擇模塊,用于根據(jù)同一個(gè)容器標(biāo)識(shí)被查到的次數(shù),選擇滿(mǎn)足設(shè)定條件的容器標(biāo)識(shí)對(duì)應(yīng)的容器;加載模塊,用于將所述選擇的容器中的元數(shù)據(jù)加載到元數(shù)據(jù)緩存中;查找模塊,用于從所述元數(shù)據(jù)緩存中查找與所述要查找的元數(shù)據(jù)相同的數(shù)據(jù)塊。由上述技術(shù)方案可知,本發(fā)明實(shí)施例通過(guò)采用稀疏索引表且該稀疏索引表設(shè)置在內(nèi)存中,可以避免磁盤(pán)IO操作,提高查詢(xún)性能;通過(guò)不設(shè)置布隆過(guò)濾,可以降低占用的內(nèi)存空間。
圖I為本發(fā)明元數(shù)據(jù)查詢(xún)方法一實(shí)施例的流程示意圖;圖2為本發(fā)明元數(shù)據(jù)查詢(xún)方法對(duì)應(yīng)的結(jié)構(gòu)示意圖;圖3為本發(fā)明中稀疏索引表的結(jié)構(gòu)不意圖;圖4為本發(fā)明元數(shù)據(jù)查詢(xún)裝置一實(shí)施例的結(jié)構(gòu)示意圖;圖5為本發(fā)明元數(shù)據(jù)查詢(xún)裝置另一實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施例方式圖I為本發(fā)明元數(shù)據(jù)查詢(xún)方法一實(shí)施例的流程示意圖,包括步驟11 :在要查找的元數(shù)據(jù)中抽樣出至少一個(gè)第一元數(shù)據(jù)。例如,參見(jiàn)圖2,圖2所示的要查找的元數(shù)據(jù)為6個(gè),可以從中抽樣出第2個(gè)和第5個(gè),將第2個(gè)和第5個(gè)作為第一元數(shù)據(jù)。具體的抽樣方式可以是首先,將要查找的元數(shù)據(jù)分組,例如,將要查找的元數(shù)據(jù)依次選取相同數(shù)目的元數(shù)據(jù)作為一組;之后,在每個(gè)組中抽樣一個(gè)元數(shù)據(jù),例如,在每個(gè)組中選擇一個(gè)哈希值最小的元數(shù)據(jù)作為抽樣的元數(shù)據(jù)。步驟12 :將抽樣得到的每個(gè)第一元數(shù)據(jù)中的至少部分特征值作為索引,在內(nèi)存中預(yù)置的稀疏索引表中查找對(duì)應(yīng)的容器標(biāo)識(shí),所述稀疏索引表中記錄容器標(biāo)識(shí),每個(gè)容器標(biāo)識(shí)在所述索引表中位置的索引為所述容器標(biāo)識(shí)對(duì)應(yīng)容器中存儲(chǔ)的元數(shù)據(jù)的至少部分特征值。稀疏索引表用于表明元數(shù)據(jù)與容器的對(duì)應(yīng)關(guān)系,例如,該稀疏索引表可以表明元數(shù)據(jù)的特征值與容器標(biāo)識(shí)(ID)的對(duì)應(yīng)關(guān)系,或者表明元數(shù)據(jù)的部分的特征值與容器ID的對(duì)應(yīng)關(guān)系。本發(fā)明實(shí)施例以特征值為哈希值,稀疏索引表表明元數(shù)據(jù)的部分的特征值與容器標(biāo)識(shí)的對(duì)應(yīng)關(guān)系為例。稀疏索引表可以在寫(xiě)入新數(shù)據(jù)塊時(shí)建立,例如,當(dāng)抽樣一個(gè)元數(shù)據(jù)后,按照元數(shù)據(jù)部分的哈希值作為索引,在稀疏索引表中沒(méi)有找到可以對(duì)應(yīng)的容器ID,那么可以將該元數(shù)據(jù)寫(xiě)入容器內(nèi),并在稀疏索引表中記錄該元數(shù)據(jù)寫(xiě)入的容器的容器ID,并且該容器ID在稀疏索引表中位置的索引為該元數(shù)據(jù)的部分的哈希值。步驟13 :根據(jù)同一個(gè)容器標(biāo)識(shí)被查到的次數(shù),選擇滿(mǎn)足設(shè)定條件的容器標(biāo)識(shí)對(duì)應(yīng)的容器。
根據(jù)同一個(gè)容器ID被查到的次數(shù),選擇滿(mǎn)足設(shè)定條件的容器標(biāo)識(shí)對(duì)應(yīng)的容器可以包括對(duì)查找到的容器標(biāo)識(shí),按照同一容器標(biāo)識(shí)被查詢(xún)到的次數(shù)從高到低的順序選擇設(shè)定個(gè)數(shù)的容器ID對(duì)應(yīng)的容器,作為滿(mǎn)足設(shè)定條件的容器。例如,如果抽樣后的元數(shù)據(jù)中的6個(gè)均對(duì)應(yīng)容器IDl,抽樣后的元數(shù)據(jù)中的5個(gè)均對(duì)應(yīng)容器ID2,抽樣后的元數(shù)據(jù)中的4個(gè)均對(duì)應(yīng)容器ID3,則同一個(gè)容器ID被查詢(xún)到的次數(shù)從高到低的順序是容器ID1、容器ID2和容器ID3。如果設(shè)定條件是選擇排序較高的2個(gè),則選擇的容器就是容器IDl對(duì)應(yīng)的容器I和容器ID2對(duì)應(yīng)的容器2。對(duì)查找到的容器標(biāo)識(shí),選擇滿(mǎn)足設(shè)定條件的容器標(biāo)識(shí)對(duì)應(yīng)的容器的具體策略,可以根據(jù)不同情況來(lái)設(shè)定,例如,可以設(shè)定一個(gè)閾值,被查找到的次數(shù)大于等于該閾值的容器標(biāo)識(shí)對(duì)應(yīng)的容器,作為滿(mǎn)足設(shè)定條件的容器。本實(shí)施例按照被查詢(xún)到的次數(shù)從高到低的順序來(lái)選擇,僅僅是其中的一種方式。每個(gè)容器標(biāo)識(shí)在所述索引表中位置的索引為所述容器標(biāo)識(shí)對(duì)應(yīng)容器中存儲(chǔ)的元數(shù)據(jù)的至少部分的特征值;例如,稀疏索引表的第一個(gè)表項(xiàng)中記錄的是元數(shù)據(jù)的部分的哈希值為I對(duì)應(yīng)的容器ID,第二個(gè)表項(xiàng)中記錄的是元數(shù)據(jù)的部分的哈希值為2對(duì)應(yīng)的容器ID,其余類(lèi)推。
此時(shí),稀疏索引表的大小為(磁盤(pán)容量/分塊大小)X抽樣率X 2,其中乘以2是為了減少哈希碰撞,提高索引的準(zhǔn)確性。稀疏索引表所占的內(nèi)存空間=索引表的大小X8(以每個(gè)容器ID占用64bit為例)字節(jié)。以磁盤(pán)容量為1PB,分塊大小為8KB,抽樣率為1/128為例,稀疏索引表占用的內(nèi)存空間為16GB。所述每個(gè)容器標(biāo)識(shí)在所述索引表中的位置的索引可以通過(guò)以下方法獲得從容器中存儲(chǔ)的元數(shù)據(jù)中抽樣出至少一個(gè)第二元數(shù)據(jù),將第二元數(shù)據(jù)中的特征值,作為容器對(duì)應(yīng)的容器標(biāo)識(shí)在所述稀疏索引表中的位置的索引;或者,將第二元數(shù)據(jù)的部分特征值作為容器對(duì)應(yīng)的容器標(biāo)識(shí)在所述稀疏索引表中位置的索引,其中,每個(gè)第二元數(shù)據(jù)的特征值確定一個(gè)位置索引。需要說(shuō)明的是,本發(fā)明實(shí)施例中,需要通過(guò)元數(shù)據(jù)的特征值來(lái)作為第一元數(shù)據(jù)的查找索引以及容器標(biāo)識(shí)的位置索引,顯然,獲取第一元數(shù)據(jù)中的特征值作為索引的算法,和獲取第二元數(shù)據(jù)中的特征值作為容器標(biāo)識(shí)在稀疏索引表中的位置索引的算法,兩者需要一致。例如,第二元數(shù)據(jù)中取出特征值的前3位作為容器標(biāo)識(shí)在稀疏索引表中的位置索引,那么相應(yīng)的,第一元數(shù)據(jù)的查找索引也是取第一元數(shù)據(jù)中特征值的前3位;又如第二元數(shù)據(jù)中取出全部特征值作為容器標(biāo)識(shí)在稀疏索引表中的位置索引,那么相應(yīng)的,第一元數(shù)據(jù)的查找索引也是取第一元數(shù)據(jù)中全部特征值。另外,從容器中抽樣得到至少一個(gè)第二元數(shù)據(jù),若第二元數(shù)據(jù)有兩個(gè)以上,那么,每個(gè)第二元數(shù)據(jù)的特征值都可以確定一個(gè)容器標(biāo)識(shí)的位置索引。例如以第二元數(shù)據(jù)中全部特征值作為容器A在稀疏索引表中的位置索引為例,從容器A中抽出了三個(gè)第二元數(shù)據(jù),那么在稀疏索引表中就可以為容器A確定三個(gè)位置,位置的索引就是第二元數(shù)據(jù)的特征值。容器ID在稀疏索引表中位置的索引也可以采用二維方式確定,該位置的索引的二維示意圖可以如圖3所示,以位置的索引為抽樣元數(shù)據(jù)的部分的哈希值為例,可以用抽樣元數(shù)據(jù)的部分的哈希值的高m位表示一級(jí)索引表的偏移量,用抽樣元數(shù)據(jù)的部分哈希值的低n位表示二級(jí)索引表的偏移量,那么,2"為二級(jí)索引表的大小,2n+m為稀疏索引表的大小。計(jì)算n、m時(shí),可以采用2n =系統(tǒng)一次能夠分配的內(nèi)存空間,得到n,再根據(jù)計(jì)算得到的n和2n+m =稀疏索引表占用的內(nèi)存空間,得到m。采用二維數(shù)組的方式可以避免需要一次分配較大的內(nèi)存空間而導(dǎo)致的內(nèi)存空間分配失敗。例如稀疏索引表需要8G空間,而內(nèi)存一次能分配的空間只有1G,那么就每次分配1G,共分配SG的空間;二維數(shù)組中,假設(shè)以一級(jí)索引表的表項(xiàng)為行索引,以二級(jí)索引表的表項(xiàng)為列索引,則該二維數(shù)組的行數(shù)共為2-行,列數(shù)共為2"列,每個(gè)一級(jí)索引表的表項(xiàng)對(duì)應(yīng)2"個(gè)二級(jí)索引表的表項(xiàng)。該二維數(shù)組的第i行第j列保存的容器ID與特征值的高m位 =i-1且低n位=j-1的元數(shù)據(jù)對(duì)應(yīng),i = I,. . . 2m,, j = I,. . . 2n。進(jìn)一步的,當(dāng)稀疏索引表所占的內(nèi)存空間小于操作系統(tǒng)一次能分配的最大內(nèi)存空間時(shí),可以采用一組數(shù)組方式進(jìn)行組織。步驟14 :將所述滿(mǎn)足設(shè)定條件的容器中的元數(shù)據(jù)加載到元數(shù)據(jù)緩存中。參見(jiàn)圖2,容器中包含元數(shù)據(jù)部分和數(shù)據(jù)部分,將其中的元數(shù)據(jù)加載到元數(shù)據(jù)緩存中。步驟15 :從所述元數(shù)據(jù)緩存中查找與所述要查找的元數(shù)據(jù)相同的數(shù)據(jù)塊。將要查找的元數(shù)據(jù)與元數(shù)據(jù)緩存中的元數(shù)據(jù)進(jìn)行比較,如果要查找的元數(shù)據(jù)存在于元數(shù)據(jù)緩存中,則表明該元數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)塊為重復(fù)塊,否則為新塊。之后,可以將新數(shù)據(jù)庫(kù)寫(xiě)入容器中,將重復(fù)數(shù)據(jù)塊刪除等后續(xù)處理。本實(shí)施例中由于稀疏索引表只記錄容器ID,所在空間較小,可以全部放置在內(nèi)存中,因此訪問(wèn)稀疏索引表時(shí)不會(huì)產(chǎn)生任何的磁盤(pán)IO操作,提高元數(shù)據(jù)查詢(xún)性能;本實(shí)施例中沒(méi)有布隆過(guò)濾器,并且稀疏索引表所占內(nèi)存比布隆過(guò)濾器小很多,可以降低對(duì)內(nèi)存的需求。圖4為本發(fā)明元數(shù)據(jù)查詢(xún)裝置一實(shí)施例的結(jié)構(gòu)示意圖,包括抽樣模塊41、確定模塊42、選擇模塊43、加載模塊44和查找模塊45 ;抽樣模塊41用于在要查找的兀數(shù)據(jù)中抽樣出至少一個(gè)第一元數(shù)據(jù);確定模塊42用于將抽樣得到的每個(gè)第一元數(shù)據(jù)中的至少部分特征值作為索引,在內(nèi)存中預(yù)置的稀疏索引表中查找對(duì)應(yīng)的容器標(biāo)識(shí),所述稀疏索引表中記錄容器標(biāo)識(shí),每個(gè)容器標(biāo)識(shí)在所述索引表中位置的索引是所述容器標(biāo)識(shí)對(duì)應(yīng)容器中存儲(chǔ)的元數(shù)據(jù)的至少部分特征值;選擇模塊43用于根據(jù)同一個(gè)容器標(biāo)識(shí)被查到的次數(shù),選擇滿(mǎn)足設(shè)定條件的容器標(biāo)識(shí)對(duì)應(yīng)的容器;加載模塊44用于將所述選擇的容器中的元數(shù)據(jù)加載到元數(shù)據(jù)緩存中;查找模塊45用于從所述元數(shù)據(jù)緩存中查找與所述要查找的元數(shù)據(jù)相同的數(shù)據(jù)塊??蛇x的,所述選擇模塊43具體用于對(duì)查找到的容器標(biāo)識(shí),按照同一容器標(biāo)識(shí)被查詢(xún)到的次數(shù)從高到低的順序選擇設(shè)定個(gè)數(shù)的容器,作為滿(mǎn)足設(shè)定條件的容器??蛇x的,所述抽樣模塊41具體用于將要查找的元數(shù)據(jù)分為多個(gè)組,在每個(gè)組中抽樣一個(gè)元數(shù)據(jù),將每個(gè)組中特征值最小的元數(shù)據(jù)作為抽樣的第一元數(shù)據(jù)。可選的,參見(jiàn)圖5,該裝置還可以包括稀疏索引表設(shè)置模塊46,用于從容器中存儲(chǔ)的元數(shù)據(jù)中抽樣出至少一個(gè)第二元數(shù)據(jù),將第二元數(shù)據(jù)中的特征值,作為容器對(duì)應(yīng)的容器標(biāo)識(shí)在所述稀疏索引表中的位置的索引;或者,將第二元數(shù)據(jù)的部分特征值作為容器對(duì)應(yīng)的容器標(biāo)識(shí)在所述稀疏索引表中位置的索引,其中,每個(gè)第二元數(shù)據(jù)的特征值確定一個(gè)位置索引??蛇x的,所述稀疏索引表設(shè)置模塊46將第二元數(shù)據(jù)中的特征值,作為容器對(duì)應(yīng)的容器標(biāo)識(shí)在所述稀疏索引表中的位置的索引或者將第二元數(shù)據(jù)的部分特征值作為容器對(duì)應(yīng)的容器標(biāo)識(shí)在所述稀疏索引表中位置的索引,具體包括將稀疏索引表設(shè)置為表示行索引的一級(jí)索引偏移量和表示列索引的二級(jí)索引偏移量組成的二維表;如果容器標(biāo)識(shí)位置的索引為所述抽樣的第二元數(shù)據(jù)的特征值,則根據(jù)所述第二元數(shù)據(jù)的特征值的高位確定所述一級(jí)索引偏移量,根據(jù)所述第二元數(shù)據(jù)的特征值的低位確定所述二級(jí)索引偏移量;或者,如果所述位置的索引為所述第二元數(shù)據(jù)的部分特征值,則根據(jù)所述第二元數(shù)據(jù)中的部分特征值的高位確定所述一級(jí)索引偏移量,根據(jù)所述第二元數(shù)據(jù)中的部分特征值的低位確定所述二級(jí)索引偏移量。本實(shí)施例中由于稀疏索引表所在空間較小,可以全部放置在內(nèi)存中,因此訪問(wèn)稀疏索引表時(shí)不會(huì)產(chǎn)生任何的磁盤(pán)IO操作,提高元數(shù)據(jù)查詢(xún)性能;本實(shí)施例中沒(méi)有布隆過(guò)濾 器,并且稀疏索引表所占內(nèi)存比布隆過(guò)濾器小很多,可以降低對(duì)內(nèi)存的需求。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。最后應(yīng)說(shuō)明的是以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
權(quán)利要求
1.一種元數(shù)據(jù)查詢(xún)方法,其特征在于,包括 在要查找的元數(shù)據(jù)中抽樣出至少一個(gè)第一元數(shù)據(jù); 將抽樣得到的每個(gè)第一元數(shù)據(jù)中的至少部分特征值作為索引,在內(nèi)存中預(yù)置的稀疏索引表中查找對(duì)應(yīng)的容器標(biāo)識(shí),所述稀疏索引表中記錄容器標(biāo)識(shí),每個(gè)容器標(biāo)識(shí)在所述索引表中位置的索引是所述容器標(biāo)識(shí)對(duì)應(yīng)容器中存儲(chǔ)的元數(shù)據(jù)的至少部分特征值; 根據(jù)同一個(gè)容器標(biāo)識(shí)被查到的次數(shù),選擇滿(mǎn)足設(shè)定條件的容器標(biāo)識(shí)對(duì)應(yīng)的容器; 將所述選擇的容器中的元數(shù)據(jù)加載到元數(shù)據(jù)緩存中; 從所述元數(shù)據(jù)緩存中查找與所述要查找的元數(shù)據(jù)相同的數(shù)據(jù)塊。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述每個(gè)容器標(biāo)識(shí)在所述索引表中的位 置的索引通過(guò)以下方法獲得 從容器中存儲(chǔ)的元數(shù)據(jù)中抽樣出至少一個(gè)第二元數(shù)據(jù),將第二元數(shù)據(jù)中的特征值,作為容器對(duì)應(yīng)的容器標(biāo)識(shí)在所述稀疏索引表中的位置的索引;或者,將第二元數(shù)據(jù)的部分特征值作為容器對(duì)應(yīng)的容器標(biāo)識(shí)在所述稀疏索引表中位置的索引,其中,每個(gè)第二元數(shù)據(jù)的特征值確定一個(gè)位置索引。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述根據(jù)同一個(gè)容器標(biāo)識(shí)被查到的次數(shù),選擇滿(mǎn)足設(shè)定條件的容器標(biāo)識(shí)對(duì)應(yīng)的容器,包括 對(duì)查找到的容器標(biāo)識(shí),按照同一容器標(biāo)識(shí)被查詢(xún)到的次數(shù)從高到低的順序選擇設(shè)定個(gè)數(shù)的容器,作為滿(mǎn)足設(shè)定條件的容器。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述容器標(biāo)識(shí)在所述稀疏索引表中位置的索引由表示行索引的一級(jí)索引偏移量和表示列索引的二級(jí)索引偏移量確定,如果所述位置的索引為所述抽樣的第二元數(shù)據(jù)的特征值,則根據(jù)所述第二元數(shù)據(jù)的特征值的高位確定所述一級(jí)索引偏移量,根據(jù)所述第二元數(shù)據(jù)的特征值的低位確定所述二級(jí)索引偏移量; 或者,如果所述位置的索引為所述第二元數(shù)據(jù)的部分特征值,則根據(jù)所述第二元數(shù)據(jù)中的部分特征值的高位確定所述一級(jí)索引偏移量,根據(jù)所述第二元數(shù)據(jù)中的部分特征值的低位確定所述二級(jí)索引偏移量。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述在要查找的元數(shù)據(jù)中抽樣出至少一個(gè)第一元數(shù)據(jù),包括 將要查找的元數(shù)據(jù)分為多個(gè)組,在每個(gè)組中抽樣一個(gè)元數(shù)據(jù),將每個(gè)組中特征值最小的元數(shù)據(jù)作為抽樣的第一元數(shù)據(jù)。
6.一種元數(shù)據(jù)查詢(xún)裝置,其特征在于,包括 抽樣模塊,用于在要查找的元數(shù)據(jù)中抽樣出至少一個(gè)第一元數(shù)據(jù); 確定模塊,用于將抽樣得到的每個(gè)第一元數(shù)據(jù)中的至少部分特征值作為索引,在內(nèi)存中預(yù)置的稀疏索引表中查找對(duì)應(yīng)的容器標(biāo)識(shí),所述稀疏索引表中記錄容器標(biāo)識(shí),每個(gè)容器標(biāo)識(shí)在所述索引表中位置的索引是所述容器標(biāo)識(shí)對(duì)應(yīng)容器中存儲(chǔ)的元數(shù)據(jù)的至少部分特征值; 選擇模塊,用于根據(jù)同一個(gè)容器標(biāo)識(shí)被查到的次數(shù),選擇滿(mǎn)足設(shè)定條件的容器標(biāo)識(shí)對(duì)應(yīng)的容器; 加載模塊,用于將所述選擇的容器中的元數(shù)據(jù)加載到元數(shù)據(jù)緩存中; 查找模塊,用于從所述元數(shù)據(jù)緩存中查找與所述要查找的元數(shù)據(jù)相同的數(shù)據(jù)塊。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述選擇模塊具體用于 對(duì)查找到的容器標(biāo)識(shí),按照同一容器標(biāo)識(shí)被查詢(xún)到的次數(shù)從高到低的順序選擇設(shè)定個(gè)數(shù)的容器,作為滿(mǎn)足設(shè)定條件的容器。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述抽樣模塊具體用于 將要查找的元數(shù)據(jù)分為多個(gè)組,在每個(gè)組中抽樣一個(gè)元數(shù)據(jù),將每個(gè)組中特征值最小的元數(shù)據(jù)作為抽樣的第一元數(shù)據(jù)。
9.根據(jù)權(quán)利要求6-8任一項(xiàng)所述的裝置,其特征在于,還包括 稀疏索引表設(shè)置模塊,用于從容器中存儲(chǔ)的元數(shù)據(jù)中抽樣出至少一個(gè)第二元數(shù)據(jù),將第二元數(shù)據(jù)中的特征值,作為容器對(duì)應(yīng)的容器標(biāo)識(shí)在所述稀疏索引表中的位置的索引;或者,將第二元數(shù)據(jù)的部分特征值作為容器對(duì)應(yīng)的容器標(biāo)識(shí)在所述稀疏索引表中位置的索弓I,其中,每個(gè)第二元數(shù)據(jù)的特征值確定一個(gè)位置索引。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述稀疏索引表設(shè)置模塊將第二元數(shù)據(jù)中的特征值,作為容器對(duì)應(yīng)的容器標(biāo)識(shí)在所述稀疏索引表中的位置的索引或者將第二元數(shù)據(jù)的部分特征值作為容器對(duì)應(yīng)的容器標(biāo)識(shí)在所述稀疏索引表中位置的索引部分,具體包括 將稀疏索引表設(shè)置為由表示行索引的一級(jí)索引偏移量和表示列索引的二級(jí)索引偏移量組成的二維表; 如果容器標(biāo)識(shí)位置的索引為所述抽樣的第二元數(shù)據(jù)的特征值,則根據(jù)所述第二元數(shù)據(jù)的特征值的高位確定所述一級(jí)索引偏移量,根據(jù)所述第二元數(shù)據(jù)的特征值的低位確定所述二級(jí)索引偏移量;或者,如果所述位置的索引為所述第二元數(shù)據(jù)的部分特征值,則根據(jù)所述第二元數(shù)據(jù)中的部分特征值的高位確定所述一級(jí)索引偏移量,根據(jù)所述第二元數(shù)據(jù)中的部分特征值的低位確定所述二級(jí)索引偏移量。
全文摘要
本發(fā)明實(shí)施例提供一種元數(shù)據(jù)查詢(xún)方法和裝置。該方法包括在要查找的元數(shù)據(jù)中抽樣出至少一個(gè)第一元數(shù)據(jù);將抽樣得到的每個(gè)第一元數(shù)據(jù)中的至少部分特征值作為索引,在內(nèi)存中預(yù)置的稀疏索引表中查找對(duì)應(yīng)的容器標(biāo)識(shí),所述稀疏索引表中記錄容器標(biāo)識(shí),每個(gè)容器標(biāo)識(shí)在所述索引表中位置的索引是所述容器標(biāo)識(shí)對(duì)應(yīng)容器中存儲(chǔ)的元數(shù)據(jù)的至少部分特征值;根據(jù)同一個(gè)容器標(biāo)識(shí)被查到的次數(shù),選擇滿(mǎn)足設(shè)定條件的容器標(biāo)識(shí)對(duì)應(yīng)的容器;將所述選擇的容器中的元數(shù)據(jù)加載到元數(shù)據(jù)緩存中;從所述元數(shù)據(jù)緩存中查找與所述要查找的元數(shù)據(jù)相同的數(shù)據(jù)塊。本發(fā)明實(shí)施例可以提高查詢(xún)性能,降低內(nèi)存占用空間。
文檔編號(hào)G06F17/30GK102663090SQ20121010293
公開(kāi)日2012年9月12日 申請(qǐng)日期2012年4月10日 優(yōu)先權(quán)日2012年4月10日
發(fā)明者劉強(qiáng), 張程偉 申請(qǐng)人:華為技術(shù)有限公司