论文部分内容阅读
随着大数据时代的来临,无数的设备需要采集不同指标的数据,其记录的数据量非常之大。如果将采集到的数据直接存储到传统的关系型数据库中,不仅会消耗大量的存储空间,同时也会降低数据的传输、查询、分析、处理效率。现有的传统数据库系统对于时间序列数据的存储效率不高,因此需要针对时间序列数据的特性,设计专门的时序数据库。目前的时序数据库允许用户创建、更新和销毁各种数据并对其进行一定的图形化展示及分析,但并没有对海量历史数据进行过多操作就直接将其存储到磁盘中。这极大制约了时序数据库的发展,容易引起存储空间消耗过大、磁盘读写过多及系统性能降低等问题。因此,将高效的数据压缩技术引入到时序数据库中,对时序数据库的发展有着尤其重要的意义。基于以上问题,针对时间序列数据的特点,本文提出了一种新型高效的时间序列数据有损压缩算法。该算法可以保证在一定的精度前提下,通过去除数据中的冗余部分、缩短数据编码长度,节省了时间序列数据占用的存储空间,提高数据传输速度。具体工作如下:1)提出了基于差值法的时间戳压缩算法。本文基于差值法对传统的时间戳压缩算法进行了优化。该算法对每个时间戳的差值计算了二次差值,根据设定好的压缩规则对二次差值进行编码,以实现对时间戳的压缩。此外,针对时间序列数据采集过程中普遍存在的时间点遗漏问题,本文提出的压缩算法也可以减少时间戳的存储开销。2)提出了时间序列数据有损压缩算法。在数据存储过程中,浮点数采用的是IEEE规定的编码标准。这会出现两个浮点数值差异很小而编码转换得到的二进制却相差甚远的情况。针对这一问题,本文结合浮点数的组成特性提出了有损压缩算法。首先,对数据进行矢量量化预处理。然后,在可接受的精度损失范围内,将原始数据转成结构相近的二进制编码字节。最后,进行异或操作并对结果中的冗余部分进行编码压缩。该有损压缩算法可以实现时间序列中数据值的高效压缩。最后,通过模拟仿真实验对本文提出的算法进行了验证。实验结果表明,在选取适当的损失因子后,本文提出的有损压缩算法,能够在损失精度与压缩率之间取得较好的平衡,同时数据值的压缩率高达5.274倍,90%以上的时间戳可以用1bit进行存储,平均损失率趋近于0。