时序数据库虽然与工控系统的实时数据库功能相似,但由于主要使用对象和用途不同,定义了不少新概念,一般了解工控数据的人并不能简单地就能理解。

时序数据库主要关注了两个产品:InfluxDB和OpenTSDB,前者在评分中领先,设计理念比较先进,后者基于HBase,可以支持海量数据。

时序数据库的主要使用对象是机房运维人员,用途是计算机集群中服务器的监控,采集的是计算机的运行数据,比如Power、CpuUsage等,并且对应有专门软件采集计算机参数,如Telegraf。这些监控项目并不对应传感器,只是服务器运行的参数。

服务器运行参数和传感器数据的共同之处是均为时间序列数据,简称时序数据。

服务器因为都是计算机,所以数据的同质性非常强,主要就是CPU、内存、硬盘等的运行参数。因此,核心对象是参数,而不是计算机。把监控的参数放在管理的首位,给予专有的名词,称为指标(Metric),而服务器是用Tag来标识。Tag可以有多个,比如部署位置等。

在工控系统的实时数据库中,设备种类很多,传感器的种类也很多,相同设备上安装相同传感器的情况不多,因此对传感器的管理比较重视,甚至是核心。传感器每个测点都有一个唯一的标识,称为位号,或称变量名,本文中统称为传感器号。

在时序数据库中,一个传感器号需要用Metric加Tag来唯一表示。对应工控系统,在名为ServerA服务器上,CPU使用率是由一个虚拟传感器测量的值,该虚拟传感器安装在该服务器内部,代码为SA_100。但在时序数据库中,必须定义为Metric=CpuUsage,Tag是Hostname=ServerA。

实时数据库中的每条记录称为测量数据,由传感器号SensorID、时间戳Timestamp、数值Value组成,比如一个压力传感器的编号是HD76_3000_A2,时间戳1536845686,数值为0.258。

时序数据库中的每条数据称为数据点(Data Point),由Metric、Tags、Value、Timestamp

组成。

InfluxDB中Metric对应为Measurement。

实时数据库很少做不同传感器之间数据的运算,如计数、平均值、最大值、最小值、标准差、中位数等。但时序数据库不同,需要按照指标对来自多个传感器的数据进行这些聚合计算。

大数据研究的是整个森林,而不是一颗颗孤立的树木。时序数据库增加Metric和Tag,就是支持按照不同Tag组合进行检索,按相同Metric进行聚合计算,并且从底层支持快速聚合计算。

在大数据项目中,因为时序数据的数据量非常大,因此不能直接放在数据仓库中。最好的处理办法是把时序数据放在时序数据库中,再把聚合计算的结果放在数据仓库中。

实时数据库和时序数据库是互补关系。实时数据库可以作为是时序数据库的数据来源。一个企业如果有多条生产线,可能就有多个实时数据库,每个时序数据库因此对应多个实时数据库。

本文为范煜原创文章。

相关文章