随着工业4.0时代数字化和自动化的引入,生产环境变得更加高效。与此同时,智能设备带来的海量数据的潜在价值也引起了人们的关注。如何高效地存储智能设备产生的数据,如何更好地分析海量数据,成为一个难题。传统的数据库模型和存储模式无法满足这种需求。因此,建立了时间序列数据库,旨在高效地存储和查询数据,有助于更好地挖掘数据的潜在价值。
面对这种情况,清华大学于2015年启动了IoTDB的开发。2020年9月23日,Apache IoTDB作为Apache的顶级项目毕业,这是Apache基金会唯一由中国高校发起的顶级项目,也是Apache基金会旗下物联网数据管理领域唯一的开源项目。2021年10月,Apache IoTDB核心团队创办天谋科技,持续运营IoTDB,帮助行业用户解决“存储、搜索、使用”数据的问题。
对于Apache IoTDB开发的核心技术,几个参与者联合发表了一篇总结论文,详细完整的阐述了IoTDB的设计。本文从一家需要管理数万台挖掘机的工业公司入手,描述了“数据首先被打包到设备中,然后通过5G移动网络发送到服务器”的需求。在服务器中,数据被写入时序数据库,用于OLTP查询。最后,数据科学家可以将数据从数据库加载到大数据平台进行复杂的分析和预测,也就是OLAP任务。”

地址:https://dl.acm.org/doi/abs/10.1145/3589775.
项目地址:https://github.com/apache/iotdb.
本文重点讨论了以下几个部分:
1.数据模型的设计:时间序列在逻辑层的组织及其在物理模型中的存储;
2.TsFile文件格式:自主开发的列存储文件格式,满足写入和查询的高效率;
3.IoTDB引擎:主要包括存储引擎、查询引擎等。
4.分布式解决方案。
接下来对这些关键部分进行更详细的解读。
详细解释
1.数据模型设计
(1)如下图所示,采用树形结构,满足极高强度的写操作,有效应对物联网场景下常见的数据到达延迟问题。
在树中,每个叶子节点对应一个传感器,每个传感器都有其对应的home设备,如图最下面两层所示,向上也是如此。

(2)逻辑结构在前一篇文章中已经描述过了。现在我们来看物理结构的实现,主要由时间序列和序列族组成。下图显示了每个时间序列由两个属性组成:时间和值,时间序列通过从根节点到叶节点的完整路径定位。上图展示了序列聚类的概念。一个序列簇可能包含多个设备,它们的数据会一起存储在TsFile(一种文件结构,后面会解释)。

2.ts文件格式的设计
TsFile是Apache IoTDB自主开发的存储文件格式。其结构如下:

在TsFile的设计过程中,研究团队主要解决了以下问题:
节省空间,尽可能压缩数据。
减少文件数量
将一起查询的时间序列的物理接近度。
减少磁盘碎片
高效访问
主要解决方案如下:
列存储:消除空值,节省磁盘占用;数据访问的局部性
时间序列编码:利用物联网场景时间序列的独特特性
频域编码:时间序列的频域分析广泛应用于信号处理。
具体结构分析:一个页面是基本存储单位,一个组块中有多个页面,一个组块中的页面属于同一时间序列,大小不一;区块组包含多个区块,一个组中的多个区块属于同一时间段写入的一个或多个系列的设备。它们被放在连续的磁盘空间中,因为它们经常被一起查询。块在内存中,写入的块组首先在内存中缓冲。当内存达到阈值时,所有块组都会刷新到TsFile中。文件索引在文件末尾记录信息以供数据访问。
3.IoTDB引擎
在这一部分,研究人员主要考虑物联网场景下延迟到达、高效查询处理和类SQL查询的设计。IoTDB引擎结构如下:

在图中我们可以看到,存储引擎主要用于处理TsFile的写、读、管理,这部分使用了自动延迟分离技术(如下图所示):

当大部分数据在正常的TsFile中且没有重叠的时间范围时,建议使用延迟数据分离。当大多数数据是无序的时,不推荐延迟的数据分离。
另一个重要的组件是查询引擎,它负责将SQL查询转换成数据库中可执行的操作符。同时,为了适应工业物联网场景,Apache IoTDB设计了丰富的时间序列数据查询。
4.分布式解决方案
TsFile可以在HDFS发行,由Spark操作。此外,它还为数据分发和查询处理提供了更好的原生解决方案,主要是分区复制、NB-Raft复制和动态读取一致性。
对比结果
论文提供了TsFile和IoTDB与业界广泛使用的最先进的文件格式和时间序列数据库的对比结果,展示了Apache IoTDB在很多方面的优势,如下图所示:


以上两张图表明,TsFile在写入吞吐量、读取时间开销和同步性能方面都优于广泛使用的方案。这主要得益于TsFile的物联网感知结构设计,避免了存储deviceId等冗余信息。磁盘占用之所以没有明显优势,是因为索引更详细,占用的空间更大,但这样的牺牲却能带来查询时间的超常提升,我们可以看到读取时间开销的明显优势。

从上图可以看出,IoTDB在几乎所有测试中都表现出了更好的性能、更高的写吞吐量和更低的写延迟。

在上图的实验中,我们可以看到,当查询数据较大时,IoTDB具有更好的性能,在大规模数据聚合中,IoTDB的优势尤为显著。
摘要
介绍了一种新的时间序列数据管理系统Apache IoTDB,其开放架构是专门为支持物联网应用的实时查询和大数据分析而设计的。该系统包括一种新的时间序列文件格式TsFile,使用列存储来存储时间和值,以避免空值并实现有效压缩。IoTDB引擎在TsFile的基础上,采用类似LSM树的策略来处理极高强度的写入和延迟数据到达,这在物联网场景中非常常见。TsFile中丰富的可扩展查询和预先计算的统计信息使IoTDB能够高效地处理OLTP和OLAP任务。
基于这些技术,IoTDB成为了一种新的数据库,可以更好地面对工业物联网场景。
剧终
授权请联系本微信官方账号。
投稿或寻求报道:content@jiqizhixin.com。
微信扫码
QQ扫码
您的IP:10.1.228.218,2025-12-29 18:07:50,Processed in 0.38558 second(s).