基本概念

时序引擎数据库基本概念如下图:基本概念图

物联网、应用监控、工业互联网等典型的时序场景下,数据源(Data Source,表示数据由谁产生)通常按一定的周期持续产生时序数据,一条时序数据由 Metric、Tags、Timestamp、Fields 等元素共同来描述。

表 1. 时序数据元素说明
元素 描述
度量 (Metric 或 Table) Metric 类似关系型数据库里的表(Table),代表一系列同类时序数据的集合,例如为空气质量传感器建立一个 Table,存储所有传感器的监测数据。
标签 (Tag) Tag 描述数据源的特征,通常不随时间变化,例如传感器设备,包含设备 DeviceId、设备所在的 Region 等 Tag 信息,数据库内部会自动为 Tag 建立索引,支持根据 Tag 来进行多维检索查询;Tag 由 Tag Key、Tag Value 组成,两者均为 String 类型。
时间戳 (Timestamp) Timestamp代表数据产生的时间点,可以写入时指定,也可由系统自动生成。
量测值 (Field) Field描述数据源的量测指标,通常随着时间不断变化,例如传感器设备包含温度、湿度等Field,Field列无需提前创建固定的 Schema,可以在运行过程中动态增减;Field由 Field Key、Field Value 组成,Field Key 为String类型,Field Value支持Boolean、Int、Double、String、Byte等类型。
数据点(Data Point) 数据源在某个时间产生的某个量测指标值(Field Value)称为一个数据点,数据库查询、写入时按数据点数来作为统计指标。
时间线 (Time Series) 数据源的某一个指标随时间变化,形成时间线,Metric + Tags + Field 组合确定一条时间线;针对时序数据的计算包括降采样、聚合(sum、count、max、min等)、插值等都基于时间线维度进行;数据库在存储数据时,会将同一条时间线的数据尽量聚类存储,提升时间线数据访问效率,同时更好的支持时序数据压缩。

时序数据库提供一系列特有的数据访问操作,包括聚合(Aggregation)、降采样(Downsample)、插值(Interpolation)等,同时还提供数据生命周期(数据时效)的管理机制。

表 2. 数据访问操作元素说明
元素 描述
聚合(Aggregation) 对同一时间线、或不同时间线上的数据点进行分组、求和、计数等计算操作。
降采样(Downsample) 查询时间区间跨度较长,且原始数据采样频率较高时,可通过降采样降低数据的查询展现精度,比如按秒采集的数据,查询时按小时级别采样,减少结果集的数据点数。
插值( Interpolation) 时间线中间缺失部分数据点时,可通过插值算法进行数据点自动填充。
数据时效 (TTL) 数据时效是指数据保存有效期,超过有效期的数据会被自动清理,默认数据有效期为永久保存。

场景示例

某风力电厂包含一系列的智能风力发电机设备,创建名为Wind-generators的metric/table来存储所有设备的信息,设备由ID型号厂商等Tag信息描述,每个设备会持续上报功率、风速等Field指标,指标数据通过时序数据库的API实时写入到云端时序数据库。场景示例
上述场景三个设备产生的数据如下图所示:产生数据
时序数据库除了支持高并发的写入吞吐以及高压缩率,还能高效的满足如下类型的查询请求:
  • 查询某条时间线一段时间内的数据点。

    例如:查询ID=7AD45EC的设备,在2020-10-24T00:00:00Z ~ 2020-10-24T00:30:00Z30分钟时间范围内,运行风速指标值。

  • 查询多条时间线一段时间内的数据点,并按5分钟粒度降采样。

    例如:查询ID=7AD45EC的设备,在2020-10-24T00:00:00Z ~ 2020-10-25T00:00:00Z一天时间范围内,功率、风速的指标值明细,按5分钟粒度采样返回数据。

  • 对某条时间线按时间范围做聚合。

    例如:查询ID=7AD45EC的设备,在2020-10-24T00:00:00Z ~ 2020-10-24T00:30:00Z时间范围内,运行功率的平均值。

  • 查询多条时间线的最新点。

    例如:查询ID=7AD45EC的设备,最新的功率风速

  • 按Tag做时间线聚合查询。

    例如:查询厂商=KingWind的设备,在2020-10-24T00:00:00Z的平均风速。