基于大数据的时序数据高效压缩方法
技术领域
本发明涉及数据压缩技术领域,具体涉及基于大数据的时序数据高效压缩方法。
背景技术
时序数据是指数据根据时间戳升序排列的数据集合。物联网、工业互联网、车联网等智能互联技术在各个行业场景下快速普及应用,导致联网传感器、智能设备数量急剧增加,随之而来的海量时序监控数据存储、处理问题,也为时序数据库高效压缩、存储数据能力提出了更高的要求。
针对时序数据的压缩时,主要分为无损压缩与有损压缩。无损压缩利用数据统计冗余进行压缩,压缩率受统计冗余限制,压缩率不高,有损压缩通常利用拟合的思想,在压缩过程中损失一定的信息来换取高的压缩率,因此,需要基于大数据的时序数据高效压缩方法。
发明内容
本发明提供一种能在提高压缩率的同时保证数据完整性的基于大数据的时序数据高效压缩方法,以解决现有的问题。
本发明的基于大数据的时序数据高效压缩方法采用如下技术方案:该方法包括:
获取时序数据中各个数值对应的时间戳,并对时间戳进行压缩得到时间戳压缩信息,时间戳压缩信息包括:初始时间戳、时间戳递增量以及时间戳数量;
获取时序数据中数值连续重复出现的次数值,根据时序数据的数值顺序获取去掉
连续重复数值的数值序列,根据数值序列获取数值序列中每个数值所对应的次数值的
第一序列,将第一序列中的连续相同的次数值进行过滤得到作为第一压缩信息的第三
序列;
构建数值序列S对应的坐标点序列,并获取所述坐标点序列中两两相邻的坐标点之间的直线方程,对获取的直线方程进行霍夫变换得到霍夫点数列;
根据霍夫点数列获取去掉连续重复霍夫点的霍夫点序列,霍夫点序列中每
个连续重复出现的霍夫点所对应次数值的第二序列,利用对第一序列的过滤方法对第
二序列过滤得到第四序列,将第四序列及霍夫点序列作为压缩后的第二压缩信息;
将时间戳压缩信息、第一压缩信息、第二压缩信息及时序数据的第一个数值与最后一个数值存储,得到压缩数据。
优选的,对时间戳进行压缩得到时间戳压缩信息的步骤包括:
根据各个时间戳获取初始时间戳、时间戳数量、时间戳递增量;
根据初始时间戳、时间戳数量、时间戳递增量,将各个时间戳压缩为时间戳压缩信息。
优选的,获取时序数据中数值连续重复出现的次数值,根据时序数据的数值顺序
获取去掉连续重复数值的数值序列,根据数值序列获取数值序列中每个数值所对应的次
数值的第一序列的步骤包括:
根据时间戳顺序获取时序数据中各个时间戳对应的数值的原始序列;
根据原始序列中数值排列的顺序过滤掉原始序列中的连续重复的数值得到数值
序列;
获取原始序列中数值连续重复的次数值,根据次数值和数值序列得到数值序列
中每个数值所对应的次数值的第一序列。
优选的,将第一序列中的连续相同的次数值进行过滤得到作为第一压缩信息的
第三序列步骤包括:
获取第一序列中连续重复出现的次数值;
将第一序列中的连续且相同的次数值中的第一个次数值保留,并将保留的第一
个次数值后与第一个次数值连续且相同的次数值省略得到第三序列,第三序列即为第一压
缩信息,其中,每个省略的次数值与相邻的次数值用“:”分隔开。
优选的,构建数值序列S对应的坐标点序列的步骤包括:
对数值序列中数值按顺序进行编号;
以每个编号作为点坐标的横坐标,每个编号对应的数值作为纵坐标,得到坐标点序列。
优选的,对获取的直线方程进行霍夫变换得到霍夫点数列的步骤包括:
将直线方程转换到霍夫空间中,得到多个霍夫空间中的霍夫点坐标;
根据霍夫点坐标顺序获取霍夫点数列。
优选的,还包括:获取时间戳压缩信息、第一压缩信息、第二压缩信息及第三压缩信息的压缩率;根据压缩率、时间戳压缩信息、第一压缩信息、第二压缩信息及第三压缩信息对时序数据进行解压。
优选的,获取时间戳压缩信息、第一压缩信息、第二压缩信息及第三压缩信息的压缩率的步骤包括:
根据下式(1)计算压缩率:
(1)
其中,表示时间戳数量;表示第一序列去除连续相同的次数值之后的次数值
的个数;表示第四序列中的次数值的个数;表示霍夫点序列中的霍夫点的个数;表示数
值序列中数值的总个数。
优选的,根据压缩率、时间戳压缩信息、第一压缩信息、第二压缩信息及第三压缩信息对时序数据进行解压的步骤包括:
时间戳还原:根据时间戳压缩信息中的初始时间、时间戳递增量及时间戳数量,即可计算得到所有的时间戳;
数值还原:
根据第二压缩信息获取霍夫点的数量,霍夫点的数量对应坐标空间中的直线;
获取相邻两条直线之间的交点,该交点的纵坐标即为时序数据的部分数值,得到交点的纵坐标序列;
根据纵坐标序列及第三压缩信息中的第一个数值、最后一个数值,得到第一解压序列;根据第四序列中的分隔符“:”,对第四序列解压得到第二序列G;
根据第二序列G与第一解压序列将时序数据的数值恢复得到数值序列S;
根据第三序列中分隔符“:”,对第三序列解压得到第一序列N;
根据第一序列N、数值序列S得到时序数据的数值,即完成解压。
本发明的有益效果是:本发明的基于大数据的时序数据高效压缩方法,通过对时
序数据中连续重复数值进行过滤得到数值序列,并根据时序数据中数值连续重复的次数
值获得数值序列中每个数值对应的重复次数值的第一序列N,然后对第一序列N的连续重复
数值进行过滤,实现对时序数据中数值的第一次压缩,其次通过构建数值序列S对应的坐标
点序列,获取相邻坐标点的直线方程,对直线方程进行霍夫变化得到去除连续重复霍夫点
的霍夫点序列,根据霍夫点序列得到霍夫点所对应次数值的第二序列,然后对第二序
列压缩得到第四序列,实现对数值序列S中重复数值的再次压缩,本方法对时序数据的数
值进行了两次压缩,且同时对数值所对应的次数值进行压缩,从而提高了压缩率,且保证了
压缩信息的整性,其次,在压缩过程中,本方法将连续重复的数值或者次数值省略并用分隔
符“:”隔开,每个分隔符的仅占一个字节,从而使得极大的提高了时序数据的压缩率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的基于大数据的时序数据高效压缩方法的实施例总体步骤的流程图;
图2为实施例中时序数据图;
图3为图2时序数据压缩后的数据图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的基于大数据的时序数据高效压缩方法的实施例,该方法包括:
S1、获取时序数据中各个数值对应的时间戳,并对时间戳进行压缩得到时间戳压
缩信息,时间戳压缩信息包括:初始时间戳、时间戳递增量以及时间戳数量;其中,如图2所
示,表示第个时间戳,表示第个时间戳对应的数值,具体的,由于时序数据
时间戳为稳定递增的,每次递增量一致,根据各个时间戳获取初始时间戳、时间戳数量、时
间戳递增量,时间戳的增量,将初始时间戳记为、时间戳数量记为、时间戳递增
量,则时间戳压缩后的时间戳压缩信息为,并将时间戳压缩信息存储。
S2、由于时序数据的数值具有规律性,且变化稳定,相近的时间内可能存在数值未
变化的情况,因此,获取时序数据中数值连续重复出现的次数值,根据时序数据的数值顺序
获取去掉连续重复数值的数值序列,根据数值序列获取数值序列中每个数值所对应的次
数值的第一序列,将第一序列中的连续相同的次数值进行过滤得到作为第一压缩信息
的第三序列。
具体的,S21、获取时序数据中数值连续重复出现的次数值,根据时序数据的数值
顺序获取去掉连续重复数值的数值序列,根据数值序列获取数值序列中每个数值所对应
的次数值的第一序列的步骤包括:S211、根据时间戳顺序获取时序数据中各个时间戳对应
的数值的原始序列,即如图2所示,时序数据数值的原始序列为,获取时序数据
中原始序列中的数值连续重复出现的次数值,根据数值连续重复出现的次数值能统计得到
时序数值数列,其中为时序数值去掉连续重复的值之后的第一
个数值;为时序数值去掉连续重复的值之后的所有数值个数,表示去掉连续重复的值之
后的第个数值,即最后一个数值;表示连续重复出现了次。S212、则根据时序数值数
列即可得到去掉连续重复数值的数值数列及数值重
复次数值的第一序列;例如,时序数据的数值为,能统计得到一
个时序数值数列,其中表示连续出现次后,连续出现次,接着出现次。
具体的,S22、将第一序列中的连续相同的次数值进行过滤得到作为第一压缩信
息的第三序列步骤包括:具体的,对中的连续相同的次数值进行省略
得到作为第一压缩信息的第三序列,省略的次数值与相邻的次数值之间用“”分隔开,则第
三序列为,其中为压缩后第一个重复次数值;为压缩后第二个数值重复次
数值;表示之后的一个重复次数值与相等,“:”表示分隔符,每两个相邻的分割符之
间为一个省略的次数值;为第个重复次数值。
S3、结合有损拟合局部数据成线性关系的思想,认为去掉连续重复数值的数值数
列中局部数据也存在的线性关系,因此,先构建数值序列S对应的坐标点序列,并获取所述
坐标点序列中两两相邻的坐标点之间的直线方程,对获取的直线方程进行霍夫变换得到霍
夫点数列。
具体的,S31、构建数值序列S对应的坐标点序列的步骤包括:S311、对数值序列中
每个数值按顺序进行编号;S312、以每个编号作为点坐标的横坐标,数值序列
中的数值作为纵坐标,得到坐标点序列,坐标点序列即为。
具体的,S32、对获取的直线方程进行霍夫变换得到霍夫点数列的步骤包括:S321、
根据坐标点序列中相邻两个坐标点确定一条直线,设得到个直线方程,并将个直线
方程转换到霍夫空间中,得到个霍夫空间中的霍夫点坐标;
S322、按照得到的个霍夫空间中霍夫点获取的此些点连续重复出现的次数值,统计得
到霍夫点数列,其中表示去掉连续重复霍夫点之后的霍
夫空间中第个霍夫点;表示霍夫点连续重复出现的次数值;为去掉连续重复霍夫
点之后霍夫空间中霍夫点的个数;为去掉连续重复霍夫点之后霍夫空间中第个霍夫
点;为霍夫点连续重复出现的次数值。
S4、根据霍夫点数列获取去掉连续重复霍夫点的霍夫点序列,霍夫点序列中
每个连续重复出现的霍夫点所对应次数值的第二序列,利用对第一序列的过滤方法对
第二序列过滤得到第四序列,将第四序列及霍夫点序列作为压缩后的第二压缩信息。具
体的,S41、根据霍夫点数据序列得到去掉连续重复点之后霍
夫空间中霍夫点序列以及霍夫点连续重复次数值的第二序列。S42、利用对第一序列的过滤方法对第二序列过滤得到第四序列,将第四
序列及霍夫点序列作为压缩后的第二压缩信息的具体步骤包括:对霍夫点连续重复次数
值的第二序列进行省略,省略的次数值与相邻的次数值之间用“”分隔开,得
到,其中为压缩后第一个霍夫点连续重复的次数值;为压缩后第二
个霍夫点连续重复的次数值;表示之后有一个重复的次数值与相等,所以进行省略;为压缩后第个重复的次数值。
S5、将时间戳压缩信息、第一压缩信息、第二压缩信息及时序数据的第一个数值与
最后一个数值存储,得到压缩数据,具体的,如图3所示,时序数据的最终压缩结果为:时间
戳压缩信息:;第一压缩信息为、第二压缩信息和,第三压缩信息时序数据的第一个数值与最后一个数值。具体的,设时
序数据为行列的数据,本方案中时间戳为长整型,一个时间戳占8个字节,数值为双精度
浮点型,一个数值占8个字节,则原始数据大小为个字节,如图所示,时间戳压缩信息
中,为初始时间戳,占个字节;为时间戳的增量即时间差,时序数据中时间差日、时、分、
秒,相对时间戳较小,占个字节;为数据长度,占个字节。第一压缩信息中的第三序列为数值重复次数值,为整型,占个字节,“:”为英文字符,占一个字节,共
个“:”,则占个字节,其中。第二压缩信息中的霍夫点序列中的、为双精度浮点型,占8个字节,共占个字节,
其中;第二压缩信息中的为整型,占个字节,“:”为英文字符,
占一个字节,共个“:”,则占个字节,其中;第三压缩信息中分别为数值的头部和尾部,共占16个字节,最终得到压缩后的数据大小为。
具体的,本方法还包括对时序数据进行解压的方法:具体的,根据下式(1)计算压
缩率:
(1)
其中,表示时间戳数量;表示第一序列去除连续相同的次数值之后的次数值
的个数;表示第四序列中的次数值的个数;表示霍夫点序列中的霍夫点的个数;表示数
值序列中数值的总个数,当时序数值变化规律相近的一段时间内数值未变化的情况较多
时,,当时序数值局部多个点多为线性关系时,。此时,
对于时序数据的压缩效果较好,较经典的无损压缩行程编码压缩效果提升,利用了有损压
缩的拟合思想,同时保留了压缩精度,使得数据无损。
具体的,本方法还包括对时序数据进行解压的方法,该方法步骤包括:
时间戳还原:根据时间戳压缩信息中的初始时间、时间戳递增量及时间戳数量,即可计算得到所有的时间戳。
数值还原:根据第二压缩信息获取霍夫点的数量,霍夫点的数量对应坐标空间中
的直线;获取相邻两条直线之间的交点,该交点的纵坐标即为时序数据的部分数值,得到交
点的纵坐标序列;根据纵坐标序列及第三压缩信息中的第一个数值、最后一个数值,得到第
一解压序列;根据第四序列中的分隔符“:”,对第四序列解压得到第二序列G;根据第二序列
G与第一解压序列将时序数据的数值恢复得到数值序列S;根据第三序列中分隔符“:”,对第
三序列解压得到第一序列N;根据第一序列N、数值序列S得到时序数据的数值,即完成解压。
具体的,霍夫点序列为个霍夫空间中的点,表示条坐标空间中直线,
相邻两条直线之间存在交点,该交点的纵坐标即为部分数值。获取每两条相邻直线的交点,
得到交点纵坐标序列,共个,结合第三压缩信息中的第一个数值、最后一
个数值,得到第一解压序列;为霍夫点重
复次数值,以“:”分隔,若“:”之后无数据,则表示此重复次数值与前一重复次数值一致,根
据此特征将霍夫点重复次数值解压,得到霍夫点重复次数值的第二序列,根
据第一解压序列、第二序列将
数值恢复,其中,表示与之间在所表示的直线上,与纵坐标值相等的霍夫点
有个,此些点的横坐标为等差数列,横坐标为1,结合的横坐标,即可得到个点的横坐
标,带入到所表示的直线上,即可得到所有纵坐标,纵坐标表示数值序列中对应的
数值,同理可得到所有去掉重复次数值的数值序列;第三序列中
的值为数值重复次数值,相同的次数值省略并以“:”分隔,若“:”之后无数据,则表示此重复
次数值与前一重复次数值一致,根据此特征将数值重复次数值解压,得到数值重复次数值表示时序数据中的数值连续重复出现了次,根据此特征,将
所有重复的数值补充到数值序列序列中,得到完整的原始序列,
即完成解压。
综上所述,本发明提供基于大数据的时序数据高效压缩方法,通过对时序数据中
连续重复数值进行过滤得到数值序列,并根据时序数据中数值连续重复的次数值获得数
值序列中每个数值对应的重复次数值的第一序列N,然后对第一序列N的连续重复数值进行
过滤,实现对时序数据中数值的第一次压缩,其次通过构建数值序列S对应的坐标点序列,
获取相邻坐标点的直线方程,对直线方程进行霍夫变化得到去除连续重复霍夫点的霍夫点
序列,根据霍夫点序列得到霍夫点所对应次数值的第二序列,然后对第二序列压缩得
到第四序列,实现对数值序列S中重复数值的再次压缩,本方法对时序数据的数值进行了两
次压缩,且同时对数值所对应的次数值进行压缩,从而提高了压缩率,且保证了压缩信息的
整性,其次,在压缩过程中,本方法将连续重复的数值或者次数值省略并用分隔符“:”隔开,
每个分隔符的仅占一个字节,从而使得极大的提高了时序数据的压缩率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。