随着近年来物联网(IoT)的快速发展,时间序列数据出现了爆炸式增长。根据过去两年DB-Engines数据库类型的增长趋势,时间序列数据库的增长是巨大的。这些大型开源时间序列数据库的实现是不同的,并且它们都不是完美的。但是,这些数据库的优点可以结合起来实现完美的时间序列数据库。
阿里云表存储是由阿里云开发的分布式NoSQL数据库。Table Store使用多模型设计,包括与BigTable相同的宽列模型和用于消息数据的时间序列模型。在存储模型,数据大小以及写入和查询功能方面,它可以满足时间序列数据场景的需求。但是,作为通用模型数据库,时间序列数据存储应充分利用底层数据库的功能。在模式设计和计算对接中,必须有一个特殊的设计,例如OpenTSDB的HBase和UID编码的RowKey设计。
本文重点介绍时间序列数据的数据模型定义和核心处理流程,以及基于Table Store构建时间序列数据存储的体系结构。我们将首先讨论时间序列数据,然后讨论如何使用Table Store为我们的业务应用程序处理这些数据。
什么是时间序列数据?
时间序列数据主要分为两种类型,用于监控和状态。当前的开源时间序列数据库针对用于监视的时间序列数据,并且针对该场景中的数据特征进行了一些特定的优化。就时间序列数据的特征而言,另一种类型是状态的时间序列数据。两种类型的时间序列数据对应于不同的场景。监控类型对应监控场景,状态类型对应其他场景,如跟踪和异常状态记录。最常见的包跟踪是状态的时间序列数据。
两种类型的数据被分类为时间序列的原因是这些类型在数据模型定义,数据收集,数据存储和计算中是完全一致的,并且可以抽象相同的数据库和相同的技术体系结构。
时间序列数据模型
在定义时间序列数据模型之前,我们首先对时间序列数据进行抽象表示。
- 个人或团体(WHO):描述产生数据的主题,可以是人,监测指标或对象。它通常描述个人具有多维属性,并且可以使用某个唯一ID来定位个人,例如,使用人ID来定位人,以及使用设备ID来定位设备。还可以通过多维属性定位个人,例如,使用群集,机器ID和进程名称来定位进程。
- 时间(WHEN):时间是时间序列数据的最重要特征,是将其与其他数据区分开来的关键属性。
- 位置(地点):在气象学等科学计算领域,位置通常由纬度和经度的二维坐标以及纬度,经度和海拔的三维坐标来定位。
- 状态(WHAT):用于描述特定时刻特定个人的状态。用于监视的时间序列数据通常是数字描述状态,并且跟踪数据是事件表达状态,其中针对不同场景存在不同的表达。
以上是时间序列数据的抽象表示。每个开源时间序列数据库都有自己的时间序列数据模型定义,定义了用于监视的时间序列数据。以OpenTSDB的数据模型为例: