数据压缩算法


EnOS 存储策略支持对数据进行有损压缩后存储。支持的数据压缩算法为死区压缩和旋转门压缩。本文介绍这2种压缩算法的原理。

死区压缩

死区压缩算法的原理如下图所示:

../_images/compression_algorithm_1.png


具体算法说明如下:

  1. 假设数据点1已保存。

  2. 在数据点2到达时,比较数据2和数据点1之间的差值。若数据点2在指定的死区范围内,则丢弃该数据点。

  3. 在数据点3到达时,比较数据3和数据点1之间的差值。若数据点3不在指定的死区范围内,则保存该数据点。

  4. 将数据点3作为新的起始点。在数据点4到达时,比较数据4和数据点3之间的差值。若数据点4在指定的死区范围内,则丢弃该数据点。

旋转门压缩

旋转门压缩算法的原理如下图所示:

../_images/compression_algorithm.png


具体算法说明如下:

  1. 假设数据点1已保存。

  2. 数据点2到达时,需判断是否保存。

  3. 数据点3到达时,在数据点1和数据点3之间形成一条直线,并按照△y上下平移形成两条上下边界。判断数据点2是否在此上下边界内。如果数据点2在边界内,则丢弃该数据点。

  4. 数据点4到达时,在数据点1和数据点4之间重新形成一条直线,并按照△y上下平移形成两条上下边界。判断数据点3是否在此上下边界内。如果数据点3在边界内,则丢弃该数据点。

  5. 数据点5到达时。在数据点1和数据点5之间重新形成一条直线,并按照△y上下平移形成两条上下边界。判断数据点4是否在此上下边界内。如果数据点4不在边界内,则保存该数据点。

  6. 将数据点4作为新的起始点,在数据点4和后续数据点之间形成两条上下边界,判断数据点5是否应被保存。