專(zhuān)利名稱(chēng):一種對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行壓縮與解壓縮的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)的儲(chǔ)存技術(shù)和通信傳輸技術(shù),具體地說(shuō),是特指數(shù)據(jù)庫(kù)中數(shù)值型字段的數(shù)據(jù)進(jìn)行儲(chǔ)存和傳輸?shù)膲嚎s與解壓縮方法,可廣泛用于各種數(shù)據(jù)庫(kù)系統(tǒng)。
隨著計(jì)算機(jī)科學(xué)的發(fā)展,計(jì)算機(jī)對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)量、存儲(chǔ)速度的要求越來(lái)越高,特別是在科學(xué)計(jì)算中,有大量的數(shù)值型數(shù)據(jù)需要進(jìn)行存儲(chǔ)和傳輸。如何針對(duì)數(shù)據(jù)庫(kù)中的這種特殊數(shù)值型字段的數(shù)據(jù)進(jìn)行儲(chǔ)存和傳輸?shù)膲嚎s與解壓縮方法,以期提高數(shù)據(jù)庫(kù)的存儲(chǔ)容量、節(jié)省備份空間,提高傳輸效率,人們一直未能提出有效的解決辦法,也未在公開(kāi)出版物上見(jiàn)到有關(guān)這方面的專(zhuān)題報(bào)道。
本發(fā)明的目的意在克服上述現(xiàn)有技術(shù)的不足,提出一種能大大節(jié)省數(shù)據(jù)庫(kù)中數(shù)據(jù)的存儲(chǔ)空間、增大信息存儲(chǔ)量的壓縮與解壓縮方法。
本發(fā)明的次一目的是通過(guò)這種壓縮,提高數(shù)據(jù)的傳輸效率。
實(shí)現(xiàn)上述目的的技術(shù)方案一種對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行壓縮與解壓縮的方法,其特征在于壓縮方法包括如下步驟a、制作N(N>10)個(gè)不相同的字符,b、將數(shù)值00到N-1與N個(gè)字符建立一一對(duì)應(yīng)關(guān)系,c、若數(shù)據(jù)庫(kù)中的數(shù)據(jù)為負(fù)數(shù),設(shè)置標(biāo)識(shí)符,若數(shù)據(jù)為正數(shù),標(biāo)識(shí)符為空,d、記錄數(shù)據(jù)庫(kù)中數(shù)據(jù)的小數(shù)位數(shù)M,e、把數(shù)據(jù)庫(kù)中數(shù)據(jù)的絕對(duì)值乘以10M成為整數(shù)化數(shù)據(jù),f、將整數(shù)化數(shù)據(jù)表示成∑Xi*Ni(0≤Xi≤N-1,i為零或整數(shù)),得到數(shù)值Xi,g、將步驟f中各數(shù)值Xi用步驟b中的對(duì)應(yīng)字符代替,得到字符型數(shù)據(jù)∏Xi(即表示成Xn-1Xn-2…X1X0的形式),h、數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄由標(biāo)識(shí)符、小數(shù)位數(shù)和字符型數(shù)據(jù)∏Xi組成;對(duì)上述數(shù)據(jù)庫(kù)中由標(biāo)識(shí)符、小數(shù)位數(shù)和字符型數(shù)據(jù)∏Xi組成的數(shù)據(jù)記錄的解壓縮方法包括如下步驟(1)根據(jù)上述步驟b建立的N個(gè)字符與數(shù)值00到N-1之間的一一對(duì)應(yīng)關(guān)系,將字符型數(shù)據(jù)∏Xi表示成N進(jìn)制數(shù)值型數(shù)據(jù)∑Xi*Ni,其中Xi用對(duì)應(yīng)的數(shù)值代替,(2)由步驟(1)得出10進(jìn)制數(shù)值型數(shù)據(jù),(3)根據(jù)記錄中的小數(shù)位數(shù)M,把10進(jìn)制數(shù)值型數(shù)據(jù)打上小數(shù)點(diǎn),成為絕對(duì)值數(shù)據(jù),(4)將標(biāo)識(shí)符放在絕對(duì)值數(shù)據(jù)前面恢復(fù)成壓縮前的帶符號(hào)數(shù)據(jù)。
一種對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行壓縮與解壓縮的方法,其特征在于N=100,壓縮方法包括如下步驟
a、制作100個(gè)不相同的字符,b、將數(shù)值從00到99與100個(gè)字符建立一一對(duì)應(yīng)關(guān)系,c、若數(shù)據(jù)庫(kù)中的數(shù)據(jù)為負(fù)數(shù),設(shè)置標(biāo)識(shí)符,若數(shù)據(jù)為正數(shù),標(biāo)識(shí)符為空,d、記錄數(shù)據(jù)庫(kù)中數(shù)據(jù)的小數(shù)位數(shù)M,e、把數(shù)據(jù)庫(kù)中數(shù)據(jù)的絕對(duì)值乘以10M成為整數(shù)化數(shù)據(jù),f、把整數(shù)化數(shù)據(jù)用步驟b中的對(duì)應(yīng)字符來(lái)表示,成為字符型數(shù)據(jù),g、數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄由標(biāo)識(shí)符、小數(shù)位數(shù)和字符型數(shù)據(jù)組成;對(duì)上述數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄的解壓縮方法包括如下步驟(1)、根據(jù)步驟b建立的100個(gè)字符與數(shù)值從0到99之間的一一對(duì)應(yīng)關(guān)系,將字符型數(shù)據(jù)表示成數(shù)值型數(shù)據(jù),(2)、根據(jù)記錄中的小數(shù)位數(shù)M,把上述數(shù)值型數(shù)據(jù)打上小數(shù)點(diǎn),成為絕對(duì)值數(shù)據(jù),(3)、將標(biāo)識(shí)符放在絕對(duì)值數(shù)據(jù)前面恢復(fù)成壓縮前的帶符號(hào)數(shù)據(jù)。
采用上述技術(shù)方案,本發(fā)明突出的技術(shù)進(jìn)步在于1、它的物理意義是將數(shù)據(jù)字符化,在字符長(zhǎng)度相同的情況下,可以表達(dá)更多的信息量。如在一個(gè)字符的長(zhǎng)度上,由十進(jìn)制數(shù)據(jù)的10種變化,根據(jù)需要可擴(kuò)展成100個(gè)變化甚至于1000個(gè)變化,信息量大大增加。2、通過(guò)對(duì)數(shù)據(jù)庫(kù)中數(shù)值型字段數(shù)據(jù)的壓縮和解壓縮,能夠大大節(jié)省存儲(chǔ)空間、節(jié)省備份的空間和時(shí)間、節(jié)省數(shù)據(jù)的傳輸時(shí)間,適合于各種數(shù)據(jù)庫(kù)系統(tǒng)。例如按照上述方法制作100個(gè)不相同的字符,對(duì)3位、4位整數(shù)數(shù)字進(jìn)行壓縮,可以使字符數(shù)減少大約一半;對(duì)于帶有小數(shù)點(diǎn)的長(zhǎng)度為5的數(shù)XX.XX或XXX.X,正常情況下要5位,經(jīng)過(guò)變換后只需2位,字符數(shù)只有原來(lái)的40%;而對(duì)于0.XX的情況,變換后只有一位,壓縮到原來(lái)的25%。將其用于數(shù)據(jù)庫(kù)的存儲(chǔ)方面,大大節(jié)省了存儲(chǔ)空間和備份的空間。將其用于FM調(diào)頻廣播的股票數(shù)據(jù)傳輸方面,由于FM調(diào)頻廣播單位時(shí)間所傳輸?shù)男畔⒘坑邢?,成為提高傳輸速度的瓶頸,數(shù)字經(jīng)過(guò)壓縮后再進(jìn)行FM傳輸,由于有大量帶兩位小數(shù)點(diǎn)的5位數(shù),有希望成倍以上地提高其傳輸效率,從而大大加強(qiáng)與視頻傳輸?shù)母?jìng)爭(zhēng)力。3、按照本發(fā)明方法編寫(xiě)的程序簡(jiǎn)單(在無(wú)負(fù)數(shù)或小數(shù)位數(shù)一定的情況下,程序還可以更簡(jiǎn)單),所以可以方便地為其它程序和函數(shù)隨時(shí)調(diào)用,也可以直接出現(xiàn)在計(jì)算式中,可以直接編譯到各個(gè)數(shù)據(jù)庫(kù)的源程序中,使其成為數(shù)據(jù)庫(kù)中數(shù)值型數(shù)據(jù)的一種新的記錄方式。因此,經(jīng)過(guò)本壓縮方法壓縮的數(shù)據(jù)庫(kù),不用解壓縮就可以進(jìn)行各種數(shù)據(jù)庫(kù)操作。
本發(fā)明將惠及各個(gè)數(shù)據(jù)庫(kù)系統(tǒng),有著廣泛的用途。
下面通過(guò)實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明實(shí)施例一種對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行壓縮與解壓縮的方法,包括壓縮方法和解壓縮方法。
壓縮方法包括如下步驟a、首先,制作字符串N(N>10),字符串中的每一個(gè)字符都不相同,字符串中的所有字符按ASC碼從小到大排列好(這樣就可以在索引INDEX或排序SORT等操作中直接對(duì)字段名進(jìn)行而不用變換)。字符串一旦選定,就變成了存取數(shù)字的密碼;b、將數(shù)值00到N-1與N個(gè)按ASC碼從小到大排列好的字符建立一一對(duì)應(yīng)關(guān)系;c、判斷數(shù)據(jù)庫(kù)中的十進(jìn)制數(shù)據(jù)正負(fù)數(shù),若為負(fù)數(shù),設(shè)置標(biāo)識(shí)符“-”,若為正數(shù),標(biāo)識(shí)符為空字符串;d、記錄上述數(shù)據(jù)庫(kù)中數(shù)據(jù)的小數(shù)位數(shù)M;e、把數(shù)據(jù)庫(kù)中數(shù)據(jù)的絕對(duì)值乘以10M成為整數(shù)化數(shù)據(jù);f、將整數(shù)化數(shù)據(jù)表示成∑Xi*Ni(0≤Xi≤N-1,i為零或整數(shù)),得到數(shù)值Xi;g、將步驟f中各數(shù)值Xi用步驟b中的對(duì)應(yīng)字符代替,得到字符型數(shù)據(jù)∏Xi;h、數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄由標(biāo)識(shí)符、小數(shù)位數(shù)和字符型數(shù)據(jù)∏Xi組成。
對(duì)上述數(shù)據(jù)庫(kù)中由標(biāo)識(shí)符、小數(shù)位數(shù)和字符型數(shù)據(jù)∏Xi組成的數(shù)據(jù)記錄的解壓縮方法包括如下步驟(1)根據(jù)上述步驟b建立的N個(gè)字符與數(shù)值00到N-1之間的一一對(duì)應(yīng)關(guān)系,將字符型數(shù)據(jù)∏Xi表示成N進(jìn)制數(shù)值型數(shù)據(jù)∑Xi*Ni,其中X1用對(duì)應(yīng)的數(shù)值代替;(2)由步驟(1)得出10進(jìn)制數(shù)值型數(shù)據(jù);(3)根據(jù)記錄中的小數(shù)位數(shù)M,把10進(jìn)制數(shù)值型數(shù)據(jù)打上小數(shù)點(diǎn),成為絕對(duì)值數(shù)據(jù);
(4)將標(biāo)識(shí)符放在絕對(duì)值數(shù)據(jù)前面恢復(fù)成壓縮前的帶符號(hào)數(shù)據(jù)。
作為特例,取N=100,對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)“-780036.26”進(jìn)行壓縮的方法包括如下步驟a、首先制作100個(gè)不相同的字符;b、將數(shù)值從00到99與100個(gè)字符建立一一對(duì)應(yīng)關(guān)系;c、將標(biāo)識(shí)符設(shè)置為“-”;d、取M=2;e、將數(shù)據(jù)780036.26乘以102成為整數(shù)化數(shù)據(jù)78003626;f、根據(jù)數(shù)值從00到99與100個(gè)字符建立的一一對(duì)應(yīng)關(guān)系,假定其中00對(duì)應(yīng)A、26對(duì)應(yīng)Z、36對(duì)應(yīng)α、78對(duì)應(yīng)φ,由于78003626=78*1003+00*1002+36*1001+26*1000,因此,整數(shù)化數(shù)據(jù)78003626用對(duì)應(yīng)字符來(lái)表示時(shí)的字符型數(shù)據(jù)為φAαZ,壓縮后的數(shù)據(jù)記錄由標(biāo)識(shí)符為“-”、小數(shù)位數(shù)M=2的字符型數(shù)據(jù)φAαZ組成。
對(duì)上述N=100時(shí)數(shù)據(jù)庫(kù)記錄中標(biāo)識(shí)符為“-”、小數(shù)位數(shù)M=2的字符型數(shù)據(jù)φAαZ的解壓縮方法,包括如下步驟(1)根據(jù)預(yù)先建立的N個(gè)字符與數(shù)值從0到N-1之間的一一對(duì)應(yīng)關(guān)系,將字符型數(shù)據(jù)φAαZ表示成數(shù)值型數(shù)據(jù)78003626;(2)根據(jù)記錄中的小數(shù)位數(shù)M=2,把10進(jìn)制數(shù)值型數(shù)據(jù)打上小數(shù)點(diǎn),成為絕對(duì)值數(shù)據(jù)780036.26;d、將標(biāo)識(shí)符“-”放在絕對(duì)值數(shù)據(jù)780036.26前面恢復(fù)成壓縮前的帶符號(hào)數(shù)據(jù)-780036.26。
采用上述壓縮與解壓縮方法,若用于數(shù)據(jù)庫(kù)存儲(chǔ)器中,其物理意義在于若不進(jìn)行壓縮,需要10個(gè)字節(jié)才能存儲(chǔ)數(shù)據(jù)“-780036.26”,經(jīng)本發(fā)明壓縮后只需要6個(gè)字節(jié)就能存儲(chǔ)(包括4個(gè)字節(jié)的字符型數(shù)據(jù)φAαZ、各1個(gè)字節(jié)的標(biāo)識(shí)符“-”和小數(shù)位數(shù)2),節(jié)省存儲(chǔ)空間40%(壓縮比為50%)。若為無(wú)符號(hào)整數(shù),則節(jié)省存儲(chǔ)空間50%!不失一般性,根據(jù)商業(yè)需要,字符數(shù)N的設(shè)置也可以是100以上、甚至1000,用于進(jìn)一步增加提高壓縮比;字符數(shù)N的設(shè)置也可以是100以下,此時(shí),壓縮比有不同程度的降低。不過(guò),這兩種做法雖然能增強(qiáng)保密性,然而其數(shù)據(jù)缺乏流通性。
權(quán)利要求
1.一種對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行壓縮與解壓縮的方法,其特征在于壓縮方法包括如下步驟a、制作N(N>10)個(gè)不相同的字符,b、將數(shù)值00到N-1與N個(gè)字符建立一一對(duì)應(yīng)關(guān)系,c、若數(shù)據(jù)庫(kù)中的數(shù)據(jù)為負(fù)數(shù),設(shè)置標(biāo)識(shí)符,若數(shù)據(jù)為正數(shù),標(biāo)識(shí)符為空,d、記錄數(shù)據(jù)庫(kù)中數(shù)據(jù)的小數(shù)位數(shù)M,e、把數(shù)據(jù)庫(kù)中數(shù)據(jù)的絕對(duì)值乘以10M成為整數(shù)化數(shù)據(jù),f、將整數(shù)化數(shù)據(jù)表示成∑Xi*Ni(0≤Xi≤N-1,i為零或整數(shù)),得到數(shù)值Xi,g、將步驟f中各數(shù)值Xi用步驟b中的對(duì)應(yīng)字符代替,得到字符型數(shù)據(jù)∏Xi,h、數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄由標(biāo)識(shí)符、小數(shù)位數(shù)和字符型數(shù)據(jù)∏Xi組成;對(duì)上述數(shù)據(jù)庫(kù)中由標(biāo)識(shí)符、小數(shù)位數(shù)和字符型數(shù)據(jù)∏Xi組成的數(shù)據(jù)記錄的解壓縮方法包括如下步驟(1)根據(jù)上述步驟b建立的N個(gè)字符與數(shù)值00到N-1之間的一一對(duì)應(yīng)關(guān)系,將字符型數(shù)據(jù)∏Xi表示成N進(jìn)制數(shù)值型數(shù)據(jù)∑Xi*Ni,其中X1用對(duì)應(yīng)的數(shù)值代替,(2)由步驟(1)得出10進(jìn)制數(shù)值型數(shù)據(jù),(3)根據(jù)記錄中的小數(shù)位數(shù)M,把10進(jìn)制數(shù)值型數(shù)據(jù)打上小數(shù)點(diǎn),成為絕對(duì)值數(shù)據(jù),(4)將標(biāo)識(shí)符放在絕對(duì)值數(shù)據(jù)前恢復(fù)成壓縮前的帶符號(hào)數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述一種對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行壓縮與解壓縮的方法,其特征在于N=100,壓縮方法包括如下步驟a、制作100個(gè)不相同的字符,b、將數(shù)值從00到99與100個(gè)字符建立一一對(duì)應(yīng)關(guān)系,c、若數(shù)據(jù)庫(kù)中的數(shù)據(jù)為負(fù)數(shù),設(shè)置標(biāo)識(shí)符,若數(shù)據(jù)為正數(shù),標(biāo)識(shí)符為空,d、記錄數(shù)據(jù)庫(kù)中數(shù)據(jù)的小數(shù)位數(shù)M,e、把數(shù)據(jù)庫(kù)中數(shù)據(jù)的絕對(duì)值乘以10M成為整數(shù)化數(shù)據(jù),f、把整數(shù)化數(shù)據(jù)用步驟b中的對(duì)應(yīng)字符來(lái)表示,成為字符型數(shù)據(jù),g、數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄由標(biāo)識(shí)符、小數(shù)位數(shù)和字符型數(shù)據(jù)組成;對(duì)上述數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄的解壓縮方法包括如下步驟(1)、根據(jù)步驟b建立的100個(gè)字符與數(shù)值從0到99之間的一一對(duì)應(yīng)關(guān)系,將字符型數(shù)據(jù)表示成數(shù)值型數(shù)據(jù),(2)、根據(jù)記錄中的小數(shù)位數(shù)M,把上述數(shù)值型數(shù)據(jù)打上小數(shù)點(diǎn),成為絕對(duì)值數(shù)據(jù),(3)、將標(biāo)識(shí)符放在絕對(duì)值數(shù)據(jù)前恢復(fù)成壓縮前的帶符號(hào)數(shù)據(jù)。
全文摘要
本發(fā)明提出一種對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行壓縮與解壓縮的方法,它是針對(duì)數(shù)據(jù)庫(kù)中的數(shù)值型字段在儲(chǔ)存或傳輸之前,通過(guò)制作N(N>10)個(gè)不相同的字符串并與數(shù)值從00到N-1建立一一對(duì)應(yīng)關(guān)系,將數(shù)字變成字符,然后在讀取或接收時(shí)進(jìn)行反變換,還原成原來(lái)的數(shù)字。由于結(jié)構(gòu)簡(jiǎn)單,可以直接編譯到各個(gè)數(shù)據(jù)庫(kù)的源程序中,經(jīng)過(guò)本壓縮方法壓縮的數(shù)據(jù)庫(kù),不用解壓縮就可以進(jìn)行各種數(shù)據(jù)庫(kù)操作。采用本發(fā)明能大大節(jié)省數(shù)據(jù)庫(kù)中數(shù)據(jù)的存儲(chǔ)空間、增大信息存儲(chǔ)量。
文檔編號(hào)H03M7/30GK1317882SQ01111579
公開(kāi)日2001年10月17日 申請(qǐng)日期2001年3月22日 優(yōu)先權(quán)日2001年3月22日
發(fā)明者譚偉祥 申請(qǐng)人:譚偉祥