time series database------时序数据库一些特殊机制

时序数据库全称为时间序列数据库。时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。

时间序列数据主要由电力行业、化工行业等各类型实时监测、检查与分析设备所采集、产生的数据,这些工业数据的典型特点是:产生频率快(每一个监测点一秒钟内可产生多条数据)、严重依赖于采集时间(每一条数据均要求对应唯一的时间)、测点多信息量大(常规的实时监测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生几十GB的数据量)。

根据时间序列数据的特点,时间序列数据库对于时间序列的处理会有以下一些机制:

存入速度快:由于时序数据产生的频率高数据量大,对于时序数据库的存入性能有很高的要求,一些型的企业系统对于时序数据库的数据插入要求每秒百万级。这对于时序数据库有很高的要求,差不多全部的时序数据库为了实现快速存入,会先将数据大批量的存入内存中,进行数据格式化(包括排序,数据格式转换,压缩等),然后再flush到磁盘。这样会大大提高数据的存入速度,但是也会带来一个很严重的问题,在断电宕机后,未刷入磁盘的数据会丢失。

数据防丢失:为了防止数据丢失这个严重的问题,有一个比较有效的办法,这个办法在关系数据库也是必不可少的一个机制-WAL(Write Ahead Log,预写日志),在时序数据库中应用,对于存入的数据在内存进行格式化之前,先进行无格式的落盘。进行无格式落盘,是为了减少对于时序数据库的性能的影响,尽管如此,WAL对于时序数据库的影响也是特别大的。保证数据完整和性能方面的取舍,更注重于哪方面,就可以决定是否开启WAL。

查询速度快:查询速度快慢最大的因素在于存储格式,大多数的时序数据库采用的数据格式是列存,这是为了在读取数据时能减少磁盘IO,从而提升查询速度。一些优秀的时序数据库,还会采用一些特殊的数据结构和机制来提升查询速度。比如,在github上有一个开源的时序库叫做akumuli,这个数据库的数据存储结构采用了一种特殊的树型数据结构。在树的处理上还有一些特殊的机制来提升查询速度。

数据持久化后占用空间小:由于时序数据的数据量庞大而且规律性特别强。对于时序数据存储使用压缩是避不可免的。每个时序数据库都会根据自己的需要去采用一些压缩算法,支持一种或多种压缩算法。对于压缩算法,我们会有两种要求,压缩率高;解压缩速度快。但是这两个如果要同时达到是不可能的。这些可以根据应用系统的要求,对于采用的压缩算法进行中和。技术日异更新,也产生了一些非常优秀的算法。比如LAZ,LZ4等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值