从IoTDB的发展回顾时序数据库演进史

时序数据的主要产生来源之一是设备与传感器,具有监测点多、采样频率高、存储数据量大等多类不同于其他数据类型的特性,从而导致数据库在实现高通量写入、存储成本、实时查询等多个维度存在管理难点。针对这些特性与难点,专门针对时序数据管理构建的时序数据库也在逐步成熟。

IoTDB 为代表的国产时序数据库面向工业物联网时代,时序数据的主要应用场景与痛点,正在逐步建立稳定、高效、协同、完善的时序数据管理解决方案,希望打破技术垄断,解决基础软件“卡脖子”难题。

时序数据管理的早期方案

(1)最早的“时序数据库”:RRDtool

时序数据库的起源可以追溯到 20 世纪 70 年代,随着工业控制和 SCADA 系统的兴起,大量的时序数据产生,于是需要一套完整的存储与处理方案。而 1999 年出现的 RRDtool(Round Robin Database Tool)最早提出了专门面向时序数据存储、处理的方法。

RRDtool 命名中提到的 Round Robin 其实是一种存储数据的方式,使用固定大小的存储空间,并有一个指针指向数据库中最新数据的位置。如果将这个固定的存储空间想象为一个类似时钟的圆盘,上面有很多代表数据存储位置的刻度,指针就可以看做像时针/分针一样,是一条从圆盘中心指向刻度的直线。

就像时钟可以不停转动一样,RRDtool 中的指针也可以一直移动,在存储空间足够的情况下,不存在无法存储新数据的问题;而因为数据存储空间是固定的,当所有的空间都存满了数据,就会覆盖最老的数据。

(2)RRDtool 的创新与不足

从这样的设计就可以看出,RRDtool 的存储方式具有明确的时间属性,所以它适合存储时序数据,它绘制出的图类型也非常契合时序数据的属性,即以时间为横轴,以数值为纵轴的折线演变,强化了时序数据“以时间为第一概念”的数据特性。

同时,因为 RRDtool 的存储空间大小是已经被定义好的,当空间存储满后,它将从指针的开头开始重新存储,数据集不会增大,所以存储空间大小不需维护。

然而,这类数据库也能够很明显的看到它的问题。首先,因为存储空间的手动设定,RRDtool 的存储能力难以扩展,在数据量逐渐增多的情况下,很难覆盖历史数据,实现时序数据的“应存尽存”。其次,RRDtool 的数据读取功能较弱,缺乏针对时间维度的查询优化,处理的数据模型也较为单一,通常是内嵌在监控系统中。最后,RRDtool 仅支持单机模式,未覆盖分布式管理的需求。

时序数据管理发展期:针对特征,优化性能

(1)从 OpenTSDB 到 InfluxDB

随着大数据的发展,时序数据爆发式增长,已有方案逐渐不能满足需求,在 2010 年之后,出现了第二类产品,首先是以 OpenTSDB 为代表的基于分布式存储的时序数据库。

这类时序数据库在继承通用分布式存储的基础上,扩展了时序数据的语义,并针对时序数据的进行了查询、处理等优化。如 OpenTSDB 底层依赖于 HBase 集群存储,根据时序的特征对数据进行压缩,节省存储空间;对时序数据的常用查询进行封装,提供数据聚合、过滤等操作。

而 OpenTSDB 存在的部署复杂和维护成本高等问题,促进了低成本的垂直型时序数据库的诞生,也就是以 InfluxDB 为首的时序数据库。

这类时序数据库的目标场景是互联网的服务监控、运维等场景,拥有更灵活的数据模型,以标签模型对监控项进行管理。相对于 OpenTSDB 需要配置 Java 环境和 HBase 环境,InfluxDB 没有依赖,大大减少了开发与运维成本,易于部署和维护。

同时,Influxdb 针对时序数据特性进行了存储引擎、查询引擎的重新设计,使得读写性能、易用性相比 OpenTSDB 获得了明显提升,如 InfluxDB 的采用类似 LSM Tree 的 TSM Tree存储结构,引入了 series-key 的概念,根据时间特征对数据实现了很好的分类,减少冗余存储,提高数据压缩率。

(2)时序数据库下一步发展挑战

上面提到的以 InfluxDB 为代表的时序数据库产品,在监控场景时序数据的多个管理痛点,如读写性能、存储成本、特性查询、部署运维等多个方向均实现了性能突破,并结合云服务、微服务等其他发展趋势,正在进一步拓宽其集成链路与适用场景。

然而,InfluxDB 主要面向云端服务监控,并且重点面向近期几个月的数据。但在时序数据大规模产生的工业物联网场景中,数据往往需要需要管理数年、甚至数十年之久,且需要分布式部署。Influxdb 目前仅单机版开源,难以管理如此大的数据量,且随着存储时长的增加,查询性能会大幅下降。

在工业场景中,时序数据的管理还具有一些行业特点,数据大多是从端侧设备产生出来的,这些数据首先会服务于工厂的应用管理,所以它们会首先传到工厂内部的边缘网关,再传输到中心侧的数据库去支持监控、告警等服务。边缘侧网络资源、环境配置往往有限,此类时序数据库产品部署的带宽成本较高,对于数据库多终端之间同步传输的运维压力也较大。

时序数据库的未来方向:实现工业物联网场景的“端-边-云”协同

(1)工业物联网场景的端边云协同解决方案

面向工业物联网时代,国产自研的时序数据库产品也开始发展、成熟,试图打破垄断。以 IoTDB 为代表的新的国产时序数据库旨在将 OT 和 IT 结合起来,提供完整的工业物联网时序数据解决方案,实现“端-边-云协同”,即需要时序数据库在端侧、边侧、云侧等不同资源下都能够适配,并且运行良好,可以进行数据管理和分析,同时在数据流转的过程中支持稳定、高效、低运维成本的数据传输方案。

这一类时序数据库不但可以实现千万级数据写入、高压缩比数据存储、集群部署高可用等性能,同时通过独特的时序数据存储文件格式,实现了数据一次处理,即可端边云共用的新形态。

以 IoTDB 为例,它在发送端可将数据持久化为文件格式,利用边缘端的计算能力,将数据进行深度编码压缩。当文件在端侧形成时,即可将其直接传输到接收端,而无需将原始数据传输。而在接收端,可将收到的文件直接加载至系统中,无需将数据解码和重新写入。

同时,通过“端-边-云”数据模式的自动识别,IoTDB 实现了低流量数据同步方案。因此可使底层数据文件格式贯穿端侧、边侧、云侧,支持可插拔的文件级同步,充分利用边缘计算能力,缓解云侧计算压力,有效节省网络流量、云端计算资源与运维成本。

(2)时序数据库端边云场景应用方向

随着工业 4.0 和数字化时代的到来,结合国家工业升级转型战略的实施,新一代的时序数据库产品开始深入的帮助工业企业实现深度数字化转型。

目前,以 IoTDB 为代表的该类时序数据库广泛应用于能源电力、石油化工、钢铁冶炼、航空航天、轨道交通、智能工厂、车联网等国民经济核心产业,支持千万级设备写入、每日过亿条新增数据、TB 级历史数据存储需求,并实现如电力行业中“电厂侧-省域侧-中心侧”、制造行业中“传感器侧-厂站侧-基地侧-集团侧”的“端-边-云”数据同步,构建单平台全生命周期与跨平台端边云协同的时序数据解决方案。

更多内容推荐:

了解如何使用 IoTDB 企业版

了解更多 IoTDB 应用案例