时序数据库

在很多对实时性要求极高对应用场景,例如自动驾驶、自动交易、智能家居、实时安全分析等等。这些应用都依赖一种衡量事物随时间的变化的数据形式,这里的时间不只是一个度量标准,而是一个坐标的主坐标轴。

时间序列数据

时序数据的特性:

  • 抵达的数据几乎总是作为新条目被记录
  • 数据通常按照时间顺序抵达
  • 时间是一个主坐标轴(既可以是规则的时间间隔,也可以是不规则的)

时序数据处理要求随着数据抵达实时进行,虽然有些数据需要事后矫正,或者处理延迟数据或无需数据,但是大多数情况下都是针对持续到达数据的持续处理,需要跟踪整个系统的新数据插入,而不是更新原有数据。

时间序列数据之所以如此强大,是因为将系统的每个变化都记录为新的一行,从而可以去 衡量变化 :分析过去的变化,监测现在的变化,以及预测未来将如何变化。

注解

时序数据库使用量排名 DB-Engines Ranking of Time Series DBMSInfluxDB时序数据库 使用最为广泛。但是InfluxDB只提供开源单机版本,集群部署版本需要购买。

OpenTSDB则基于HBase上实现实时监控信息采集和展示,采用HBase进行永久存储,可以实现集群化部署。

采用TSDB的场景

采用时序数据TSDB的主要原因有2个:

  • 规模

时间序列数据累计速度非常快,通常超出常规数据库处理规模。关系型数据库处理大数据集的效果非常糟糕;NoSQ 数据库可以很好地处理规模数据,但是没有针对时序数据优化。

时间序列数据库(可以基于关系型数据库或 NoSQL 数据库)将时间视作一等公民,通过提高效率来处理这种大规模数据,并带来性能的提升,包括:更高的容纳率(Ingest Rates)、更快的大规模查询(尽管有一些比其他数据库支持更多的查询)以及更好的数据压缩。

  • 可用性

TSDB 通常还包括一些共通的对时间序列数据分析的功能和操作:数据保留策略、连续查询、灵活的时间聚合等。提供更好的用户体验,实现基于时间的数据分析。

采用时序数据TSDB的场景:

  • 监控软件系统: 虚拟机、容器、服务、应用
  • 监控物理系统: 设备、机器、接入的设备、环境、我们的房屋、我们的身体
  • 资产跟踪应用: 汽车、卡车、物理容器、运货托盘(Pallets)
  • 金融交易系统: 传统证券、新兴的加密数字货币
  • 事件应用程序: 跟踪用户、客户的交互数据
  • 商业智能工具: 跟踪关键指标和业务的总体健康情况
  • 更多场景

时序数据概念

../_images/tsdb_ad_example.jpg

Figure 1: 时序数据示意图 - 广告点击数据采集

时序数据由两个维度坐标:

  • 横坐标表示时间轴,随着时间的不断流逝,数据也会源源不断地吐出来
  • 纵坐标由两种元素构成,分别是数据源和metric
    • 数据源由一系列的标签(tag,也称为维度)唯一表示,Figure 1中是广告数据源,由 publisher, advertiser, gender 以及 country 四个唯独值唯一表示
    • metric表示待收集的数据源指标,Figure 1采集了impressions, clicks 以及 revenue 三种指标,分别表示广告浏览量、广告点击率以及广告收入。