自适应的历史数据压缩方法

文档序号:6349493阅读:417来源:国知局
专利名称:自适应的历史数据压缩方法
技术领域
本发明涉及在实时数据库中历史数据的压缩技术,尤其是一种自适应的历史数据压缩方法。
在实时数据库系统中,历史数据压缩技术的使用在传统意义上是为了用于减少磁盘空间,针对不同的应用,数据压缩有多种方法,实时数据库系统不仅要求能够在有限的硬盘空间中存储大量历史数据,而且还要求这些数据能够快速地被访问。然而在使用压缩技术以后出现的主要问题是,在压缩数据库中处理查询变得很慢,这就需要对数据压缩方法提出了一定的限制要求,要根据过程数据的特点进行数据压缩。对于一个实时数据库来说,由于数据量之巨大,数据档案的管理无疑是其最重要的部分之一,而关键的技术即在于能否高效地存储和访问数据。由于历史数据量大,如果不进行压缩而直接保存需要很大的物理存储介质,因而对历史数据的压缩就成为实时数据库中最重要的技术之一。
本申请人在石化应用软件典型示范工程中的生产信息管理与决策支持系统的研制与开发工作中,开发了一种集实时数据库技术、时态数据库技术为一体的实时数据库系统AGILOR,在此系统中,对历史数据的压缩、归档管理进行了重点研究。
在历史数据压缩技术的研究开发过程中,借鉴了美国OSI公司开发的旋转门压缩算法。在旋转门算法中,压缩偏差参数取定为常数。实验数据表明,针对同样的压缩偏差参数,对一些测试的数据,旋转门算法有较高的压缩比;而对其它一些测试的数据,压缩比要小许多。
通常,任何装置测量数据可分为三个部分,第一部分是相对变化部分,取决于测量参数的物理变化过程,第二部分为常值部分,是绝对的,可根据以往的历史数据进行预测,第三部分是传感器的测量噪声或称为测量误差,取决于传感器的测量精度。在这三部分中,常值部分对旋转门算法无影响,而起影响作用的是其它两部分。通常相对变化部分是连续变化的、有规律的,而测量误差是随机的、不确定的。当传感器测量精度高时,测量误差就小,这时数据压缩率主要取决于数据的相对变化部分。当传感器测量精度低时,测量误差大,且对数据压缩影响很大。当测量误差大到一定程度时,它覆盖了数据的相对变化部分,此时,要描述数据的相对变化部分已变得无意义。
具体而言,旋转门算法存在如下两方面的主要不足1).压缩偏差参数的大小对利用旋转门算法得到的数据压缩率影响比较大;2).对测量误差很敏感,当传感器的测量误差相对比较大时,利用旋转门算法得到的数据压缩率显著减小。
本发明的自适应数据压缩方法包括步骤压缩时间判断对来自历史数据缓冲队列的当前测量值,判断其测量时间是否在相应压缩时间区域内;斜率的计算除了计算当前值斜率外,还计算当前最大斜率和当前最小斜率等;压缩偏差参数的计算对不同时刻的测量数据,根据当前最大/最小斜率,自适应地动态计算压缩偏差参数;斜率上界和下界的计算利用新计算的压缩偏差参数,计算当前值斜率的上界和下界;压缩测试判断(其功能是判断当前值是否在其压缩范围内,以确定被测试点是否需要存储)当前值通过压缩测试,系统将当前值的前一个值存储到历史数据缓冲池,并作为下一轮数据压缩测试的起点和新的上一存储点,否则继续测试下一个新的数据点。
在压缩时间判断步骤中还包括用于对线性型变化趋势的数据进行预处理的数据压缩预处理步骤(其功能是对一些具有典型特征的测量数据进行快速处理,减少相应的压缩处理时间),其中包括对采集灵敏度测试和二阶差分上界测试步骤。
还包括数据平滑处理步骤(其功能是减弱测量噪声对测量数据的影响,提高数据的压缩比),其中采用滤波平滑技术,对测量数据进行平滑处理。
其中当前二阶差分的绝对值表达式为|(τi-1yi-(τi-1+τi)yi-1+τiyi-2)/(τi-12τi)|]]>其中,yi为当前测量值,τi为当前测量值的测量时间与上一测量值的测量时间之差。
滤波平滑技术可采用的数据平滑公式之一为xi=axi-1+byi+(1-a-b)yi-1其中,xi为当前时刻的平滑处理后的结果,xi-1为前一时刻的平滑值,yi为当前时刻的测量数据,yi-1为前一时刻的测量数据,a和b为大于零的加权因子,且满足a+b<1。
数据压缩预处理对线性型变化趋势的数据进行预处理(其作用是省略进一步的压缩步骤,缩短对数据的压缩时间),其中包括对采集灵敏度测试和二阶差分上界测试步骤;数据平滑处理采用滤波平滑等有关技术,对测量数据进行平滑处理;当传感器测量精度比较高时,数据的平滑过程可以省略,以节省压缩时间;斜率的计算除了计算当前值斜率外,还计算当前最大斜率和当前最小斜率等;压缩偏差参数的计算对不同时刻的测量数据,根据当前最大/最小斜率,自适应地动态计算压缩偏差参数;斜率上界和下界的计算利用新计算的压缩偏差参数,计算当前值斜率的上界和下界;压缩测试判断当前值通过压缩测试,系统将当前值的前一个值存储到历史数据缓冲池,并作为下一轮数据压缩测试的起点和新的上一存储点,否则继续测试下一个新的数据点。
图5是由旋转门算法获得的存储点的示意图;图6是由本发明自适应数据压缩方法获得的存储点的示意图。
在压缩时间判断步骤2中,可以包含对线性型变化趋势的数据进行压缩预处理步骤,其中在当前测量值与上一测量值之差的绝对值小于采集灵敏度(事件A),当前二阶差分的绝对值小于差分上界(事件B)时,判断事件A和事件B。当事件A和事件B同时成立时,当前的测量值不存贮,不执行下面的步骤,继续考察下一个测量数据。其中当前二阶差分的绝对值表达式之一是|(τi-1yi-(τi-1+τi)yi-1+τiyi-2)/(τi-12τi)|,]]>其中,yi为当前测量值,τi为当前测量值的测量时间与上一测量值的测量时间之差。
接下来,对经压缩时间判断之后获取的数据进行平滑处理判断步骤3,当测量传感器的测量精度很差时,需要对当前测量值进行数据平滑处理步骤31。数据平滑处理步骤31可以按下面的数据平滑公式进行xi=axi-1+byi+(1-a-b)yi-1其中,xi为当前时刻的平滑处理后的结果,xi-1为前一时刻的平滑值,yi为当前时刻的测量数据,yi-1为前一时刻的测量数据,a和b为大于零的加权因子,且满足a+b<1。数据平滑处理步骤31中也可以采用其它的数据平滑公式。
接下来,对经平滑处理判断步骤3的测量数据执行斜率的计算步骤4,此步骤提供下一步计算压缩偏差参数的必要参数当前值斜率(S)=(当前值-上一个存储点值)/时间差,当S大于当前最大斜率值时,用新值S来代替当前最大斜率,当S小于当前最小斜率值时,用新值S来代替当前最小斜率,这里的时间差是指当前值的测量时间与上一存储点值的测量时间之差。
接下来,对来自斜率的计算步骤4的测量数据执行压缩偏差参数计算步骤5,此步骤根据数据的动态变化情况,计算相应的压缩偏差参数,提供下一步计算需要的自适应变化参数。下面给出一种计算当前压缩偏差参数的指数形式当前压缩偏差参数=α·exp{-β(当前最大斜率-当前最小斜率)×时间差}其中,参数α和β为给定的正数,这里α称为当前压缩偏差参数的上界,β称为当前压缩偏差参数的变化参数,exp(.)为指数函数。α和β的选择可根据以往数据的统计值以及传感器的测量精度来确定。
接下来,利用当前压缩偏差参数,计算当前值斜率的当前下界S1和当前上界S2(步骤6),此步骤为数据压缩所做的测试判断提供临界参数S1=当前值斜率-当前压缩偏差参数/时间差S2=当前值斜率+当前压缩偏差参数/时间差对新算的S1,当大于原有的S1时取新值;对新算的S2,当小于原有的S2时取新值。
接下来,执行压缩测试判断步骤7。其中,当前值斜率S小于更新后的S1(事件C),当前值斜率S大于更新后的S2(事件D),考察事件C和事件D。当事件C和事件D有一发生时,当前值通过压缩测试,系统将当前值的前一个值存储到历史数据缓冲池,并作为下一轮数据压缩测试的起点和新的上一存储点,并对当前最大/最小斜率、S1和S2赋初值;当事件C和事件D都不发生时,继续测试下一个新的数据点。
执行完上述各步骤后,当新值到来时,重复以上过程。
为了更好的对本发明的优势进行描述,下面用已有技术作为对比例子,与本发明的上述实施例进行比较。
为简便起见,在下面的仿真中,未考虑最大压缩时间和最小压缩时间。此外,数据压缩率定义为(M-N)/M,其中M为总的测试数据个数,N为总的存贮数据个数,这样未存贮的(或称为被压缩的)数据总个数是M-N。
在此比较中,参予仿真的点(包括初始点)共1001个(未含噪声,见图2中的实线),在旋转门算法中压缩偏差参数取为0.01;在本发明的自适应数据压缩方法中,压缩偏差参数初始值也取为0.01,计算当前压缩偏差参数的上界和其相应的变化参数分别取为0.05和0.5。通过仿真显示,用旋转门算法来压缩共需要存贮16个点(包括初始点和最后一个点),而用本发明的自适应数据压缩方法来压缩只需要存贮8个点(包括初始点和最后一个点),压缩率得到提高。图2中给出旋转门和本发明的方法的存贮点比较,图中标记为o的点为本发明的存贮点,而标记为*的点则为旋转门算法的存贮点。
在图3和图4中分别给出通过本发明技术和旋转门算法得到的当前值斜率及其斜率变化区域。从图中看出,用旋转门算法来压缩需要将这1001个数据分为15段测试数据集,而本发明只需要分为7段测试数据集。图中的实线为各段中当前值斜率变化曲线,点线为各段斜率的上界变化曲线,点划线为各段斜率的下界变化曲线。仿真结果显示,通过自适应地调整当前压缩偏差参数,动态地放大了各段初始当前值斜率的变化范围,有效地提高了数据的压缩率。
在上面仿真的数据中增加标准差为0.01的正态随机数,这时由旋转门算法得到的数据压缩率只有43.66%,而通过本发明得到的数据压缩率达到96.60%(见图5和图6)。图5中的曲线为由旋转门算法得到的存贮点连线(共564个数据点);而图6中的实线部分是由1001个实际测量值连成,图中标记为o的点为由本发明得到的存贮点(共34个数据点)。明显地,与旋转门相比,本发明的数据压缩率得到很大的提高,并在一定程度上起到了对测量噪声的抑制作用。
权利要求
1.在当前测量时间差太大时,系统将当前值的前一个值存储到历史数据缓冲池,并作为下一轮数据压缩测试的起点和新的上一存储点;斜率的计算除了计算当前值斜率外,还计算当前最大斜率和当前最小斜率等;压缩偏差参数的计算对不同时刻的测量数据,根据当前最大/最小斜率,自适应地动态计算压缩偏差参数;斜率上界和下界的计算利用新计算的压缩偏差参数,计算当前值斜率的上界和下界;压缩测试判断当前值通过压缩测试,系统将当前值的前一个值存储到历史数据缓冲池,并作为下一轮数据压缩测试的起点和新的上一存储点,否则继续测试下一个新的数据点;历史数据缓冲利用历史数据缓冲池对关键的历史数据进行存储。
2.根据权利要求1所述的自适应数据压缩方法,其特征在于在压缩时间判断步骤中还包括用于对线性型变化趋势的数据进行预处理的数据压缩预处理步骤,其中包括对采集灵敏度测试和二阶差分上界测试步骤。
3.根据权利要求1或2所述自适应数据压缩方法,其特征在于还包括数据平滑处理步骤,其中采用滤波平滑技术,对测量数据进行平滑处理。
4.根据权利要求2所述的自适应数据压缩方法,其特征在于所述当前二阶差分的绝对值表达式为|(τi-1yi-(τi-1+τi)yi-1+τiyi-2)/(τi-12τi)|]]>其中,yi为当前测量值,τi为当前测量值的测量时间与上一测量值的测量时间之差。
5.根据权利要求3所述的自适应数据压缩方法,其特征在于所述滤波平滑技术可采用的数据平滑公式为Xi=axi-1+byi+(1-a-b)yi-1其中,xi为当前时刻的平滑处理后的结果,xi-1为前一时刻的平滑值,yi为当前时刻的测量数据,yi-1为前一时刻的测量数据,a和b为大于零的加权因子,且满足a+b<1。
全文摘要
对数据库中的历史数据压缩处理的自适应数据压缩方法,包括步骤压缩时间判断对当前测量值,判断测量时间是否在给定的压缩时间区间内,在当前测量值的时差太小时,不执行后面的步骤,继续考察下一测量数据;在当前测量值的时差太大时,存储当前值的前一值,作为下一轮数据压缩测试的起点和新的上一存储点;斜率的计算计算当前值斜率及当前最大斜率和最小斜率;对不同时刻的测量数据,根据当前最大/最小斜率,自适应地动态计算压缩偏差参数;用新计算的压缩偏差参数,计算当前值斜率的上界和下界;压缩测试判断当前值通过压缩测试,存储当前值的前一个值,作为下一轮数据压缩测试的起点和新的上一存储点,否则继续测试下一个新的数据点。
文档编号G06F17/00GK1459743SQ0212038
公开日2003年12月3日 申请日期2002年5月24日 优先权日2002年5月24日
发明者王宏安, 金宏, 王强, 戴国忠 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1