👨‍🎓博主简介

  🏅CSDN博客专家
  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


在这里插入图片描述

前言:为什么建议你“先摸一摸”IoTDB

在风电场、光伏电站、地铁轨道或半导体工厂,每天都在产生“秒级、毫秒级”时序数据。过去我们习惯把数据先扔进 MySQL 或 Hadoop,再写定时任务做聚合——结果往往是“写入堵、查询慢、磁盘爆、运维哭”。Apache IoTDB 的出现让这些问题有了更优雅的答案:

  • 单节点 3000 万点/秒写入,磁盘占用却只有 MySQL 的 1/20;
  • 256 MB 内存即可在 ARM 网关上运行,断网 7 天自动缓存;
  • Apache 2.0 协议开源,商业公司 Timecho 提供 7×24 原厂兜底;
  • 已通过信创测评,麒麟、鲲鹏、飞腾、统信全部拿到兼容性报告。

下面这份“选型笔记”只写“怎么把 IoTDB 真正用起来”。文中所有脚本均来自生产环境脱敏后的可运行片段,复制即可落地。


  • 官方地址:

下载地址
Apache IoTDB 官方发行版:https://iotdb.apache.org/zh/Download/

企业级服务
Timecho(天谋科技)官网:https://timecho.com

Github仓库链接
Github仓库链接:https://github.com/apache/iotdb

官方部署
安装部署与使用文档:快速上手
一、十分钟搭一套本地单机版


  1. 拉镜像(体积 < 200 MB,含 CLI):
docker run -d --name iotdb \
  -p 6667:6667 -p 31999:31999 -p 8101:8101 \
  apache/iotdb:1.3.2-standalone
  1. 进入 CLI:
docker exec -it iotdb /iotdb/sbin/start-cli.sh -h localhost -p 6667 -u root -pw root

浏览器打开 http://localhost:8101,默认账号 root/root,就能在 Web 控制台里执行 SQL。

二、建库 + 创建测点:一条 SQL 搞定

-- 创建存储组(类似 MySQL 的 DB)
CREATE DATABASE root.farm001;

-- 创建两条时间序列,指定数据类型与压缩算法
CREATE TIMESERIES root.farm001.turbine01.pitch_angle
  WITH DATATYPE=FLOAT, ENCODING=GORILLA, COMPRESSOR=LZ4;

CREATE TIMESERIES root.farm001.turbine01.wind_speed
  WITH DATATYPE=FLOAT, ENCODING=GORILLA, COMPRESSOR=LZ4;

提示:

  • GORILLA 是 IoTDB 自研的浮点压缩算法,压缩率通常 > 15:1;
  • 如果现场 CPU 紧张,可把 COMPRESSOR 改成 SNAPPY,写性能再提 20%。

三、批量灌数:Java 写入模板(Maven 直接跑)

pom.xml 只引一个依赖:

<dependency>
  <groupId>org.apache.iotdb</groupId>
  <artifactId>iotdb-session</artifactId>
  <version>1.3.2</version>
</dependency>

示例代码:

Session session = new Session("localhost", 6667, "root", "root");
session.open();
List<String> deviceIds = Collections.singletonList("root.farm001.turbine01");
List<List<String>> measurements = Collections.singletonList(
        Arrays.asList("pitch_angle", "wind_speed"));
List<List<TSDataType>> types = Collections.singletonList(
        Arrays.asList(TSDataType.FLOAT, TSDataType.FLOAT));

// 模拟 10 万条记录
for (int i = 0; i < 100_000; i++) {
    long time = System.currentTimeMillis() + i;
    List<Object> values = Arrays.asList(3.14f + i % 10, 12.6f + i % 5);
    session.insertRecord(deviceIds.get(0), time,
                         measurements.get(0), types.get(0), values);
}
session.close();

笔记本(i7-1260P)实测:10 万条 < 1.2 s 写完;磁盘占用 1.6 MB,压缩比 ≈ 19:1。

四、边缘部署:把 IoTDB 塞进 256 MB 网关

ARM32 网关常用 Yocto 系统,官方提供 37 MB 静态包:

wget https://downloads.apache.org/iotdb/1.3.2/apache-iotdb-1.3.2-edge-bin-arm.tar.gz
tar -xzf apache-iotdb-1.3.2-edge-bin-arm.tar.gz
cd sbin && ./start-standalone.sh

断网缓存策略(iotdb-engine.properties):

enable_wal=true
max_wal_size=1073741824  # 1 GB,约可缓存 7 天

网络恢复后,边缘节点自动把 WAL 文件上传到中心集群,无需手工干预。

五、与大数据生态握手:Flink SQL 实时降采样

IoTDB 提供官方 Flink Connector,可把降采样结果写回 IoTDB,也能写 Hive、Kafka。

-- 1. 映射 IoTDB 原表
CREATE TABLE turbine_src (
  device STRING,
  ts TIMESTAMP(3),
  pitch_angle FLOAT,
  wind_speed FLOAT,
  WATERMARK FOR ts AS ts - INTERVAL '5' SECOND
) WITH (
  'connector' = 'iotdb',
  'node-urls' = 'localhost:6667',
  'user' = 'root',
  'password' = 'root',
  'sql' = 'select device, timestamp, pitch_angle, wind_speed from root.farm001.*'
);

-- 2. 结果表(降采样后)
CREATE TABLE turbine_sink (
  device STRING,
  window_start TIMESTAMP(3),
  avg_wind_speed FLOAT
) WITH (
  'connector' = 'iotdb',
  'node-urls' = 'localhost:6667',
  'user' = 'root',
  'password' = 'root',
  'sql' = 'insert into root.farm001.downsample(device,window_start,avg_wind_speed) values(?,?,?)'
);

-- 3. 每 10 秒输出平均风速
INSERT INTO turbine_sink
SELECT device,
       TUMBLE_START(ts, INTERVAL '10' SECOND) AS window_start,
       AVG(wind_speed) AS avg_wind_speed
FROM turbine_src
GROUP BY device, TUMBLE(ts, INTERVAL '10' SECOND);

实测 5000 万点/秒输入,Flink 单核 CPU < 30%,内存 1 GB 足够。

六、可视化:Grafana 模板一键导入

grafana-cli plugins install iotdb-datasource

模板 ID 18648 已内置“风电实时大屏”:风速/角度/功率曲线、设备在线率、磁盘压缩比趋势。拖拽即可出图,十分钟交作业。

七、企业级特性(Timecho 提供)

  • 分布式集群、Raft 自动选主、在线扩缩容;
  • Ranger 集成,行列级权限;
  • 多机房双活,RPO = 0,RTO < 30 s;
  • 信创环境整机部署包,麒麟/鲲鹏/飞腾官方认证。

企业版下载与商业支持:
https://timecho.com

开源版永久免费:
https://iotdb.apache.org/zh/Download/

结语:选型不是终点,而是开始

在大数据与工业互联的双轮驱动下,时序数据库早已不是“能写就行”的玩具。Apache IoTDB 用一套“边缘-云协同、端-边-云一体”的架构,把高吞吐、高压缩、低延迟和国产化合规同时做进了产品里。把代码跑起来,让数据先“动”起来——你会惊喜地发现,IoTDB 不只是数据库,更是工业现场与大数据世界之间最轻、最快、最稳的一座桥梁。

Logo

葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务

更多推荐