时间序列数据的特点

时间序列数据的特点

随着数据通讯成本的急剧下降,以及各种传感技术和智能设备的出现,从手环、共享出行、智能电表、环境监测设备到电梯、数控机床、挖掘机、工业生产线等都在源源不断的产生海量的时间序列数据(或简称时序数据)并发往云端。这些海量数据是社会和企业宝贵的财富,能够帮助企业实时监控业务或设备的运行情况,生成各种维度的报表,而且通过大数据分析和机器学习,对业务进行预测和预警,帮助社会或企业进行科学决策、节约成本并创造新的价值。 但与现在大家所熟悉的数据相比,时间序列数据有其显著不同特点,本文对其特点做一分析。

  • 数据是时序的,一定带有时间戳:联网的设备按照设定的周期,或受外部的事件触发,源源不断的产生数据,每一个数据点是在一时间点产生的,这个时间对于数据的计算和分析十分重要,必须要记录。
  • 数据是结构化的:网络爬虫的数据、微博、微信的海量数据都是非结构化的,可以是文字、图片、视频等。但时间序列数据往往是结构化的,而且是数值型的,比如智能电表采集的电流、电压就可以用 4 字节的标准的浮点数来表示。
  • 数据极少有更新操作:时间序列数据是机器日志数据,一般不容许而且也没有修改的必要。很少有场景,需要对采集的原始数据进行修改。
  • 数据源是唯一的:一个设备采集的数据与另外一个设备采集的数据是完全独立的。一台设备的数据一定是这台设备产生的,不可能是人工或其他设备产生的,也就是说一台设备的数据只有一个生产者,时间序列数据的数据源是唯一的。
  • 相对互联网应用,写多读少:对于互联网应用,一条数据记录,往往是一次写,很多次读。比如一条微博或一篇微信公共号文章,一次写,但有可能上百万人读。但时间序列数据不一样,对于产生的数据,一般是计算、分析程序自动的读,而且计算、分析次数不多,只有分析事故等场景,人才会主动看原始数据。
  • 用户关注的是一段时间的趋势:对于一条银行记录,或者一条微博、微信,对于它的用户而言,每一条都很重要。但对于时间序列数据,每个数据点与数据点的变化并不大,一般是渐变的,大家关心的更多是一段时间,比如过去的五分钟,过去的一个小时数据变化的趋势,一般对某一特定时间点的数据值并不关注。
  • 数据是有保留期限的:采集的数据一般都有基于时长的保留策略,比如仅仅保留一天、一周、一个月、一年甚至更长时间,为节省存储空间,系统最好能自动删除。
  • 数据的查询分析往往是基于时间段和某一组设备的:对于时间序列数据,做计算和分析的时候,一定是指定时间范围的,不会只针对一个时间点或者整个历史进行。而且往往需要根据分析的维度,对设备的一个子集采集的数据进行分析,比如某个地理区域的设备,某个型号、某个批次的设备,某个厂商的设备等。
  • 除存储查询外,往往需要实时分析计算操作:对于大部分互联网大数据应用,更多的是离线分析,即使有实时分析,但实时分析的要求并不高。比如用户画像、可以积累一定的用户行为数据后进行,早一天晚一天画不会怎么影响结果。但是对于物联网应用,对时间序列数据的实时计算要求往往很高,因为需要根据计算结果进行实时报警,以避免事故的发生。
  • 流量平稳、可预测:给定物联网数量、数据采集频次,就可以较为准确地估算出所需要的带宽和流量,每天新生成的数据大小。而不是像电商,在“双 11”期间,淘宝、天猫、京东等流量是几十倍的涨幅。不像 12306 网站,春节期间,网站流量是几十倍的增长。
  • 数据处理的特殊性:与典型的互联网相比,还有不一样的数据处理需求。比如要检查某个具体时间的设备采集的某个量,但传感器实际采集的时间不是这个时间点,这时候往往需要做插值处理。还有很多场景,需要基于采集量,做复杂的数学函数计算。
  • 数据量巨大:以智能电表为例,一台智能电表每隔 15 分钟采集一次数据,每天自动生成 96 条记录,全国就有接近 5 亿台智能电表,每天光智能电表就生成近 500 亿条记录。一台联网的汽车每隔 10 到 15 秒就采集一次数据发到云端,一台车一天就很容易产生 1000 条记录。如果中国 2 亿辆车全部联网,每天将产生 2000 亿条记录。五年之内,物联网设备产生的数据将占世界数据总量的 90% 以上。

物联网、工业互联网的数据是流式数据,像视频流,而且单个数据点的价值很低,甚至丢失一小段时间的数据也不影响分析的结论,也不影响系统的正常运行。但看似简单的事情,由于数据记录条数巨大,导致数据的实时写入成为瓶颈,查询分析极为 缓慢,成为新的技术挑战。传统的关系型数据库、NoSQL 数据库以及流式计算引擎由于没有充分利用时间序列数据的特点,性能提升极为有限,只能依靠集群技术,投入更多的计算资源和存储资源来处理,系统的运营维护成本急剧上升。

面对这一高速增长的物联网数据市场,近几年出现一批专注时间序列数据处理的公司,比如美国的InfluxData,其产品InfluxDB在IT运维监测方面有相当的市场占有率。在工业控制领域老牌实时数据库公司OSIsoft在2017年5月获得软银12亿美元的投资,期望成为新兴的物联网领域的数据库的领头羊。开源社区也十分活跃,比如基于HBase开发的OpenTSDB。中国国内,阿里、百度、华为都有基于OpenTSDB的产品。

TDengine 是一款高性能、分布式、支持 SQL 的时序数据库Time Series DatabaseTSDB),其时序数据库核心代码包括集群功能全部开源,同时 TDengine 还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少研发和运维的复杂度,可广泛应用于物联网、车联网、工业互联网、IT 运维、金融等领域。

更多时序数据库知识点