一种历史数据库的压缩方法技术

技术编号:13841112 阅读:79 留言:0更新日期:2016-10-16 11:21
本发明专利技术公开了一种历史数据库的压缩方法,其特征在于,包括如下步骤:步骤1、将行式数据库转化为列式数据库,具体为:1a)分表;1b)拼装;步骤2、进行分段线性拟合有损压缩;步骤3、整理数据文件;步骤4、进行数据文件的无损压缩并整理索引,组成完整的两级压缩后的列式数据库。针对现有数据库的特点,分两级压缩,先采取分段线性拟合的有损压缩的方式,后采取数字字典的无损压缩方式,将数据压缩并节省所占用的空间,以满足现代综合监控系统对保存的历史数据的时间长度越来越久的要求,并将误差保持在一定的误差精度范围内。

【技术实现步骤摘要】

本专利技术涉及一种历史数据库的压缩方法
技术介绍
现代综合监控系统的数据测点的并发量规模越来越大,数据采集的频率要求越来越高,在很多应用场景需要存储海量并发、高频捕捉的时序数据,每天需要存储的原始数据规模可以达到上百G,故需要对数据进行压缩存储。系统对历史数据的压缩一般采用有损数据压缩算法和无损压缩算法。通用的有损数据压缩算法分为3类:信号变换法、矢量量化法、以及分段线性法。分段线性法实现简单,比较适合历史数据的压缩,主要有:矩形波串法(box car,BC)和向后倾斜(backwardslope,DS)算法、旋转门(swing door trending,SDT)。而通用的无损压缩算法有霍夫曼(Huffman)编码、行程编码和字典编码等压缩算法。目前,综合监控系统的实时数据采集与缓存都是行式的,并且历史数据库的设计也主要是行式数据库,现在一般的历史数据库的设计都含有损压缩和无损压缩两级数据压缩,常见的是旋转门有损压缩+字典编码无损压缩。其存在下述不足:第一、行式数据库的压缩效率不高,越来越难以适应和满足综合监控系统对历史数据库数据压缩存储的需求。第二、旋转门压缩算法作为线性拟合的一种算法,具有效率高、压缩比高、误差可控制的优点。但是该算法结构还是相对有些复杂,代码实现难度比最小二乘法拟合的代码实现难度要小,但是还是有一定难度。
技术实现思路
针对上述问题,本专利技术提供一种历史数据库的压缩方法,针对现有数据库的特点,分两级压缩,先采取分段线性拟合的有损压缩的方式,后采取数字字典的无损压缩方式,将数据压缩并节省所占用的空间,以满足现代综合监控系统对保存的历史数据的时间长度越来越久的要求,并将误差保持在一定的误差精度范围内。为实现上述技术目的,达到上述技术效果,本专利技术通过以下技术方案实现:一种历史数据库的压缩方法,其特征在于,包括如下步骤:步骤1、将行式数据库转化为列式数据库,具体为:1a)分表:将原有包含若干个测点数据的一个数据库表,分成若干个数据库表,其中,每个数据库表中仅含有单个测点的数据,且数据项是按照原有时间顺序排列;1b)拼装:假设分表后获得M行数据,每行数据具有W个字段,则将M行数据按照次序整合为一行,其中,先按照次序存储M行数据的第一个字段,最后按照次序存储M行数据的第W个字段,获得列式数据库;步骤2、进行分段线性拟合有损压缩;步骤3、整理数据文件保持各个列式数据文件的一致性;步骤4、进行数据文件的无损压缩并整理索引,组成完整的两级压缩后的列式数据库。优选,步骤2中,设时间片为Tp,对应的数据片为P1,P2…Pn,数据片的起止两点为P1和Pn,误差上限为δ,则分段线性拟合的过程是采用四点三段或三点两段分割法来分割并拟合P1,P2…Pn组成数据片段PS,具体为:1a)四点三段分割法:将数据片的起止两点P1与Pn连接成线段L后,L左
右两侧的误差最大点分别为Pj,Pk两点,如果Pj和Pk到L的距离误差ΔPj和ΔPk中至少有一个超过误差上限δ,则根据P1,Pj,Pk,Pn四点将数据分割成PS1=P1…Pj,PS2=Pj…Pk,PS3=Pk…Pn三个子数据片段;如果Pj和Pk到L的距离误差均未超过误差上限δ,则线段L为P1…Pn的拟合线段;1b)若所有数据点均在L的一侧,则为三点两段分割法:将数据片的起止两点P1与Pn连接成线段L后,所有数据点均在L的一侧且误差最大点为Pj点,若Pj到L的距离误差ΔPj超过误差上限δ,则根据P1,Pj,Pn三点将数据分割成PS1=P1…Pj,PS2=Pj…Pn两个子数据片段;如果Pj到L的距离误差未超过误差上限δ,则线段L为P1…Pn的拟合线段;2)将分割好的子数据片段PS1,PS2,PS3,按照步骤1a)或1b)的方法递归继续分割并作线段拟合,直至各个子数据片段均完成线段拟合;3)将时间片Tp按上述分割方法分割的各级子数据片段完成的拟合线段按时间顺序拼接成拟合折线,与下一个时间片Tp’用同样方法拟合的折线按照时间顺序拼接,依次类推,实现单测点数据的全时域的分段线性压缩。优选,步骤3中,将经过分段线性拟合压缩的数据按照长字串的形式存入数据库的同一条记录的相应字段中,如果字段的数据类型为整型或浮点型数值类型,则将该字段拆分为对应的基准值、偏移值步长与偏移值文件三个字段,其中:基准值字段设定为原分表中一个初始值或者一个计算平均值的标准值;偏移值步长字段中保存数据的要求的精度并使得计算出的偏移值均为整型;该文件的文件名在字段偏移值文件中保存。本专利技术的有益效果是:本专利技术的两级压缩方法,分段线性拟合压缩是有损压缩,该压缩方法采用分治法的原理,该原理简单易操作,通过递归的形式可以层层分解为子问题便于理解,代码实现起来也更加方便。列式数据压缩,将文件索引与数据文件分离,追求同类数据压缩率的最大化。将数据压缩并节省所占用的空间,以满足现代综合监控系统对保存的历史数据的时间长度越来越久的要求,并将误差保持在一定的误差精度范围内。附图说明图1是本专利技术一种历史数据库的压缩方法的流程图;图2是本专利技术四点三段及判别方法的示意图;图3是本专利技术列式数据库索引表字段的示意图。具体实施方式下面结合附图和具体的实施例对本专利技术技术方案作进一步的详细描述,以使本领域的技术人员可以更好的理解本专利技术并能予以实施,但所举实施例不作为对本专利技术的限定。一种历史数据库的压缩方法,如图1所示,包括如下步骤:步骤1、将行式数据库转化为列式数据库,数据库行转列的方法各有不同,但是基本的思想是将原有的行式数据库看作一个M行N列的表格,将此表格旋转90度做行列的转换,形成一个N行M列的表格。然而,实际转换成适合压缩的列式数据库时,操作上有一些问题,主要问题是分表和一般数据库的列数的限制;1a)分表:将原有包含若干个测点数据的一个数据库表(table),分成若
干个数据库表,其中,每个数据库表中仅含有单个测点的数据,且数据项是按照原有时间顺序排列。可以将单测点的数据分表按照时间间隔再次分表,最后的每一个分表仅包含单个测点的一个确定时间片段的顺序数据,而准确的测点ID与时间片段的信息将在该数据库分表的表名中按固定格式体现。1b)拼装:假设分表后获得M行数据,每行数据具有W个字段,则将M行数据按照次序整合为一行,其中,先按照次序存储M行数据的第一个字段,最后按照次序存储M行数据的第W个字段,获得列式数据库。突破一般数据库列数的限制的方法,分表后的M行数据先按照次序整合拼装到一行,如分表中含有M行和三个字段,这三个字段分别是“时间戳”、“数值”、“数据品质”字段:则先按次序存储M个“时间戳”字段,“时间戳”字段后按次序存储M个“数值”字段,“数值”字段后按次序存储M个“数据品质”等字段内容。将所有数据按次序分别“拼装”到一个长的字串中,以TEXT或者BLOG格式存入一个值字段,而M个长整数也以字串形式。拼装的方式可以是直接拼装的方式完成,也可以通过XML文件“转拼装”方式或其他的方式实现。步骤2、进行分段线性拟合有损压缩。优选,步骤2中,设时间片为Tp,对应的数据片为P1,P2…Pn,数据片的起止两点为P1和Pn,误差上限为δ。时间片(Tp)的选择可以是根据固定时间长度(如若干分钟、若干小时或若干天的数据本文档来自技高网
...

【技术保护点】
一种历史数据库的压缩方法,其特征在于,包括如下步骤:步骤1、将行式数据库转化为列式数据库,具体为:1a)分表:将原有包含若干个测点数据的一个数据库表,分成若干个数据库表,其中,每个数据库表中仅含有单个测点的数据,且数据项是按照原有时间顺序排列;1b)拼装:假设分表后获得M行数据,每行数据具有W个字段,则将M行数据按照次序整合为一行,其中,先按照次序存储M行数据的第一个字段,最后按照次序存储M行数据的第W个字段,获得列式数据库;步骤2、进行分段线性拟合有损压缩;步骤3、整理数据文件保持各个列式数据文件的一致性;步骤4、进行数据文件的无损压缩并整理索引,组成完整的两级压缩后的列式数据库。

【技术特征摘要】
1.一种历史数据库的压缩方法,其特征在于,包括如下步骤:步骤1、将行式数据库转化为列式数据库,具体为:1a)分表:将原有包含若干个测点数据的一个数据库表,分成若干个数据库表,其中,每个数据库表中仅含有单个测点的数据,且数据项是按照原有时间顺序排列;1b)拼装:假设分表后获得M行数据,每行数据具有W个字段,则将M行数据按照次序整合为一行,其中,先按照次序存储M行数据的第一个字段,最后按照次序存储M行数据的第W个字段,获得列式数据库;步骤2、进行分段线性拟合有损压缩;步骤3、整理数据文件保持各个列式数据文件的一致性;步骤4、进行数据文件的无损压缩并整理索引,组成完整的两级压缩后的列式数据库。2.根据权利要求1所述的一种历史数据库的压缩方法,其特征在于,步骤2中,设时间片为Tp,对应的数据片为P1,P2…Pn,数据片的起止两点为P1和Pn,误差上限为δ,则分段线性拟合的过程是采用四点三段或三点两段分割法来分割并拟合P1,P2…Pn组成数据片段PS,具体为:1a)四点三段分割法:将数据片的起止两点P1与Pn连接成线段L后,L左右两侧的误差最大点分别为Pj,Pk两点,如果Pj和Pk到L的距离误差ΔPj和ΔPk中至少有一个超过误差上限δ,则根据P1,Pj,Pk,Pn四点将数据分割成PS1=P1…Pj,PS2=Pj…Pk,PS3=Pk…Pn三个子数据片段;如果Pj和Pk到L的距离误差均未超过误差上限δ,则线段L为P1…Pn的
\t拟合线段;1b)若所有数据点均在L的一侧,则为三点两段分割法:将数据片的起止两点P1与Pn连接成线段L后,所有数据点均在L的一...

【专利技术属性】
技术研发人员:张迎金舒薛亮周金国董胜刚戴宏斌白忠贺杨荣昌
申请(专利权)人:南京国电南自美卓控制系统有限公司
类型:发明
国别省市:江苏;32

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

1