專利名稱:一種數(shù)據(jù)庫范圍查詢數(shù)據(jù)組織的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及現(xiàn)代內(nèi)存數(shù)據(jù)庫查詢技術(shù),具體涉及一種數(shù)據(jù)庫范圍查詢 數(shù)據(jù)組織的方法。
背景技術(shù):
無線通訊技術(shù)的發(fā)展對數(shù)據(jù)管理提出了越來越高的要求,特別是在第 四代通訊系統(tǒng)中對數(shù)據(jù)查詢速度的更是提出了更高的要求,傳統(tǒng)的范圍查詢一般釆用B樹的方式對某些列建立索引以輔助查詢,找到查詢的最小值, 找到查詢的最大值就可以用常數(shù)時間遍歷需要的數(shù)據(jù)。但是對于最大值和 最小值的查詢卻是對數(shù)時間復(fù)雜度。數(shù)據(jù)庫中另一種O(l)時間復(fù)雜度的 索引方案是采用hash方法建立索引,但是該方法卻不能實現(xiàn)范圍查詢的目 的。目前對于實時系統(tǒng),特別是未來的基站系統(tǒng),其數(shù)據(jù)量比較大,傳統(tǒng) 的范圍查詢方案逐漸地不能滿足其要求。比如,現(xiàn)在常用的各種數(shù)據(jù)庫的 范圍查詢所采用的B樹索引,其在查小范圍記錄的時候查詢效率比較低, 無法滿足大數(shù)據(jù)量查詢的需求。所以就需要提供一種更高效地查詢方法。發(fā)明內(nèi)容本發(fā)明的目的在于提出 一種數(shù)據(jù)庫范圍查詢數(shù)據(jù)組織的方法,其屬于 一種新的索引組織方案,該方案既能很好地適應(yīng)單一記錄查詢,也能更有 效地實現(xiàn)范圍查詢,并且這兩種查詢在效率上沒有任何區(qū)別。為了實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案本發(fā)明的方法用于一通訊系統(tǒng)的數(shù)據(jù)管理,并包括以下步驟進(jìn)行A、 根據(jù)索引關(guān)鍵字建立B樹索引;B、 對所述B樹索引以所述索引關(guān)鍵字建立hash索引;C、 結(jié)合所述B樹索引和hash索引對數(shù)據(jù)庫進(jìn)行管理。其中,在hash索引中,每個hash索引項記錄有所述索引關(guān)鍵字,以及所述索引關(guān)鍵字對應(yīng)的B樹節(jié)點地址。其中,所述步驟C采用如下過程在數(shù)據(jù)庫范圍內(nèi)進(jìn)行單記錄查詢 Cll、根據(jù)預(yù)查詢記錄的索引關(guān)鍵字,在所述hash索引處查找與預(yù)查詢記錄相對應(yīng)的hash索引項;C12、從查找到的hash索引項中讀取對應(yīng)的B樹節(jié)點地址;C13、 4艮據(jù)讀取的B樹節(jié)點地址,在所述B樹索引處查找與預(yù)查詢記錄相對應(yīng)于的B樹索引項。其中,所述步驟C采用如下過程在數(shù)據(jù)庫范圍內(nèi)進(jìn)行范圍查詢C21、才艮據(jù)所述單記錄查詢的過程,查找預(yù)查詢范圍的最大記錄和最小記錄對應(yīng)的B樹索引項;C22、從所述最小記錄的B樹索引項對應(yīng)的B樹節(jié)點地址開始,根據(jù)B樹索引一直順序查找,直到找到所述最大記錄的B樹索引項對應(yīng)的B樹節(jié)點地址,在所述最小記錄對應(yīng)的B樹節(jié)點地址和所述最大記錄對應(yīng)的B樹節(jié)點地址之間的數(shù)據(jù),就是預(yù)查詢范圍內(nèi)的數(shù)據(jù)。其中,所述步驟C采用如下過程在數(shù)據(jù)庫范圍內(nèi)進(jìn)4亍記錄插入C31 、根據(jù)預(yù)插入記錄的索引關(guān)鍵字,將該記錄插入到所述B樹索引中;C32、對所述預(yù)插入記錄的索引關(guān)鍵字進(jìn)行hash算法計算,并根據(jù)計算結(jié)果,在hash索引中插入該記錄對應(yīng)的hash索引項。其中,所述步驟C采用如下過程在數(shù)據(jù)庫范圍內(nèi)進(jìn)行記錄刪除 C41、根據(jù)預(yù)刪除記錄的索引關(guān)鍵字,查找該記錄對應(yīng)的hash索引項; C42、讀取所述hash索引項中記錄的B樹節(jié)點地址,并刪除該hash索引項;C43、根據(jù)讀取的B樹節(jié)點地址,在B樹索引中查找并刪除對應(yīng)的B 樹索引項。其中,所述范圍查詢過程中,所述步驟C21與步驟C22之間還包括以 下步驟若預(yù)查詢范圍的最大記錄和最小記錄對應(yīng)的B樹索引項查詢不命 中,則采用在所述B樹索引中插入虛擬節(jié)點的方式,構(gòu)造所述最大記錄和 最小記錄對應(yīng)的B樹索引項。其中,根據(jù)所述B樹索引中插入的虛擬節(jié)點, 在所述hash索引中插入對應(yīng)的hash節(jié)點。其中,所述插入虛擬節(jié)點的方式采用如下過程根據(jù)預(yù)查詢記錄的索 引關(guān)鍵字,在B樹索引處查找大于預(yù)查詢記錄的第一 B樹索引項和小于預(yù) 查詢記錄的第二 B樹索引項,并在所述第一 B樹索引項和第二 B樹索引項 之間插入一虛擬B樹節(jié)點,該B樹節(jié)點對應(yīng)的B樹索引項就是與預(yù)查詢記 錄相對應(yīng)的B樹索引項。其中,當(dāng)在所述B樹索引處插入一虛擬B樹節(jié)點 后,對該B樹節(jié)點對應(yīng)的索引關(guān)鍵字進(jìn)行hash計算,并在所述hash索引中 插入該B樹節(jié)點對應(yīng)的hash索引項。采用本發(fā)明的上述方法,既可以在單位時間內(nèi)完成單一查詢,也可以 在單位時間內(nèi)完成范圍查詢。相對于現(xiàn)有技術(shù)中只采用B樹索引的查找方 式,從原B樹索引的logn+m減少了 logn-2次操作,這在頻繁的查詢操作 中是非常有益的,并且在數(shù)據(jù)量較大的數(shù)據(jù)庫系統(tǒng)中本發(fā)明的方法也具有 明顯的效果。
圖1為本發(fā)明索引組織的方案圖。
具體實施方式
以下結(jié)合附圖詳細(xì)描述本發(fā)明的技術(shù)方案。如圖l所示,本發(fā)明在原有只采用B樹索引的基礎(chǔ)上,結(jié)合了hash索 引方案,對數(shù)據(jù)庫進(jìn)行管理,使本發(fā)明同時結(jié)合了 B樹和hash索引兩者的 優(yōu)點。本發(fā)明的方法用于一通訊系統(tǒng)的數(shù)據(jù)管理,并包括以下步驟首先,才艮據(jù)原記錄的索引關(guān)鍵字建立;然后,對該B樹索引以索引關(guān)鍵字建立hash索引,也就是通it^B樹 索引區(qū)的索引關(guān)鍵字進(jìn)行hash計算,并根據(jù)計算結(jié)果建立hash索引區(qū)域。 為了減少空間浪費(fèi),索引關(guān)鍵字只存在于hash索引處,B樹索引只具有B 樹的其他非索引關(guān)鍵字字段,那么為了建立其兩者的對應(yīng)關(guān)系,如圖1所 示,在hash索引中,每個hash索引項記錄有索引關(guān)鍵字(Keyl,Key2,…, KeyN-l, KeyN),以及該索引關(guān)鍵字分別對應(yīng)的B樹節(jié)點地址(BindexAddrl, BindexAddr2,…,BindexAddrN-l, BindexAddrN)。其次,結(jié)合所述B樹索引和hash索引對數(shù)據(jù)庫進(jìn)行管理,此管理內(nèi)容 包括以下幾個方面(1) 記錄插入操作,其主要過程如下當(dāng)一條記錄插入時,首先#>據(jù)預(yù)插入記錄的索引關(guān)鍵字,將該記錄號 及相應(yīng)的B樹節(jié)點數(shù)據(jù)插入到B樹索引中;然后,對預(yù)插入記錄的索引關(guān) 鍵字進(jìn)行hash計算,并4艮據(jù)計算結(jié)果,在hash索引中插入該記錄對應(yīng)的 hash索引項,該hash索引項記錄有索引關(guān)鍵字,以及該索引關(guān)鍵字對應(yīng) 的B樹節(jié)點地址。(2) 記錄刪除操作,其主要過程如下當(dāng)一條記錄刪除時,首先根據(jù)預(yù)刪除記錄的索引關(guān)鍵字,查找該記錄 對應(yīng)的hash索引項;然后讀取hash索引項中記錄的B樹節(jié)點地址,并刪除 該hash索引項;最后根據(jù)讀取的B樹節(jié)點地址,在B樹索引中查找并刪除 對應(yīng)的B樹索引項。(3) 單記錄查詢操作,其主要過程如下單記錄查詢時,首先才艮據(jù)預(yù)查詢記錄的索引關(guān)鍵字,在hash索引處查找與預(yù)查詢記錄相對應(yīng)的hash索引項,從該hash索引項中讀取對應(yīng)的B樹 節(jié)點地址,然后根據(jù)讀取的B樹節(jié)點地址,在B樹索引處查找與預(yù)查詢記 錄相對應(yīng)于的B樹索引項,這一過程大概為2單位時間。 (4)范圍查詢操作,其主要過程如下在進(jìn)行范圍查詢時,首先才艮據(jù)上述單記錄查詢的過程,查找預(yù)查詢范 圍的最大記錄和最小記錄對應(yīng)的B樹索引項;然后,從最小記錄的B樹索 引項對應(yīng)的B樹節(jié)點地址開始,根據(jù)B樹索引一直順序查找,直到找到最 大記錄的B樹索引項對應(yīng)的B樹節(jié)點地址,那么,在最小記錄對應(yīng)的B樹 節(jié)點地址和最大記錄對應(yīng)的B樹節(jié)點地址之間的m個數(shù)據(jù),就是預(yù)查詢范 圍內(nèi)的數(shù)據(jù),這個過程的總時間是2+m個單位時間。上述范圍查詢時,不一定會命中,比如預(yù)查詢范圍的最大記錄和最小 記錄恰不在數(shù)據(jù)庫的B樹索引中,那么就存在預(yù)查詢范圍的最大記錄和最 小記錄對應(yīng)的B樹索引項查詢不命中的情況。對于這種情況,本發(fā)明采用 在B樹索引中插入虛擬節(jié)點的方式,構(gòu)造最大記錄和最小記錄對應(yīng)的B樹 索引項,從而完成范圍查找的操作,當(dāng)范圍查詢結(jié)束后,刪除虛擬節(jié)點。 這樣即完成了范圍查找,而且也不影響B(tài)樹索引的準(zhǔn)確性。當(dāng)B樹索引中 插入的虛擬節(jié)點,同時在hash索引中插入對應(yīng)的hash節(jié)點;當(dāng)刪除構(gòu)造的 虛擬節(jié)點時,也應(yīng)刪除對應(yīng)的hash節(jié)點,從而實時保持B樹索引和hash 索引的一致性。上述關(guān)于范圍查詢中如何插入虛擬節(jié)點,本發(fā)明提出了這樣一種方式 首先根據(jù)預(yù)查詢記錄的索引關(guān)鍵字,在B樹索引處查找大于預(yù)查詢記錄的 第一 B樹索引項和小于預(yù)查詢記錄的第二 B樹索引項,并在所述第一 B樹 索引項和第二B樹索引項之間插入一虛擬B樹節(jié)點,該B樹節(jié)點對應(yīng)的B 樹索引項就是與預(yù)查詢記錄相對應(yīng)的B樹索引項。當(dāng)在B樹索引處插入一 虛擬B樹節(jié)點后,對該B樹節(jié)點對應(yīng)的索引關(guān)鍵字進(jìn)行hash計算,并在 hash索引中插入該B樹節(jié)點對應(yīng)的hash索引項。根據(jù)這一思想,在進(jìn)行范圍查詢時,如果出現(xiàn)查詢不命中的時候,可以先依據(jù)上述方法在B樹索引 中插入預(yù)查詢范圍的最大記錄和最小記錄對應(yīng)的B樹節(jié)點,然后再沿著B 樹的節(jié)點依次找下去。例如,如圖1所示,B樹索引區(qū)域中葉子節(jié)點Leafl 中記錄數(shù)據(jù)"1" , Leaf2中記錄數(shù)據(jù)"3",…,LeafN-l中記錄數(shù)據(jù)"6", LeafN中記錄數(shù)據(jù)"8",當(dāng)預(yù)查詢范圍為"2"至"7"時,如果直接在B 樹索引中直接查找"2"和"7"都會不命中,因為B樹中不存在這兩值, 所以通過插入虛擬節(jié)點的方式,先查找大于"2"和小于"2"的B樹節(jié)點, 即Leafl和Leaf2,然后在Leafl和Leaf2之間插入一個虛擬的節(jié)點記錄"2" 這個值,同理,在LeafN-l和LeafN之間插入一個虛擬的節(jié)點記錄"7"這 個值,這樣就可以方便范圍查找了。當(dāng)這次范圍查找完成后,刪除插入的 虛擬節(jié)點。上述各具體步驟的舉例說明較為具體,并不能因此而認(rèn)為是對本發(fā)明 的專利保護(hù)范圍的限制,本發(fā)明的專利保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1、一種數(shù)據(jù)庫范圍查詢數(shù)據(jù)組織的方法,其用于一通訊系統(tǒng)的數(shù)據(jù)管理,并包括以下步驟A、根據(jù)索引關(guān)鍵字建立B樹索引;B、對所述B樹索引以所述索引關(guān)鍵字建立hash索引;C、結(jié)合所述B樹索引和hash索引對數(shù)據(jù)庫進(jìn)行管理。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,在hash索引中,每個 hash索引項記錄有所述索引關(guān)鍵字,以及所述索引關(guān)鍵字對應(yīng)的B樹節(jié) 點地址。
3、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟C采用如下過 程在數(shù)據(jù)庫范圍內(nèi)進(jìn)行單記錄查詢Cll、才艮據(jù)預(yù)查詢記錄的索引關(guān)鍵字,在所述hash索引處查找與預(yù)查詢記錄相對應(yīng)的hash索引項;C12、從查找到的hash索引項中讀取對應(yīng)的B樹節(jié)點地址;C13、根據(jù)讀取的B樹節(jié)點地址,在所述B樹索引處查找與預(yù)查詢記錄相對應(yīng)于的B樹索引項。
4、 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述步驟C采用如下過 程在數(shù)據(jù)庫范圍內(nèi)進(jìn)行范圍查詢C21、 4艮椐所述單記錄查詢的過程,查找預(yù)查詢范圍的最大記錄和最小 記錄對應(yīng)的B樹索引項;C22、從所述最小記錄的B樹索引項對應(yīng)的B樹節(jié)點地址開始,根據(jù)B 樹索引一直順序查找,直到找到所述最大記錄的B樹索引項對應(yīng)的B樹節(jié) 點地址,在所述最小記錄對應(yīng)的B樹節(jié)點地址和所述最大記錄對應(yīng)的B樹 節(jié)點地址之間的數(shù)據(jù),就是預(yù)查詢范圍內(nèi)的數(shù)據(jù)。
5、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟C采用如下過 程在數(shù)據(jù)庫范圍內(nèi)進(jìn)行記錄插入C31 、根據(jù)預(yù)插入記錄的索引關(guān)鍵字,將該記錄插入到所述B樹索引中; C32、對所述預(yù)插入記錄的索引關(guān)鍵字進(jìn)行hash算法計算,并根據(jù)計 算結(jié)果,在hash索引中插入該記錄對應(yīng)的hash索引項。
6、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟C采用如下過 程在數(shù)據(jù)庫范圍內(nèi)進(jìn)行記錄刪除C41、根據(jù)預(yù)刪除記錄的索引關(guān)鍵字,查找該記錄對應(yīng)的hash索引項; C42、讀取所述hash索引項中記錄的B樹節(jié)點地址,并刪除該hash索 引項;C43、根據(jù)讀取的B樹節(jié)點地址,在B樹索引中查找并刪除對應(yīng)的B 樹索引項。
7、 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述范圍查詢過程中, 所述步驟C21與步驟C22之間還包括以下步驟若預(yù)查詢范圍的最大記錄和最小記錄對應(yīng)的B樹索引項查詢不命中, 則采用在所述B樹索引中插入虛擬節(jié)點的方式,構(gòu)造所述最大記錄和最小 記錄對應(yīng)的B樹索引項。
8、 根據(jù)權(quán)利要求7所述的方法,其特征在于,根據(jù)所述B樹索引中插 入的虛擬節(jié)點,在所述hash索引中插入對應(yīng)的hash節(jié)點。
9、 4艮據(jù)權(quán)利要求7所述的方法,其特征在于,所述插入虛擬節(jié)點的方 式采用如下過程才艮據(jù)預(yù)查詢記錄的索引關(guān)鍵字,在B樹索引處查找大于預(yù)查詢記錄的 第一 B樹索引項和小于預(yù)查詢記錄的第二 B樹索引項,并在所述第一 B樹 索引項和第二 B樹索引項之間插入一虛擬B樹節(jié)點,該B樹節(jié)點對應(yīng)的B樹索引項就是與預(yù)查詢記錄相對應(yīng)的B樹索引項。
10、根據(jù)權(quán)利要求9所述的方法,其特征在于,當(dāng)在所述B樹索引處 插入一虛擬B樹節(jié)點后,對該B樹節(jié)點對應(yīng)的索引關(guān)鍵字進(jìn)行hash計算, 并在所述hash索引中插入該B樹節(jié)點對應(yīng)的hash索引項。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)庫范圍查詢數(shù)據(jù)組織的方法,其用于一通訊系統(tǒng)的數(shù)據(jù)管理,并包括以下步驟首先根據(jù)索引關(guān)鍵字建立B樹索引;然后,對所述B樹索引以所述索引關(guān)鍵字建立hash索引;再次,結(jié)合所述B樹索引和hash索引對數(shù)據(jù)庫進(jìn)行管理。采用本發(fā)明的上述方法,既可以在單位時間內(nèi)完成單一查詢,也可以在單位時間內(nèi)完成范圍查詢。相對于現(xiàn)有技術(shù)中只采用B樹索引的查找方式,從原B樹索引的log<sup>n</sup>+m減少了log<sup>n</sup>-2次操作,這在頻繁的查詢操作中是非常有益的,并且在數(shù)據(jù)量較大的數(shù)據(jù)庫系統(tǒng)中本發(fā)明的方法也具有明顯的效果。
文檔編號G06F17/30GK101256579SQ20081006647
公開日2008年9月3日 申請日期2008年4月8日 優(yōu)先權(quán)日2008年4月8日
發(fā)明者鵬 萬 申請人:中興通訊股份有限公司