Apache IoTDB 国产时序数据库核心功能与快速上手
Apache IoTDB 是一款开源时序数据库,专为工业物联网场景设计。它基于自研 TsFile 文件格式,支持高并发写入、乱序数据处理及高效压缩。核心特性包括树形数据模型管理、实时流处理、AINode 智能分析及云边协同能力。广泛应用于电力、储能、钢铁等行业,支持端边云数据同步。提供 Java 等客户端 SDK,便于集成到现有系统中。

Apache IoTDB 是一款开源时序数据库,专为工业物联网场景设计。它基于自研 TsFile 文件格式,支持高并发写入、乱序数据处理及高效压缩。核心特性包括树形数据模型管理、实时流处理、AINode 智能分析及云边协同能力。广泛应用于电力、储能、钢铁等行业,支持端边云数据同步。提供 Java 等客户端 SDK,便于集成到现有系统中。

在工业物联网的浪潮中,数据不再是副产品,而是驱动决策的核心资产。随着物联网、工业互联网和智能监控的迅猛发展,时序数据正以前所未有的速度爆发。据预测,到 2025 年全球物联网设备将达 750 亿台,每秒都在产生海量的时间序列数据。如何高效地存储、管理与分析这些数据,已成为企业数字化转型的关键挑战。
时序数据,也称为时间序列数据,是指按时间顺序记录的同一统计指标的数据集合。这类数据的来源主要是能源、工程、交通等工业物联网强关联行业的机器设备和传感器,如汽车的车速、发动机转速,发电风车的功率、电压、电流等。
时序数据库是专门用于管理时序数据的数据库类型。随着物联网设备和数据量的爆炸式增长,时序数据库通过管理和分析历史数据以及新产生的时序数据,能够助力工业企业实现数字化转型、工业 4.0 升级,进而达到降低成本、提高效率、提升产品质量等目的。
IoTDB 是一款国产自研的物联网原生时序数据库,其技术发源于清华大学,目前已历经 13 年的发展。IoTDB 的诞生,主要是为了解决工业物联网时序数据管理的实时性、压缩比、分布式部署等多方面痛点。
开源版 IoTDB 是 Apache 基金会时序数据领域第一个 Top-Level 项目,其核心团队成立了天谋科技(北京)有限公司(以下简称'天谋科技'),专注 IoTDB 产品的打磨。
IoTDB 提供数据采集工具,可对接多类协议,底层为纯自研列式存储文件系统 TsFile,在此基础上设计存储、查询计算、流处理、分析引擎,以及系统管理模块与多种应用工具,并支持对接大数据生态,与单机版、分布式版、双活版等多类形态部署。
通过多项自研技术创新成果,IoTDB 在不依赖第三方系统的情况下,可以实现高吞吐、高压缩、高可用的性能表现,并建立了物联网场景时序数据横向与纵向解决方案。
横向解决方案:以 IoTDB 为时序数据系统内核,通过其优异的存、读、写能力,上游对接多类采集协议,下游对接多类数据分析处理平台,可支持时序数据单平台采集、存储、计算、管理、应用全流程。
纵向解决方案:将 IoTDB 部署于多个平台,实现跨厂、跨车间应用,IoTDB 强大的数据同步能力与简便的数据同步机制,可支持跨平台端(设备侧/车间侧)、边(厂侧)、云(集团侧)数据协同。
IoTDB 能够实现稳定、高效、易用的时序数据管理方案,在国际数据库基准测试性能排行榜 benchANT 中,IoTDB 的读、写、压缩指标均排名第一。其功能特性可简单归结为'管得好、接得住、存得下、处理强、实时性、智能性、协同性'七个词。
物联网场景中产线、设备产生的 BOM 数据是按照层级,彼此关联起来的。IoTDB 实现了树形时序数据模型,能够直观地与 BOM 数据进行对应。同时对于需要新增或变更的设备,也能够做到自动化同步,有效降低了时序数据管理与运维的成本。
IoTDB 自研的基于 PBTree 的元数据管理模型,可以实现亿级的时间序列管理规模,并降低数据冗余,能够通过高效的元数据存储提高 IoTDB 管理的数据质量。在树形模型基础上,IoTDB 可以对序列级的权限进行更好的控制,比如可以为集团级、工厂级、产线级数据设置不同的权限范围,进而达到多层级数据高效管理的目的。
高频数据写入:传统时序数据库一般因为采用行式数据写入,只能支持到秒级数据接入。IoTDB 通过底层文件 TsFile 支持的列式数据写入,达到毫秒级的数据接入,相比竞品有 10 倍的性能优势。
乱序数据写入:乱序数据在实际场景中非常常见,IoTDB 首创了乱序分离存储引擎,用独有的顺乱序判断机制,将顺序数据与乱序数据分开,并通过多种空间合并的方法,消除乱序数据。IoTDB 的乱序数据处理效率可以达到竞品的 4 倍以上。
时序数据存储方面一直面临海量数据导致存储成本高昂的问题,而 IoTDB 通过自研的时序数据标准文件格式 TsFile 解决了这一难题。TsFile 结合列式存储、编码算法、分段摘要信息、文件级索引等架构,相比通用的文件格式,对时序数据的压缩比可以提升 20% 以上,达到无损压缩 10 倍以上、无损压缩 100 倍以上的压缩比。
另外,TsFile 架构针对时序数据特性的优化,也使得 IoTDB 有效提升了时序数据的写入与查询效率。相比竞品,IoTDB 的写入吞吐量提升了 2-3 倍,查询吞吐量则提升了 2-10 倍。值得一提的是,继 IoTDB 之后,TsFile 已经被 Apache 基金会通过成为时序数据领域第二个 Top-Level 项目,这意味着其不但能够与 IoTDB 共同使用,还可以作为单独文件格式进行使用。
时序数据因为强时间属性,在查询时用户很可能有一些特殊的、强关联时间的需求。IoTDB 可提供降采样查询、最新点查询和时间分段查询。降采样查询可以去掉原始高频数据不必要的细节,还原数据的基本趋势;最新点查询通过缓存每个设备的最新值,实现毫秒级响应;时序分段查询可以根据数据的变化阈值、中断间隔等维度进行多样的分段查询。
IoTDB 还提供一套 UDF(用户自定义函数)体系,提供超过 70 种内置函数,可满足数据修复、数据图像、异常检测等时序数据计算需求。如果用户还有在这套体系之外的计算需求,也可自行在 IoTDB 中编辑、保存常用的 UDF 函数。
为了更好地让 IoTDB 实现智能化分析,IoTDB 团队在 2023 年为 IoTDB 集群引入了智能分析节点 AINode。AINode 通过与集群管理节点(ConfigNode)、数据节点(DataNode)的交互,可以为用户提供模型注册、管理、推理的能力,结果可直接在 IoTDB 返回。同时也涵盖了时序数据适用的多类算法和自研模型,能够实现序列预测、异常预测等时序分析场景需要的深度学习功能。
IoTDB 团队在 2023 年加入了实时流处理功能,可不间断地处理数据,并及时发现异常或分析趋势。IoTDB 中,一个流处理任务(Pipe)包含抽取(Extract)、处理(Process)、发送(Connect)三个子任务,三个子任务可由三种独立插件进行实现,并允许用户自定义配置三个子任务的处理逻辑和具体属性,通过组合不同的子任务内核,实现灵活的数据 ETL 能力。
利用流处理框架,可以在 IoTDB 搭建完整、灵活的数据链路,实现毫秒级的低延迟响应,满足端边云数据同步、双活集群部署、网闸穿透、实时告警、数据订阅、异地灾备、读写负载分库等场景需求。
工业物联网应用场景中,产生数据的设备可能来自于多个厂站,数据经常需要汇总至省域或集团进行分析,所以时序数据库需要多终端、多环境、多平台部署。IoTDB 的数据同步基于可插拔的 TsFile 文件,并支持操作级、文件级的多种传输模式,与跨网闸传输、加密传输。同一个文件类型可在端、边、云侧进行协同传输,同步方案的易用性得以保障;传输模式多样则保障数据传输的实时性、吞吐量、安全性。
同时,IoTDB 的数据同步支持数据在边侧进行必要的数据清洗与计算操作,再向云侧进行同步,能够最大化地利用边侧的算力资源,同时节省云侧算力资源。此外,企业因为业务扩张,往往也经常需要扩展数据库部署规模。IoTDB 的分布式架构具备高扩展性,可以达到秒级扩容、无需迁移数据、灵活调整。
目前,天谋科技构建的 IoTDB 解决方案在业内得到了广泛应用,覆盖'天、空、地、海'各个层面。IoTDB 落地的主要行业与应用效果有:
目前,应用 IoTDB 的工业企业已经超过 1000 家,其中包括国家电网、中核集团、中航成飞、中国中车、中国气象局等国内企业,和博世力士乐、德国宝马、西门子、日本小松等海外企业。此外,IoTDB 还被集成应用于华为、阿里、海尔、东方国信、用友等多个工业互联网平台中。
访问官方下载页:https://iotdb.apache.org/zh/Download/,获取最新版本。
解压后执行 sbin/start-server.sh,默认 6667 端口启动。
import org.apache.iotdb.session.Session;
public class FirstIoTDB {
public static void main(String[] args) {
try (Session session = new Session("127.0.0.1", 6667, "root", "root")) {
session.open();
// 创建时间序列
String device = "root.vehicle.d001";
session.createTimeseries(device + ".speed", TSDataType.DOUBLE, TSEncoding.PLAIN);
// 写入数据
long time = System.currentTimeMillis();
double speed = 85.5;
session.insertRecord(device, time, new String[]{"speed"}, new Object[]{speed});
// 查询验证
try (SessionDataSet dataset = session.executeQueryStatement("SELECT * FROM root.vehicle.*")) {
while (dataset.hasNext()) {
System.out.println(dataset.next());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
作为专为物联网与时序数据打造的高性能数据库,Apache IoTDB 凭借高效存储、极速读写、灵活扩展三大核心优势,成为处理大规模 IoT 数据及时序数据的理想之选。其开源、分布式、易集成的特性,更让它在物联网、工业监控、智能城市等领域具备广泛且深入的应用潜力。
官网地址:https://iotdb.apache.org GitHub:https://github.com/apache/iotdb

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online