发明内容
本发明提供一种能在提高压缩率的同时保证数据完整性的基于大数据的时序数据高效压缩方法,以解决现有的问题。
本发明的基于大数据的时序数据高效压缩方法采用如下技术方案:该方法包括:
获取时序数据中各个数值对应的时间戳,并对时间戳进行压缩得到时间戳压缩信息,时间戳压缩信息包括:初始时间戳、时间戳递增量以及时间戳数量;
获取时序数据中数值连续重复出现的次数值,根据时序数据的数值顺序获取去掉
连续重复数值的数值序列
,根据数值序列
获取数值序列
中每个数值所对应的次数值
的第一序列
,将第一序列
中的连续相同的次数值进行过滤得到作为第一压缩信息的第
三序列;
构建数值序列S对应的坐标点序列,并获取所述坐标点序列中两两相邻的坐标点之间的直线方程,对获取的直线方程进行霍夫变换得到霍夫点数列;
根据霍夫点数列获取去掉连续重复霍夫点的霍夫点序列
,
霍夫点序列
中
每个连续重复出现的霍夫点所对应次数值的第二序列
,利用对第一序列
的过滤方法对
第二序列
过滤得到第四序列,将第四序列及霍夫点序列
作为压缩后的第二压缩信息;
将时间戳压缩信息、第一压缩信息、第二压缩信息及时序数据的第一个数值与最后一个数值存储,得到压缩数据。
优选的,对时间戳进行压缩得到时间戳压缩信息的步骤包括:
根据各个时间戳获取初始时间戳、时间戳数量、时间戳递增量;
根据初始时间戳、时间戳数量、时间戳递增量,将各个时间戳压缩为时间戳压缩信息。
优选的,获取时序数据中数值连续重复出现的次数值,根据时序数据的数值顺序
获取去掉连续重复数值的数值序列
,根据数值序列获取数值序列
中每个数值所对应的
次数值的第一序列
的步骤包括:
根据时间戳顺序获取时序数据中各个时间戳对应的数值的原始序列;
根据原始序列中数值排列的顺序过滤掉原始序列中的连续重复的数值得到数值
序列
;
获取原始序列中数值连续重复的次数值,根据次数值和数值序列
得到数值序列
中每个数值所对应的次数值的第一序列
。
优选的,将第一序列
中的连续相同的次数值进行过滤得到作为第一压缩信息的
第三序列步骤包括:
将第一序列
中的连续且相同的次数值中的第一个次数值保留,并将保留的第一
个次数值后与第一个次数值连续且相同的次数值省略得到第三序列,第三序列即为第一压
缩信息,其中,每个省略的次数值与相邻的次数值用“:”分隔开。
优选的,构建数值序列S对应的坐标点序列的步骤包括:
以每个编号作为点坐标的横坐标,每个编号对应的数值作为纵坐标,得到坐标点序列。
优选的,对获取的直线方程进行霍夫变换得到霍夫点数列的步骤包括:
将直线方程转换到霍夫空间中,得到多个霍夫空间中的霍夫点坐标;
根据霍夫点坐标顺序获取霍夫点数列。
优选的,还包括:获取时间戳压缩信息、第一压缩信息、第二压缩信息及第三压缩信息的压缩率;根据压缩率、时间戳压缩信息、第一压缩信息、第二压缩信息及第三压缩信息对时序数据进行解压。
优选的,获取时间戳压缩信息、第一压缩信息、第二压缩信息及第三压缩信息的压缩率的步骤包括:
其中,
表示时间戳数量;
表示第一序列
去除连续相同的次数值之后的次数值
的个数;
表示第四序列中的次数值的个数;
表示霍夫点序列中的霍夫点的个数;
表示数
值序列
中数值的总个数。
优选的,根据压缩率、时间戳压缩信息、第一压缩信息、第二压缩信息及第三压缩信息对时序数据进行解压的步骤包括:
时间戳还原:根据时间戳压缩信息中的初始时间、时间戳递增量及时间戳数量,即可计算得到所有的时间戳;
数值还原:
根据第二压缩信息获取霍夫点的数量,霍夫点的数量对应坐标空间中的直线;
获取相邻两条直线之间的交点,该交点的纵坐标即为时序数据的部分数值,得到交点的纵坐标序列;
根据纵坐标序列及第三压缩信息中的第一个数值、最后一个数值,得到第一解压序列;根据第四序列中的分隔符“:”,对第四序列解压得到第二序列G;
根据第二序列G与第一解压序列将时序数据的数值恢复得到数值序列S;
根据第三序列中分隔符“:”,对第三序列解压得到第一序列N;
根据第一序列N、数值序列S得到时序数据的数值,即完成解压。
本发明的有益效果是:本发明的基于大数据的时序数据高效压缩方法,通过对时
序数据中连续重复数值进行过滤得到数值序列
,并根据时序数据中数值连续重复的次数
值获得数值序列中每个数值对应的重复次数值的第一序列N,然后对第一序列N的连续重复
数值进行过滤,实现对时序数据中数值的第一次压缩,其次通过构建数值序列S对应的坐标
点序列,获取相邻坐标点的直线方程,对直线方程进行霍夫变化得到去除连续重复霍夫点
的霍夫点序列
,根据霍夫点序列
得到霍夫点所对应次数值的第二序列
,然后对第二序
列
压缩得到第四序列,实现对数值序列S中重复数值的再次压缩,本方法对时序数据的数
值进行了两次压缩,且同时对数值所对应的次数值进行压缩,从而提高了压缩率,且保证了
压缩信息的整性,其次,在压缩过程中,本方法将连续重复的数值或者次数值省略并用分隔
符“:”隔开,每个分隔符的仅占一个字节,从而使得极大的提高了时序数据的压缩率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的基于大数据的时序数据高效压缩方法的实施例,该方法包括:
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)计算压
缩率
:
其中,
表示时间戳数量;
表示第一序列
去除连续相同的次数值之后的次数值
的个数;
表示第四序列中的次数值的个数;表示霍夫点序列
中的霍夫点的个数;
表示数
值序列
中数值的总个数,当时序数值变化规律相近的一段时间内数值未变化的情况较多时,
,当时序数值局部多个点多为线性关系时,
。此时
,
对于时序数据的压缩效果较好,较经典的无损压缩行程编码压缩效果提升,利用了有损压
缩的拟合思想,同时保留了压缩精度,使得数据无损。
具体的,本方法还包括对时序数据进行解压的方法,该方法步骤包括:
时间戳还原:根据时间戳压缩信息中的初始时间、时间戳递增量及时间戳数量,即可计算得到所有的时间戳。
数值还原:根据第二压缩信息获取霍夫点的数量,霍夫点的数量对应坐标空间中
的直线;获取相邻两条直线之间的交点,该交点的纵坐标即为时序数据的部分数值,得到交
点的纵坐标序列;根据纵坐标序列及第三压缩信息中的第一个数值、最后一个数值,得到第
一解压序列;根据第四序列中的分隔符“:”,对第四序列解压得到第二序列G;根据第二序列
G与第一解压序列将时序数据的数值恢复得到数值序列S;根据第三序列中分隔符“:”,对第
三序列解压得到第一序列N;根据第一序列N、数值序列S得到时序数据的数值,即完成解压。
具体的,霍夫点序列
为
个霍夫空间中的点,表示
条坐标空间
中直线,相邻两条直线之间存在交点,该交点的纵坐标即为部分数值。获取每两条相邻直线
的交点,得到交点纵坐标序列
,共
个,结合第三压缩信息中的第一
个数值、最后一个数值
,得到第一解压序列
;
为霍夫点重复次数值,以“:”分隔,若“:”之后无数据,则表示此重
复次数值与前一重复次数值一致,根据此特征将霍夫点重复次数值解压,得到霍夫点重复
次数值的第二序列
,根据第一解压序列
、
第二序列
将数值恢复,其中,
表示
与
之间在
所表示的直线上,与纵坐标值
相等的霍夫点有
个,此些点的横
坐标为等差数列,横坐标为1,结合
的横坐标,即可得到
个点的横坐标,带入到
所表示的直线上,即可得到所有纵坐标,纵坐标表示数值序列
中对应的数值,同
理可得到所有去掉重复次数值的数值序列
;第三序列
中
的值为数值重复次数值,相同的次数值省略并以“:”分隔,若“:”之后无数据,则表示此重复
次数值与前一重复次数值一致,根据此特征将数值重复次数值解压,得到数值重复次数值
表示时序数据中的数值
连续重复出现了
次,根据此
特征,将所有重复的数值补充到数值序列
序列中,得到完整的原始序列
,即完成解压。
综上所述,本发明提供基于大数据的时序数据高效压缩方法,通过对时序数据中
连续重复数值进行过滤得到数值序列
,并根据时序数据中数值连续重复的次数值获得数
值序列中每个数值对应的重复次数值的第一序列N,然后对第一序列N的连续重复数值进行
过滤,实现对时序数据中数值的第一次压缩,其次通过构建数值序列S对应的坐标点序列,
获取相邻坐标点的直线方程,对直线方程进行霍夫变化得到去除连续重复霍夫点的霍夫点
序列
,根据霍夫点序列
得到霍夫点所对应次数值的第二序列
,然后对第二序列
压缩
得到第四序列,实现对数值序列S中重复数值的再次压缩,本方法对时序数据的数值进行了
两次压缩,且同时对数值所对应的次数值进行压缩,从而提高了压缩率,且保证了压缩信息
的整性,其次,在压缩过程中,本方法将连续重复的数值或者次数值省略并用分隔符“:”隔
开,每个分隔符的仅占一个字节,从而使得极大的提高了时序数据的压缩率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。