面向工业物联网时代,以 IoTDB 为代表的数据库>时序数据库加速发展。
时序数据的主要产生来源之一是设备与传感器,具有监测点多、采样频率高、存储数据量大等多类不同于其他数据类型的特性,从而导致数据库在实现高通量写入、存储成本、实时查询等多个维度存在管理难点。针对这些特性与难点,专门针对时序数据管理构建的数据库>时序数据库也在逐步成熟。
以 IoTDB 为代表的国产数据库>时序数据库面向工业物联网时代,时序数据的主要应用场景与痛点,正在逐步建立稳定、高效、协同、完善的时序数据管理解决方案,希望打破技术垄断,解决基础软件“卡脖子”难题。
01
时序数据管理的早期方案
数据库>时序数据库的起源可以追溯到 20 世纪 70 年代,随着工业控制和 SCADA 系统的兴起,大量的时序数据产生,于是需要一套完整的存储与处理方案。而 1999 年出现的 RRDtool(Round Robin Database Tool)最早提出了专门面向时序数据存储、处理的方法。
RRDtool 命名中提到的 Round Robin 其实是一种存储数据的方式,使用固定大小的存储空间,并有一个指针指向数据库中最新数据的位置。如果将这个固定的存储空间想象为一个类似时钟的圆盘,上面有很多代表数据存储位置的刻度,指针就可以看做像时针/分针一样,是一条从圆盘中心指向刻度的直线。
就像时钟可以不停转动一样,RRDtool 中的指针也可以一直移动,在存储空间足够的情况下,不存在无法存储新数据的问题;而因为数据存储空间是固定的,当所有的空间都存满了数据,就会覆盖最老的数据。
(2)RRDtool 的创新与不足
从这样的设计就可以看出,RRDtool 的存储方式具有明确的时间属性,所以它适合存储时序数据,它绘制出的图类型也非常契合时序数据的属性,即以时间为横轴,以数值为纵轴的折线演变,强化了时序数据“以时间为第一概念”的数据特性。
同时,因为 RRDtool 的存储空间大小是已经被定义好的,当空间存储满后,它将从指针的开头开始重新存储,数据集不会增大,所以存储空间大小不需维护。
然而,这类数据库也能够很明显的看到它的问题。首先,因为存储空间的手动设定,RRDtool 的存储能力难以扩展,在数据量逐渐增多的情况下,很难覆盖历史数据,实现时序数据的“应存尽存”。其次,RRDtool 的数据读取功能较弱,缺乏针对时间维度的查询优化,处理的数据模型也较为单一,通常是内嵌在监控系统中。最后,RRDtool 仅支持单机模式,未覆盖分布式管理的需求。
02
针对特征,优化性能
(1)从 OpenTSDB 到 InfluxDB
随着大数据的发展,时序数据爆发式增长,已有方案逐渐不能满足需求,在 2010 年之后,出现了第二类产品,首先是以 OpenTSDB 为代表的基于分布式存储的数据库>时序数据库。
这类数据库>时序数据库在继承通用分布式存储的基础上,扩展了时序数据的语义,并针对时序数据的进行了查询、处理等优化。如 OpenTSDB 底层依赖于 HBase 集群存储,根据时序的特征对数据进行压缩,节省存储空间;对时序数据的常用查询进行封装,提供数据聚合、过滤等操作。
而 OpenTSDB 存在的部署复杂和维护成本高等问题,促进了低成本的垂直型数据库>时序数据库的诞生,也就是以 InfluxDB 为首的数据库>时序数据库。
这类数据库>时序数据库的目标场景是互联网的服务监控、运维等场景,拥有更灵活的数据模型,以标签模型对监控项进行管理。相对于 OpenTSDB 需要配置 Java 环境和 HBase 环境,InfluxDB 没有依赖,大大减少了开发与运维成本,易于部署和维护。
同时,Influxdb 针对时序数据特性进行了存储引擎、查询引擎的重新设计,使得读写性能、易用性相比 OpenTSDB 获得了明显提升,如 InfluxDB 的采用类似 LSM Tree 的 TSM Tree存储结构,引入了 series-key 的概念,根据时间特征对数据实现了很好的分类,减少冗余存储,提高数据压缩率。
上面提到的以 InfluxDB 为代表的数据库>时序数据库产品,在监控场景时序数据的多个管理痛点,如读写性能、存储成本、特性查询、部署运维等多个方向均实现了性能突破,并结合云服务、微服务等其他发展趋势,正在进一步拓宽其集成链路与适用场景。
然而,InfluxDB 主要面向云端服务监控,并且重点面向近期几个月的数据。但在时序数据大规模产生的工业物联网场景中,数据往往需要需要管理数年、甚至数十年之久,且需要分布式部署。Influxdb 目前仅单机版开源,难以管理如此大的数据量,且随着存储时长的增加,查询性能会大幅下降。
在工业场景中,时序数据的管理还具有一些行业特点,数据大多是从端侧设备产生出来的,这些数据首先会服务于工厂的应用管理,所以它们会首先传到工厂内部的边缘网关,再传输到中心侧的数据库去支持监控、告警等服务。边缘侧网络资源、环境配置往往有限,此类数据库>时序数据库产品部署的带宽成本较高,对于数据库多终端之间同步传输的运维压力也较大。
03
实现工业物联网场景的“端-边-云”协同
(1)工业物联网场景的端边云协同解决方案
面向工业物联网时代,国产自研的数据库>时序数据库产品也开始发展、成熟,试图打破垄断。以 IoTDB 为代表的新的国产数据库>时序数据库旨在将 OT 和 IT 结合起来,提供完整的工业物联网时序数据解决方案,实现“端-边-云协同”,即需要数据库>时序数据库在端侧、边侧、云侧等不同资源下都能够适配,并且运行良好,可以进行数据管理和分析,同时在数据流转的过程中支持稳定、高效、低运维成本的数据传输方案。
这一类数据库>时序数据库不但可以实现千万级数据写入、高压缩比数据存储、集群部署高可用等性能,同时通过独特的时序数据存储文件格式,实现了数据一次处理,即可端边云共用的新形态。
以 IoTDB 为例,它在发送端可将数据持久化为文件格式,利用边缘端的计算能力,将数据进行深度编码压缩。当文件在端侧形成时,即可将其直接传输到接收端,而无需将原始数据传输。而在接收端,可将收到的文件直接加载至系统中,无需将数据解码和重新写入。
同时,通过“端-边-云”数据模式的自动识别,IoTDB 实现了低流量数据同步方案。因此可使底层数据文件格式贯穿端侧、边侧、云侧,支持可插拔的文件级同步,充分利用边缘计算能力,缓解云侧计算压力,有效节省网络流量、云端计算资源与运维成本。
随着工业 4.0 和数字化时代的到来,结合国家工业升级转型战略的实施,新一代的数据库>时序数据库产品开始深入的帮助工业企业实现深度数字化转型。
目前,以 IoTDB 为代表的该类数据库>时序数据库广泛应用于能源电力、石油化工、钢铁冶炼、航空航天、轨道交通、智能工厂、车联网等国民经济核心产业,支持千万级设备写入、每日过亿条新增数据、TB 级历史数据存储需求,并实现如电力行业中“电厂侧-省域侧-中心侧”、制造行业中“传感器侧-厂站侧-基地侧-集团侧”的“端-边-云”数据同步,构建单平台全生命周期与跨平台端边云协同的时序数据解决方案。
IoTDB 详细介绍参见: