首页
>
资源
>
技术解析

时序数据库 IoTDB 与 InfluxDB 对比

IoTDB 简介

IoTDB 是一款低成本、高可用的国产全自研工业时序数据库,采用端边云协同的轻量化结构,支持一体化的物联网时序数据收集、存储、管理与分析,具有多协议兼容、高压缩比、高通量读写、工业级稳定、简便运维等特点。

IoTDB 架构以自主研发的时序数据专用文件存储格式 TsFile 为基础,支撑三大核心组件:面向端侧具备嵌入式数据存储能力的 IoT Node、高性能时序数据管理引擎 Data Node,以及具备机器学习训练推理能力的 AI Node。

InfluxDB 简介

InfluxDB 是一款开源时序数据库,支持纳秒级时间戳和高频数据写入,并集成数据采集工具与可视化工具,广泛应用于物联网、监控系统和实时分析场景。

综合对比

IoTDB

InfluxDB

官网

http://iotdb.apache.org

https://www.influxdata.com/

技术文档

https://iotdb.apache.org/UserGuide/Master/QuickStart/QuickStart.html

https://docs.influxdata.com/

初始版本时间

2018

2013

是否开源

底层语言

Java

Go、Rust

支持操作系统

Linux、Windows、MacOS、Unix-like系统

Linux、Windows、MacOS

支持编程语言

Java
Python
C
C#
C++
Go
Node.js
Rust
JDBC
REST API
Scala

.Net
Clojure
Erlang
Go
Haskell
Java
JavaScript
JavaScript (Node.js)
Lisp
Perl
PHP
Python
R
Ruby
Rust
Scala

语法

树模型支持类 SQL 语言
表模型支持标准 SQL 语言

InfluxQL(类 SQL 语法)、Flux(脚本语言)

是否支持分布式

IoTDB 功能

1. 双数据模型

  • 树模型-离散点位管理:层级化方式管理测点,实现亿级时间序列管理规模,支持序列级时间序列权限控制

  • 结构化表模型-统一设备管理:支持标准 SQL 语法,原生支持无模式写入,实现动态静态数据统一管理

  • 双模型转换:允许通过简单 SQL 语句在原始数据树上创建虚拟表视图,实现树模型与表模型的自然映射

2. 部署模式

  • 多种部署模式:支持单机模式、双活模式、集群模式部署,保障多场景高扩展、高可用

  • 端边云协同:实现设备端侧-厂站边侧-集团云侧协同传输,实现数据互联互通

  • 高效的数据迁入、迁出能力:无需解压和二次处理,接收端 CPU 消耗节省 95%,网络带宽节省 90%

3. 时序数据写入与存储

  • 自研 TsFile 时序数据标准文件格式:相比通用文件格式,压缩比提升 20% 以上,达到 10X 无损压缩比、100X 有损压缩比、

  • 高吞吐写入:TsFile 支持列式数据写入,达到毫秒级高频数据接入,支持千万/秒写入速度

  • 乱序数据处理:首创乱序分离存储引擎,乱序数据处理效率达 4 倍以上

  • 模态融合:支持非结构化对象/文件管理,可自定义存储、解析文件

4. 时序数据查询与分析

  • 丰富查询功能:满足时序数据特性查询需求,支持降采样时序对齐、时序分段查询、数据补齐与修复等功能

  • 高级分析能力:支持标量函数(UDSF)、聚合函数(UDAF)、表值函数(UDTF),实现趋势查询、窗口函数、嵌套查询

  • 联邦查询:无缝接入外部数据源业务数据,实现跨系统、多模态数据分析

5. AI 训推一体化

  • AI Node 节点:支持即插即用的一体化时序数据机器学习模型训练推理,支撑工业智能分析应用

  • 自研时序大模型 Timer:支持任意长度输入,产生多种概率预测结果,在国际时序预测榜单取得领先预测效果和推理效率

  • 自动完成业务分析:结合 IoTDB MCP Server 功能,基于自然语言交互,实现智能关联分析

6. 软硬件生态系统

  • 全生命周期生态集成:支持 MQTT、OPC UA 等工业协议,与 KafKa、Spark、Flink 等大数据系统深度集成,支持 Grafana、DataEase 等可视化工具,支持 Kubernetes 部署

  • 硬件生态扩展:联合集成边缘智能硬件板、系统控制器、智能一体机,工业智能化能力具象化为可部署的实体解决方案

  • 兼容国产化生态:兼容国产 CPU、国产服务器操作系统

7. 易用性工具

  • 可视化控制台 Workbench:图形化操作,一站实现时序数据可视化管理

  • 集群监控工具:帮助监控集群健康状态,并进行集群调优和运维

  • 一键式集群管理工具:支持集群部署、启停、更新、扩容等功能,实现复杂集群一键式指令下发

InfluxDB 功能

1. 写入与存储

  • 写入优化:通过 TSM 引擎优化,每秒可处理数百万数据点,适用于物联网、工业传感器等高频写入场景

  • 压缩存储:采用 TSM 格式实现高效数据压缩,降低存储空间占用。

2. 查询与分析

  • 多语言查询支持:支持 InfluxQL 语法,兼容传统 SQL 习惯,同时提供脚本式语言 Flux,支持复杂分析

  • 查询扩展功能:支持滑动窗口计算、窗口函数等功能,适用于实时指标监控场景

3. 可视化与监控

  • Grafana 集成:原生支持,快速创建仪表盘。

  • 内置 UI:InfluxDB 2.x 提供数据探索和可视化界面

  • 告警功能:通过 Flux 或 API 设置阈值告警

4. 生态集成

  • 开发者友好接口:内置 HTTP API,提供便捷的 SDK 集成方案

  • Telegraf:轻量级数据采集代理

  • Chronograf:官方可视化工具,2.x 中整合到 Web UI

  • Kapacitor:流式处理与告警引擎,2.x 由 Flux 替代

5. 运维管理

  • 数据保留策略:支持自定义数据生命周期策略,自动清理过期数据

  • 权限控制:提供用户分级授权机制,支持数据库访问权限的精细化控制

6. 分布式架构

  • 分布式集群:多节点部署,保障分布式架构高扩展、高可用

  • 数据分片、复制:支持数据分片和复制,保障系统稳定性,提升系统容错

7. 安全和管理

  • 用户管理:支持多用户、多权限管理

  • HTTPS 支持:HTTPS 保障数据传输安全

  • 数据加密:支持数据加密存储和传输

IoTDB 数据建模概念

  • 数据模型(sql_dialect):IoTDB 支持两种时序数据模型(SQL语法),管理的对象均为设备和测点树:以层级路径的方式管理数据,一条路径对应一个设备的一个测点表;以关系表的方式管理数据,一张表对应一类设备。

  • 元数据(Schema):元数据是数据库的数据模型信息,即树形结构或表结构。包括测点的名称、数据类型等定义。

  • 设备(Device):对应一个实际场景中的物理设备,通常包含多个测点。

  • 测点(Timeseries):又名:物理量、时间序列、时间线、点位、信号量、指标、测量值等。测点是多个数据点按时间戳递增排列形成的一个时间序列。通常一个测点代表一个采集点位,能够定期采集所在环境的物理量。

  • 编码(Encoding):编码是一种压缩技术,将数据以二进制的形式进行表示,可以提高存储效率。

  • 压缩(Compression):IoTDB 在数据编码后,使用压缩技术进一步压缩二进制数据,提升存储效率。

InfluxDB 数据建模概念

  • Database: 数据库名,在 InfluxDB 中可以创建多个数据库

  • 时间戳 Time:每条数据记录的时间,也是数据库自动生成的主索引,默认为当前系统的时间戳(纳秒)

  • 字段 Field:包含数据的实际值,可以是各种数据类型,字段在查询时可以进行数学运算

  • 标签 Tag:用于索引和过滤数据

  • Point:表里面的一行数据,由时间戳(timestamp)、标签(tag)、字段(field)和组成

  • Measurement: 存储具有相似特征或属于同一类别的数据点集合,包含了列 Timestamp 时间戳,Field 字段和Tag 标签

  • Field Set:每组 field key 和 field value 的集合

  • Tag Set: 不同的每组 tag key 和 tag value 的集合

  • Retention Policy:定义了数据在数据库中的保存期限。当数据超过了指定的时间限制,它们将自动被删除

  • Series:共同 Retention Policy,Measurement 和 Tag set 的集合

IoTDB 数据模型

IoTDB 提供了两种数据建模方式——树模型和表模型,其特点分别如下:

  • 树模型:以测点为对象进行管理,每个测点对应一条时间序列,测点名按.分割可形成一个树形目录结构,与物理世界一一对应,对测点的读写操作简单直观。

  • 表模型:推荐为每类设备创建一张表,同类设备的物理量采集都具备一定共性(如都采集温度和湿度物理量),数据分析灵活丰富。

两种模型有各自的适用场景,以下表格从适用场景、典型操作等多个维度对树模型和表模型进行了对比。用户可以根据具体的使用需求,选择适合的模型,从而实现数据的高效存储和管理。

对比维度

树模型

表模型

适用场景

测点管理,监控场景

设备管理,分析场景

典型操作

指定点位路径进行读写

通过标签进行数据筛选分析

结构特点

和文件系统一样灵活增删

模板化管理,便于数据治理

语法特点

简洁灵活

分析丰富

性能对比

相同

注意:

  • 同一个集群实例中可以存在两种模型空间,不同模型的语法、数据库命名方式不同,默认不互相可见。

  • 在通过客户端工具 Cli 或 SDK 建立数据库连接时,需要通过 sql_dialect 参数指定使用的模型语法(默认使用树语法进行操作)。

InfluxDB 数据模型

数据库服务器包含逻辑数据库,逻辑数据库包含表,表包含列。V3 与之前的 InfluxDB 版本相比,在 V2 版本中,用户可以将数据库视为存储桶(bucket),在 V1 版本中,则可以将其视为 db/retention_policy。

表相当于一个测量值(measurement),其列可以是 tag(字符串字典)、int64、float64、uint64、bool 或 string 类型,最后,每个表都有一个时间列,该列的精度为纳秒级时间戳。

在 InfluxDB 3 中,每个表都有一个主键(标签和时间的有序集合),用于存储其数据。所有创建的 Parquet 文件都使用主键进行排序。当创建表时(无论是通过显式调用还是首次将数据写入表),系统都会按照标签到达的顺序将主键设置为标签的主键。这是不可变的。表的标签列定义也是不可变的。

标签应包含唯一的标识信息,例如 sensor_id、building_id 或 trace_id。所有其他数据应保存在字段中。用户将能够为任何列(无论是字段还是标签)添加后 N 个值和不同值查找功能。

IoTDB 应用场景

  • 能源电力:管理电力生产、传输、存储和消费过程中的海量时序数据,实现电力系统实时监控、精准预测和智能调度,有效提升能源利用效率,降低运营成本。

  • 航空航天:管理飞机、火箭、卫星等设备在设计、制造、试飞、运行等全流程中产生的海量时序数据,实现对飞行任务中关键系统的精准监测与分析。

  • 钢铁冶炼:对冶炼设备和生产线进行实时数据管理,实现对核心生产环节的智能监测、精准控制与高效管理,提升产能、优化产品质量、降低能耗。

  • 石油石化:管理供油气管道、储配站、调控中心等设备数据,实现数据稳定实时展示与系统监控报警,为公共安全保障及石油管网数智化升级贡献力量。

  • 交通运输:管理列车、地铁、船舶、汽车等设备的运行、状态、位置信息等数据,为铁路、船舶等构建起稳定可靠的智能交通系统管理基础。

  • 智慧工厂:满足大规模设备接入需求,支持设备状态监测、故障诊断、预测性维护等核心业务应用,提升生产、运营效率。

InfluxDB 应用场景

  • 监控运维:在企业服务器集群中,InfluxDB 能快速采集 CPU 负载、内存占用等性能指标,记录网络流量变化情况,保存应用程序响应时间等数据。这些数据为管理员和开发人员提供了实时系统状态视图,便于及时发现异常波动,快速定位故障点,提升系统运维效率

  • 实时数据分析:对于海量实时数据的分析处理需求,InfluxDB 支持数据持续高速写入,配合查询机制可快速完成时序数据可视化图表生成、异常数据自动检测、实时阈值报警等操作

  • 日志数据管理:InfluxDB 将日志数据按照时间序列有序存储,尤其适用于分布式系统和微服务架构下海量日志的管理。通过时间维度的有序组织,开发人员能更便捷地回溯、查询和分析日志信息,实现系统运行问题诊断与优化