一种基于属性分组的时序数据压缩方法技术

技术编号:18203575 阅读:56 留言:0更新日期:2018-06-13 06:03
本发明专利技术公开一种基于属性分组的时序数据压缩方法,将每个测点的数据保存到缓冲区,将时序数据序列划分为时间戳、值、质量码序列;记录时间戳序列起始时间,再将具有相同变化周期的时间戳按序分组,记录每组起始时间戳与本缓冲区起始时间的差值、该组的变化周期以及本组时间戳个数;将浮点数分解成“符号‑指数”位和“尾数位”,将具有相同“符号‑指数”位的浮点数按序分组,记录每个分组的“符号‑指数”位、浮点数个数以及“尾数”位序列;将具有相同质量码值的质量码序列按序分组,记录每个分组的值及个数;将分组数据复制到压缩缓冲区,使用zlib算法对该缓冲区进行无损压缩。此种方法具有压缩率高且速度快的特点,能有效节省存储空间使用。

【技术实现步骤摘要】
一种基于属性分组的时序数据压缩方法
本专利技术属于时序数据处理领域,特别涉及一种基于属性分组的时序数据压缩方法。
技术介绍
时序数据处理技术被广泛应用于广域测量系统(WAMS)、变电站监控、调度、直流、稳控等多个系统中,满足其存储海量、高频数据的需求。该技术主要用于存储秒级、毫秒级高频数据,此类型数据一般具有周期性特点,每个存储周期会产生一批数据需要存储,因此数据量极大,对数据的压缩要求较高,不同于传统的关系数据库,时序数据的存储要在满足存储精度要求的同时,尽量提高其压缩率,最大化利用磁盘空间。对于时序数据的存储,由于数据量大,对处理速度和压缩率要求高,传统的时序数据压缩方法种类及其缺陷如下:(1)旋转门压缩该方法在压缩前设置“死区值”和“死区时间”,通过这两个属性实现数据压缩,是一种有损压缩方法,通常会使数据有一定程度的失真,不适用于对数据精度和准确率要求较高的场景。(2)原始数据结合开源压缩算法使用zlib或lz系列压缩算法,直接到原始数据进行压缩,这种方法实现简单,但压缩率不高,没有充分利用时序数据的特点,实现充分压缩。基于传统的时序数据压缩方法存在的缺陷,本案由此产生。
技术实现思路
本专利技术的目的,在于提供一种基于属性分组的时序数据压缩方法,其具有压缩率高且速度快的特点,能有效节省存储空间使用。为了达成上述目的,本专利技术的解决方案是:一种基于属性分组的时序数据压缩方法,包括如下步骤:(1)服务端接收并保存每个测点的数据到缓冲区,将时序数据序列划分为时间戳、值、质量码序列;(2)记录时间戳序列起始时间,再将具有相同变化周期的时间戳按序分组,记录每组起始时间戳与本缓冲区起始时间的差值、该组的变化周期以及本组时间戳个数;(3)将浮点数分解成“符号-指数”位和“尾数位”,将具有相同“符号-指数”位的浮点数按序分组,记录每个分组的“符号-指数”位、浮点数个数以及“尾数”位序列;(4)将具有相同质量码值的质量码序列按序分组,记录每个分组的质量码及质量码个数;(5)将分组数据复制到压缩缓冲区,使用zlib算法对该缓冲区进行无损压缩。上述步骤(1)中,每个缓冲区大小默认设为1024,每条时序数据是一个三元组<时间戳,值,质量码>,为每条数据分配一个缓冲区,当缓冲区满时,将缓冲区中时序数据序列按三个属性划分为时间戳序列、值序列、质量码序列,启动压缩流程。上述步骤(2)中,对于一个长度为m的时间戳序列{t1,t2,…tm},假设分成s个分组,则分组后的序列变成{TΔ1,P1,n1},{TΔ2,P2,n2},{TΔ3,P3,n3}…{TΔs,Ps,ns},其中n1+n2+…ns=m。上述步骤(3)中,一个具有k个不同“符号-指数”位的浮点数序列具有如下形式:{sign1,n1,tail1},{sign2,n2,tail2},…,{signk,nk,tailk},其中,signi是公共“符号-指数”位,taili是尾数位序列,ni是尾数为序列长度,i=1,2,…,k。上述步骤(3)的详细内容是:根据32位单精度浮点数的内存表示,将浮点数拆分成1位符号位、8位指数位、23位尾数位,提取公共的9位“符号-指数”位,将具有相同“符号-指数”位的浮点数按序分组,记录组内“符号-指数”位、“尾数位”序列、尾数位序列长度。上述步骤(4)中,一个有l个分组的质量码序列的形式是:{f1,n1},{f2,n2},{f3,n3},…,{fl,nl},其中,fi是质量码值,ni是该组相同质量码个数,i=1,2,…,l。上述步骤(5)中,压缩缓冲区内存分布如下:{起始时间,时间戳分组,浮点值分组,质量码分组}。采用上述方案后,本专利技术具有以下特点:(1)压缩比明显提高,平均无损压缩比可达10倍,极大地节省存储空间占用;(2)对原始数据的分组大大缩减了需要压缩的数据量,压缩效率高;(3)即使对于周期性规律不明显的时序数据,也有很好的压缩效果。附图说明图1是本专利技术按属性分组示意图;图2是本专利技术时间戳序列分组示意图;图3是本专利技术浮点值序列分组示意图;图4是本专利技术质量码序列分组示意图;图5是本专利技术的流程图。具体实施方式以下将结合附图,对本专利技术的技术方案及有益效果进行详细说明。如图5所示,本专利技术提供一种基于属性分组的时序数据压缩方法,包括如下步骤:(1)服务端接收并保存每个测点的数据到缓冲区,当缓冲区满时,将缓冲区划分为时间戳序列、值序列和质量码序列三个序列,启动压缩流程;(2)记录时间戳序列的起始时间Tstart,顺序扫描时间戳序列,将具有相同变化周期的时间戳归为一组,记录该组的起始时间戳与本缓冲区起始时间Tstart的差TΔ,再记录该组的变化周期P及本组时间戳个数,实现时间戳压缩;对于一个长度为m的时间戳序列{t1,t2,…tm},假设分成s个分组,则分组后的序列变成{TΔ1,P1,n1},{TΔ2,P2,n2},{TΔ3,P3,n3}…{TΔs,Ps,ns},其中,n1+n2+…ns=m;Tstart使用8字节长整形表示,TΔ使用4字节整形表示,P使用2字节整形表示,n使用2字节整形表示。对于具有完全相同变化周期的时间戳序列,分组之后所占用字节数为8+4+2+2=16字节,远少于原始序列字节数8*1024=8192字节。(3)将浮点数序列按照符号位、指数位、小数位进行分解,提取公共的“符号-指数位”,并对尾数进行截断,保留16位尾数,组成尾数序列,实现对浮点数序列的压缩;具体内容是:根据32位单精度浮点数的内存表示,将浮点数拆分成1位符号位、8位指数位、23位尾数位,根据时序数据的特点,在一段连续的时间内,浮点数的符号位和指数位一般不会发生变化,因此提取公共的9位“符号-指数”位,将具有相同“符号-指数”位的浮点数按序分组,记录组内“符号-指数”位、“尾数位”序列、尾数位序列长度。23位尾数位可根据不同的存储精度进行截断:对于精度要求很高,不允许任何精度损失的存储要求,不进行任何截断;而对于可牺牲一定的存储精度换取更高压缩率的要求,通常将尾数位截断成16位甚至更少。一个具有k个不同“符号-指数”位的浮点数序列具有如下形式:{sign1,n1,tail1},{sign2,n2,tail2},…,{signk,nk,tailk},其中signi是公共“符号-指数”位,taili是尾数位序列,ni是尾数为序列长度,i=1,2,…,k。使用2字节整形表示sign,将尾数截断为16位,使用2字节整形表示tail,使用2字节整形表示n。对于具有完全相同“符号-指数”位的浮点值序列,分组后所占字节数为2+2+2*1024=2052,原始占用字节数为4*1024=4096,实现了接近一倍的压缩。(4)按序遍历质量码序列,将具有相同质量码值的质量码序列按序分组,并记录每个分组的质量码及其质量码个数,实现对质量码的压缩;一个有l个分组的质量码序列具有此形式:{f1,n1},{f2,n2},{f3,n3},…,{fl,nl}其中,fi是质量码值,ni是该组相同质量码个数,i=1,2,…,l。使用4字节整形表示f,使用2字节整形表示n,对于具有完全相同质量码的序列,分组后所占字节数为4+2=6,原始占用字节数为4*1024=4096。(5本文档来自技高网...
一种基于属性分组的时序数据压缩方法

【技术保护点】
一种基于属性分组的时序数据压缩方法,其特征在于包括如下步骤:(1)服务端接收并保存每个测点的数据到缓冲区,将时序数据序列划分为时间戳、值、质量码序列;(2)记录时间戳序列起始时间,再将具有相同变化周期的时间戳按序分组,记录每组起始时间戳与本缓冲区起始时间的差值、该组的变化周期以及本组时间戳个数;(3)将浮点数分解成“符号‑指数”位和“尾数位”,将具有相同“符号‑指数”位的浮点数按序分组,记录每个分组的“符号‑指数”位、浮点数个数以及“尾数”位序列;(4)将具有相同质量码值的质量码序列按序分组,记录每个分组的质量码及质量码个数;(5)将分组数据复制到压缩缓冲区,使用zlib算法对该缓冲区进行无损压缩。

【技术特征摘要】
1.一种基于属性分组的时序数据压缩方法,其特征在于包括如下步骤:(1)服务端接收并保存每个测点的数据到缓冲区,将时序数据序列划分为时间戳、值、质量码序列;(2)记录时间戳序列起始时间,再将具有相同变化周期的时间戳按序分组,记录每组起始时间戳与本缓冲区起始时间的差值、该组的变化周期以及本组时间戳个数;(3)将浮点数分解成“符号-指数”位和“尾数位”,将具有相同“符号-指数”位的浮点数按序分组,记录每个分组的“符号-指数”位、浮点数个数以及“尾数”位序列;(4)将具有相同质量码值的质量码序列按序分组,记录每个分组的质量码及质量码个数;(5)将分组数据复制到压缩缓冲区,使用zlib算法对该缓冲区进行无损压缩。2.如权利要求1所述的一种基于属性分组的时序数据压缩方法,其特征在于:所述步骤(1)中,每个缓冲区大小默认设为1024,每条时序数据是一个三元组<时间戳,值,质量码>,为每条数据分配一个缓冲区,当缓冲区满时,将缓冲区中时序数据序列按三个属性划分为时间戳序列、值序列、质量码序列,启动压缩流程。3.如权利要求1所述的一种基于属性分组的时序数据压缩方法,其特征在于:所述步骤(2)中,对于一个长度为m的时间戳序列{t1,t2,…tm},假设分成s个分组,则分组后的序列变成{TΔ1,P1,n1},{TΔ2,P2,n2},{TΔ3,...

【专利技术属性】
技术研发人员:张俊钱峰徐丹
申请(专利权)人:南京南瑞继保电气有限公司南京南瑞继保工程技术有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1