用于數(shù)據(jù)編碼及處理列數(shù)據(jù)的系統(tǒng)和方法
【專利摘要】本發(fā)明的各方面涉及用于數(shù)據(jù)編碼及處理列數(shù)據(jù)的系統(tǒng)和方法,其被提供用于訪問多個數(shù)據(jù)元素。包括經壓縮的和/或未經壓縮的元素的列數(shù)據(jù)的頁以包括多個陣列和一向量的格式存儲。每個陣列存儲具有共同特性的元素,所述向量充當?shù)剿鎯Φ臄?shù)據(jù)元素的映射。利用所述向量來識別陣列并確定偏移以支持對一個或多個數(shù)據(jù)元素的訪問。
【專利說明】用于數(shù)據(jù)編碼及處理列數(shù)據(jù)的系統(tǒng)和方法
【技術領域】
[0001]本發(fā)明涉及以頁格式壓縮和存儲多個數(shù)據(jù)元素。更具體地,本發(fā)明涉及組織頁格式(包括數(shù)據(jù)元素的索引化)的方式,使得存儲的數(shù)據(jù)元素可以被訪問。
【背景技術】
[0002]數(shù)據(jù)壓縮是把信息從第一表不變換成第二表不的處理,其中第二表不比第一表不(也被稱為原始表示)更小。壓縮數(shù)據(jù)可以被解壓縮,由此原始數(shù)據(jù)或接近原始數(shù)據(jù)的近似可以得到恢復。壓縮和解壓縮處理經常被稱為編碼和解碼。數(shù)據(jù)壓縮在數(shù)據(jù)存儲和數(shù)據(jù)傳送領域具有重要的應用。除了空間節(jié)省以外,關注的其他參數(shù)包括編碼和解碼速度及工作空間需求,訪問和解碼部分文件的能力,以及錯誤產生和傳播。
【發(fā)明內容】
[0003]本發(fā)明包括方法、系統(tǒng)和計算機程序產品,用于壓縮和存儲數(shù)據(jù)元素以及訪問存儲的元素。
[0004]提供了方法和計算機程序產品,用于以頁格式存儲壓縮數(shù)據(jù)并訪問存儲的數(shù)據(jù)元素。列數(shù)據(jù)的頁以具有多個陣列和一向量的格式被壓縮和存儲。更具體地,頁中的第一陣列存儲具有第一共同特性的壓縮數(shù)據(jù),并且頁中的第二陣列存儲具有第二共同特性的壓縮數(shù)據(jù)。第一和第二共同特性不相同。存儲的數(shù)據(jù)被索引化(indexed)到向量中,其中索引包括存儲在第一和第二陣列中的數(shù)據(jù)元素的映射。對存儲的數(shù)據(jù)元素的訪問會采用所述向量來確定對應的偏移和該數(shù)據(jù)被存儲于其中的陣列。
[0005]根據(jù)結合附圖給出的本發(fā)明的當前優(yōu)選實施例的以下詳細說明,本發(fā)明的其他特征和優(yōu)點將變得明顯。
【專利附圖】
【附圖說明】
[0006]本文中引用的附圖形成說明書的一部分。在附圖中示出的特征僅用于說明本發(fā)明的一些實施例,而并非本發(fā)明的所有實施例,除非有明確的相反指示。
[0007]圖1描繪用于數(shù)據(jù)編碼的頁格式,其具有復合的處理益處。
[0008]圖2描繪示出用于加載列數(shù)據(jù)的處理的流程圖。
[0009]圖3描繪示出頁格式內的累積直方圖的框圖。
[0010]圖4描繪示出用于利用累積直方圖以及元組映射進行數(shù)據(jù)訪問的處理的流程圖。
[0011]圖5描繪示出嵌入計算機系統(tǒng)中以支持數(shù)據(jù)編碼和處理的工具的框圖。
[0012]圖6描繪根據(jù)本發(fā)明的實施例的計算環(huán)境的框圖。
【具體實施方式】
[0013]容易理解的是,通常在本文的附圖中描述和示出的本發(fā)明的部件可以以各種各樣的不同配置來布置和設計。因此,在附圖中表示的本發(fā)明的裝置、系統(tǒng)和方法的實施例的以下詳細說明是并非旨在限制要求保護的本發(fā)明的范圍,而是僅僅表示本發(fā)明的所選擇的實施例。
[0014]貫穿該說明書對“選擇實施例”、“一個實施例”或“實施例”的提及意味著結合實施例描述的特定特征、結構或特性被包括在本發(fā)明的至少一個實施例中。因此,貫穿該說明書的各種地方的措辭“選擇實施例”、“在一個實施例中”或“在實施例中”的出現(xiàn)并不一定指代相同的實施例。
[0015]本發(fā)明的所示的實施例將參考附圖而得到最佳的理解,其中同樣的部分始終由同樣的附圖標記指示。以下描述旨在僅是舉例,并且僅示出與本文中要求保護的發(fā)明一致的設備、系統(tǒng)和處理的特定選擇的實施例。
[0016]保序的基于頻率的字典壓縮被用來對壓縮值執(zhí)行SQL操作。在一個實施例中,壓縮值以密集的位對準的方式打包,使得多個值裝配在寄存器中并且可以經由單指令多數(shù)據(jù)(SIMD)被同時處理。
[0017]數(shù)據(jù)庫表格的列被劃分成列組。在一個實施例中,每個列僅屬于一個列組。在通常被稱為列存儲(column store)的選擇實施例中,每個列組包含單個列。列組數(shù)據(jù)以頁存儲,所述頁可以是固定的或可變的。行/元組到列組的投影被稱為小元組(tuplet)。元組以跨越所有列組的相同順序存儲;元組通過本文中被稱為元組序列號(TSN)的虛擬標識符來識別,所述元組序列號是可以用來定位給定元組的整數(shù)。在一個實施例中,頁包含單個范圍的TSN。
[0018]圖1是用于數(shù)據(jù)編碼的頁格式的框圖(100),其具有復合的處理益處。頁包括頁頭
(102),頁特定的壓縮字典(110)、(112)和(114),元組映射(120),陣列(130)和(132),以及用于保持可變寬度數(shù)據(jù)的專用區(qū)域(140)。區(qū)域(130)和(132)可以包含編碼值(即壓縮值)或非編碼值(即原始值)。在一個實施例中,區(qū)域(130)和(132)由匹配用于存儲壓縮值的寄存器寬度的固定寬度數(shù)據(jù)存儲庫(databank)構成。每個頁項目的位置和大小可以被存儲或者從存儲在頁頭(102)中的元數(shù)據(jù)導出。在一個實施例中,每個頁存儲一個列組的數(shù)據(jù),但是單列數(shù)據(jù)是典型的。類似地,為了能夠利用SMD加速進行向量處理,數(shù)據(jù)以在把數(shù)據(jù)值壓縮成匹配或幾乎匹配處理單元的寄存器寬度的位結構的同時把數(shù)據(jù)值打包的格式存儲。更具體地,陣列(130)和(132)之一中的壓縮數(shù)據(jù)元素的長度中的未使用的位與邊界對準,其中所述邊界是機器字長的倍數(shù)。這種對準減輕了與任何一個存儲的數(shù)據(jù)元素的訪問相關聯(lián)的位移位。在一個實施例中,訪問包括把一個或多個存儲的元素加載到寄存器中。以把元素與邊界對準的位結構存儲的值的集合在本文中被稱為陣列。頁中保存這些陣列的部分被稱作區(qū)域,在這里被稱為(130)和(132)。在一個實施例中,存儲在區(qū)域內的陣列被稱作數(shù)據(jù)存儲庫(databank)或存儲庫。
[0019]為了利用壓縮的益處而沒有解壓縮的開銷,每個陣列(130)和(132)中的數(shù)據(jù)可逐二進制值地比較,用于測試等同性和范圍判定。每個陣列保存利用共同特性壓縮的數(shù)據(jù),其中不同的陣列保存具有不同特性的數(shù)據(jù)。更具體地,陣列(130)中的數(shù)據(jù)擁有第一特性,并且陣列(132)中的數(shù)據(jù)擁有第二特性,其中第一和第二特性不相同。例如,陣列(130)中的數(shù)據(jù)可以表示以2位每值編碼的頁的所有數(shù)據(jù),而陣列(132)中的數(shù)據(jù)可以表示以7位每值編碼的頁的所有數(shù)據(jù)。每個陣列保存可以適合用于該服務器的處理單元寄存器的最大數(shù)量的值。在一個實施例中,不是2的冪的編碼大小指示,每個陣列中的一些數(shù)量的位可以被填充以適合寄存器的長度。專用區(qū)域(140)是用來保存可變長度的數(shù)據(jù)的區(qū)域。在本文中也被稱為第三陣列的專用區(qū)域(140)中的數(shù)據(jù)經由元組映射(120)被索引化。元組映射
(120)中的每個條目是指示該TSN位于哪個陣列中的索引。由于該區(qū)域中的數(shù)據(jù)沒有被編碼為固定長度的值,所以該數(shù)據(jù)并不作為固定長度陣列被處理。
[0020]由于基于編碼寬度把值放在頁上,所以這些值不太可能按照它們到達的順序出現(xiàn)在頁上。為了重建值的原始序列,即為了找到頁上的第N個值,存儲位映射,其指示第N個值所位于的區(qū)域的標識符。例如,對于包含三個區(qū)域的頁,需要兩個位來指示值位于頁的第一、第二還是第三區(qū)域中。位映射被稱作元組映射(120),在本文中也被稱為向量,并且被直接存儲為位映射或獨立的數(shù)據(jù)存儲庫,該獨立的數(shù)據(jù)存儲庫被打包(packed)從而匹配處理單元寄存器的寄存器寬度。更具體地,元組映射(120)記錄每個元組通過編碼被指派到哪個區(qū)域。元組映射(120)的索引是相對于頁的TSN,并且每個條目是TSN所屬于的區(qū)域的索引。存儲在陣列(130)和(132)中的數(shù)據(jù)元素經由向量(120)被索引化,向量(120)包括存儲在陣列(130)和(132)中的數(shù)據(jù)元素的映射。例如,在具有兩個區(qū)域的頁的實施例中,元組映射條目是每個條目為一位。相應地,通過把同樣格式的小元組一起分組到陣列中,具有相同格式的小元組的長行程得以形成。在一個實施例中,元組映射可以按照以位為主的順序(in bit-major order)存儲。例如,條目是每個條目兩位的元組映射中,每個條目的第一個位可以存儲為一個位映射,隨后是保存每個條目的第二個位的第二位映射。
[0021]壓縮頁被用于查詢處理,查詢處理包括訪問來自區(qū)域的一個或多個存儲庫的代碼的值。圖2是示出用于加載列數(shù)據(jù)的處理的流程圖(200)?;诓樵冞^濾器,識別一組相關的TSN (202)。在一個實施例中,成批地上載識別的TSN,用于按照可用的處理器高速緩存進行處理。按照頁來劃分被識別和上載的TSN (204)。在一個實施例中,識別TSN被劃分成的頁的總數(shù)并且將其賦給變量(206)。把相關聯(lián)的計數(shù)變量X初始化(208)。對于每個頁pagex,把該特定頁的TSN進一步劃分成陣列(210)。在一個實施例中,識別頁Pagex的陣列的總數(shù)并將其賦給變量Y,(212)。把相關聯(lián)的計數(shù)變量Y初始化(214)。在步驟(214)之后,執(zhí)行每個陣列Y的密度檢查(216)。密度檢查查看陣列中的占據(jù),并且具體地,查看有多少值是TSN列表所感興趣的。
[0022]密度檢查在本文中被示出為跟隨在陣列識別之后。然而,密度檢查可以發(fā)生在值和代碼訪問中的不同步驟。例如,密度檢查可以跟隨在步驟(202)中相關TSN的識別之后,或者可選地跟隨在步驟(204)后的TSN的劃分之后。在一個實施例中,密度檢查是以全體數(shù)據(jù)的估計采樣(estimat1n sample)為基礎的近似。類似地,在一個實施例中,小于25%的占據(jù)被認為是稀疏的,盡管該值并不是限制性的。相應地,利用基于密度檢查而選擇的訪問技術,對于每個區(qū)域訪問值和代碼。
[0023]密度檢查的結果與對于每個陣列Y和每個頁X訪問值或代碼的處理直接相關(218)。在被稀疏地填充的區(qū)域中,對于每個輸入TSN,識別陣列偏移并訪問值或代碼。在被密集地填充的區(qū)域中,加載并過濾整個區(qū)域。不管采用什么技術,確定數(shù)據(jù)元素和數(shù)據(jù)元素在陣列之一中的位置。在一個實施例中,計算數(shù)據(jù)元素在陣列之一內被存儲于的機器字倍數(shù),并且在算得的機器字倍數(shù)處計算數(shù)據(jù)元素的位偏移。類似地,在一個實施例中,機器字倍數(shù)處的計算包括:把數(shù)據(jù)元素的位置乘以預先計算出的裝配在每個機器字倍數(shù)內的數(shù)據(jù)元素的數(shù)量的整數(shù)模逆,例如指示代碼所位于的機器字的位置。步驟(218)中的代碼訪問包括訪問來自陣列之一的特定位置的至少一個數(shù)據(jù)元素。這包括識別陣列,訪問所識別的陣列中的數(shù)據(jù)元素,和把訪問的數(shù)據(jù)元素放置到新的陣列中。在一個實施例中,被放置的數(shù)據(jù)元素的排列是字對準的。
[0024]在利用相關聯(lián)的技術訪問之后,把用于頁陣列的計數(shù)變量Y加一(220)。隨后確定是否所有頁陣列已經被處理(222)。在對步驟(222)的確定作出否定響應后,返回到步驟(216),并且在對步驟(222)的確定作出肯定響應后,把頁計數(shù)變量X加一(224)。隨后確定是否所有所識別的頁已經被處理(226)。在對步驟(226)的確定作出否定響應后,返回到步驟(210),并且對步驟(226)的確定作出肯定響應會結束數(shù)據(jù)壓縮頁的值訪問和放置處理。
[0025]如圖2所示,元組映射被用來從一個或多個頁訪問壓縮數(shù)據(jù)。此外,如圖1所示,每個表示壓縮數(shù)據(jù)的頁包括兩個或多個陣列,每個陣列基于數(shù)據(jù)特性存儲不同的數(shù)據(jù)。元組映射被用來識別頁中的陣列。在一個實施例中,累積直方圖被用來確定特定數(shù)據(jù)在所識別的陣列內的偏移。圖3是描繪頁格式內的累積直方圖的框圖(300)。在本文的實例中,值(350)的列被示出,其中“a”和“b”的值具有與“c”、“d”和“e”的值不同的編碼長度。元組映射(302)用位映射表示來描繪,即所有條目以位O和I表示。元組映射(302)與累積直方圖(310)以及兩個陣列(330)和(340)通信。具有一個值的每個位表示存儲在第一陣列(330)中的具有第一特性的數(shù)據(jù),并且具有第二值的每個位表示存儲在第二陣列(340)中的具有第二特性的數(shù)據(jù)。在該實例中,累積直方圖(310)具有數(shù)值(312)、(314)和(316),每個值包含地表示在3位增量中存在多少指定值的位。在一個實施例中,本文中所示實例的參數(shù)可以變化,包括但不限于位表示和增量。數(shù)值(312)、(314)和(316)對于陣列(330)和(340)保存元組映射中對該陣列的先前引用的計數(shù)值,從而使得當在所識別的陣列之一中定位數(shù)據(jù)時能夠跳過元組映射中的先前條目。相應地,累積直方圖充當處于元組映射之上的元結構以便為元組映射訪問帶來效率。
[0026]圖4是示出用于利用累積直方圖以及元組映射進行數(shù)據(jù)訪問的處理的流程圖(400)。第一步驟是在元組映射中查找TSN(402),這將識別數(shù)據(jù)所位于的頁中的特定陣列(404)。一旦陣列被識別,就對感興趣的陣列選擇最接近的累積直方圖(406)。利用該直方圖來確定數(shù)據(jù)在陣列內的偏移。更具體地,確定相同陣列中的條目的數(shù)量并將其加到累積計數(shù)值中來確定數(shù)據(jù)值或代碼在陣列內的偏移(408)。相應地,累積直方圖結合元組映射一起用于識別數(shù)據(jù)的偏移。
[0027]圖1-4中所示的處理可以實施為硬件部件。圖5是示出嵌入計算機系統(tǒng)中以支持數(shù)據(jù)編碼和處理的工具的框圖(500)。如圖所示,系統(tǒng)包括計算機(510)來以圖1中描述的格式存儲壓縮數(shù)據(jù)的頁,并且存儲用于支持壓縮數(shù)據(jù)的訪問和放置的工具。計算機(510)設置有跨越總線(516)與存儲器(514)通信的處理單元(512)。數(shù)據(jù)存儲裝置(540)被設置成與計算機(510)進行本地通信來存儲接收或產生的數(shù)據(jù)。在一個實施例中,數(shù)據(jù)存儲裝置可以是遠程的,且通過網(wǎng)絡通信來提供對存儲裝置的訪問。
[0028]計算機(510)包括功能單元(550),其具有一個或多個工具(560)來支持數(shù)據(jù)編碼和對數(shù)據(jù)的訪問。在功能單元(550)中嵌入的工具(560)支持在圖1-4中詳細描述的列數(shù)據(jù)的頁的壓縮和存儲的功能,包括索引化數(shù)據(jù)元素、和訪問存儲的數(shù)據(jù)元素。壓縮包括用于數(shù)據(jù)的格式,該格式包括多個陣列,其中不同的陣列在共同特性的不同組內存儲壓縮數(shù)據(jù)。
[0029]如上面所確定的,工具(560)被示出駐留在計算機(510)的功能單元(550)中。盡管在一個實施例中,功能單元(550)和工具(560)分別可以作為存儲器(514)外部的硬件工具而駐留。在另一個實施例中,工具(560)可以在共享資源池中實現(xiàn)為硬件和軟件的組合。類似地,在一個實施例中,工具(560)可以組合到包含各單獨項目的功能的單個功能項目中。如本文中所示,工具(560)被示出在一個計算機系統(tǒng)(510)的本地。然而,在一個實施例中,它們可以共同地或分別地跨越可配置計算機資源的共享池分布,并且充當一個單元。相應地,工具可以實現(xiàn)為軟件工具、硬件工具或者軟件和硬件工具的組合。
[0030]此外,所描述的特征、結構或特性可以在一個或多個實施例中以任何適合的方式組合。然而,相關領域的技術人員將認識到的是,本發(fā)明可以得到實施而不使用一個或多個特定細節(jié),或者利用其他方法、部件、材料等等。在其他實例中,熟知的結構、材料或操作并未詳細示出或描述以避免模糊本發(fā)明的各方面。
[0031]工具(560)可以以可編程硬件裝置(諸如場可編程門陣列,可編程陣列邏輯,可編程邏輯器件,等等)實現(xiàn)。工具(560)也可以以用于通過各種類型的處理器處理的軟件實現(xiàn)??蓤?zhí)行代碼的識別出的控制器或管理器可以例如包括計算機指令的一個或多個物理或邏輯塊,其可以例如被組織為對象、程序、函數(shù)或其他構造。然而,識別出的控制器或管理器的可執(zhí)行指令不需要在物理上位于一起,而是可以包括存儲在不同位置的不同指令,當邏輯地結合在一起時,其會構成管理器并實現(xiàn)控制器和管理器的所陳述的目的。
[0032]確實,可執(zhí)行代碼可以是單個指令或許多指令,并且可以甚至分布在若干不同的代碼段上,分布在不同的應用中,并且跨越若干存儲器裝置。類似地,操作數(shù)據(jù)可以被識別并且在本文中被示出處于工具內,并且可以以任何適合的形式實施并在任何適合類型的數(shù)據(jù)結構內組織。操作數(shù)據(jù)可以被收集為單個數(shù)據(jù)存儲庫,或者可以分布在不同的位置,包括分布在不同的存儲裝置,并且可以至少部分地作為系統(tǒng)或網(wǎng)絡上的電子信號而存在。
[0033]現(xiàn)在參考圖6的框圖,現(xiàn)在描述關于實現(xiàn)本發(fā)明的實施例的附加細節(jié)。計算機系統(tǒng)包括一個或多個處理器,諸如處理器¢02)。處理器(602)連接到通信基礎設施(604)(例如,通信總線、交叉條(cross-over bar)或網(wǎng)絡)。
[0034]計算機系統(tǒng)可以包括顯示接口(606),其發(fā)送來自通信基礎設施(604)(或來自未示出的幀緩沖器)的圖形、文本和其他數(shù)據(jù)以在顯示單元(608)上顯示。計算機系統(tǒng)還包括主存儲器¢10),優(yōu)選地是隨機存取存儲器(RAM),并且還可以包括次存儲器(612)。次存儲器(612)可以包括例如硬盤驅動器¢14)、固態(tài)驅動器和/或可移除存儲驅動器¢16),可移除存儲驅動器(616)表示例如軟盤驅動器、磁帶驅動器或光盤驅動器??梢瞥鎯︱寗悠鳌?6)以本領域普通技術人員熟知的方式從可移除存儲單元(618)讀取和/或向可移除存儲單元(618)寫入??梢瞥鎯卧?618)表示例如由可移除存儲驅動器(616)讀取和寫入的軟盤、緊湊盤、磁帶或光盤等。如將理解的那樣,可移除存儲單元(618)包括其中存儲有計算機軟件和/或數(shù)據(jù)的計算機可讀介質。
[0035]在替代性實施例中,次存儲器(612)可以包括用于允許計算機程序或其他指令被加載到計算機系統(tǒng)中的其他類似部件。這樣的部件可以包括例如可移除存儲單元(620)和接口 ¢22)。這樣的部件的實例可以包括:程序包和打包接口(諸如在視頻游戲設備中發(fā)現(xiàn)的),可移除存儲器芯片(諸如EPROM或PR0M)和相關聯(lián)的插座,以及允許軟件和數(shù)據(jù)從可移除存儲單元(620)傳送到計算機系統(tǒng)的其他可移除存儲單元(620)和接口 ¢22)。
[0036]計算機系統(tǒng)還可以包括通信接口 ¢24)。通信接口(624)允許軟件和數(shù)據(jù)在計算機系統(tǒng)和外部設備之間傳送。通信接口(624)的實例可以包括:調制解調器,網(wǎng)絡接口(諸如以太網(wǎng)卡),通信端口,或PCMCI插槽和卡,等等。經由通信接口(624)傳送的軟件和數(shù)據(jù)采取信號的形式,所述信號可以是能夠由通信接口(624)接收的例如電子、電磁、光或其他信號。這些信號經由通信路徑(即,信道)(626)被提供給通信接口 ¢24)。該通信路徑(626)輸送信號,并且可以使用導線或電纜、光纖、電話線路、蜂窩電話鏈路、射頻(RF)鏈路和/或其他通信信道來實現(xiàn)。
[0037]在該文獻中,術語“計算機程序介質”、“計算機可用介質”和“計算機可讀介質”被用于一般地指代諸如主存儲器¢10)和次存儲器¢12)、可移除存儲驅動器¢16)、以及硬盤驅動器¢14)中安裝的硬盤之類的介質。
[0038]計算機程序(也稱作計算機控制邏輯)被存儲在主存儲器(610)和/或次存儲器(612)中。計算機程序也可以經由通信接口(624)接收。這樣的計算機程序在運行時使計算機系統(tǒng)能夠執(zhí)行本文中討論的本發(fā)明的特征。特別地,計算機程序在運行時使處理器(602)能夠執(zhí)行計算機系統(tǒng)的特征。相應地,這樣的計算機程序表示計算機系統(tǒng)的控制器。
[0039]所屬領域的技術人員將理解的是,本發(fā)明的各個方面可以實施為系統(tǒng)、方法或計算機程序產品。因此,本發(fā)明的各個方面可以采取以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、駐留軟件、微代碼等),或軟件和硬件方面結合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,本發(fā)明的各個方面還可以采取用一個或多個計算機可讀介質實施的計算機程序產品的形式,該計算機可讀介質上包含有計算機可讀程序代碼。
[0040]可以采用一個或多個計算機可讀介質的任意組合。計算機可讀介質可以是計算機可讀信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是一但不限于——電、磁、光、電磁、紅外線或半導體的系統(tǒng)、裝置或器件,或者任意以上的適當組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機軟盤、硬盤、固態(tài)驅動器、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件的上下文中,計算機可讀存儲介質可以是任何包含或存儲程序的有形介質,該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用。
[0041]計算機可讀信號介質可以包括例如在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機可讀程序代碼。這種傳播的信號可以采用各種形式,包括但不限于電磁信號、光信號或上述的任意合適的組合。計算機可讀信號介質還可以是計算機可讀存儲介質以外的任何計算機可讀介質,該計算機可讀介質可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用的程序。
[0042]計算機可讀介質上包含的程序代碼可以用任何適當?shù)慕橘|傳輸,包括但不限于無線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0043]可以以一種或多種程序設計語言的任意組合來編寫用于執(zhí)行本發(fā)明各方面的操作的計算機程序代碼,所述程序設計語言包括面向對象的程序設計語言(諸如Java、Smalltalk^++等),還包括常規(guī)的過程式程序設計語言(諸如“C”程序設計語言或類似的程序設計語言)。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng)連接)。
[0044]上面參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產品的流程圖和/或框圖描述了本發(fā)明的各方面。應當理解的是,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產出一種機器,使得這些計算機程序指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產生實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。
[0045]也可以把這些計算機程序指令存儲在計算機可讀介質中,這些指令可以使得計算機、其它可編程數(shù)據(jù)處理裝置、或其他設備以特定方式工作,使得存儲在計算機可讀介質中的指令產生包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的指令的制造品°
[0046]計算機程序指令還可以加載到計算機、其它可編程數(shù)據(jù)處理裝置或其他設備上,以使一系列操作步驟在計算機、其它可編程裝置或其他設備上被執(zhí)行以產生計算機實現(xiàn)的過程,使得在計算機或其它可編程裝置上執(zhí)行的指令提供用于實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的處理。
[0047]附圖中的流程圖和框圖示出根據(jù)本發(fā)明的各種實施例的系統(tǒng)、方法和計算機程序產品的可能實現(xiàn)的架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意的是,在有些替代性實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框實際上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
[0048]本文中使用的術語僅用于描述特定實施例的目的并且并非旨在對本發(fā)明進行限制。本文中使用的單數(shù)形式“一”和“一個”旨在也包括復數(shù)形式,除非上下文有清楚的相反指示。還應理解的是,術語“包括”在本說明書中被使用時,指的是所陳述的特征、整數(shù)、步驟、操作、元件和/或組件的存在,而并不排除一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或其組合的存在或附加。
[0049]所有裝置或步驟的對應結構、材料、操作和等同物加上下面的權利要求中的功能單元旨在包括用于與具體宣稱的其他宣稱單元相結合來執(zhí)行功能的任何結構、材料或操作。本發(fā)明的說明已經出于舉例說明和描述的目的而給出,而并非旨在是無遺漏的或局限于所公開的形式的發(fā)明。許多改型和變型對于本領域普通技術人員而言將是明顯的,而不會脫離本發(fā)明的范圍和精神。選擇和描述實施例是為了最佳地解釋本發(fā)明的原理和實際應用,并使本領域普通技術人員能夠理解本發(fā)明從而獲得具有適合于預期的特定用途的各種修改的各種實施例。因此,代碼流壓縮支持關于解壓縮的靈活性,包括來自任意位置的代碼流的解壓縮,其中解壓縮是被引用短語的基本文字的遞歸過程。
[0050]替代實施例
[0051]應理解的是,盡管在本文中已經出于舉例說明的目的描述了本發(fā)明的特定實施例,但是可以作出各種改型而不脫離本發(fā)明的精神和范圍。因此,本發(fā)明的保護范圍僅受所附權利要求及其等價形式限制。
【權利要求】
1.一種方法,包括: 壓縮列數(shù)據(jù)頁,并以一種格式存儲經壓縮的頁,所述格式包括第一數(shù)據(jù)陣列、第二數(shù)據(jù)陣列和向量,所述第一數(shù)據(jù)陣列存儲具有第一共同特性的數(shù)據(jù)元素,所述第二數(shù)據(jù)陣列存儲具有第二共同特性的數(shù)據(jù)元素,所述第一和第二特性不相同; 將存儲在所述第一和第二陣列中的數(shù)據(jù)元素索引化到所述向量中,包括映射存儲在所述陣列中的數(shù)據(jù)元素;以及 訪問所存儲的數(shù)據(jù)元素中的一個或多個,包括采用所述向量來確定對應偏移和所述數(shù)據(jù)元素被存儲于其中的陣列。
2.如權利要求1所述的方法,其中存儲在所述第一陣列中的數(shù)據(jù)和存儲在所述第二陣列中的數(shù)據(jù)選自:經壓縮的數(shù)據(jù)元素和未經壓縮的數(shù)據(jù)元素。
3.如權利要求2所述的方法,還包括:將所述第一和第二陣列之一中的經壓縮的數(shù)據(jù)元素的長度中的未使用的位與邊界對準,所述對準能減輕與訪問任何一個所存儲的元素相關聯(lián)的位移位。
4.如權利要求3所述的方法,其中所述邊界是機器字長的倍數(shù)。
5.如權利要求1所述的方法,還包括:對每個邊界內的所有字同時執(zhí)行向量化的機器指令。
6.如權利要求1所述的方法,還包括:確定數(shù)據(jù)元素和所述數(shù)據(jù)元素在所述第一和第二陣列之一中的位置,包括計算所述數(shù)據(jù)元素在所述第一和第二陣列之一內被存儲于的機器字倍數(shù),以及計算所述數(shù)據(jù)元素在算得的機器字倍數(shù)處的位偏移。
7.如權利要求6所述的方法,其中計算所述機器字倍數(shù)包括:將所述數(shù)據(jù)元素的位置乘以預先計算出的裝配在每個機器字倍數(shù)內的數(shù)據(jù)元素的數(shù)量的整數(shù)模逆。
8.如權利要求1所述的方法,還包括:訪問處于所述第一和第二陣列之一的特定位置的至少一個數(shù)據(jù)元素,包括識別陣列以及將在所識別的陣列中訪問的數(shù)據(jù)元素放置到新的陣列中,其中被放置的數(shù)據(jù)元素的排列是字對準的。
9.如權利要求1所述的方法,還包括:將數(shù)據(jù)元素存儲在所述列數(shù)據(jù)頁中的第三陣列中,所述第三陣列包含多個具有變化長度的數(shù)據(jù)元素;以及將所述第三陣列的所述數(shù)據(jù)元素索引化到所述向量中。
10.如權利要求1所述的方法,其中具有所述第一特性的數(shù)據(jù)元素占據(jù)所述第一陣列中的第一數(shù)量的位,并且具有所述第二特性的數(shù)據(jù)元素占據(jù)所述第二陣列中的第二數(shù)量的位,以及其中確定所述偏移包括:調用適合于所述第一和第二陣列之一中的各個數(shù)據(jù)元素所占據(jù)的位的數(shù)量的功能。
11.一種用于訪問多個數(shù)據(jù)元素的系統(tǒng),包括: 配置成壓縮列數(shù)據(jù)頁以及以一種格式存儲經壓縮的頁的裝置,所述頁格式包括第一數(shù)據(jù)陣列、第二數(shù)據(jù)陣列和向量,所述第一數(shù)據(jù)陣列存儲具有第一共同特性的數(shù)據(jù)元素,所述第二數(shù)據(jù)陣列存儲具有第二共同特性的數(shù)據(jù)元素,所述第一和第二特性不相同; 配置成將存儲在所述第一和第二陣列中的數(shù)據(jù)元素索引化到所述向量中的裝置,包括映射存儲在所述陣列中的數(shù)據(jù)元素的裝置;以及 配置成訪問所存儲的數(shù)據(jù)元素中的一個或多個的裝置,包括采用所述向量來確定對應偏移和所述數(shù)據(jù)元素被存儲于其中的陣列的裝置。
12.如權利要求11所述的系統(tǒng),其中存儲在所述第一陣列中的數(shù)據(jù)和存儲在所述第二陣列中的數(shù)據(jù)選自:經壓縮的數(shù)據(jù)元素和未經壓縮的數(shù)據(jù)元素。
13.如權利要求12所述的系統(tǒng),還包括:配置成將所述第一和第二陣列之一中的經壓縮的數(shù)據(jù)元素的長度中的未使用的位與邊界對準的裝置,所述對準能減輕與訪問任何一個所存儲的元素相關聯(lián)的位移位。
14.如權利要求13所述的系統(tǒng),其中所述邊界是機器字長的倍數(shù)。
15.如權利要求11所述的系統(tǒng),還包括:配置成對每個邊界內的所有字同時執(zhí)行向量化的機器指令的裝置。
16.如權利要求11所述的系統(tǒng),還包括:配置成確定數(shù)據(jù)元素和所述數(shù)據(jù)元素在所述第一和第二陣列之一中的位置的裝置,包括計算所述數(shù)據(jù)元素在所述第一和第二陣列之一內被存儲于的機器字倍數(shù)的裝置,以及計算所述數(shù)據(jù)元素在算得的機器字倍數(shù)處的位偏移的裝置。
17.如權利要求16所述的系統(tǒng),其中計算所述機器字倍數(shù)包括:將所述數(shù)據(jù)元素的位置乘以預先計算出的裝配在每個機器字倍數(shù)內的數(shù)據(jù)元素的數(shù)量的整數(shù)模逆。
18.如權利要求11所述的系統(tǒng),還包括:配置成訪問處于所述第一和第二陣列之一的特定位置的至少一個數(shù)據(jù)元素的裝置,包括識別陣列的裝置以及將所識別的陣列中的數(shù)據(jù)元素放置到新的陣列中的裝置,其中被放置的數(shù)據(jù)元素的排列是字對準的。
19.如權利要求11所述的系統(tǒng),還包括:配置成將數(shù)據(jù)元素存儲在所述列數(shù)據(jù)頁中的第三陣列中的裝置,所述第三陣列包含多個具有變化長度的數(shù)據(jù)元素;以及將所述第三陣列的所述數(shù)據(jù)元素索引化到所述向量中的裝置。
20.如權利要求11所述的系統(tǒng),其中具有所述第一特性的數(shù)據(jù)元素占據(jù)所述第一陣列中的第一數(shù)量的位,并且具有所述第二特性的數(shù)據(jù)元素占據(jù)所述第二陣列中的第二數(shù)量的位,以及其中確定所述偏移包括:調用適合于所述第一和第二陣列之一中的各個數(shù)據(jù)元素所占據(jù)的位的數(shù)量的功能。
【文檔編號】G06F17/30GK104239391SQ201410264282
【公開日】2014年12月24日 申請日期:2014年6月13日 優(yōu)先權日:2013年6月14日
【發(fā)明者】R·J·巴伯, S·S·萊特斯通, G·M·洛曼, 喬琳, V·拉曼, R·S·賽德勒 申請人:國際商業(yè)機器公司