X-bit压缩编码算法的制作方法

文档序号:7522256阅读:944来源:国知局
专利名称:X-bit压缩编码算法的制作方法
技术领域
本发明涉及数据压缩领域,具体为一种X-BIT压缩编码算法。
背景技术
实时数据库广泛应用于电力、电信、钢铁、石油化工、装备制造等领域,主要用于存储工业生产过程中测量点数据(包括点ID、值、时间戳、点状态),负责实时数据(当前测量点值)的读写和历史数据(过去的值)读取,是一种时序数据,它的主要特点是短时间内数据值相差不大。对于历史数据的压缩,一般使用的以字符为依据的通用压缩算法(如ZIP、RAR等)是无法达到理解效果的,有时压缩的结果可能比未压缩前更占空间 大。目前在业内使用最多的两种实时数据压缩算法是PI使用的旋转门压缩算法和EDNA使用的霍夫曼压缩算法。旋转门压缩算法的压缩比高,但它是有损压缩,数据有失真,对于某些高精度的要求无法满足。哈夫曼压缩算法是编码压缩的一种,通过构造哈夫曼树来实现编码和压缩,哈夫曼压缩算法属于无损压缩,但是要想得到较高的压缩率,需要进行一些特殊的处理。以EDNA为例,虽然它通过一些特殊的处理提高了压缩比,但确牺牲了历史数据的检索效率。现有技术还存在以下缺点1、目前使用的按字节压缩(如ZIP、RAR、霍夫曼)主要缺点是压缩率比较低,对二进制数据压缩,压缩率更低。2、有损压缩(旋转门)虽然压缩率比较高,但是数据有一定的失真。

发明内容
本发明所解决的技术问题在于提供一种X-BIT压缩编码算法,以解决实时数据库中,历史数据压缩问题,保证了数据不失真的情况下,提高数据的压缩率,减少磁盘的占用,提高海量数据存储能力。本发明所解决的技术问题采用以下技术方案来实现
X-BIT压缩编码算法,具体压缩过程如下
(1)数据准备并转换数据在经过实时服务处理后,时间戳将转换成以秒为单位的UTC时间,每条记录用13个字节来存储原始数据;
(2)时间差分对存储的原始数据进行时间差分处理;
(3)值排序采用快速排序算法对时间差分处理后的数据进行值排序;
(4)计算序号最大位数计算出最大序号的最小二进制位;
(5)生成序号压缩流根据第(4)步计算出的序号最大位数,将序号写入缓存流中;
(6)生成状态压缩流通过分析状态数据的重复率来决定采用的压缩方案;目前的设置是,当有1/3的状态相同时,采用重复计数法进行压缩;否则,采用按位压缩法;
重复计数法在进行状态数据分析的同时,将生成一张二维表,记录了每一段重复状态的索引位置和重复数,压缩方案标志占I个位,表示后续压缩数据的压缩方案,在解压时会根据该标志来自动选择解压方案;重复次数使用第(4)步中计算的序号最大位数来存储;接下来的3个位存储状态值;
按位压缩法以3位为标准来存储状态值;
(7)生成时差压缩流通过分析时差数据的重复率来决定采用的压缩方案;目前的设置是,当有1/2的时差相同时,采用重复计数法进行压缩;否则,采用按位压缩法;
重复计数法在对时差数据进行分析的同时,将生成一张二维表,记录了每一段重复时差的索引位置和重复数;时间的第一记录值保留原值;
按位压缩法通过标志位将不同数值范围内的数按不同的位数进行存储;
(8)生成差值压缩流通过分析差值数据的重复率来决定采用的压缩方案;目前的设置是,当有1/4的差值相同时,采用重复计数法进行压缩;否则,采用按位压缩法;
重复计数法处理方式与第(7)步中的重复计数法相同;·
按位压缩法先采用倍率转整算法;再通过标志位将不同数值范围内的数按不同的位数进行存储,此时的处理方式与第(7)步中的按位压缩法相同;
(9)组合将之前各个步骤输出的结果组合成一个字节流,即是压缩结果。本发明中,第(7)步中的按位压缩法的具体方法为通过标志位设置四套存储方案,将不同数值范围内的数按不同的位数进行存储,四套存储方案分别是时差< 3时,标志位为00,采用2个二进制位存储;3 <时差< 63时,标志位为01,采用6个二进制位存储;63<时差< 1024时,标志位为10,采用10个二进制位存储;1024 <时差< 4294967295时,标志位为11,采用32个二进制位存储。本发明中,第(8)步中的倍率转整算法的具体方法为据本批数据的实际情况,对数据进行转整;查找差分值中小数位最长的一位,根据最长的小数位设定本组值的倍率。与现有技术相比,本发明的有益效果是1、压缩率高;2、数据无失真;3、解压效率闻。


图I为本发明的程序流程图。图2为原始数据存储结果的示意图。图3为实际数据存储结果的示意图。
具体实施例方式为了使本发明的技术手段、创作特征、工作流程、使用方法达成目的与功效易于明白了解,下面进一步阐述本发明。X-BIT压缩编码算法,具体压缩过程如下
(I)数据准备见表I :
表I
权利要求
1.X-BIT压缩编码算法,其特征是具体压缩过程如下 (1)数据准备并转换数据在经过实时服务处理后,时间戳将转换成以秒为单位的UTC时间,每条记录用13个字节来存储原始数据; (2)时间差分对存储的原始数据进行时间差分处理; (3)值排序采用快速排序算法对时间差分处理后的数据进行值排序; (4)计算序号最大位数计算出最大序号的最小二进制位; (5)生成序号压缩流根据第(4)步计算出的序号最大位数,将序号写入缓存流中; (6)生成状态压缩流通过分析状态数据的重复率来决定采用的压缩方案;目前的设置是,当有1/3的状态相同时,采用重复计数法进行压缩;否则,采用按位压缩法; 重复计数法在进行状态数据分析的同时,将生成一张二维表,记录了每一段重复状态的索引位置和重复数,压缩方案标志占I个位,表示后续压缩数据的压缩方案,在解压时会根据该标志来自动选择解压方案;重复次数使用第(4)步中计算的序号最大位数来存储;接下来的3个位存储状态值; 按位压缩法以3位为标准来存储状态值; (7)生成时差压缩流通过分析时差数据的重复率来决定采用的压缩方案;目前的设置是,当有1/2的时差相同时,采用重复计数法进行压缩;否则,采用按位压缩法; 重复计数法在对时差数据进行分析的同时,将生成一张二维表,记录了每一段重复时差的索引位置和重复数;时间的第一记录值保留原值; 按位压缩法通过标志位将不同数值范围内的数按不同的位数进行存储; (8)生成差值压缩流通过分析差值数据的重复率来决定采用的压缩方案;目前的设置是,当有1/4的差值相同时,采用重复计数法进行压缩;否则,采用按位压缩法; 重复计数法处理方式与第(7)步中的重复计数法相同; 按位压缩法先采用倍率转整算法;再通过标志位将不同数值范围内的数按不同的位数进行存储,此时的处理方式与第(7)步中的按位压缩法相同; (9)组合将之前各个步骤输出的结果组合成一个字节流,即是压缩结果。
2.根据权利要求I所述的X-BIT压缩编码算法,其特征是第(7)步中的按位压缩法的具体方法为通过标志位设置四套存储方案,将不同数值范围内的数按不同的位数进行存储,四套存储方案分别是时差< 3时,标志位为00,采用2个二进制位存储;3 <时差< 63时,标志位为01,采用6个二进制位存储;63 <时差< 1024时,标志位为10,采用10个二进制位存储;1024 <时差< 4294967295时,标志位为11,采用32个二进制位存储。
3.根据权利要求I所述的X-BIT压缩编码算法,其特征是第(8)步中的倍率转整算法的具体方法为据本批数据的实际情况,对数据进行转整;查找差分值中小数位最长的一位,根据最长的小数位设定本组值的倍率。
全文摘要
本发明涉及数据压缩领域,公开了一种X-BIT压缩编码算法,具体压缩过程如下,首先数据准备并转换,然后对数据依次进行时间差分、值排序、计算序号最大位数、生成序号压缩流、生成状态压缩流、生成时差压缩流、生成差值压缩流,最后将之前各个步骤输出的结果组合成一个字节流,即是压缩结果。与现有技术相比,本发明的有益效果是1、压缩率高;2、数据无失真;3、解压效率高。
文档编号H03M7/46GK102904580SQ20121040483
公开日2013年1月30日 申请日期2012年10月23日 优先权日2012年10月23日
发明者刘有志, 唐新华, 罗文理, 李志金, 谌志东, 刘克勤 申请人:湖南大唐先一科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1