一种对数据库中的数据进行压缩与解压缩的方法

文档序号:7504388阅读:991来源:国知局
专利名称:一种对数据库中的数据进行压缩与解压缩的方法
技术领域
本发明涉及数据的储存技术和通信传输技术,具体地说,是特指数据库中数值型字段的数据进行储存和传输的压缩与解压缩方法,可广泛用于各种数据库系统。
随着计算机科学的发展,计算机对数据库存储量、存储速度的要求越来越高,特别是在科学计算中,有大量的数值型数据需要进行存储和传输。如何针对数据库中的这种特殊数值型字段的数据进行储存和传输的压缩与解压缩方法,以期提高数据库的存储容量、节省备份空间,提高传输效率,人们一直未能提出有效的解决办法,也未在公开出版物上见到有关这方面的专题报道。
本发明的目的意在克服上述现有技术的不足,提出一种能大大节省数据库中数据的存储空间、增大信息存储量的压缩与解压缩方法。
本发明的次一目的是通过这种压缩,提高数据的传输效率。
实现上述目的的技术方案一种对数据库中的数据进行压缩与解压缩的方法,其特征在于压缩方法包括如下步骤a、制作N(N>10)个不相同的字符,b、将数值00到N-1与N个字符建立一一对应关系,c、若数据库中的数据为负数,设置标识符,若数据为正数,标识符为空,d、记录数据库中数据的小数位数M,e、把数据库中数据的绝对值乘以10M成为整数化数据,f、将整数化数据表示成∑Xi*Ni(0≤Xi≤N-1,i为零或整数),得到数值Xi,g、将步骤f中各数值Xi用步骤b中的对应字符代替,得到字符型数据∏Xi(即表示成Xn-1Xn-2…X1X0的形式),h、数据库中的数据记录由标识符、小数位数和字符型数据∏Xi组成;对上述数据库中由标识符、小数位数和字符型数据∏Xi组成的数据记录的解压缩方法包括如下步骤(1)根据上述步骤b建立的N个字符与数值00到N-1之间的一一对应关系,将字符型数据∏Xi表示成N进制数值型数据∑Xi*Ni,其中Xi用对应的数值代替,(2)由步骤(1)得出10进制数值型数据,(3)根据记录中的小数位数M,把10进制数值型数据打上小数点,成为绝对值数据,(4)将标识符放在绝对值数据前面恢复成压缩前的带符号数据。
一种对数据库中的数据进行压缩与解压缩的方法,其特征在于N=100,压缩方法包括如下步骤
a、制作100个不相同的字符,b、将数值从00到99与100个字符建立一一对应关系,c、若数据库中的数据为负数,设置标识符,若数据为正数,标识符为空,d、记录数据库中数据的小数位数M,e、把数据库中数据的绝对值乘以10M成为整数化数据,f、把整数化数据用步骤b中的对应字符来表示,成为字符型数据,g、数据库中的数据记录由标识符、小数位数和字符型数据组成;对上述数据库中的数据记录的解压缩方法包括如下步骤(1)、根据步骤b建立的100个字符与数值从0到99之间的一一对应关系,将字符型数据表示成数值型数据,(2)、根据记录中的小数位数M,把上述数值型数据打上小数点,成为绝对值数据,(3)、将标识符放在绝对值数据前面恢复成压缩前的带符号数据。
采用上述技术方案,本发明突出的技术进步在于1、它的物理意义是将数据字符化,在字符长度相同的情况下,可以表达更多的信息量。如在一个字符的长度上,由十进制数据的10种变化,根据需要可扩展成100个变化甚至于1000个变化,信息量大大增加。2、通过对数据库中数值型字段数据的压缩和解压缩,能够大大节省存储空间、节省备份的空间和时间、节省数据的传输时间,适合于各种数据库系统。例如按照上述方法制作100个不相同的字符,对3位、4位整数数字进行压缩,可以使字符数减少大约一半;对于带有小数点的长度为5的数XX.XX或XXX.X,正常情况下要5位,经过变换后只需2位,字符数只有原来的40%;而对于0.XX的情况,变换后只有一位,压缩到原来的25%。将其用于数据库的存储方面,大大节省了存储空间和备份的空间。将其用于FM调频广播的股票数据传输方面,由于FM调频广播单位时间所传输的信息量有限,成为提高传输速度的瓶颈,数字经过压缩后再进行FM传输,由于有大量带两位小数点的5位数,有希望成倍以上地提高其传输效率,从而大大加强与视频传输的竞争力。3、按照本发明方法编写的程序简单(在无负数或小数位数一定的情况下,程序还可以更简单),所以可以方便地为其它程序和函数随时调用,也可以直接出现在计算式中,可以直接编译到各个数据库的源程序中,使其成为数据库中数值型数据的一种新的记录方式。因此,经过本压缩方法压缩的数据库,不用解压缩就可以进行各种数据库操作。
本发明将惠及各个数据库系统,有着广泛的用途。
下面通过实施例对本发明作进一步详细的说明实施例一种对数据库中的数据进行压缩与解压缩的方法,包括压缩方法和解压缩方法。
压缩方法包括如下步骤a、首先,制作字符串N(N>10),字符串中的每一个字符都不相同,字符串中的所有字符按ASC码从小到大排列好(这样就可以在索引INDEX或排序SORT等操作中直接对字段名进行而不用变换)。字符串一旦选定,就变成了存取数字的密码;b、将数值00到N-1与N个按ASC码从小到大排列好的字符建立一一对应关系;c、判断数据库中的十进制数据正负数,若为负数,设置标识符“-”,若为正数,标识符为空字符串;d、记录上述数据库中数据的小数位数M;e、把数据库中数据的绝对值乘以10M成为整数化数据;f、将整数化数据表示成∑Xi*Ni(0≤Xi≤N-1,i为零或整数),得到数值Xi;g、将步骤f中各数值Xi用步骤b中的对应字符代替,得到字符型数据∏Xi;h、数据库中的数据记录由标识符、小数位数和字符型数据∏Xi组成。
对上述数据库中由标识符、小数位数和字符型数据∏Xi组成的数据记录的解压缩方法包括如下步骤(1)根据上述步骤b建立的N个字符与数值00到N-1之间的一一对应关系,将字符型数据∏Xi表示成N进制数值型数据∑Xi*Ni,其中X1用对应的数值代替;(2)由步骤(1)得出10进制数值型数据;(3)根据记录中的小数位数M,把10进制数值型数据打上小数点,成为绝对值数据;
(4)将标识符放在绝对值数据前面恢复成压缩前的带符号数据。
作为特例,取N=100,对数据库中的数据“-780036.26”进行压缩的方法包括如下步骤a、首先制作100个不相同的字符;b、将数值从00到99与100个字符建立一一对应关系;c、将标识符设置为“-”;d、取M=2;e、将数据780036.26乘以102成为整数化数据78003626;f、根据数值从00到99与100个字符建立的一一对应关系,假定其中00对应A、26对应Z、36对应α、78对应φ,由于78003626=78*1003+00*1002+36*1001+26*1000,因此,整数化数据78003626用对应字符来表示时的字符型数据为φAαZ,压缩后的数据记录由标识符为“-”、小数位数M=2的字符型数据φAαZ组成。
对上述N=100时数据库记录中标识符为“-”、小数位数M=2的字符型数据φAαZ的解压缩方法,包括如下步骤(1)根据预先建立的N个字符与数值从0到N-1之间的一一对应关系,将字符型数据φAαZ表示成数值型数据78003626;(2)根据记录中的小数位数M=2,把10进制数值型数据打上小数点,成为绝对值数据780036.26;d、将标识符“-”放在绝对值数据780036.26前面恢复成压缩前的带符号数据-780036.26。
采用上述压缩与解压缩方法,若用于数据库存储器中,其物理意义在于若不进行压缩,需要10个字节才能存储数据“-780036.26”,经本发明压缩后只需要6个字节就能存储(包括4个字节的字符型数据φAαZ、各1个字节的标识符“-”和小数位数2),节省存储空间40%(压缩比为50%)。若为无符号整数,则节省存储空间50%!不失一般性,根据商业需要,字符数N的设置也可以是100以上、甚至1000,用于进一步增加提高压缩比;字符数N的设置也可以是100以下,此时,压缩比有不同程度的降低。不过,这两种做法虽然能增强保密性,然而其数据缺乏流通性。
权利要求
1.一种对数据库中的数据进行压缩与解压缩的方法,其特征在于压缩方法包括如下步骤a、制作N(N>10)个不相同的字符,b、将数值00到N-1与N个字符建立一一对应关系,c、若数据库中的数据为负数,设置标识符,若数据为正数,标识符为空,d、记录数据库中数据的小数位数M,e、把数据库中数据的绝对值乘以10M成为整数化数据,f、将整数化数据表示成∑Xi*Ni(0≤Xi≤N-1,i为零或整数),得到数值Xi,g、将步骤f中各数值Xi用步骤b中的对应字符代替,得到字符型数据∏Xi,h、数据库中的数据记录由标识符、小数位数和字符型数据∏Xi组成;对上述数据库中由标识符、小数位数和字符型数据∏Xi组成的数据记录的解压缩方法包括如下步骤(1)根据上述步骤b建立的N个字符与数值00到N-1之间的一一对应关系,将字符型数据∏Xi表示成N进制数值型数据∑Xi*Ni,其中X1用对应的数值代替,(2)由步骤(1)得出10进制数值型数据,(3)根据记录中的小数位数M,把10进制数值型数据打上小数点,成为绝对值数据,(4)将标识符放在绝对值数据前恢复成压缩前的带符号数据。
2.根据权利要求1所述一种对数据库中的数据进行压缩与解压缩的方法,其特征在于N=100,压缩方法包括如下步骤a、制作100个不相同的字符,b、将数值从00到99与100个字符建立一一对应关系,c、若数据库中的数据为负数,设置标识符,若数据为正数,标识符为空,d、记录数据库中数据的小数位数M,e、把数据库中数据的绝对值乘以10M成为整数化数据,f、把整数化数据用步骤b中的对应字符来表示,成为字符型数据,g、数据库中的数据记录由标识符、小数位数和字符型数据组成;对上述数据库中的数据记录的解压缩方法包括如下步骤(1)、根据步骤b建立的100个字符与数值从0到99之间的一一对应关系,将字符型数据表示成数值型数据,(2)、根据记录中的小数位数M,把上述数值型数据打上小数点,成为绝对值数据,(3)、将标识符放在绝对值数据前恢复成压缩前的带符号数据。
全文摘要
本发明提出一种对数据库中的数据进行压缩与解压缩的方法,它是针对数据库中的数值型字段在储存或传输之前,通过制作N(N>10)个不相同的字符串并与数值从00到N-1建立一一对应关系,将数字变成字符,然后在读取或接收时进行反变换,还原成原来的数字。由于结构简单,可以直接编译到各个数据库的源程序中,经过本压缩方法压缩的数据库,不用解压缩就可以进行各种数据库操作。采用本发明能大大节省数据库中数据的存储空间、增大信息存储量。
文档编号H03M7/30GK1317882SQ01111579
公开日2001年10月17日 申请日期2001年3月22日 优先权日2001年3月22日
发明者谭伟祥 申请人:谭伟祥
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1