亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

結(jié)構(gòu)化數(shù)據(jù)序列的壓縮方法

文檔序號:6461832閱讀:280來源:國知局

專利名稱::結(jié)構(gòu)化數(shù)據(jù)序列的壓縮方法
技術(shù)領(lǐng)域
:本發(fā)明涉及一種計算機(jī)數(shù)據(jù)壓縮方法,尤其是一種以列為順序進(jìn)行分組和壓縮的數(shù)據(jù)壓縮方法,具體地說是一種結(jié)構(gòu)化數(shù)據(jù)序列的壓縮方法。技術(shù)背景目前,在各種應(yīng)用系統(tǒng)中,有許多需要存儲大量數(shù)據(jù)的情況,經(jīng)常需要存儲一年幾十年的數(shù)據(jù),數(shù)據(jù)總量達(dá)到幾十GB千GB以上。如果預(yù)期總數(shù)據(jù)量超過了實際系統(tǒng)的存儲總?cè)萘浚瑒t還需要增加存儲設(shè)備,增加存儲成本。對于某些系統(tǒng),存儲設(shè)備已經(jīng)達(dá)到擴(kuò)充的極限,不能再增加了,數(shù)據(jù)存儲的問題將更嚴(yán)重。同時因為大量的存儲器讀寫操作導(dǎo)致系統(tǒng)運(yùn)行開銷很大,輸入/輸出成為系統(tǒng)性能的瓶頸。采用數(shù)據(jù)壓縮,可以節(jié)約存儲空間,降低成本,減少數(shù)據(jù)讀寫總量,提高輸入/輸出效率,提供大容量、高速度的數(shù)據(jù)存儲與傳輸服務(wù)?,F(xiàn)在的壓縮方法有很多,比如RLE、霍夫曼編碼、PPM、LZ系列、BWT等等。還有許多有損壓縮方法。將這些壓縮方法用于結(jié)構(gòu)化數(shù)據(jù)序列的壓縮,會出現(xiàn)幾個方面的問題一、上述的各種壓縮方法適用于壓縮連續(xù)的某一種類型的數(shù)據(jù),而結(jié)構(gòu)化數(shù)據(jù)序列往往是由不同種類的數(shù)據(jù)混合組成,具有不同的特質(zhì),因此,單一地使用任何一種方法往往無法獲得理想的壓縮效果。二、如果針對數(shù)據(jù)元素中的數(shù)據(jù)域的特定數(shù)據(jù)類型而選擇特定的方法進(jìn)行壓縮,則可以取得較好的效果,但必須預(yù)先知道數(shù)據(jù)元素的數(shù)據(jù)結(jié)構(gòu)。三、對于二,即使知道數(shù)據(jù)結(jié)構(gòu),但在實際應(yīng)用中,同種類型的數(shù)據(jù)可能具有不同的特性,這也會對壓縮效果產(chǎn)生很大影響。比如用一個l字節(jié)的整數(shù)表示開關(guān)狀態(tài),0和1對應(yīng)開和關(guān)。當(dāng)用其表示極少變化的開關(guān)狀態(tài)時,用RLE方法壓縮將能獲得理想的效果,而用LZW方法則不如RLE方法;當(dāng)用其表示經(jīng)常變化的開關(guān)狀態(tài)時,用RLE方法壓縮的效果較差,而用LZW方法則比RLE方法好很多。可見,沒有絕對好的方法,只有更適用的方法。四、對于不能確定具體數(shù)據(jù)類型的數(shù)據(jù)序列,將無法選擇合適的方法進(jìn)行壓縮。綜上所述目前尚無一種壓縮率高、適用于結(jié)構(gòu)化數(shù)據(jù)序列的壓縮方法可供采用。
發(fā)明內(nèi)容本發(fā)明的目的是針對現(xiàn)有的壓縮方法應(yīng)用于結(jié)構(gòu)化數(shù)據(jù)序列時存在壓縮效果較差,需要預(yù)先知道數(shù)據(jù)類型,不能最大限度地實現(xiàn)壓縮目的的問題,發(fā)明一種基于分組壓縮的適用于結(jié)構(gòu)化數(shù)據(jù)序列且無需知道數(shù)據(jù)類型即可實現(xiàn)高效壓縮的結(jié)構(gòu)化數(shù)據(jù)序列壓縮方法。本發(fā)明的技術(shù)方案是一種結(jié)構(gòu)化數(shù)據(jù)序列的壓縮方法,其特征是首先,將由若干大小相等、數(shù)據(jù)結(jié)構(gòu)相同或類似的元素構(gòu)成的結(jié)構(gòu)化的數(shù)據(jù)序列劃分為數(shù)據(jù)矩陣,以該數(shù)據(jù)序列的元素為矩陣的行,元素的個數(shù)就是矩陣的行數(shù),以該數(shù)據(jù)序列的元素的各字節(jié)或各位為矩陣的列,元素的字節(jié)數(shù)或位數(shù)就是矩陣的列數(shù),對此數(shù)據(jù)矩陣以列為順序,按矩陣的一列或若干字節(jié)或若干位劃分成組,每組數(shù)據(jù)稱為一個分組;其次,對所得各分組使用常規(guī)的壓縮方法進(jìn)行壓縮;第三,將上述壓縮結(jié)果進(jìn)行存儲,存儲時先存儲結(jié)構(gòu)化數(shù)據(jù)序列的元素個數(shù)、元素的大小和分組的數(shù)量,再存儲各分組的壓縮結(jié)果,以便于解壓縮。所述的常規(guī)壓縮方法包括差分編碼、RLE壓縮方法和LZW壓縮方法及其它現(xiàn)有的壓縮方法和未來新出現(xiàn)的壓縮方法,以及多種方法的組合。對各分組分別用已知的壓縮方法進(jìn)行壓縮,并對每種壓縮方法進(jìn)行編號,取壓縮效果最優(yōu)的壓縮方法作為該分組的最終壓縮方法,并對該分組最優(yōu)的壓縮結(jié)果進(jìn)行存儲,存儲時先存儲該壓縮方法的編號、該分組的原數(shù)據(jù)的數(shù)量和該分組的壓縮數(shù)據(jù)的數(shù)量,然后存儲該分組的壓縮數(shù)據(jù)。在對各分組進(jìn)行壓縮過程中,將未進(jìn)行壓縮的原數(shù)據(jù)視為一個特別的壓縮方法的壓縮結(jié)果,進(jìn)行比較和存儲。對于固定結(jié)構(gòu)的數(shù)據(jù)序列,可事先通過分析和試驗,確定采用固定的方法進(jìn)行分組,并對各分組采用固定的壓縮方法進(jìn)行壓縮。在存儲壓縮結(jié)果時,可根據(jù)情況省略結(jié)構(gòu)化數(shù)據(jù)序列的元素個數(shù)、元素的大小、分組的數(shù)量、分組壓縮方法的編號、分組的原數(shù)據(jù)的數(shù)量、分組的壓縮數(shù)據(jù)的數(shù)量。本發(fā)明的有益效果一、本發(fā)明實現(xiàn)了"結(jié)構(gòu)化數(shù)據(jù)序列"的高效壓縮。二、本發(fā)明以分組為單位進(jìn)行壓縮和解壓縮。不用知道數(shù)據(jù)序列的具體數(shù)據(jù)結(jié)構(gòu),將其劃分為若干分組即可。因此,本方法具有通用性、自適應(yīng)性。三、對各分組嘗試使用不同的方法進(jìn)行壓縮,取最優(yōu)的壓縮結(jié)果,從而使總體的壓縮效果最優(yōu)。四、對于固定結(jié)構(gòu)的數(shù)據(jù)序列,可采用預(yù)適應(yīng)的做法,即事先通過分析和試驗,確定各分組對應(yīng)的最優(yōu)壓縮方法,以后總以各分組的最優(yōu)方法壓縮各分組,不再進(jìn)行最優(yōu)判斷,這樣可進(jìn)一步提高壓縮速度、降低壓縮消耗。五、在對各分組進(jìn)行壓縮之前,可根據(jù)實際的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)特性,先基于具體的數(shù)據(jù)類型進(jìn)行量化、差分等處理,使壓縮效率進(jìn)一步提高。圖1是本發(fā)明的結(jié)構(gòu)化數(shù)據(jù)序列壓縮流程圖。圖2是本發(fā)明的低內(nèi)存需求的結(jié)構(gòu)化數(shù)據(jù)序列壓縮流程圖。圖3是本發(fā)明的解壓縮流程圖。具體實施方式下面結(jié)合附圖和實施例對本發(fā)明作進(jìn)一步的說明。一種結(jié)構(gòu)化數(shù)據(jù)序列的壓縮方法,其特征是首先,將由若干大小相等、數(shù)據(jù)結(jié)構(gòu)相同或類似的元素構(gòu)成的結(jié)構(gòu)化的數(shù)據(jù)序列劃分為數(shù)據(jù)矩陣,以該數(shù)據(jù)序列的元素為矩陣的行,元素的個數(shù)就是矩陣的行數(shù),以該數(shù)據(jù)序列的元素的各字節(jié)或各位為矩陣的列,元素的字節(jié)數(shù)或位數(shù)就是矩陣的列數(shù),對此數(shù)據(jù)矩陣以列為順序,按矩陣的一列或若干字節(jié)或若干位劃分成組,每組數(shù)據(jù)稱為一個分組;其次,對所得各分組使用常規(guī)的壓縮方法進(jìn)行壓縮;第三,將上述壓縮結(jié)果進(jìn)行存儲,存儲時先存儲結(jié)構(gòu)化數(shù)據(jù)序列的元素個數(shù)、元素的大小和分組的數(shù)量,再存儲各分組的壓縮結(jié)果,以便于解壓縮。所述的常規(guī)壓縮方法包括差分編碼、RLE壓縮方法和LZW壓縮方法及其它現(xiàn)有的壓縮方法和未來新出現(xiàn)的壓縮方法,以及多種方法的組合。對各分組分別用已知的壓縮方法進(jìn)行壓縮,并對每種壓縮方法進(jìn)行編號,取壓縮效果最優(yōu)的壓縮方法作為該分組的最終壓縮方法,并對該分組最優(yōu)的壓縮結(jié)果進(jìn)行存儲,存儲時先存儲該壓縮方法的編號、該分組的原數(shù)據(jù)的數(shù)量和該分組的壓縮數(shù)據(jù)的數(shù)量,然后存儲該分組的壓縮數(shù)據(jù)。在對各分組進(jìn)行壓縮過程中,將未進(jìn)行壓縮的原數(shù)據(jù)視為一個特別的壓縮方法的壓縮結(jié)果,進(jìn)行比較和存儲。對于固定結(jié)構(gòu)的數(shù)據(jù)序列,可事先通過分析和試驗,確定采用固定的方法進(jìn)行分組,并對各分組采用固定的壓縮方法進(jìn)行壓縮。在存儲壓縮結(jié)果時,可根據(jù)情況省略結(jié)構(gòu)化數(shù)據(jù)序列的元素個數(shù)、元素的大小、分組的數(shù)量、分組壓縮方法的編號、分組的原數(shù)據(jù)的數(shù)量、分組的壓縮數(shù)據(jù)的數(shù)量。詳述如下一種結(jié)構(gòu)化數(shù)據(jù)序列壓縮及解壓縮方法,進(jìn)一步使用多種其它具體的壓縮方法。先為各種準(zhǔn)備使用的壓縮方法編號(包括不壓縮,可用編號0表示),然后對數(shù)據(jù)序列劃分成的數(shù)據(jù)矩陣經(jīng)過以列為順序劃分成組得到的各分組進(jìn)行壓縮及解壓縮,包括步驟一、用各種壓縮方法對一個分組進(jìn)行壓縮;二、對各種壓縮方法的效果進(jìn)行比較,確定此分組的最優(yōu)壓縮方法;三、存儲效果最優(yōu)的壓縮結(jié)果作為此分組的壓縮結(jié)果。循環(huán)進(jìn)行第一、二、三步,直到壓縮完所有分組的數(shù)據(jù)。壓縮流程如圖1所示。上述步驟也可以先循環(huán)進(jìn)行第一步,直到壓縮完所有分組的數(shù)據(jù)。然后再循環(huán)進(jìn)行第二、三步,選擇各分組的最優(yōu)結(jié)果進(jìn)行存儲。這樣做必須在第二步前同時保留所有分組的各種方法的結(jié)果,壓縮處理的開銷比較大,只適合分組數(shù)很少的情況,實用意義不大,完全可由循環(huán)進(jìn)行第一、二、三步的做法取代。也可以通過下列步驟進(jìn)行壓縮-一、用各種方法對一個分組進(jìn)行壓縮,以獲得壓縮效果;二、對各種壓縮方法的效果進(jìn)行比較,確定此分組的最優(yōu)壓縮方法;三、用此分組的最優(yōu)壓縮方法對此分組進(jìn)行壓縮,并存儲壓縮結(jié)果。循環(huán)進(jìn)行第一、二、三步,直到壓縮完所有分組的數(shù)據(jù)。這種方法每次只有一個壓縮方法占用系統(tǒng)資源,壓縮處理的內(nèi)存開銷比較小,適合壓縮方法很多的情況。只是每分組要多壓縮一次。這種低內(nèi)存需求的壓縮流程如圖2所示。解壓縮的技術(shù)方案一、獲取一個分組的壓縮方法的編號。二、以編號所對應(yīng)的解壓縮方法,對此分組的壓縮數(shù)據(jù)進(jìn)行解壓縮處理;三、存儲還原的一個分組的數(shù)據(jù)。循環(huán)進(jìn)行一、二、三步驟,直到解壓縮完所有的分組,就實現(xiàn)所有數(shù)據(jù)的解壓縮。解壓縮流程如圖3所示。本發(fā)明中,結(jié)構(gòu)化數(shù)據(jù)序列是指由若干數(shù)據(jù)元素組成的一組數(shù)據(jù),各數(shù)據(jù)元素具有相同或類似的數(shù)據(jù)結(jié)構(gòu),各元素的大小相同。元素的大小指元素所包含的數(shù)據(jù)的數(shù)量,可以用字節(jié)或位為基本單位來衡量,即元素的字節(jié)數(shù)或位數(shù)。結(jié)構(gòu)化數(shù)據(jù)序列的典型形式有一、內(nèi)存中的數(shù)組,其元素可以是任何簡單類型(如整型、浮點性、邏輯型、字符串型等)的數(shù)據(jù),也可以是任何復(fù)雜類型(如結(jié)構(gòu)型、聯(lián)合型、數(shù)組型等)的數(shù)據(jù)。二、文件和數(shù)據(jù)庫中,包括K記錄型的文件或文件中的一些邏輯上相關(guān)、結(jié)構(gòu)相同的記錄。2、數(shù)據(jù)庫中的表是一種典型的具體形式。表中的一個個記錄就是數(shù)據(jù)序列,每個記錄就是一個元素,是一個結(jié)構(gòu)型數(shù)據(jù)。3、工業(yè)信息系統(tǒng)的實時/歷史數(shù)據(jù)庫中,點的數(shù)據(jù)也是具有特定結(jié)構(gòu)的數(shù)據(jù)序列,是適合本方法的處理對象。在本發(fā)明中,將上述的結(jié)構(gòu)化數(shù)據(jù)序列劃分成以字節(jié)或位為基本單位的數(shù)據(jù)矩陣,并以列為順序(以行為順序就是將一行中的每個字節(jié)或位逐個處理后再處理下一行,以列為順序就是將一列中的每個字節(jié)或位處理后再處理下一列。)將該矩陣的所有數(shù)據(jù)分成若干組。各分組的數(shù)據(jù)量可以相等,也可以不等,最常用的是將數(shù)據(jù)矩陣的一列作為一個分組。壓縮處理以分組為單位進(jìn)行。具體實施時還可對分組內(nèi)部數(shù)據(jù)的順序進(jìn)行靈活安排,比如某個分組是矩陣的兩列,則在壓縮時可按列的順序也可按行的順序,甚至是特定的一種順序進(jìn)行壓縮處理。在實際應(yīng)用中,在目標(biāo)數(shù)據(jù)量非常大的情況下,采用本發(fā)明的壓縮技術(shù)非常有意義??梢栽跀?shù)據(jù)庫備份、數(shù)據(jù)庫查詢結(jié)果的通訊傳送等應(yīng)用中使用本發(fā)明的方法對目標(biāo)數(shù)據(jù)進(jìn)行壓縮處理,提高數(shù)據(jù)的存儲和傳輸效率。在工業(yè)生產(chǎn)中,有很多現(xiàn)場的測點數(shù)據(jù)需要記錄下來,以便進(jìn)行歷史査詢,并可幫助生產(chǎn)管理人員進(jìn)行問題的分析。這些測點數(shù)據(jù)記錄就是本發(fā)明所說的結(jié)構(gòu)化數(shù)據(jù)序列的具體形式之一。而成千上萬的測點,經(jīng)過長年累月的積累,測點的歷史數(shù)據(jù)將非常多,以致只能在硬盤上保存較短時間的歷史數(shù)據(jù),歷史數(shù)據(jù)的維護(hù)和查詢都有困難。使用本發(fā)明的方法可以顯著地提高硬盤有限的存儲空間所能保存的歷史數(shù)據(jù)的時間長度,方便了歷史數(shù)據(jù)的査詢和維護(hù)。在應(yīng)用本發(fā)明的過程中要先確定采用哪些具體的壓縮方法。理論上可以采用任意多個壓縮方法,實際上沒有必要采用太多種方法。由于本發(fā)明的基本思想之一就是在結(jié)構(gòu)化數(shù)據(jù)序列中,同列(指由結(jié)構(gòu)化數(shù)據(jù)序列劃分成的數(shù)據(jù)矩陣的列)數(shù)據(jù)具有同質(zhì)的特點,利用這個特點進(jìn)行壓縮可以提高壓縮效率。即使只用同一種方法,以列為順序進(jìn)行分組和壓縮,也將比以行為順序進(jìn)行壓縮的效果好。對一個分組采用多種方法進(jìn)行壓縮然后取其最佳者,可能比對一個分組只采用一種方法進(jìn)行壓縮獲得更好的效果。各種壓縮方法都有適用的數(shù)據(jù)類型,都存在壓縮率和壓縮速度之間的平衡問題。對各分組進(jìn)行壓縮的常規(guī)方法可以是一種基本的常規(guī)方法,也可以是多種常規(guī)方法組合變化而成的復(fù)合方法。"不壓縮"也作為一種特別的壓縮方法來對待。為每種將采用的壓縮方法編號,以便存儲結(jié)果時將壓縮方法的編號也存儲起來,在解壓縮時根據(jù)編號使用對應(yīng)的解壓縮方法實現(xiàn)解壓縮處理。這里將以三種具有代表性的壓縮方法,分別對應(yīng)不同種類的數(shù)據(jù),組合成不同的壓縮方法,來說明本發(fā)明的實施方式。由于具體方法可以是任何方法,本文中僅以三種方法來介紹整體上的用法,而不詳細(xì)介紹具體方法的內(nèi)容。一種是差分編碼。是將輸入數(shù)據(jù)前后之間的差值作為輸出數(shù)據(jù)的編碼方式。本發(fā)明的具體差分編碼方法是第一個字節(jié)保持原碼,之后的每個字節(jié)減前一個字節(jié),以其差值的作為編碼的輸出。差分編碼可以將數(shù)值變化頻繁,但數(shù)值變化的幅度很小的數(shù)據(jù)轉(zhuǎn)換成簡單的數(shù)據(jù),便于壓縮。比如原來有數(shù)據(jù)1、2、3、4、5、6、7、8、9,經(jīng)過差分編碼后,得到數(shù)據(jù)1、1、1、1、1、1、K1、1,顯然后者很容易壓縮。一種是RLE方法。其基本思想是用單個字符對nd來表示在輸入流中連續(xù)出現(xiàn)n次的數(shù)據(jù)項d。在本發(fā)明中規(guī)定為*以一個字節(jié)的低7位表示數(shù)量,最高位為0表示后面低7位的數(shù)據(jù)是原碼數(shù)量,此字節(jié)后將是低7指定數(shù)量的原碼;*以一個字節(jié)的低7位表示數(shù)量,最高位為l表示后面低7位的數(shù)據(jù)是重復(fù)數(shù)量,此字節(jié)后的這個字節(jié)重復(fù)低7指定次數(shù);對于變化頻率低的數(shù)據(jù),采用該方法進(jìn)行壓縮,由于數(shù)據(jù)的變化頻率低,所以很多同樣的數(shù)據(jù)可以被高效地壓縮。比如某數(shù)據(jù)序列的數(shù)據(jù)結(jié)構(gòu)中有一個部分是以4字節(jié)的整數(shù)表示的年齡,因為年齡實際用一個字節(jié)就可以表示,另3個字節(jié)總是為0,那么這3個字節(jié)所在的列使用RLE方法進(jìn)行壓縮,其壓縮率將是最高的。一種是LZW方法。LZW方法的基本內(nèi)容是編碼時,首先把字母表中的所有字符初始化到字典中,常見的是用8位字符,先占用字典的前256項;編碼器逐個輸入字符并累積一個字符串,如果當(dāng)前字符串在字典中存在,則將下一個字符添加到當(dāng)前字符串中,并以其為新的當(dāng)前字符串繼續(xù)判斷處理;如果當(dāng)前字符串不在字典中,則輸出當(dāng)前最大匹配串的字典索引,并將當(dāng)前字符串存入字典的下一個可用詞條,將當(dāng)前字符串置為其最后一個字符。解碼時,只要采用與編碼時同樣的方式建立自己的字典,就可以將字典還原,實現(xiàn)解壓。對于變化頻率較高的數(shù)據(jù)使用RLE方法將難以獲得理想的壓縮效果,可以采用LZW方法。下面以一個具體的例子對本發(fā)明的壓縮方法及效果作進(jìn)一步的說明某工業(yè)現(xiàn)場的數(shù)據(jù)需要保存下來,以便之后查詢和分析。以其中一個溫度測點為例子,其數(shù)據(jù)的結(jié)構(gòu)包括為1、狀態(tài),表示測點的狀態(tài),數(shù)據(jù)類型為l字節(jié)的整數(shù);具體意義是0_停止,l一正常運(yùn)行,2..n—其它狀態(tài)2、時間,表示采樣的時間,數(shù)據(jù)類型為4字節(jié)的整數(shù);3、數(shù)值,表示測點的數(shù)值,數(shù)據(jù)類型為4字節(jié)的浮點數(shù);時間的表示方式有很多種,根據(jù)本例子的應(yīng)用特點,采用以秒為單位,以某個時刻為起點進(jìn)行表示。本例中,以2000年1月1日0點0分0秒為起點0,以2000年1月1日0點0分1秒為1,依此類推,4字節(jié)的整數(shù)可表示約136年的范圍。(這實際上是在對各分組進(jìn)行壓縮之前,對時間進(jìn)行量化處理,有利于提高壓縮效率,而一般的以浮點數(shù)表示的時間是比較難壓縮的)設(shè)此溫度測點每隔5秒左右采樣一次,有下列100個采樣記錄<table>tableseeoriginaldocumentpage10</column></row><table><table>tableseeoriginaldocumentpage11</column></row><table><table>tableseeoriginaldocumentpage12</column></row><table><table>tableseeoriginaldocumentpage13</column></row><table>將這些記錄劃分成以字節(jié)為基本單位的100行、9列的數(shù)據(jù)矩陣:(以下每個字節(jié)的數(shù)據(jù)都采用16進(jìn)制的方式表示。)<table>tableseeoriginaldocumentpage13</column></row><table><table>tableseeoriginaldocumentpage14</column></row><table><table>tableseeoriginaldocumentpage15</column></row><table>以上述數(shù)據(jù)矩陣的一列為一個分組,將整個數(shù)據(jù)矩陣劃分為9個分組。采用以下三種方法對各分組進(jìn)行試壓縮,以確定最優(yōu)的壓縮方法并存儲最優(yōu)的壓縮結(jié)果。各種壓縮方法的編號和內(nèi)容如下表<table>tableseeoriginaldocumentpage15</column></row><table>現(xiàn)在嘗試對各分組進(jìn)行壓縮,選擇壓縮率最高的為最優(yōu),其結(jié)果是:第1分組<table>tableseeoriginaldocumentpage15</column></row><table><table>tableseeoriginaldocumentpage16</column></row><table><table>tableseeoriginaldocumentpage17</column></row><table>方法1的結(jié)果最優(yōu),所以取方法1的結(jié)果。第4分組<table>tableseeoriginaldocumentpage17</column></row><table>方法l的結(jié)果最優(yōu),所以取方法l的結(jié)果。第5分組<table>tableseeoriginaldocumentpage17</column></row><table>方法l的結(jié)果最優(yōu),所以取方法l的結(jié)果。第6分組<table>tableseeoriginaldocumentpage17</column></row><table><table>tableseeoriginaldocumentpage18</column></row><table>62CB662CIFOE2C742D45219F29BAAO782530E3C519OE67FA2475OD方法2的結(jié)果最優(yōu),所以取方法2的結(jié)果。第8分組<table>tableseeoriginaldocumentpage19</column></row><table>方法2的結(jié)果最優(yōu),所以取方法2的結(jié)果。第9分組<table>tableseeoriginaldocumentpage19</column></row><table>方法1的結(jié)果最優(yōu),所以取方法1的結(jié)果。從上述各分組的壓縮結(jié)果可以看出一、原來的數(shù)據(jù)總量是900個字節(jié);二、如果全部用方法l來壓縮,則壓縮結(jié)果是392個字節(jié);三、如果全部用方法2來壓縮,則壓縮結(jié)果是357個字節(jié);四、如果各分組選擇最優(yōu)結(jié)果,則壓縮結(jié)果是283個字節(jié);可見,本申請所述的方法具有顯著的效果。存儲結(jié)果時,先存儲結(jié)構(gòu)化數(shù)據(jù)序列的元素個數(shù)、元素的大小,即記錄數(shù)量和記錄大小,等于數(shù)據(jù)矩陣的行數(shù)和列數(shù)。由于是將數(shù)據(jù)矩陣的一列為一個分組,分組的數(shù)量等于數(shù)據(jù)矩陣的列數(shù),即元素的大小,因此,省略分組的數(shù)量。本例中,結(jié)構(gòu)化數(shù)據(jù)序列的元素個數(shù)為100,元素的大小為9。分別用4字節(jié)的整數(shù)表示。然后存儲各分組的壓縮結(jié)果。對于各分組,先存儲該分組的壓縮方法的編號,本例子中用1個字節(jié)表示,再該分組的壓縮數(shù)據(jù)的數(shù)量,本例子中用2個字節(jié)表示,然后存儲該分組的壓縮數(shù)據(jù)。所有分組的原數(shù)據(jù)的數(shù)量等于都前面保存的結(jié)構(gòu)化數(shù)據(jù)序列的元素個數(shù),因此省略分組的原數(shù)據(jù)的數(shù)量。下面是總的結(jié)果(第1行是結(jié)構(gòu)化數(shù)據(jù)序列的元素個數(shù)和元素的大小,之后每個段落是一個分組的壓縮結(jié)果,第1個字節(jié)是分組的壓縮方法的編號,第2、3個字節(jié)是分組的壓縮數(shù)據(jù)的數(shù)量。所有結(jié)果都以16進(jìn)制的字節(jié)表示。)6400000009000000010600A3010100C001022800800814286060600181040D222C3870AlC281OCOF1A648830Al44880D2766C4B831A2C38EOF2D16000106009AB8B3B997BA010200A0C3010200AO03025F0066007C600720DCBA05El28D80B276E5D8570OAAE0D54E0B01900OAEC5278005041A20782EB52805CB0CEDECI6B14C2A50020CE83B814CC2A380C0740410500175F32FB10EEEl8775IF14D8FB60CF83BD14F62808OCC971063B0A368B5E5B000257006600149202608F946B7B5CA5D8A3478AAB3DD748ODBCE6BO19005752B814BA28Dl50140052BA7C3C2825C54152OFB9142CB4874B338COF015C7305E062CB662CIF0E2C742D45219F29BAAO782530E3C519OE67FA2475OD022B002600FC0B00004080.81050D2634F8AFE0418205IB2E44281062C2870B1352CC38Dl2247891A33FEIB083221010200A041以上為具體說明了本發(fā)明的實施方式,由上文可知,在本發(fā)明中,為了對結(jié)構(gòu)化數(shù)據(jù)序列進(jìn)行高效的壓縮,本發(fā)明克服了現(xiàn)有通用壓縮方法應(yīng)用于結(jié)構(gòu)化數(shù)據(jù)序列壓縮時的缺陷。例如各種通用方法往往沒有考慮結(jié)構(gòu)化數(shù)據(jù)的特點,只是將其看作一個整體進(jìn)行壓縮,其實各列(指由結(jié)構(gòu)化數(shù)據(jù)序列劃分成的數(shù)據(jù)矩陣的列)具有不同的性質(zhì),可以使用更適合的方法來達(dá)到更好的壓縮效果;個別方法,針對特定結(jié)構(gòu)的數(shù)據(jù)序列進(jìn)行壓縮,雖然具有良好的效果,但必須事先知道數(shù)據(jù)序列的具體結(jié)構(gòu),并且在實際中,不可能為無限多種結(jié)構(gòu)提供針對性的壓縮方法;還有個別方法可以根據(jù)數(shù)據(jù)庫中表的定義來為各字段選擇針對性的壓縮方法,從而獲得良好的壓縮效果,但對于未知定義的表或其他數(shù)據(jù)序列則不能處理;上述兩種個別方法,對于同一種類型的數(shù)據(jù)往往采用一種特定的壓縮方法,而實際上,即使是同種類型的數(shù)據(jù),也不一定是一種壓縮方法效果最好,根據(jù)實際的數(shù)據(jù)用途和數(shù)值特點,也可以對應(yīng)多種不同的最優(yōu)壓縮方法。綜上所述,現(xiàn)有的方法都存在不同的缺點而無法使結(jié)構(gòu)化數(shù)據(jù)序列的壓縮效果達(dá)到最好。基于該分析,本發(fā)明在實現(xiàn)對結(jié)構(gòu)化數(shù)據(jù)序列進(jìn)行壓縮的過程中,對現(xiàn)有各種壓縮方法進(jìn)行了綜合組織,針對結(jié)構(gòu)化數(shù)據(jù)序列的同列(指由結(jié)構(gòu)化數(shù)據(jù)序列劃分成的數(shù)據(jù)矩陣的列)同質(zhì)的特點,采用自動適應(yīng)的壓縮方法的選擇,使壓縮效果達(dá)到最優(yōu)。在實際應(yīng)用中,還可以用標(biāo)量量化等方法進(jìn)行預(yù)處理,進(jìn)一步提高壓縮效果。對于固定結(jié)構(gòu)的數(shù)據(jù)序列,可采用預(yù)適應(yīng)的做法,即事先通過分析和試驗,確定各分組對應(yīng)的最優(yōu)壓縮方法,以后總以各分組的最優(yōu)方法壓縮各分組,不再進(jìn)行最優(yōu)判斷,這樣可進(jìn)一步提高壓縮速度、降低壓縮消耗。這種預(yù)適應(yīng)的做法,在實際應(yīng)用中,存在可能的非最優(yōu)情況,不過總體接近最優(yōu),相對于速度的提高和資源消耗的降低,這種壓縮效率的降低是可以接受的。到底如何選擇,關(guān)鍵看最終的目標(biāo)是什么。如果不是特別追求壓縮效率,而是對提高壓縮速度、降低資源消耗或者總體的平衡有較高的需求,則可以選擇預(yù)適應(yīng)的做法。以上對本發(fā)明所提供的結(jié)構(gòu)化數(shù)據(jù)序列壓縮方法進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均可有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。權(quán)利要求1、一種結(jié)構(gòu)化數(shù)據(jù)序列的壓縮方法,其特征是首先,將由若干大小相等、數(shù)據(jù)結(jié)構(gòu)相同或類似的元素構(gòu)成的結(jié)構(gòu)化數(shù)據(jù)序列劃分為數(shù)據(jù)矩陣,以該數(shù)據(jù)序列的元素為矩陣的行,元素的個數(shù)就是矩陣的行數(shù),以該數(shù)據(jù)序列的元素的各字節(jié)或各位為矩陣的列,元素的字節(jié)數(shù)或位數(shù)就是矩陣的列數(shù),對此數(shù)據(jù)矩陣以列為順序,按矩陣的一列或若干字節(jié)或若干位劃分成組,每組數(shù)據(jù)稱為一個分組;其次,對所得各分組使用常規(guī)的壓縮方法進(jìn)行壓縮;第三,將上述壓縮結(jié)果進(jìn)行存儲,存儲時先存儲結(jié)構(gòu)化數(shù)據(jù)序列的元素個數(shù)、元素的大小和分組的數(shù)量,再存儲各分組的壓縮結(jié)果,以便于解壓縮。2、根據(jù)權(quán)利要求1所述的結(jié)構(gòu)化數(shù)據(jù)序列的壓縮方法,其特征是所述的常規(guī)壓縮方法包括差分編碼、RLE壓縮方法和LZW壓縮方法及其它現(xiàn)有的壓縮方法和未來新出現(xiàn)的壓縮方法,以及多種方法的組合。3、根據(jù)權(quán)利要求1所述的結(jié)構(gòu)化數(shù)據(jù)序列的壓縮方法,其特征是對各分組分別用已知的壓縮方法進(jìn)行壓縮,并對每種壓縮方法進(jìn)行編號,取壓縮效果最優(yōu)的壓縮方法作為該分組的最終壓縮方法,并對該分組最優(yōu)的壓縮結(jié)果進(jìn)行存儲,存儲時先存儲該壓縮方法的編號、該分組的原數(shù)據(jù)的數(shù)量和該分組的壓縮數(shù)據(jù)的數(shù)量,然后存儲該分組的壓縮數(shù)據(jù)。4、根據(jù)權(quán)利要求1所述的結(jié)構(gòu)化數(shù)據(jù)序列的壓縮方法,其特征是在對各分組進(jìn)行壓縮過程中,將未進(jìn)行壓縮的原數(shù)據(jù)視為一個特別的壓縮方法的壓縮結(jié)果,進(jìn)行比較和存儲。5、根據(jù)權(quán)利要求1所述的結(jié)構(gòu)化數(shù)據(jù)序列的壓縮方法,其特征是對于固定結(jié)構(gòu)的數(shù)據(jù)序列,可事先通過分析和試驗,確定采用固定的方法進(jìn)行分組,并對各分組采用固定的壓縮方法進(jìn)行壓縮。6、根據(jù)權(quán)利要求1所迷的結(jié)構(gòu)化數(shù)據(jù)序列的壓縮方法,其特征是在存儲壓縮結(jié)果時,可根據(jù)情況省略結(jié)構(gòu)化數(shù)據(jù)序列的元素個數(shù)、元素的大小、分組的數(shù)量、分組壓縮方法的編號、分組的原數(shù)據(jù)的數(shù)量、分組的壓縮數(shù)據(jù)的數(shù)量。全文摘要一種結(jié)構(gòu)化數(shù)據(jù)序列的壓縮方法,屬于一種計算機(jī)數(shù)據(jù)壓縮技術(shù),其特征是首先,將由若干大小相等、數(shù)據(jù)結(jié)構(gòu)相同或類似的元素構(gòu)成的結(jié)構(gòu)化數(shù)據(jù)序列劃分為數(shù)據(jù)矩陣,以該數(shù)據(jù)序列的元素為矩陣的行,元素的個數(shù)就是矩陣的行數(shù),以該數(shù)據(jù)序列的元素的各字節(jié)或各位為矩陣的列,元素的字節(jié)數(shù)或位數(shù)就是矩陣的列數(shù),對此數(shù)據(jù)矩陣以列為順序,按矩陣的一列或若干字節(jié)或若干位劃分成組,每組數(shù)據(jù)稱為一個分組;其次,對所得各分組使用常規(guī)的壓縮方法進(jìn)行壓縮;第三,將上述壓縮結(jié)果進(jìn)行存儲,存儲時先存儲結(jié)構(gòu)化數(shù)據(jù)序列的元素個數(shù)、元素的大小和分組的數(shù)量,再存儲各分組的壓縮結(jié)果,以便于解壓縮。本發(fā)明具有良好的自適應(yīng)性、可擴(kuò)展性,壓縮效率高,且無需知道數(shù)據(jù)的具體類型即可進(jìn)行高效率的壓縮。文檔編號G06F17/30GK101241508SQ20081008713公開日2008年8月13日申請日期2008年3月18日優(yōu)先權(quán)日2007年8月1日發(fā)明者立金申請人:立金
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1