亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

數(shù)據(jù)庫子串過濾索引系統(tǒng)及其構(gòu)建、查詢方法

文檔序號:6371638閱讀:229來源:國知局
專利名稱:數(shù)據(jù)庫子串過濾索引系統(tǒng)及其構(gòu)建、查詢方法
技術(shù)領(lǐng)域
本發(fā)明屬于數(shù)據(jù)庫技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)庫子串過濾索引系統(tǒng)及其構(gòu)建、查詢方法。
背景技術(shù)
在很多行業(yè)中,每時每刻都在產(chǎn)生著大量數(shù)據(jù),從而形成了對海量歷史數(shù)據(jù)的存儲需求,在這些海量數(shù)據(jù)中,常常需要對某些文本數(shù)據(jù)進(jìn)行子串查詢。所謂子串查詢,指的是對某列數(shù)據(jù),查詢包含某一個子字符串的數(shù)據(jù),或者是數(shù)據(jù)庫的like查詢,在大部分情況下都是形如select*from t where name like ‘%abcd%’的查詢,這實(shí)際上就是對name這一列進(jìn)行的一個abed的子串查詢。這些需求要求我們?yōu)檫@類查詢建立索引以滿足快速 查詢需求,同時由于在不斷產(chǎn)生新的數(shù)據(jù)要求導(dǎo)入到存儲系統(tǒng)中,還要求數(shù)據(jù)庫系統(tǒng)有極 高的導(dǎo)入速度。然而,傳統(tǒng)的like查詢及子串查詢沒法使用索引,而在互聯(lián)網(wǎng)應(yīng)用中,類似的查詢有全文檢索中的關(guān)鍵字查詢,會對數(shù)據(jù)建立倒排索引,然而并不適用于數(shù)據(jù)庫的精確查詢以及海量歷史數(shù)據(jù)。這類索引用于數(shù)據(jù)庫精確子串查詢以及海量歷史數(shù)據(jù)存在著三方面的問題I、無法得到精確結(jié)果。倒排索引只能先分詞針對可能的關(guān)鍵字建立索引,不是真正的全文任一子串的索引,因此查詢結(jié)果無法保證所有包含了被查詢子串(特別是不規(guī)則詞語或自造詞)的數(shù)據(jù)都被返回,有些包含了查詢子串的數(shù)據(jù)可能由于沒有被成功分詞從而沒有被倒排索引預(yù)處理到,因此這在數(shù)據(jù)庫的精確查詢中是不可用的。2、空間成本高,索引本身就必須對可能被查詢的所有分詞進(jìn)行預(yù)處理,索引數(shù)據(jù)量非常大,甚至大過數(shù)據(jù)本身,并且難以被壓縮,在數(shù)據(jù)導(dǎo)入過程中壓力極大;對于海量歷史數(shù)據(jù)來說,往往非常容易壓縮,因此通過壓縮能夠?qū)?shù)據(jù)量大大縮小,但是一旦使用這類索引,索引龐大又幾乎無法壓縮從而使數(shù)據(jù)壓縮帶來的好處幾乎抵消。3、維護(hù)成本高,建立索引速度慢。有兩種方式建立索引,一是先建立,其代價是數(shù)據(jù)在導(dǎo)入時需要同步地維護(hù)索引,隨機(jī)的索引插入可能是非常耗時的,同時,在索引建立完成之后,還是需要一個獨(dú)立的壓縮過程;二是后建立,這意味著在數(shù)據(jù)裝載完成之后,需要對大批數(shù)據(jù)重新進(jìn)行分詞及進(jìn)行索引創(chuàng)建,如果單個索引維護(hù)的數(shù)據(jù)較少,則意味著索引的數(shù)量會增加,這就降低了索引本身的效能。綜合起來看,無論采用那種模式,維護(hù)全文索引對數(shù)據(jù)裝載速度都會產(chǎn)生嚴(yán)重的影響。綜上所述,如何利用好海量歷史數(shù)據(jù)子串查詢特征,如何為海量歷史數(shù)據(jù)子串查詢建立空間占用小且有效的索引,實(shí)現(xiàn)對海量歷史數(shù)據(jù)特別是為其壓縮后數(shù)據(jù)的快速導(dǎo)入和查詢是目前迫切需要解決的問題。

發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種精確度高、空間成本及維護(hù)成本低且建立索引速度快的數(shù)據(jù)庫子串過濾索引系統(tǒng)及其構(gòu)建、查詢方法。本發(fā)明解決其技術(shù)問題是采取以下技術(shù)方案實(shí)現(xiàn)的一種數(shù)據(jù)庫子串過濾索引系統(tǒng),包括將導(dǎo)入數(shù)據(jù)進(jìn)行分片數(shù)據(jù)存儲并從每個分片數(shù)據(jù)中提取出描述分片數(shù)據(jù)的子串特征構(gòu)建一個或多個子串特征過濾位圖的分片式數(shù)據(jù)存儲模塊,以及用于存儲以子串特征過濾位圖為子串特征索引的過濾索引存儲模塊。而且,所述分片數(shù)據(jù)存儲的存儲方式為每個分片數(shù)據(jù)作為數(shù)據(jù)庫中的一行存儲,對于同一分片數(shù)據(jù)盡可能連續(xù)存儲;所述子串特征索引的數(shù)據(jù)存儲方式為包括對多個不同小子串特征位圖的存儲,對于同一個小子串特征位圖采用連續(xù)存儲。而且,所述的分片數(shù)據(jù)和子串特征索引采用壓縮后的數(shù)據(jù)進(jìn)行存儲。一種基于數(shù)據(jù)庫子串過濾索引系統(tǒng)的構(gòu)建方法,包括以下步驟
步驟I :對所有導(dǎo)入數(shù)據(jù)進(jìn)行分片存儲;步驟2 :對于每個分片數(shù)據(jù),使用小子串特征值建立小子串特征位圖作為子串特征的概要知識,分別為每個需要建子串過濾索引的列建立一個或多個子串特征過濾位圖,然后分別進(jìn)行保存;步驟3 :為每個小子串特征位圖預(yù)存足夠連續(xù)物理空間,在內(nèi)存中建立一個或多個小子串特征位圖的緩存,當(dāng)緩存積累到一定大小時將位圖數(shù)據(jù)回刷到物理存儲;步驟4 :將所有分片數(shù)據(jù)包的所有子串特征位圖,共同構(gòu)成子串過濾索引。而且,所述步驟I對導(dǎo)入數(shù)據(jù)進(jìn)行分片存儲包括以下處理方式按導(dǎo)入順序每隔一定行數(shù)作為一個分片,或者按照哈?;蚱渌?guī)則進(jìn)行聚集分片,或是對緩沖區(qū)內(nèi)的導(dǎo)入數(shù)據(jù)排序后按順序分片。而且,所述步驟2建立小子串特征位圖方法為(I)構(gòu)建一個稀疏位圖,該稀疏位圖的位數(shù)與要索引數(shù)據(jù)的字節(jié)數(shù)相關(guān);(2)為數(shù)據(jù)每一行指定長度為K的小子串計算出特征值;(3)將特征值映射到稀疏位圖上進(jìn)行置位;(4)所有小子串映射置位后的結(jié)果位圖即為小子串特征位圖。而且,所述多個子串特征位圖的特征值計算方法采用各種不同哈希算法及指定各種不同K值;所述特征值到位圖某一位的映射使用取模方法。一種基于數(shù)據(jù)庫子串過濾索引系統(tǒng)的查詢方法,包括以下步驟步驟I、獲取子串過濾索引包含的所有子串特征過濾位圖并創(chuàng)建分片數(shù)據(jù)的過濾結(jié)果位圖;步驟2、遍歷過濾結(jié)果位圖,獲取未被過濾的分片數(shù)據(jù),遍歷查詢條件對應(yīng)列,判斷真實(shí)數(shù)據(jù)是否符合子串查詢條件,若符合則返回該行數(shù)據(jù)。而且,所述步驟I創(chuàng)建分片數(shù)據(jù)的過濾結(jié)果位圖采用如下方法實(shí)現(xiàn)(I)假設(shè)子串特征位圖所對應(yīng)的小子串長度為K,將待查詢子串分解得到長度為K的所有小子串作為過濾條件,計算這些小子串特征值,映射得到這些值在子串特征位圖中所處的位置下標(biāo);遍歷每個分片數(shù)據(jù)對應(yīng)的該子串特征位圖,判斷位圖中所有小子串對應(yīng)下標(biāo)所指向位置是否被置位,只要有一個未被置位即可確定相應(yīng)分片數(shù)據(jù)被過濾;(2)為所有分片數(shù)據(jù)包按順序建立一個過濾結(jié)果位圖,在使用每個子串過濾結(jié)果位圖進(jìn)行過濾時,將被過濾的分片數(shù)據(jù)包對應(yīng)位置置位,實(shí)現(xiàn)使用位圖進(jìn)行過濾結(jié)果的保存。而且,所述對子串特征過濾位圖進(jìn)行分片過濾時,采用多個特征過濾位圖同時進(jìn)行并將結(jié)果進(jìn)行合并然后置位到結(jié)果位圖中,或者采用一個子串特征過濾位圖處理完后再使用下一個進(jìn)行過濾并將結(jié)果進(jìn)行合并;若被過濾掉的分片數(shù)據(jù)占所有分片數(shù)據(jù)的比例達(dá)到一定閾值時,停止對剩余位圖的過濾處理。本發(fā)明的優(yōu)點(diǎn)和積極效果是I、本發(fā)明對導(dǎo)入數(shù)據(jù)進(jìn)行分片處理并對數(shù)據(jù)在分片內(nèi)部按列進(jìn)行壓縮存儲,能夠獲得更高的壓縮率和單列訪問性能。2、本發(fā)明對分片數(shù)據(jù)的稀疏哈希位圖描述能夠大大避免對不存在查詢值的分片數(shù)據(jù)包的訪問,從而大大降低了磁盤訪問開銷以及數(shù)據(jù)解壓開銷,大大提高數(shù)據(jù)庫性能。 3、本發(fā)明使用稀疏哈希位圖的概要知識是可擴(kuò)展的,能夠在此存儲框架上進(jìn)一步優(yōu)化對分片數(shù)據(jù)的描述方法,進(jìn)一步提高訪問性能。4、本發(fā)明采用的稀疏哈希位圖具有稀疏特性且極易壓縮,因此索引空間占用極小,相對于數(shù)據(jù)大小幾乎可以忽略,但在海量歷史數(shù)據(jù)的等值查詢中可獲取與傳統(tǒng)索引相當(dāng)?shù)牟樵冃阅堋?、本發(fā)明設(shè)計合理,解決了傳統(tǒng)索引空間占用大、壓縮數(shù)據(jù)難以索引的的問題,實(shí)現(xiàn)了對海量文本數(shù)據(jù)高效的子串、關(guān)鍵字查詢功能,大大減少了對數(shù)據(jù)的磁盤讀寫次數(shù),提升了數(shù)據(jù)庫的全表掃描性能。


圖I是本發(fā)明的數(shù)據(jù)庫子串過濾索引系統(tǒng)整體框架圖;圖2是稀疏哈希位圖映射標(biāo)記示意圖;圖3是本發(fā)明的數(shù)據(jù)庫子串過濾索引系統(tǒng)的構(gòu)建流程圖;圖4是本發(fā)明的數(shù)據(jù)庫子串過濾索引系統(tǒng)的查詢流程圖。
具體實(shí)施例方式以下結(jié)合附圖對本發(fā)明實(shí)施例做進(jìn)一步詳述一種數(shù)據(jù)庫子串過濾索引系統(tǒng),如圖I所示,包括分片式數(shù)據(jù)存儲模塊和過濾索引存儲模塊。所述的分片式數(shù)據(jù)存儲模塊將導(dǎo)入數(shù)據(jù)作為分片數(shù)據(jù)存儲于數(shù)據(jù)庫中,每個分片數(shù)據(jù)相當(dāng)于普通數(shù)據(jù)庫中的一行,只是每個分片數(shù)據(jù)都較大,并連續(xù)存儲,從而可以獲得較高的訪問性能;對于不同分片數(shù)據(jù),要求在存儲中能夠快速地在實(shí)際存儲中根據(jù)分片編號快速定位,即分片數(shù)據(jù)的存儲對外提供隨機(jī)存取功能。所述的過濾索引存儲模塊用于存儲子串過濾位圖,該子串特征過濾位圖是從每個分片數(shù)據(jù)中提取出描述分片數(shù)據(jù)子串特征的概要知識,可對同一列數(shù)據(jù)建立多個子串特征過濾位圖。每個過濾位圖使用不同的子串特征描述方法,供查詢時協(xié)同使用;不同的子串特征描述方法可以是小子串長度不同,也可以是特征值計算方法不同,也可以是位圖長度不同,或是映射方法的不同。在子串過濾索引數(shù)據(jù)存儲架構(gòu)中,包含對多個不同小子串特征位圖的存儲,對于同一個小子串特征位圖,要求所有分片數(shù)據(jù)的位圖數(shù)據(jù)連續(xù)的存放,以獲得盡可能高的順序訪問性能;對于不同的小子串特征位圖,對空間的連續(xù)性沒有要求。
圖2給出了小子串特征位圖映射標(biāo)記關(guān)系,小子串特征位圖根據(jù)一個分片數(shù)據(jù)包的該列數(shù)據(jù)大小申請足夠的位圖空間并清0,原數(shù)據(jù)與位圖的空間比例可由用戶指定,小子串長度由用戶指定為K (K為小于行數(shù)據(jù)長度的自然數(shù)),系統(tǒng)獲取數(shù)據(jù)包中的每一行數(shù)據(jù)的所有長度為K的小子串,計算這些小子串的特征值,可使用哈希計算特征值,將這些特征值映射到該小子串特征位圖中進(jìn)行標(biāo)記,圖中*號即表示位圖中的某位被標(biāo)記,若子串查詢的所有長度為K的小子串經(jīng)同樣方法映射到位圖中,對應(yīng)位置只要不存在該標(biāo)記,則表明該分片數(shù)據(jù)包可被過濾。一種基于數(shù)據(jù)庫子串過濾索引系統(tǒng)的構(gòu)建方法,包括以下步驟I、對所有導(dǎo)入數(shù)據(jù)進(jìn)行分片存儲。在本步驟中,對導(dǎo)入數(shù)據(jù)進(jìn)行分片可以包括以下幾種方式按導(dǎo)入順序每隔一定行數(shù)作為一個分片,或者按照哈希或其他規(guī)則進(jìn)行聚集分片,或是對緩沖區(qū)內(nèi)的導(dǎo)入數(shù)據(jù)排序后按順序分片。
2、對于每個分片數(shù)據(jù),使用小子串特征值建立小子串特征位圖作為子串特征的概要知識,分別為每個需要建子串過濾索引的列建立一個或多個子串特征過濾位圖,并分別進(jìn)行保存。在本步驟中,建立小子串特征位圖方法為(I)構(gòu)建一個稀疏位圖,位圖的位數(shù)與要索引數(shù)據(jù)的字節(jié)數(shù)相關(guān)并允許用戶設(shè)置,位數(shù)越多則位圖越稀疏,查詢效果越好;(2)為數(shù)據(jù)每一行的每一個長度為K (K為指定的小于數(shù)據(jù)長度的自然數(shù))的小子串計算出特征值,特征值計算方法可以是各種哈希算法或是其他特征描述方法;(3)將特征值映射到前述稀疏位圖上進(jìn)行置位,特征值到位圖某一位的映射可以使用取?;蚱渌成浞椒?;(4)所有小子串映射置位后的結(jié)果位圖即為小子串特征位圖。3、為每個小子串特征位圖預(yù)存足夠連續(xù)物理空間,在內(nèi)存中維護(hù)按上述方法建立的一個或多個小子串特征位圖的緩存,當(dāng)緩存積累到一定大小時將位圖數(shù)據(jù)回刷到物理存儲,同一個位圖的數(shù)據(jù)在物理存儲中連續(xù)存放。4、所有分片數(shù)據(jù)包的所有子串特征位圖,共同構(gòu)成了子串過濾索引。通過上述步驟,將分片數(shù)據(jù)包的所有子串特征位圖構(gòu)成了子串過濾索引,在查詢時協(xié)同處理調(diào)度使用。如圖3所示,本基于數(shù)據(jù)庫子串過濾索引系統(tǒng)的構(gòu)建方法通過軟件程序?qū)崿F(xiàn)的軟件流程為301為子串過濾索引創(chuàng)建存儲空間。302導(dǎo)入一行數(shù)據(jù)。303從導(dǎo)入數(shù)據(jù)中取得待索引列的數(shù)據(jù)。304根據(jù)用戶指定的多個需根據(jù)不同方式建立的小子串特征位圖,為每個小子串特征位圖對數(shù)據(jù)提取所有的指定長度小子串并根據(jù)相應(yīng)的方法計算小子串的特征值,將這些特征值按照各個小子串特征位圖的需要分別保存起來。305判斷數(shù)據(jù)行數(shù)是否滿足分片大小閾值或已完成導(dǎo)入(分片打包條件),若不滿足則返回302,繼續(xù)導(dǎo)入下一行數(shù)據(jù)。
306-308若滿足為打包條件,存儲分片包數(shù)據(jù),并按照圖2的映射方法創(chuàng)建每個小子串特征位圖,根據(jù)以計算好的特征值為每個小子串特征位圖置位。309判斷是否已導(dǎo)入完成所有數(shù)據(jù),若沒有回到302繼續(xù)進(jìn)行導(dǎo)入操作,若導(dǎo)入完成進(jìn)入下一流程。310已完成所有數(shù)據(jù)導(dǎo)入,結(jié)束導(dǎo)入流程。一種基于數(shù)據(jù)庫子串過濾索引系統(tǒng)的查詢方法,包括以下步驟I、獲取子串過濾索引包含的所有子串特征過濾位圖并創(chuàng)建分片數(shù)據(jù)的過濾結(jié)果位圖。在本步驟中,創(chuàng)建分片數(shù)據(jù)的過濾結(jié)果位圖采用如下方法實(shí)現(xiàn)(I)對多個子串特征過濾位圖進(jìn)行分片過濾 假設(shè)子串特征位圖所對應(yīng)的小子串長度為K,將待查詢子串分解得到長度為K的所有小子串作為過濾條件,根據(jù)相應(yīng)子串特征位圖的特征計算方法計算這些小子串特征值,以及根據(jù)相應(yīng)映射方法得到這些值在子串特征位圖中所處的位置下標(biāo);遍歷每個分片數(shù)據(jù)對應(yīng)的該子串特征位圖,測試位圖中前述所有小子串對應(yīng)下標(biāo)所指向位置是否被置位,只要有一個未被置位即可確定相應(yīng)分片數(shù)據(jù)可被過濾。(2)為所有分片數(shù)據(jù)包按順序建立一個過濾結(jié)果位圖,在使用每個子串過濾結(jié)果位圖進(jìn)行過濾時,將被過濾的分片數(shù)據(jù)包對應(yīng)位置置位,實(shí)現(xiàn)使用位圖進(jìn)行過濾結(jié)果的保存在對多個子串特征過濾位圖進(jìn)行分片過濾過程中,可多個特征過濾位圖同時進(jìn)行,將結(jié)果進(jìn)行合并然后置位到結(jié)果位圖中,也可一個子串特征過濾位圖處理完后再使用下一個進(jìn)行過濾并將結(jié)果進(jìn)行合并。在對多個子串特征過濾位圖進(jìn)行分片過濾過程中,若被過濾掉的分片數(shù)據(jù)占所有分片數(shù)據(jù)的比例達(dá)到一定閾值時,可停止對剩余位圖的過濾處理。2、遍歷過濾結(jié)果位圖,獲取未被過濾的分片數(shù)據(jù),遍歷查詢條件對應(yīng)列,判斷真實(shí)數(shù)據(jù)是否符合子串查詢條件,若符合則返回該行數(shù)據(jù)。如圖4所示,本基于數(shù)據(jù)庫子串過濾索引系統(tǒng)的查詢方法通過軟件程序?qū)崿F(xiàn)的具體流程為401創(chuàng)建分片數(shù)據(jù)的過濾結(jié)果位圖,用來標(biāo)明每個分片數(shù)據(jù)包是否已被過濾索引掉,從而在實(shí)際查詢時可跳過被過濾的數(shù)據(jù)包。402對查詢條件所在子串過濾索引的每個數(shù)據(jù)包對應(yīng)的所有小子串特征位圖進(jìn)行遍歷。403根據(jù)該位圖創(chuàng)建時的方法,計算查詢條件對應(yīng)的所有小子串的特征值,并找到這些特征值在位圖中映射的位置是否被置位,只要有一個未被置位則表明該數(shù)據(jù)包不可能包含被查詢值,可被過濾掉,進(jìn)入404,否則表明該位圖對應(yīng)的分片數(shù)據(jù)包為可疑數(shù)據(jù)包,流程繼續(xù)下一個數(shù)據(jù)包的檢驗(yàn)。404進(jìn)入這一流程表明當(dāng)前稀疏哈希位圖對應(yīng)的數(shù)據(jù)包可被過濾,在結(jié)果位圖中相應(yīng)數(shù)據(jù)包位置進(jìn)行置位。405判斷該索引是否已掃描完成,若未完成則回到402繼續(xù)檢驗(yàn),若已完成進(jìn)入下
一流程。
406根據(jù)最終的過濾結(jié)果位圖,訪問未被過濾掉的所有分片數(shù)據(jù)包,對未被過濾掉的分片數(shù)據(jù)包執(zhí)行精確查詢,在這時候,大部分不符合查詢條件的分片數(shù)據(jù)已經(jīng)不用進(jìn)行訪問和解壓及查詢了,從而大大提高了系統(tǒng)查詢性能。需要強(qiáng)調(diào)的是,本發(fā)明所述的實(shí)施例是說明性的,而不是限定性的,因此本發(fā)明并不限于具體實(shí)施方式
中所述的實(shí)施例,凡是由本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的技術(shù)方案得出 的其他實(shí)施方式,同樣屬于本發(fā)明保護(hù)的范圍。
權(quán)利要求
1.一種數(shù)據(jù)庫子串過濾索引系統(tǒng),其特征在于包括將導(dǎo)入數(shù)據(jù)進(jìn)行分片數(shù)據(jù)存儲并從每個分片數(shù)據(jù)中提取出描述分片數(shù)據(jù)的子串特征構(gòu)建一個或多個子串特征過濾位圖的分片式數(shù)據(jù)存儲模塊,以及用于存儲以子串特征過濾位圖為子串特征索引的過濾索引存儲模塊。
2.根據(jù)權(quán)利要求I所述的數(shù)據(jù)庫子串過濾索引系統(tǒng),其特征在于所述分片數(shù)據(jù)存儲的存儲方式為每個分片數(shù)據(jù)作為數(shù)據(jù)庫中的一行存儲,對于同一分片數(shù)據(jù)盡可能連續(xù)存儲;所述子串特征索引的數(shù)據(jù)存儲方式為包括對多個不同小子串特征位圖的存儲,對于同一個小子串特征位圖采用連續(xù)存儲。
3.根據(jù)權(quán)利要求I所述的數(shù)據(jù)庫子串過濾索引系統(tǒng),其特征在于所述的分片數(shù)據(jù)和子串特征索引采用壓縮后的數(shù)據(jù)進(jìn)行存儲。
4.一種根據(jù)權(quán)利要求I 3中任一項(xiàng)所述的數(shù)據(jù)庫子串過濾索引系統(tǒng)的構(gòu)建方法,包括以下步驟 步驟I :對所有導(dǎo)入數(shù)據(jù)進(jìn)行分片存儲; 步驟2 :對于每個分片數(shù)據(jù),使用小子串特征值建立小子串特征位圖作為子串特征的概要知識,分別為每個需要建子串過濾索引的列建立一個或多個子串特征過濾位圖,然后分別進(jìn)行保存; 步驟3 :為每個小子串特征位圖預(yù)存足夠連續(xù)物理空間,在內(nèi)存中建立一個或多個小子串特征位圖的緩存,當(dāng)緩存積累到一定大小時將位圖數(shù)據(jù)回刷到物理存儲; 步驟4:將所有分片數(shù)據(jù)包的所有子串特征位圖,共同構(gòu)成子串過濾索引。
5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)庫子串過濾索引系統(tǒng),其特征在于所述步驟I對導(dǎo)入數(shù)據(jù)進(jìn)行分片存儲包括以下處理方式按導(dǎo)入順序每隔一定行數(shù)作為一個分片,或者按照哈?;蚱渌?guī)則進(jìn)行聚集分片,或是對緩沖區(qū)內(nèi)的導(dǎo)入數(shù)據(jù)排序后按順序分片。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)庫子串過濾索引系統(tǒng),其特征在于所述步驟2建立小子串特征位圖方法為 (1)構(gòu)建一個稀疏位圖,該稀疏位圖的位數(shù)與要索引數(shù)據(jù)的字節(jié)數(shù)相關(guān); (2)為數(shù)據(jù)每一行指定長度為K的小子串計算出特征值; (3)將特征值映射到稀疏位圖上進(jìn)行置位; (4)所有小子串映射置位后的結(jié)果位圖即為小子串特征位圖。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)庫子串過濾索引系統(tǒng),其特征在于所述多個子串特征位圖的特征值計算方法采用各種不同哈希算法或指定不同的K值進(jìn)行計算;所述特征值到位圖某一位的映射使用取模方法。
8.—種根據(jù)權(quán)利要求I 3中任一項(xiàng)所述的數(shù)據(jù)庫子串過濾索引系統(tǒng)的查詢查詢方法,包括以下步驟 步驟I、獲取子串過濾索引包含的所有子串特征過濾位圖并創(chuàng)建分片數(shù)據(jù)的過濾結(jié)果位圖; 步驟2、遍歷過濾結(jié)果位圖,獲取未被過濾的分片數(shù)據(jù),遍歷查詢條件對應(yīng)列,判斷真實(shí)數(shù)據(jù)是否符合子串查詢條件,若符合則返回該行數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)庫子串過濾索引系統(tǒng),其特征在于所述步驟I創(chuàng)建分片數(shù)據(jù)的過濾結(jié)果位圖采用如下方法實(shí)現(xiàn)(1)假設(shè)子串特征位圖所對應(yīng)的小子串長度為K,將待查詢子串分解得到長度為K的所有小子串作為過濾條件,計算這些小子串特征值,映射得到這些值在子串特征位圖中所處的位置下標(biāo);遍歷每個分片數(shù)據(jù)對應(yīng)的該子串特征位圖,判斷位圖中所有小子串對應(yīng)下標(biāo)所指向位置是否被置位,只要有一個未被置位即可確定相應(yīng)分片數(shù)據(jù)被過濾; (2)為所有分片數(shù)據(jù)包按順序建立一個過濾結(jié)果位圖,在使用每個子串過濾結(jié)果位圖進(jìn)行過濾時,將被過濾的分片數(shù)據(jù)包對應(yīng)位置置位,實(shí)現(xiàn)使用位圖進(jìn)行過濾結(jié)果的保存。
10.根據(jù)權(quán)利要求8所述的數(shù)據(jù)庫子串過濾索引系統(tǒng),其特征在于所述對子串特征過濾位圖進(jìn)行分片過濾時,采用多個特征過濾位圖同時進(jìn)行并將結(jié)果進(jìn)行合并然后置位到結(jié)果位圖中,或者采用一個子串特征過濾位圖處理完后再使用下一個進(jìn)行過濾并將結(jié)果進(jìn)行合并;若被過濾掉的分片數(shù)據(jù)占所有分片數(shù)據(jù)的比例達(dá)到一定閾值時,停止對剩余位圖的過濾處理。
全文摘要
本發(fā)明涉及一種數(shù)據(jù)庫子串過濾索引系統(tǒng)及其構(gòu)建、查詢方法,其技術(shù)特點(diǎn)是該子串過濾索引系統(tǒng)包括將導(dǎo)入數(shù)據(jù)進(jìn)行分片數(shù)據(jù)存儲并從每個分片數(shù)據(jù)中提取出描述分片數(shù)據(jù)的子串特征構(gòu)建一個或多個子串特征過濾位圖的分片式數(shù)據(jù)存儲模塊,以及用于存儲以子串特征過濾位圖為子串特征索引的過濾索引存儲模塊,還包括該子串過濾索引系統(tǒng)的構(gòu)建和查詢方法。本發(fā)明設(shè)計合理,解決了傳統(tǒng)索引空間占用大、壓縮數(shù)據(jù)難以索引的的問題,實(shí)現(xiàn)了對海量文本數(shù)據(jù)高效的子串、關(guān)鍵字查詢功能,大大減少了對數(shù)據(jù)的磁盤讀寫次數(shù),提升了數(shù)據(jù)庫的全表掃描性能。
文檔編號G06F17/30GK102831146SQ201210202879
公開日2012年12月19日 申請日期2012年6月19日 優(yōu)先權(quán)日2012年6月19日
發(fā)明者蔡華林, 馮柯, 徐昶, 何清法, 周麗霞, 蔣志勇, 毛云青, 趙殿奎, 李海峰 申請人:天津神舟通用數(shù)據(jù)技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1