分享自:

Apache IoTDB:面向物联网应用的时间序列数据库

期刊:Proc. ACM Manag. DataDOI:10.1145/3589775

Apache IoTDB:面向物联网应用的时间序列数据库管理系统学术报告

由Chen Wang(清华大学)、Jialin Qiao与Xiangdong Huang(Timecho Ltd)、Shaoxu Song(清华大学)、Haonan Hou(Timecho Ltd)、Tian Jiang、Lei Rui、Jianmin Wang与Jiaguang Sun(清华大学)合作完成的论文《Apache IoTDB: A Time Series Database for IoT Applications》于2023年6月发表于《Proc. ACM Manag. Data》(卷1,第2期,文章195)。该研究针对物联网(IoT)场景下时间序列数据管理的独特需求,提出了一套完整的解决方案,包括专为时间序列设计的文件格式TSFile及高效处理引擎IoTDB。


学术背景

时间序列数据在工业物联网中呈现爆发式增长,典型场景如重型机械监控(单家企业管理超2万台挖掘机,每台装备数百个传感器)产生海量数据点(每秒千万级写入)。现有数据库系统未能充分解决以下核心挑战:
1. 设备定义的动态模式(Device-defined ever-evolving schema):传感器因维护或升级频繁变更,导致模式演化(如燃料监测传感器从FC32替换为FC3X)。
2. 周期性数据采集(Mostly periodical data collection):数据因网络延迟或节能策略存在时间偏差或省略(如传感器ES05每60秒采集,但存在7秒延迟或某次采集缺失)。
3. 强相关性序列(Strongly correlated series):同一模块的传感器数据在时间戳和数值上高度相关(如风速相近的风机)。
4. 多样化延迟到达(Variously delayed data arrival):数据可能因网络问题延迟数秒至数天(如时间戳09:05:13的数据晚于后续数据到达)。
5. 高并发写入(Highly concurrent data ingestion):单台风机500+传感器同时生成数据,集群需处理数万台设备的数据。

传统时间序列数据库(如InfluxDB、TimescaleDB)或通用列式存储(如Parquet、ORC)未针对上述特性优化,导致性能瓶颈。Apache IoTDB的目标是构建一个从边缘设备到云端全覆盖的高效系统,支持实时查询(OLTP)与复杂分析(OLAP),同时避免ETL(数据提取转换加载)开销。


研究流程与方法

1. TSFile文件格式设计

TSFile是专为时间序列设计的列式存储格式,其核心创新包括:
- 层次化数据模型:以树形结构组织设备与传感器(如turbine.beijing.fu01.azq01.windspeed),天然支持模式演化(如FC32与FC3X作为兄弟节点)。
- 时间-值分列存储:时间列采用差异编码(Delta Encoding),仅存储规则间隔的计数与小偏差(如ES05的60秒间隔+7秒延迟);值列利用回归模型压缩(Regression-based Compression),存储观测值与预测值的差值(如相近风机风速的差值δv)。
- 多级统计索引:文件级(时间范围)、块级(设备-传感器组)、页级(局部统计)索引加速查询。
- 频域编码(Frequency Domain Encoding):通过FFT预计算频域数据并量化存储,避免实时转换开销。

实验对比显示,TSFile写入吞吐量显著高于Parquet与ORC(图10a),空间效率相当(图10b),且查询延迟降低一个数量级(图10c),尤其在处理稀疏数据(如TY-vehicle数据集仅4.79%非空值)时优势明显。

2. IoTDB引擎优化

  • 延迟数据处理
    • 分层LSM-Tree(Log-Structured Merge-Tree):正常数据与延迟数据分离存储,通过稳定时间(Stable Time)标记已持久化的最大时间戳。短延迟数据缓存至内存表(Memtable)后刷盘;长延迟数据写入独立TSFile,通过后台压缩(Compaction)减少时间范围重叠。
    • 动态延迟分离策略(Automatic Delay Separation):基于实际延迟分布(如某场景仅0.0375%长延迟)自动选择是否分离,减少查询时的文件合并开销(图8)。
  • 查询引擎
    • 多级统计利用:聚合查询直接使用预计算的页/块/文件级统计,避免读取原始数据(如10亿点3年聚合在100ms内完成)。
    • 对齐查询(Alignment Query):通过外连接(Outer Join)合并多序列,缺失值填充NULL(图5)。
  • 分布式扩展
    • NB-Raft协议(Non-Blocking Raft):通过弱接受状态(Weak Accept)实现并行化写入,提升吞吐量。
    • 动态读一致性(Dynamic Read Consistency):根据副本响应动态调整读取副本数,平衡延迟与准确性。

3. 实验验证

  • 数据集:包括TY-vehicle(挖掘机数据,稀疏)、ZC-train(地铁监控,密集)、ZY-machine(烟草生产,稀疏)及TSBS基准数据(表3)。
  • 性能对比:IoTDB写入吞吐达每秒千万点(图11),1天范围10万点查询与3年范围千万点聚合均在100ms内完成(图12),显著优于InfluxDB、TimescaleDB与KairosDB。

结论与价值

Apache IoTDB通过TSFile与引擎协同设计,解决了物联网时间序列管理的五大核心挑战。其科学价值体现于:
1. 理论创新:提出动态模式表示、时间对齐编码、频域复用等新方法。
2. 工程实践:开源系统(Apache顶级项目)已部署于200余家企业,如三一重工(GW Turbine管理4百万序列、36万亿点)、阿里巴巴云(替代InfluxDB+Redis方案)。

应用价值包括:
- 端边云协同:同一TSFile在设备、边缘服务器与云端无缝同步,避免ETL开销(图13显示网络流量降低7.4倍)。
- 高扩展性:集群支持动态分区(按序列族与时间范围)与非阻塞复制(NB-Raft),20节点集群写吞吐达单机10倍(图14)。


研究亮点

  1. 物联网原生设计:首次系统化解决动态模式、延迟数据等IoT特有问题。
  2. 全链路优化:从文件格式(TSFile)到查询引擎(统计驱动)的全栈创新。
  3. 开源生态整合:支持Kafka、Grafana、Spark等工具链,提供UDF(用户定义函数)扩展(60+内置函数)。

该研究为工业物联网提供了首个涵盖数据生成、存储、查询与分析的一体化解决方案,其方法论与系统实现均具有领域普适性。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com