浅谈时序数据库

浅谈时序数据库

1. 概念

时序数据库全称为时间序列数据库,其跟常规的关系数据库SQL相比,最大的区别在于,时序数据库是以时间为索引的规律性时间间隔记录的数据库。如图所示为一个时序数据库的显示形式,其索引为timestamp,后面不同的列记录了在当前时间戳下的属性值。随着时间增长,这种记录会周期性地增加。

浅谈时序数据库_第1张图片

其中metric表示为度量,也就是关系型数据库中的table。data point是数据点,也就是关系型数据库的row,timestamp为产生数据点的时间。而field是度量下会随着时间戳变化的属性值,tag是附加信息,一般是跟时间戳关系不大的属性信息。

同时也需要讨论一下时间序列数据的特点和分类。

  • 时间序列数据按特性分为两类
  1. 高频率低保留期(数据采集,实时展示)
  2. 低频率高保留期(数据展现、分析)
  • 按频度
  1. 规则间隔(数据采集)
  2. 不规则间隔(事件驱动)

时序数据库和关系型数据库的区别在于:

  • 因为是频繁采集的数据,所以时序数据库的数据量非常大,所以时序数据也成为增长最快的数据类型之一
  • 数据随着时间增长,根据维度取值,而数据纬度几乎不变。
  • 持续高并发写入,设备越多,写入数量越大,而且由于定期采样,写入量平稳。但是几乎不会有更新操作(一个设备在某个时间点产生的数据不会变动)以及单独数据点的删除(通常只会删除过期时间范围内所有的数据)。
  • 周期采集数据会使得数据量非常平稳。
  • 因为以时间为标准所以数据记录有很强的时效性,久远的数据使用率会随着时间增加而降低。
  • 和关系型数据库更多的是查询任务不同,时序性数据库更多的是写入任务。所以用了LSM Tree来代替SQL中的B Tree,从而提升了写入性能。

2. 使用场景

我个人是从事过对象为时序数据库的项目的。在我个人看来,时序数据库随着目前大数据时代的进一步发展,使用场景是非常广泛的。以我参与过的一个项目为例,大型商场目前在室内会测量多种参数,包括室内温度,湿度,气压,用电量,光照等等,用以保证商场能够提供给顾客最好的体验,并且能够尽可能地高效利用资源。在这种情况下,各种传感器会在一小时的每十五分钟准时把数据传送回数据库,给后台的工程师用以分析商场内的环境变化,并对商场环境进行相应的调整。这种数据具有很强的时效性,一般一周以后的数据就会很少在用到了。同时也有很强的周期性,季节性,对时序性数据分析很容易发现其每天的规律性,每月以及每个季度的趋势变化。这样可以更好的更有效地去对商场环境进行精确空值。

从上面的例子扩展到其他更多的领域,比如金融分析,工业互联网,环境监控等等,只要是与时间变化有关的项目,比如分析时间变化的规律,特点,以及根据历史数据进行趋势预测,时间序列模型建立训练等等,都会需要大量的时序性数据。而且目前由于以上任务所产生的结果又会十分有利于行业布局,成本计算等其他工作,所以时序分析任务变得越来越重要,也导致时序数据也变得十分重要
时序数据的数据量巨大,以写入数据为主的特点也导致关系型数据库并不能非常有效的来完成存储工作(因为其主要是以查询为主要任务,所以存储效率不高)。所以以Hbase,Cassandra为代表的专业时序数据库可以更好地完成时序数据的任务。

3. 时序数据库的挑战

时序数据库最大的挑战就是如何在海量数据中完成各种任务,可以分为如下几个方面

  • 时序数据读入:因为有时数据的写入频率非常高,达到每秒都会有上万次,如何支持高强度的写入是时序数据库的挑战。
  • 时序数据读取:因为时序数据的高频性质,如何支持高强度的分组聚合运算也是一大挑战。
  • 存储成本问题:因为数据量巨大,需要考虑如何低成本存储数据。
  • 数据库易用性要求:如何设计时序数据库可以让目前的it工作人员可以快速上手。

你可能感兴趣的:(时序数据库)