国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      數(shù)據(jù)庫中的索引壓縮的制作方法

      文檔序號:6595761閱讀:197來源:國知局
      專利名稱:數(shù)據(jù)庫中的索引壓縮的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及數(shù)據(jù)庫,更具體地,涉及與數(shù)據(jù)庫相關(guān)聯(lián)的索引。
      背景技術(shù)
      數(shù)據(jù)庫系統(tǒng)一般提供索引以提高數(shù)據(jù)檢索過程的速度。數(shù)據(jù)庫索引在概念上與存在于書末尾處的索引的相類似處在于這兩種索引都包括兼帶信息位置的信息序列表。表格的一列或更多列中的值被存儲在索引中,其通常與實際的數(shù)據(jù)庫表格(或基本表)分開保存。索引中的信息序列表允許快速掃描以找到目標(biāo)值或值的范圍。此外,由于傳統(tǒng)的索引僅存儲用作索引鍵、指針以及唯一行標(biāo)識符的一列或更多列中的值(如有必要),因此與全表掃描(如果不使用索引,則必須使用全表掃描)相比,讀入存儲器的數(shù)據(jù)塊的數(shù)目會顯著減少。為了節(jié)省存儲索引所需的存儲空間并且減少查詢處理所涉及的數(shù)據(jù)傳輸量,可使用不同的壓縮技術(shù)來壓縮索引。不同類型的索引壓縮技術(shù)包括采用可變長度的編碼或固定長度的索引鍵壓縮的技術(shù)。雖然這些壓縮技術(shù)有助于節(jié)省一些磁盤空間,但是它們需要獨立的壓縮階段和解壓縮階段。其結(jié)果是,為了改善緩存利用并且加快磁盤至存儲器的傳輸, 解壓縮速度必須很快。此外,由于獨立的壓縮和解壓縮階段需要對索引進行重寫,因此現(xiàn)有的索引壓縮方法計算量太大。因此,需要一種在某種意義上克服現(xiàn)有索引壓縮技術(shù)局限的壓縮索引的系統(tǒng)、方法和計算機程序產(chǎn)品。

      發(fā)明內(nèi)容
      簡單地說,本發(fā)明包括用于壓縮數(shù)據(jù)庫索引的系統(tǒng)、方法、計算機程序產(chǎn)品實施例及其組合和子組合。在一個實施例中,順序確定器掃描數(shù)據(jù)庫索引頁面以確定索引鍵和行標(biāo)識符的值是否持續(xù)發(fā)生變化。然后索引更新器利用該確定結(jié)果來標(biāo)記索引鍵和標(biāo)識符持續(xù)變化的范圍的起始和終止;同時在不輸入處于該范圍之內(nèi)的中間值的情況下填充該索引。這樣,可以在對索引進行填充的同時完成對索引的壓縮。此外,使用本發(fā)明實施例而實現(xiàn)的索引壓縮的計算量較小。下文中將結(jié)合附圖詳細(xì)描述本發(fā)明的更多實施例、特征和優(yōu)點以及本發(fā)明各種實施例的結(jié)構(gòu)和操作。


      并入于此并構(gòu)成說明書一部分的附圖例示了本發(fā)明的實施例,其與說明書一起用于進一步解釋本發(fā)明的原理并且用于使有關(guān)領(lǐng)域技術(shù)人員能夠制造和使用本發(fā)明。圖1是根據(jù)本發(fā)明實施例的用于索引壓縮的系統(tǒng)的示意圖。圖2例示了根據(jù)本發(fā)明實施例的數(shù)據(jù)庫管理器。
      圖3A例示了根據(jù)本發(fā)明實施例的示例性索引。圖;3B例示了根據(jù)本發(fā)明實施例的示例性葉子節(jié)點索引頁面。圖3C例示了根據(jù)本發(fā)明實施例的索引頁面中的不同標(biāo)識符。圖4為例示了根據(jù)本發(fā)明實施例的使用內(nèi)聯(lián)壓縮(inline compression)的索引插入的示例性流程圖。圖5例示了有助于實現(xiàn)本發(fā)明實施例的組件的實例計算機。通過下文結(jié)合附圖給出的詳細(xì)描述,本發(fā)明的特征和優(yōu)點將變得更明顯。在附圖中,相同的附圖標(biāo)記通常表示相同的、功能相似的和/或結(jié)構(gòu)相似的元件。通常,元件第一次出現(xiàn)在其中的附圖由相應(yīng)參考標(biāo)記中最左邊的數(shù)字表示。
      具體實施例方式本發(fā)明涉及用于壓縮數(shù)據(jù)庫索引的系統(tǒng)、方法和計算機程序產(chǎn)品。在一個實施例中,順序確定器(sequence determiner)掃描數(shù)據(jù)庫索引頁面以確定索引鍵和行標(biāo)識符的值是否持續(xù)發(fā)生變化。然后索引更新器利用該確定結(jié)果來標(biāo)記索引鍵和標(biāo)識符持續(xù)變化的范圍的起始和終止,同時在不輸入處于該范圍之內(nèi)的中間值的情況下填充該索引。這樣,可以在對索引進行填充的同時完成對索引的壓縮。此外,利用本發(fā)明實施例而實現(xiàn)的索引壓縮的計算量不會很大。雖然此處結(jié)合用于特定應(yīng)用的例示性實施例描述了本發(fā)明,但是應(yīng)該理解本發(fā)明不限于此。能夠獲得在此提供的教導(dǎo)的本領(lǐng)域技術(shù)人員將會識別出在其范圍以及本發(fā)明具有重要實用性的其它領(lǐng)域內(nèi)的其它修改、應(yīng)用和實施例。系統(tǒng)圖1例示了根據(jù)本發(fā)明實施例的系統(tǒng)100,其為用于壓縮數(shù)據(jù)庫索引的一般系統(tǒng)結(jié)構(gòu)。(雖然以下就數(shù)據(jù)庫和數(shù)據(jù)庫索引進行描述,但是本發(fā)明不限于此實施例。本發(fā)明可應(yīng)用于通常具有圖1的結(jié)構(gòu)或可以從在此描述的功能中獲益的任何系統(tǒng)。)系統(tǒng)100包括數(shù)據(jù)庫管理器110和數(shù)據(jù)庫120。數(shù)據(jù)庫120還可以包括索引140 和表格數(shù)據(jù)150。數(shù)據(jù)庫管理器110可以是任意形式的數(shù)據(jù)庫管理系統(tǒng)(DBMS),并且可以包括但不限于具有用于執(zhí)行和存儲指令的處理器和存儲器的器件。在一個實例中,但不用于限制本發(fā)明,數(shù)據(jù)庫管理器110可以是比如SYBASE Adaptive Sever Enterprise 的DBMS。數(shù)據(jù)庫管理器110可包括軟件、固件和硬件或一些其組合。軟件可包括操作系統(tǒng)和一個或更多個應(yīng)用。硬件可包括但不限于處理器、存儲器和用戶界面顯示器??墒褂每蛇x的輸入器件, 例如鼠標(biāo)、手寫筆或任意其他指向器件。數(shù)據(jù)庫管理器110可在數(shù)據(jù)庫120中存儲并操作數(shù)據(jù)。在一個實施例中,數(shù)據(jù)庫管理器Iio提供軟件例程以操作數(shù)據(jù)庫120中的數(shù)據(jù)。數(shù)據(jù)庫管理器110可以作為軟件包的組件直接被系統(tǒng)用戶使用,或者可以用于向獨立的軟件包提供各種服務(wù)。如本領(lǐng)域技術(shù)人員已知地,數(shù)據(jù)庫120可以是數(shù)據(jù)集合,其由數(shù)據(jù)庫管理器110根據(jù)各種邏輯數(shù)據(jù)模型或瀏覽所存儲的數(shù)據(jù)來管理和操作。當(dāng)前數(shù)據(jù)庫市場中,邏輯數(shù)據(jù)模型的實例包括使用工業(yè)標(biāo)準(zhǔn)SQL查詢語言的關(guān)系模型。例如,關(guān)系結(jié)構(gòu)系統(tǒng)中的數(shù)據(jù)操作包括可能存在于數(shù)據(jù)庫120中的表格、共享列和索引的操作。
      數(shù)據(jù)庫120還可包括索引140和表格數(shù)據(jù)150。表格數(shù)據(jù)150可包括一個或更多個數(shù)據(jù)庫表格。數(shù)據(jù)庫表格對于本領(lǐng)域技術(shù)人員而言是已知的,其還可包括若干紀(jì)錄,每條記錄由若干個域組成。索引140可以提供快速、有效的方式來查找表格數(shù)據(jù)150中的數(shù)據(jù)行。在一個實施例中,索引140實現(xiàn)為索引頁面的集合。例如,每個索引頁面包括一個或更多個數(shù)據(jù)對。每個數(shù)據(jù)對包括索引鍵和相關(guān)聯(lián)的數(shù)據(jù)。相關(guān)聯(lián)的數(shù)據(jù)可包括行標(biāo)識符(RID)形式的指針, 其指向在物理上位于表格數(shù)據(jù)150的表中的、具有特定索引鍵值的行。例如,數(shù)據(jù)庫管理器 110可以使用RID來將行定位在表格數(shù)據(jù)150中。在一個實施例中,但不用于限制本發(fā)明,索引140實現(xiàn)為包括不同類型的索引頁面的B-樹索引(索引頁面為B-樹節(jié)點)。在另一實施例中,索引140實現(xiàn)為本領(lǐng)域技術(shù)人員已知的B-樹索引的任意變型或任意其它形式的數(shù)據(jù)結(jié)構(gòu)。B-樹索引對于本領(lǐng)域技術(shù)人員而言是已知的,其可包括一個根節(jié)點、兩個或更多個分支節(jié)點以及多個葉子節(jié)點。例如,根節(jié)點包括指向分支節(jié)點的節(jié)點指針,分支節(jié)點包括指向葉子節(jié)點或其他分支節(jié)點的指針,葉子節(jié)點包括索引鍵值,并且在某些情況下包括指向其它葉子節(jié)點的橫向指針。圖3A例示了示例性B-樹索引,該B-樹索引例示了根節(jié)點302、分支節(jié)點304A-B 和葉子節(jié)點306A-D。如圖3A所示,每個索引頁面或B-樹節(jié)點還包括索引鍵和RID。該實例是例示性的,不用于限制本發(fā)明。例如,當(dāng)數(shù)據(jù)庫管理器110為表格數(shù)據(jù)150創(chuàng)建索引140時,數(shù)據(jù)庫管理器110可初始分配單個索引頁面。此頁面代表根節(jié)點并可保持為空,直到數(shù)據(jù)庫管理器110將數(shù)據(jù)插入表格數(shù)據(jù)150中。首先,根節(jié)點以與葉子節(jié)點相同的方式運行。對于每一由數(shù)據(jù)庫管理器110插入表格數(shù)據(jù)中的行,數(shù)據(jù)庫管理器110創(chuàng)建索引鍵并將其插入根節(jié)點中。當(dāng)根節(jié)點充滿索引鍵時,數(shù)據(jù)庫管理器110可通過創(chuàng)建兩個葉子節(jié)點并將一些根節(jié)點條目重新定位到每個新創(chuàng)建的葉子節(jié)點處來分裂根節(jié)點。隨著數(shù)據(jù)庫管理器110將新的行加入到表格數(shù)據(jù)150中,數(shù)據(jù)庫管理器110將索引鍵加入到葉子節(jié)點中。當(dāng)葉子節(jié)點充滿時,數(shù)據(jù)庫管理器110可創(chuàng)建新的葉子節(jié)點,并將充滿的索引節(jié)點的部分內(nèi)容移至新節(jié)點,以及將“節(jié)點指針”加入到根節(jié)點中的新的葉子節(jié)點中。B-樹的上述結(jié)構(gòu)和生成方法是示例性的,并不用于限制本發(fā)明。圖2更詳細(xì)地例示了根據(jù)本發(fā)明實施例的數(shù)據(jù)庫管理器110。如圖2所示,數(shù)據(jù)庫管理器Iio還包括順序確定器210和索引更新器220。在一個實施例中,順序確定器210 確定與索引140相關(guān)聯(lián)的索引頁面中索引鍵的持續(xù)變化的值。索引更新器220基于由順序確定器210確定的順序來更新索引140。下文將描述順序確定器210和索引更新器220。由順序確定器210確定順序圖;3B例示了根據(jù)本發(fā)明實施例的B-樹索引內(nèi)邏輯級處的示例性索引葉子頁面。圖;3B中例示的實例索引頁面包括用于索引葉子頁面的一部分的索引鍵310和行標(biāo)識符(RID) 320。參考示例性圖3B,可以看出區(qū)域350中的索引鍵310和RID 320都持續(xù)增加。 例如,索引鍵310以值1持續(xù)增加,從值“7255”開始直到達到值“7沈0”。區(qū)域350內(nèi)對應(yīng)于索引鍵的RID也以值1持續(xù)增加,在區(qū)域350內(nèi)從值“頁107槽17”開始到值“頁107槽 22”終止。區(qū)域360為鄰近于區(qū)域350的另一區(qū)域,在區(qū)域360中,索引鍵310和RID 320類似地持續(xù)增加。應(yīng)該注意在區(qū)域350之前,存在對應(yīng)于RID “頁102槽42”的索引鍵值 “7254”。由于該索引鍵值與持續(xù)變化(例如增大或減少)的范圍的起始不對應(yīng),因此它不包含在例如區(qū)域350中。這是因為緊跟在“頁102槽42”之后的RID值為“頁107槽17”。 這與(42-17)個槽或25個槽的變化相關(guān)聯(lián),該變化與之前描述的區(qū)域350中持續(xù)增加1不同。雖然圖:3B中例示的實例示出了以值“1”增加的持續(xù)變化的值,但是應(yīng)理解,持續(xù)變化的值不限于增加“1”,也可以增加或減少任意正數(shù)或負(fù)數(shù)值(例如_2、1、5、11.5等)。在另一實例中,但不用于限制本發(fā)明,范圍內(nèi)的RID是有順序的。例如,這些值可以遵循任意算法順序并且本發(fā)明的實施例可以在散列值上操作。在一個實施例中,順序確定器210確定索引頁面中索引鍵和RID的持續(xù)變化的值。 順序確定器210還確定不在持續(xù)變化范圍內(nèi)的索引鍵和RID的值。這種不在范圍內(nèi)的值可以被稱為“單例”。參見圖3B例示的示例性索引葉子頁面,順序確定器210確定單例值 “7254”及其對應(yīng)的RID “頁102槽42”為單例。在一個實施例中,當(dāng)對索引進行填充時,索引更新器220識別出索引中將要插入 RID的位置,順序確定器210檢查位于該索引頁面內(nèi)的周圍的RID,以確定這些RID是否正持續(xù)變化(例如,RID正持續(xù)增大)。在對索引進行填充時,如果索引鍵處于持續(xù)變化的條目的范圍之內(nèi),則索引更新器220避免插入該索引鍵及其對應(yīng)的RID,以有效壓縮索引140。 如果不能將索引鍵及其對應(yīng)的RID以處于持續(xù)變化的值的范圍之內(nèi)的方式插入,則將該索引鍵識別為“單例”。下面參考圖3C描述此操作。使用索引更新器220更新索引圖3C例示了由索引更新器220更新的圖:3B中的示例性索引頁面。如圖3C所示, 索引更新器220可基于來自順序確定器210的輸入而明確地標(biāo)記單例、范圍的起始和范圍的終止。此外,在對索引進行填充時,如果索引鍵鄰近于持續(xù)變化的條目的范圍,則索引更新器220確定沒有必要插入該索引鍵及其對應(yīng)的RID。在此情況下,如這里所描述地,由于可以確定或計算出索引值,因此不必插入該索引值及其對應(yīng)的RID。在圖3C中,索引更新器220沒有將中間索引鍵值“7256”至“7259”及其對應(yīng)的RID插入索引頁面中,這是因為它們處于由索引鍵值“7255”和“7沈0”界定的持續(xù)變化的范圍之內(nèi)。如圖3C所示,索引鍵 “7254”、“7255”、“7沈0”和“7沈1”已經(jīng)分別被明確地標(biāo)記為與索引鍵320相關(guān)聯(lián)的列中的 “單例”、“范圍_起始”、“范圍_終止”和“范圍_起始”。如先前參考圖:3B所描述地,“7255” 與持續(xù)增加的值的范圍的起始相關(guān)聯(lián),“7260”與從“7255”開始的持續(xù)增加的值的范圍的終止相關(guān)聯(lián)。雖然圖3C以“單例”、“范圍_起始”和“范圍_終止”示出了標(biāo)識符,但是這些標(biāo)識符可以實現(xiàn)為能夠被數(shù)據(jù)庫管理器110使用的“標(biāo)志”,以確定當(dāng)數(shù)據(jù)庫管理器110讀取索引140時,在索引頁面中的“范圍_起始”標(biāo)識符和“范圍_終止”標(biāo)識符之間是否缺少條目(即索引鍵和RID)。在一個實施例中,“單例”、“范圍_起始”和“范圍_終止”標(biāo)識符實現(xiàn)為包括一位或更多位的標(biāo)志。這些位可鄰近于索引鍵。例如,這些位的一種順序表示范圍的起始,并且這些位的另一種順序表示范圍的終止。這些位可以存在于存儲索引鍵的結(jié)構(gòu)中,或者存在于嵌入包括索引鍵的一位或更多位內(nèi)的結(jié)構(gòu)中。參見圖3C,在一個實施例中,“單例”、“范圍_起始”和“范圍_終止”標(biāo)識符中的每一個占用相同數(shù)目的位。例如,如果每個索引鍵條目為8個字節(jié)長,該8個字節(jié)內(nèi)的2位可被保留用于“單例”、“范圍_起始”和“范圍_終止,,標(biāo)識符。然后索引更新器220修改這2位以標(biāo)記“單例”、“范圍_起始”和“范圍_終止”索引鍵值。這樣,索引更新器220可使用來自順序確定器210的輸入,從而除標(biāo)記不處于任何持續(xù)變化的值的范圍之內(nèi)的值(例如單例)之外,還標(biāo)記范圍的起始和范圍的終止。來自被壓縮的索引頁面的檢索值一般地,將索引鍵“X”的值設(shè)為“VAL(x) ”且將索引鍵“X”的RID設(shè)為“RID(x) ”。 使給定的索引鍵的值為“VAL(給定)”。假定已經(jīng)確定了給定的索引條目處于條目范圍_起始和范圍_終止之間的壓縮范圍之內(nèi)。為了確定“RID(給定)”(其為存儲在索引中的值 VAL (給定)的RID),使范圍_大小=RID (范圍_終止)-RID (范圍_起始)然后,可以得到增加值val_增加val_增加=(VAL(范圍_終止)_VAL(范圍_起始))/范圍_大小此外,可以得到“ VAL (給定),,的位置位置=(VAL (給定)_VAL (范圍_起始))/val_增加使用這些值,可以得到RID (給定)RID (給定)=RID (范圍_起始)+位置參考圖3C,如果數(shù)據(jù)庫管理系統(tǒng)110試圖檢索與索引鍵值“7259”相對應(yīng)的行, 則其掃描索引140并使用“范圍_起始”和“范圍_終止”標(biāo)識符,這能夠識別出索引鍵值 “7259”在范圍[7255,7260]內(nèi)。在此實例中,RID (范圍_終止)為22,RID (范圍_起始)為17,VAL(范圍_終止)為7沈0,VAL (范圍_起始)為7255,以及VAL (給定)為7259?,F(xiàn)在,使用如上所述的示例性普適方程,如下所示確定“范圍_大小”、“val_增加” 和“位置”的值范圍_大小=RID (范圍_起始)-RID (范圍_終止)=22-17 = 5val_增力卩=(VAL(范圍_終止)_VAL(范圍_起始))/范圍_大小= (7260-7255)/5 = 1位置=(VAL(給定)_VAL (范圍 _ 起始))/val_ 增加=(7259-7255)/1 = 4因此,RID (給定)=RID (范圍_起始)+位置=17+4 = 21這樣,數(shù)據(jù)庫管理系統(tǒng)110能夠檢索到與給定索引鍵值“7259”相對應(yīng)的RID“21”。 可以理解,此實例純屬示例性的,并非用于限制本發(fā)明。此外,將索引條目表示為(V,[P,S]),其中“V”為索引條目的值,[P,S]為RID(頁 P,槽S)。在一個實施例中,如先前所述,如果索引頁面具有條目(v+0,[p,s+0])、(v+k,[P, s+l])、(v+2k,[p,s+2])、(v+3k,[p,s+3])、…、(v+nk,[p,s+n]),則索引更新器 220 可以以端點值(即范圍的起始和范圍的終止)(v+0,[p,s+0])、(v+nk, [p,s+nk])來替換這些值,由于沒有將中間索引鍵值輸入索引頁面中,這可以有效地壓縮索引。在一個實施例中, 可以將標(biāo)志(例如范圍_終止)添加到范圍終止處的條目((v+nk,[ρ, s+nk]))上。如先前所述地,可以將索引鍵值內(nèi)的位用作標(biāo)志,以避免增加索引140的大小。在另一實施例中,索引更新器220可在索引頁面上順序地復(fù)制索引鍵值上。然后, 仍可以通過先前描述的方法使用k = 0來壓縮鍵的分布。這使得這些索引鍵值在非唯一索引中是唯一的,從而使索引更新器220能夠使用先前所述的方法壓縮索引。雖然本發(fā)明的實施例允許使用范圍_起始和范圍_終止標(biāo)識符來壓縮索引,但實施例也允許數(shù)據(jù)庫管理器Iio使索引140返回到未壓縮或初始狀態(tài)。在存在指向在其頁面上鄰接的行、通常順序增大的鍵值的情況下,可使用本發(fā)明的實施例來實現(xiàn)高壓縮因數(shù)。由于由索引更新器220填充的索引需要僅將范圍_起始、范圍_終止和單例標(biāo)識符添加到索引鍵值上,因此可以省略葉子頁面上的索引條目。即使當(dāng)索引更新器220正在對索引進行填充,此方法也能有效壓縮索引。使用內(nèi)聯(lián)壓縮的索引插入現(xiàn)在將參考圖4中的流程圖400更詳細(xì)地描述根據(jù)本發(fā)明實施例的使用內(nèi)聯(lián)壓縮的索引插入的示例性方法。使“v/r”為將要插入索引140中的索引鍵值/RID的組合。在開始插入之前,通過索引140進行查找,并且記錄條目應(yīng)被插入處的位置“ρ”。作為該查找的一部分,我們還記錄“P”之前的條目“pi”的位置和“pi”之前的條目“P2”的位置。在步驟402中,開始方法400,在步驟404中,順序確定器210檢查索引頁面(例如索引140中的索引頁面)以查看條目(pi)是否與持續(xù)變化值的范圍的起始相關(guān)聯(lián)。如果條目(pi)與范圍的起始相關(guān)聯(lián)(步驟404),則索引更新器220將該范圍分成較小的范圍和/或單例,如有需要,將條目具體化(解壓縮)(步驟406)。然后,方法400 繼續(xù)至步驟408?;氐讲襟E404,如果條目(pi)與范圍起始標(biāo)識符不相關(guān)聯(lián),則方法400繼續(xù)執(zhí)行步驟408,在步驟408中,順序確定器210檢查條目(ρ)是否與范圍終止標(biāo)識符相關(guān)聯(lián)。如果條目(pi)與范圍終止標(biāo)識符相關(guān)聯(lián)(步驟408),則順序確定器210確定將要插入的索引鍵是否可以被添加到該范圍終止上(步驟410)。如果索引鍵值可以被添加到該范圍終止上(步驟410),則通過提升當(dāng)前在范圍終止處的RID和值來將該索引鍵值添加到該范圍終止上(步驟412)。否則,執(zhí)行常規(guī)(單例)插入,其中將索引鍵值插入到位置ρ 處(步驟418)?;氐讲襟E408,如果條目(pi)與范圍終止標(biāo)識符不相關(guān)聯(lián),則順序確定器210檢查條目(Pl)和“v/r”是否具有連續(xù)的RID (步驟414)。如果條目(pi)和v/r具有連續(xù)的 RID,則索引更新器220在條目中設(shè)定適當(dāng)?shù)姆秶?range bit)來標(biāo)記范圍的起始或終止 (步驟416),并且方法400繼續(xù)至步驟418。回到步驟414,如果條目(pi)和“v/r”不具有連續(xù)的RID,則索引更新器220在位置“P”處執(zhí)行常規(guī)(單例)插入操作(步驟418)。這樣,不需要為了壓縮索引140而在不同位置重寫索引140。示例性計算機實施例在本發(fā)明的實施例中,此處描述的實施例的系統(tǒng)和組件可以使用公知的計算機來實現(xiàn),比如圖5所示的實例計算機502。例如,數(shù)據(jù)庫管理器110或數(shù)據(jù)庫120可以使用計算機502來實現(xiàn)。計算機502可以是市售且公知的能夠執(zhí)行此處描述的功能的任何計算機,例如來自國際商業(yè)機器(International Business Machines)、蘋果(Apple)、Sun、惠普(HP)、戴爾(Dell)、康柏(Compaq)、Digital、Cray 等的計算機。計算機502包括一個或更多個處理器(也稱為中央處理單元或CPU),比如處理器 506。處理器506與通信總線504連接。計算機502還包括主存或主存儲器508,比如隨機存取存儲器(RAM)。主存儲器 508將控制邏輯525A (計算機軟件)和數(shù)據(jù)存入其中。計算機502還包括一個或更多個輔助存儲器件510。輔助存儲器件510包括例如硬盤驅(qū)動器512和/或可移動存儲器件或驅(qū)動器514以及其它類型的存儲器件,比如存儲卡和記憶棒??梢苿哟鎯︱?qū)動器514意味著軟盤驅(qū)動器、磁帶驅(qū)動器、⑶驅(qū)動器、光存儲器件、磁帶備份等等??梢苿哟鎯︱?qū)動器514與可移動存儲單元516交互作用??梢苿哟鎯卧?16包括計算機可用或可讀存儲介質(zhì)524,在該計算機可用或可讀存儲介質(zhì)524中存儲有計算機軟件528B (控制邏輯)和/或數(shù)據(jù)??梢苿哟鎯卧?16意味著軟盤、磁帶、CD、DVD、光存儲盤或任意其它計算機數(shù)據(jù)存儲器件??梢苿哟鎯︱?qū)動器514以公知的方式從可移動存儲單元516讀取數(shù)據(jù)和/或向其寫入數(shù)據(jù)。計算機502還包括輸入/輸出/顯示器件522,比如顯示器、鍵盤、定點器件等等。計算機502還包括通信或網(wǎng)絡(luò)接口 518。網(wǎng)絡(luò)接口 518使計算機502能夠與遠程器件通信。例如,網(wǎng)絡(luò)接口 518允許計算機502通過通信網(wǎng)絡(luò)或介質(zhì)524B(表示一種計算機可用或可讀介質(zhì)的形式)進行通信,比如LAN、WANJnternet等等。網(wǎng)絡(luò)接口 518可以經(jīng)由有線或無線連接與遠程站點或網(wǎng)絡(luò)接口??刂七壿?28C可經(jīng)由通信介質(zhì)524B傳輸至計算機502,或從計算機502傳輸出。 更具體地,計算機502可經(jīng)由通信介質(zhì)524B接收和傳輸使用控制邏輯調(diào)制的載波(電磁信號)530。此處,包括存儲有控制邏輯(軟件)于其內(nèi)的計算機可用或可讀介質(zhì)的任意設(shè)備或制造品被稱為計算機程序產(chǎn)品或程序存儲器件。這包括但不限于計算機502、主存儲器 508、輔助存儲器件510、可移動存儲單元516和使用控制邏輯調(diào)制的載波530。這種存儲有控制邏輯于其內(nèi)的計算機程序產(chǎn)品代表本發(fā)明的實施例,當(dāng)由一個或更多個數(shù)據(jù)處理器件來執(zhí)行時,該控制邏輯使得這種數(shù)據(jù)處理器件如此處所述地運行。本發(fā)明可以與除以上所描述之外的其它軟件、硬件和/或操作系統(tǒng)實現(xiàn)方式一起工作??梢允褂眠m于執(zhí)行此處描述的功能的任何軟件、硬件和操作系統(tǒng)實現(xiàn)方式。結(jié)論可以理解,具體說明部分(而非發(fā)明內(nèi)容和摘要部分)旨在用于解釋權(quán)利要求。發(fā)明內(nèi)容和摘要部分可闡明一個或更多個,但并非所有的,由發(fā)明人認(rèn)真思考得出的本發(fā)明的示例性實施例,因此其不旨在以任何方式限制本發(fā)明和所附權(quán)利要求。已經(jīng)在上文中借助于例示了特定功能及其關(guān)系的實現(xiàn)方式的功能性構(gòu)建模塊描述了本發(fā)明。為了描述方便,在此任意地限定了這些功能性構(gòu)建模塊的范圍。只要可以適當(dāng)?shù)貓?zhí)行這些特定的功能及其關(guān)系,也可以限定其它的范圍。特定實施例的上述描述將完全揭示本發(fā)明的一般性質(zhì),在不脫離本發(fā)明的一般概念下,其他人不需要過度試驗即可通過應(yīng)用本領(lǐng)域內(nèi)的知識容易地修改和/或調(diào)整這些特定實施例的各種應(yīng)用。因此,基于此處呈現(xiàn)的教導(dǎo)和指導(dǎo),這種調(diào)整和修改將落入所公開的實施例的等同物的含義和范圍內(nèi)。可以理解,此處的術(shù)語或措辭是為了描述的目的而非限制,因此本說明書的術(shù)語或措辭應(yīng)由技術(shù)人員根據(jù)所述教導(dǎo)和指導(dǎo)進行解釋。
      本發(fā)明的廣度和范圍不應(yīng)受上述任何示例性實施例限制,其僅應(yīng)根據(jù)所附權(quán)利要求書和其等同物來限定。
      權(quán)利要求
      1.一種用于壓縮數(shù)據(jù)庫索引的方法,包括 掃描索引;確定所述索引的一個或更多個索引頁面中值的變化模式;以及, 基于所述確定步驟選擇性地更新所述索引,以使索引插入最少化。
      2.如權(quán)利要求1所述的方法,還包括確定索引頁面中值的范圍的起始和所述值的范圍的終止;設(shè)定適當(dāng)?shù)奈?,以識別所述值的范圍的起始和所述值的范圍的終止;確定將要插入所述索引頁面中的值是否可以被添加到所述值的范圍的所述終止上;以及,通過暫停存在于所述值的范圍的起始和所述值的范圍的終止之間的一個或更多個值的寫入來壓縮所述索引。
      3.如權(quán)利要求1所述的方法,還包括識別不處于所述值的變化模式之內(nèi)的值。
      4.如權(quán)利要求3所述的方法,還包括使用所識別的不處于所述值的變化模式之內(nèi)的值的單例標(biāo)識符來更新所述索引。
      5.如權(quán)利要求1所述的方法,其中所述值的變化模式包括持續(xù)增加值。
      6.如權(quán)利要求1所述的方法,還包括確定與索引鍵對應(yīng)的行標(biāo)識符。
      7.如權(quán)利要求6所述的方法,其中確定行標(biāo)識符還包括 接收索引鍵值;識別所述索引中索引頁面內(nèi)的值的范圍,其中可以包含所述索引鍵值;以及, 至少基于與所述值的范圍的起始相對應(yīng)的索引鍵值和行標(biāo)識符值來確定與所述索引鍵值對應(yīng)的行標(biāo)識符。
      8.一種用于壓縮數(shù)據(jù)庫索引的系統(tǒng),包括順序確定器,以掃描數(shù)據(jù)庫索引并且確定所述數(shù)據(jù)庫索引的一個或更多個索引頁面中持續(xù)變化的值的范圍的起始和范圍的終止;以及,索引更新器,以基于所述范圍來更新所述數(shù)據(jù)庫索引,同時暫停處于值的所述范圍的所述起始和所述范圍的所述終止之內(nèi)的一個或更多個值的寫入。
      9.如權(quán)利要求8所述的系統(tǒng),其中所述數(shù)據(jù)庫索引包括一個或更多個索引頁面。
      10.如權(quán)利要求9所述的系統(tǒng),其中每個索引頁面包括一個或更多個索引鍵和與所述索引鍵相關(guān)聯(lián)的行標(biāo)識符。
      11.如權(quán)利要求8所述的系統(tǒng),其中所述索引更新器使用范圍起始標(biāo)識符和范圍終止標(biāo)識符來標(biāo)記所述索引頁面中值的范圍的起始和值的范圍的終止。
      12.如權(quán)利要求8所述的系統(tǒng),其中如果一個值不處于所述值的范圍的起始和所述值的范圍的終止之內(nèi),則所述索引更新器使用單例標(biāo)識符來標(biāo)記這個值。
      13.如權(quán)利要求11所述的系統(tǒng),其中所述范圍起始標(biāo)識符和所述范圍終止標(biāo)識符包括一位或更多位。
      14.如權(quán)利要求12所述的系統(tǒng),其中所述單例標(biāo)識符包括一位或更多位。
      15.如權(quán)利要求14所述的系統(tǒng),其中所述位包含在索引鍵值內(nèi)。
      16.如權(quán)利要求8所述的系統(tǒng),其中所述數(shù)據(jù)庫索引為B-樹索引。
      17.一種計算機程序產(chǎn)品,其具有存儲在其中的控制邏輯,所述控制邏輯使處理器能夠壓縮數(shù)據(jù)庫索引,所述控制邏輯包括第一計算機可讀程序代碼裝置,用于使處理器能夠掃描數(shù)據(jù)庫索引; 第二計算機可讀程序代碼裝置,用于使處理器能夠確定所述索引的一個或更多個索引頁面中值的變化模式;以及,第三計算機可讀程序代碼裝置,用于使處理器能夠基于所述值的變化模式來選擇性地更新所述索引,從而使索引插入最少化。
      18.如權(quán)利要求17所述的計算機程序產(chǎn)品,還包括第四計算機可讀程序代碼,用于使處理器能夠確定索引頁面中值的范圍的起始和所述值的范圍的終止;第五計算機可讀程序代碼裝置,用于使處理器能夠設(shè)定適當(dāng)?shù)奈灰宰R別所述值的范圍的起始和值的范圍的終止;第六計算機可讀程序代碼裝置,用于使處理器能夠確定將要插入所述索引頁面中的值是否可以被添加到所述值的范圍的所述終止上;以及,第七計算機可讀程序代碼裝置,用于通過暫停存在于所述值的范圍的起始和所述值的范圍的終止之間的一個或更多個值的寫入來使處理器能夠壓縮所述索引。
      全文摘要
      此處描述了用于壓縮數(shù)據(jù)庫索引的系統(tǒng)、方法和計算機程序產(chǎn)品。一系統(tǒng)實施例包括順序確定器,以掃描數(shù)據(jù)庫索引并確定在所述數(shù)據(jù)庫索引的一個或更多個索引頁面中持續(xù)變化的值的范圍起始和范圍終止;以及,索引更新器,以基于由所述順序確定器確定的順序來更新所述數(shù)據(jù)庫索引,同時暫停處于所述值的所述范圍起始和所述范圍終止之內(nèi)的一個或更多個值的寫入。一方法實施例包括掃描索引;確定所述索引的一個或更多個索引頁面中值的變化模式;以及,基于所述確定步驟選擇性地更新所述索引,以使索引插入最少化。該方法實施例還包括確定索引頁面中值的范圍的起始和所述值的范圍的終止;設(shè)定適當(dāng)?shù)奈?,以識別所述值的范圍的起始和值的范圍的終止;確定將要插入的條目是否可以被添加到所述值的范圍的終止處;以及,通過暫停存在于所述值的范圍的起始和所述值的范圍的終止之間的一個或更多個值的寫入來壓縮所述索引。
      文檔編號G06F17/30GK102246163SQ200980150032
      公開日2011年11月16日 申請日期2009年10月26日 優(yōu)先權(quán)日2008年10月27日
      發(fā)明者丹尼爾·詹姆斯·法勒, 內(nèi)森·麥克·奧赫, 皮特·本布利斯 申請人:移動解決方案株式會社
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1