当前位置: 首页 > news >正文

当OT遇见IT:Apache IoTDB如何用“时序空间一体化“技术破解工业物联网数据孤岛困局?

目录

一. 什么是时序数据库?

二. 时序数据库的选型要素

 性能指标

架构能力

 数据模型与查询能力

安全与权限控制

 部署与运维能力

三· Apache IoTDB 简介及安装使用:

安装准备教程

检查 Java 版本

下载与安装

 下载 IoTDB

 解压文件

 配置环境变量

启动 IoTDB

启动服务器

使用 CLI 工具连接数据库

入门使用:

用户管理与权限控制

 数据加密与传输安全

备份与恢复

 运维安全

基本使用

创建时间序列

插入数据

查询数据

聚合查询

停止 IoTDB 服务

四.Apache IoTDB优势效果剖析:

 独立自研

 商业友好

 时序数据标准文件格式

双时序模型

千万级数据写入

 毫秒级查询响应

五.IoTDB 在国产化替代中的优势

国产数据库替代的背景与政策支持

政策

IoTDB 的国产化适配能力(麒麟、统信、龙芯等)

 与国外 TSDB 的对比:技术自主可控

政府、能源、电力、交通等行业的落地

六.总结

时序数据库选型的五大核心建议

 IoTDB 的技术优势与生态竞争力

 国产时序数据库的未来

企业如何构建自主可控的时序数据平台

 


一. 什么是时序数据库?

时序数据库(Time Series Database,TSDB)是一种专为存储、管理和查询时间序列数据而设计的数据库系统。时间序列数据具有以下特征:

  • 每条数据都带有时间戳;
  • 数据写入频率极高;
  • 数据通常不可变;
  • 查询以聚合分析为主;
  • 数据量庞大,需要高效压缩。

这类数据库广泛应用于物联网(IoT)、智能制造、智慧城市、车联网、金融风控、网络监控等领域。随着大数据时代的到来,如何高效地处理和分析海量时间序列数据,成为企业面临的重要课题。

二. 时序数据库的选型要素

在选择时序数据库时,企业通常会从以下几个维度进行评估:

 性能指标

  • 写入性能:能否支持高并发写入,每秒写入多少条数据;
  • 查询性能:聚合查询、范围查询、多维查询的速度;
  • 压缩比:数据压缩效率,节省存储空间;
  • 吞吐量:整体系统吞吐能力。

架构能力

  • 分布式支持:是否支持多节点集群部署;
  • 高可用性:是否支持故障转移、数据副本;
  • 扩展性:是否支持横向扩展,弹性扩容;
  • 云原生兼容性:是否支持 Docker、Kubernetes 等云平台。

 数据模型与查询能力

  • 数据模型:是否支持设备层级、时间序列、对齐机制;
  • SQL 支持:是否支持标准 SQL 或类 SQL 查询语言;
  • 聚合函数:是否支持 AVG、SUM、MAX、MIN 等常用聚合函数;
  • 插件机制:是否支持 UDF、自定义压缩算法、索引等扩展功能。

安全与权限控制

  • 用户管理:是否支持多用户、角色管理;
  • 权限控制:是否支持细粒度的权限控制;
  • 审计日志:是否记录操作日志用于审计;
  • 加密机制:是否支持 SSL、数据加密传输与存储。

 部署与运维能力

  • 部署模式:是否支持单机、伪集群、多节点集群;
  • 监控支持:是否提供 Prometheus、Grafana 等监控集成;
  • 日志管理:日志结构是否清晰,是否支持日志归档;
  • 备份与恢复:是否提供数据备份与恢复工具。

三· Apache IoTDB 简介及安装使用:

Apache IoTDB 是一款专为物联网(IoT)和工业互联网场景设计的高效、轻量级时序数据库。它由清华大学自主研发,并于2020年捐赠给Apache软件基金会,成为Apache顶级项目。IoTDB具备高性能写入高压缩比实时查询分布式架构等特性,广泛应用于工业监控、智能制造、智慧城市、车联网等领域。[具体可以去官网了解Apache IoTDB_国产开源时序数据库_时序数据管理服务商-天谋科技Timecho]

安装准备教程

在开始之前,请确保系统满足以下要求:

  • 操作系统:Linux、macOS 或 Windows
  • Java 环境:JDK 8 或更高版本(推荐使用 JDK 11)
  • 内存:至少 2GB RAM
  • 磁盘空间:至少 100MB 可用磁盘空间
检查 Java 版本

打开终端或命令提示符,输入以下命令检查 Java 版本:

java -version

如果未安装 Java 或版本不符合要求,请先安装合适的 JDK 版本。

下载与安装
 下载 IoTDB

访问 发行版本 | IoTDB Website,选择适合你操作系统的最新稳定版进行下载。

对于 Linux 和 macOS 用户,可以使用 wget 命令直接下载:

wget https://downloads.apache.org/iotdb/2.5.0/apache-iotdb-2.5.0-all-bin.zip
 解压文件

下载完成后,解压文件到指定目录。例如,在 Linux 或 macOS 上可以使用以下命令:

unzip apache-iotdb-2.5.0-all-bin.zip -d /opt/iotdb

Windows 用户可以通过右键点击 .zip 文件并选择“解压到当前文件夹”来解压缩。

 配置环境变量

为了方便使用,你可以将 IoTDB 的 bin 目录添加到系统的 PATH 环境变量中。编辑 ~/.bashrc~/.zshrc 文件(根据你的 shell),添加以下内容:

export IOTDB_HOME=/opt/iotdb/apache-iotdb-2.5.0-all-bin
export PATH=$PATH:$IOTDB_HOME/sbin:$IOTDB_HOME/bin

然后执行以下命令使配置生效:

source ~/.bashrc
启动 IoTDB
启动服务器

进入 IoTDB 安装目录下的 sbin 文件夹,启动 IoTDB 服务:

cd /opt/iotdb/apache-iotdb-2.5.0-all-bin/sbin
./start-server.sh

默认情况下,IoTDB 将监听 6667 端口。如果你需要更改端口号或其他配置项,可以编辑 conf/iotdb-engine.properties 文件。

使用 CLI 工具连接数据库

启动成功后,可以使用 IoTDB 提供的命令行工具(CLI)连接数据库:

cd /opt/iotdb/apache-iotdb-2.5.0-all-bin/sbin
./start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root

这将打开一个交互式的 CLI 界面,允许你执行 SQL 查询和管理任务。

入门使用:

用户管理与权限控制

创建用户

默认情况下,IoTDB 提供了一个 root 用户,但为了安全起见,建议创建新的用户并限制其权限。

-- 使用 root 用户登录
./sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root-- 创建新用户
CREATE USER 'newuser' 'newpassword';-- 查看所有用户
SHOW USERS;

授予权限

你可以为不同的用户分配不同的权限,以控制他们对数据库的操作范围。

-- 授予读取权限
GRANT READ ON root.ln.wf01 TO 'newuser';-- 授予写入权限
GRANT WRITE ON root.ln.wf01 TO 'newuser';-- 授予管理员权限
GRANT ADMIN TO 'newuser';

修改密码

定期修改密码是保持系统安全的重要步骤。

-- 修改密码
ALTER USER 'newuser' SET PASSWORD 'newpassword';

 删除用户

如果某个用户不再需要访问数据库,可以将其删除。

-- 删除用户
DROP USER 'newuser';
 数据加密与传输安全

启用 SSL/TLS 加密

为了确保数据在网络传输过程中的安全性,可以启用 SSL/TLS 加密。

生成证书

首先,你需要生成一个自签名证书或使用现有的证书。

# 生成私钥
openssl genrsa -out server.key 2048# 生成证书签名请求 (CSR)
openssl req -new -key server.key -out server.csr# 生成自签名证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

配置 IoTDB 使用 SSL

编辑 iotdb-engine.properties 文件,添加以下配置:

# 启用 SSL
enable_ssl=true# 指定证书和私钥路径
ssl_key_file=/path/to/server.key
ssl_cert_file=/path/to/server.crt

测试连接

使用命令行工具测试是否能够通过 SSL 连接。

./sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root --use-ssl

数据库审计日志

IoTDB 支持记录操作日志,便于后续审计和故障排查。

 开启审计日志

编辑 iotdb-engine.properties 文件,添加以下配置:

# 开启审计日志
enable_audit_log=true# 设置审计日志文件路径
audit_log_dir=/path/to/audit/logs

 查看审计日志

审计日志会记录每个用户的操作,包括查询、插入、删除等操作:

cat /path/to/audit/logs/audit.log
备份与恢复

数据备份

定期备份数据是保障数据安全的重要手段。IoTDB 提供了简单的备份命令。

# 备份当前数据库
./sbin/backup.sh -d /path/to/backup/dir

数据恢复

当发生数据丢失或损坏时,可以通过备份文件进行恢复。

# 恢复数据库
./sbin/restore.sh -d /path/to/backup/dir
 运维安全

定期更新

确保你使用的 IoTDB 版本是最新的,及时应用安全补丁和更新。

# 检查当前版本
./sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root -e "SHOW VERSION;"# 下载最新版本
wget https://iotdb.apache.org/zh/Download/

监控与告警

设置监控和告警机制,以便在出现异常情况时及时响应。

# 使用 Prometheus 和 Grafana 监控 IoTDB
# 配置 Prometheus 抓取 IoTDB 指标
scrape_configs:- job_name: 'iotdb'static_configs:- targets: ['localhost:6667']

访问控制

限制对 IoTDB 的访问,仅允许可信的 IP 地址或网络段访问数据库。

# 在 iotdb-engine.properties 中配置白名单
whitelist=192.168.1.0/24,127.0.0.1

基本使用

创建时间序列

首先创建一个新的时间序列:

CREATE TIMESERIES root.ln.wf01.wt01.status WITH DATATYPE=BOOLEAN, ENCODING=PLAIN;
CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=RLE;
插入数据

插入一些示例数据:

INSERT INTO root.ln.wf01.wt01(timestamp,status,temperature) values(1,true,25.96);
INSERT INTO root.ln.wf01.wt01(timestamp,status,temperature) values(2,false,24.3);
INSERT INTO root.ln.wf01.wt01(timestamp,status,temperature) values(3,true,26.1);
查询数据

查询已插入的数据:

SELECT * FROM root.ln.wf01.wt01 WHERE time >= 1 AND time <= 3;

输出结果类似于:

+-----------------------------+------------------------+-------------------------+
|                         Time|root.ln.wf01.wt01.status|root.ln.wf01.wt01.temperature|
+-----------------------------+------------------------+-------------------------+
|1970-01-01T08:00:00.001+08:00|                    true|                     25.96|
|1970-01-01T08:00:00.002+08:00|                   false|                      24.3|
|1970-01-01T08:00:00.003+08:00|                    true|                      26.1|
+-----------------------------+------------------------+-------------------------+
聚合查询

执行聚合查询,如计算平均温度:

SELECT AVG(temperature) FROM root.ln.wf01.wt01 WHERE time >= 1 AND time <= 3;

输出结果类似于:

+-----------------------------+-------------------------+
|                         Time|AVG(root.ln.wf01.wt01.temperature)|
+-----------------------------+-------------------------+
|                         null|                     25.453333333333334|
+-----------------------------+-------------------------+

停止 IoTDB 服务

当你不再需要运行 IoTDB 时,可以通过以下命令停止服务:

cd /opt/iotdb/apache-iotdb-2.5.0-all-bin/sbin
./stop-server.sh

四.Apache IoTDB优势效果剖析:

 独立自研

优势分析

  • 完全自主可控:从底层数据文件到分布式架构均不依赖第三方系统,确保了系统的安全性和稳定性。
  • 持续创新:作为 Apache 基金会唯一的时序数据库 Top-Level 项目,Apache IoTDB 可以持续进行技术创新和功能迭代。

示例

// 示例代码:创建时间序列并插入数据
Connection connection = DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
Statement statement = connection.createStatement();
statement.execute("CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=RLE");
statement.execute("INSERT INTO root.ln.wf01.wt01(timestamp, temperature) VALUES (now(), 25.3)");

 商业友好

优势分析

  • 开源协议稳定:遵循 Apache 2.0 协议,允许企业修改、使用项目代码用于商业化应用,无需担心变更。
  • 社区支持:拥有活跃的开源社区,提供丰富的文档和资源支持。

分析

特性描述
开源协议Apache 2.0
社区活跃度
商业化应用支持

 时序数据标准文件格式

优势分析

  • 高效存储:采用 TsFile 格式,相比通用文件格式,写入/查询吞吐、压缩比可提升 3-15 倍。
  • 降低成本:显著降低存储成本,并实现在线、离线数据高效流转。

示例

-- 查询数据
SELECT * FROM root.ln.wf01.wt01 WHERE time >= 1 AND time <= 3;

分析

特性描述
文件格式TsFile
写入/查询吞吐提升 3-15 倍
压缩比显著提高

双时序模型

优势分析

  • 灵活架构:树、表双模型支持,适配工业监控场景与设备管理场景。
  • 高效分析:架构灵活性与分析效率双保障,方便用户根据需求选择合适的模型。

示例

-- 创建树模型时间序列
CREATE TIMESERIES root.device.sensor1.temperature WITH DATATYPE=FLOAT, ENCODING=RLE;-- 创建表模型时间序列
CREATE TABLE root.device.sensor1 (time TIMESTAMP, temperature FLOAT);

千万级数据写入

优势分析

  • 高频数据接入:采用列式写入模式,实现高频数据毫秒级接入。
  • 乱序数据处理:首创乱序分离存储引擎,轻松应对海量数据高并发写入需求。

示例

// 批量插入数据示例
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO root.ln.wf01.wt01(timestamp, temperature) VALUES (?, ?)"
);
for (int i = 0; i < 1000000; i++) {preparedStatement.setLong(1, System.currentTimeMillis());preparedStatement.setFloat(2, 25.3f + i * 0.1f);preparedStatement.addBatch();
}
preparedStatement.executeBatch();

 毫秒级查询响应

优势分析

  • 高效索引机制:通过高效的索引机制和查询优化,大幅提升数据查询效率。
  • 内置 UDF 函数:支持降采样查询、时序分段查询、数据补齐与修复等操作,内置超 70 种 UDF 函数帮助分析。

示例

-- 使用 UDF 函数进行数据分析
SELECT AVG(temperature), MIN(temperature), MAX(temperature) 
FROM root.ln.wf01.wt01 
WHERE time >= '2023-01-01T00:00:00' AND time <= '2023-01-01T23:59:59';

分析

特性描述
索引机制高效
查询优化大幅提升效率
UDF 函数超 70 种

综上所述,Apache IoTDB 在独立自研、商业友好、时序数据标准文件格式、双时序模型、千万级数据写入和毫秒级查询响应等方面具有显著优势,能够满足物联网和工业互联网场景下的高性能、高可靠性和高扩展性需求。

五.IoTDB 在国产化替代中的优势

国产数据库替代的背景与政策支持

随着国家对信息技术自主可控的要求日益提高,推动了国内企业向使用国产软件和硬件解决方案转变的趋势。政府出台了一系列政策鼓励和支持国产化替代,尤其是在关键基础设施领域如能源、电力、交通等行业。这些政策不仅促进了技术的自主创新,还提高了信息安全水平,减少了对外部供应商的依赖。

政策

  • 信创战略:中国信息创新(信创)战略旨在促进信息技术领域的自主创新,减少对国外技术和产品的依赖。
  • 数据安全法:《中华人民共和国数据安全法》强调了数据安全的重要性,并要求重要数据处理者采取措施确保数据的安全性和保密性。

IoTDB 的国产化适配能力(麒麟、统信、龙芯等)

Apache IoTDB 作为一款由清华大学自主研发的时序数据库,已经实现了广泛的国产化适配,包括但不限于:

  • 操作系统:兼容麒麟、统信等国产操作系统。
  • 芯片架构:支持龙芯、鲲鹏等多种国产处理器架构。
  • 中间件:能够与众多国产中间件无缝集成,满足不同场景下的需求。

通过这些适配工作,IoTDB 不仅在性能上达到了国际先进水平,而且在安全性、稳定性方面也表现卓越,为用户提供了一个可靠的选择。

 与国外 TSDB 的对比:技术自主可控

相较于国外同类产品,IoTDB 具有以下显著优势:

  • 完全自主可控:从底层文件格式到分布式架构均由国内团队研发,避免了因外部制裁或技术支持中断带来的风险。
  • 快速响应本地需求:由于团队位于国内,可以更迅速地响应客户需求并提供定制化服务。
  • 社区活跃度高:拥有一个活跃的开源社区,用户可以通过 GitHub、邮件列表等方式获取帮助和支持。

政府、能源、电力、交通等行业的落地

IoTDB 已经在多个行业得到了成功应用,如:

  • 政府:某市政府利用 IoTDB 构建智慧城市平台,实现了城市运行状态的实时监测与分析。
  • 能源:中国核电集团采用 IoTDB 管理核电厂设备的健康状况,提升了运维效率。
  • 电力:南方电网部署 IoTDB 用于智能电表数据管理,降低了运营成本。
  • 交通:北京地铁公司借助 IoTDB 实现列车状态监控及故障预警系统,增强了行车安全。

六.总结

时序数据库选型的五大核心建议

  1. 性能考量:关注写入速度、查询延迟及压缩率等指标。
  2. 扩展性与灵活性:选择支持分布式架构的产品,以适应未来增长。
  3. 安全性保障:确保所选产品具备强大的安全防护机制。
  4. 易用性与维护成本:考虑学习曲线、文档质量及社区活跃程度。
  5. 生态兼容性:检查是否能与其他主流框架和技术栈良好集成。

 IoTDB 的技术优势与生态竞争力

IoTDB 凭借其高性能写入、高压缩比、分布式架构、丰富的插件体系以及强大的社区支持,在国内外市场上展现了强劲的竞争实力。特别是在大数据处理、物联网等领域,IoTDB 能够提供一站式解决方案,帮助企业高效管理海量时序数据。

IoTDB 的核心优势

优势描述
高性能写入支持高并发写入,适合物联网场景
高压缩比支持多种编码压缩算法,压缩率高达90%以上
分布式架构支持多节点部署,适合大规模数据
丰富插件体系支持Grafana、Flink、Spark 等生态
国产适配强完美兼容麒麟、统信、龙芯、鲲鹏等国产软硬件

IoTDB 示例

1. 添加 Maven 依赖(Java 客户端)

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

2. Java 连接并操作 IoTDB

import org.apache.iotdb.session.Session;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;import java.util.ArrayList;
import java.util.List;public class IoTDBExample {public static void main(String[] args) throws Exception {// 建立连接Session session = new Session("127.0.0.1", 6667, "root", "root");session.open();// 创建数据库session.executeNonQueryStatement("CREATE DATABASE IF NOT EXISTS root.vehicle");// 创建时间序列List<MeasurementSchema> schemaList = new ArrayList<>();schemaList.add(new MeasurementSchema("speed", TSDataType.INT32, TSEncoding.RLE, CompressionType.SNAPPY));schemaList.add(new MeasurementSchema("temperature", TSDataType.FLOAT, TSEncoding.PLAIN, CompressionType.SNAPPY));session.createTimeseries("root.vehicle.car01", schemaList);// 插入数据session.insertRecord("root.vehicle.car01", 1717027200000L, new Object[]{120, 25.5f});session.insertRecord("root.vehicle.car01", 1717027260000L, new Object[]{130, 26.0f});// 查询数据String sql = "SELECT * FROM root.vehicle.car01";var dataset = session.executeQueryStatement(sql);while (dataset.hasNext()) {System.out.println(dataset.next());}// 关闭连接session.close();}
}

3. 查询结果示例

1717027200000, root.vehicle.car01.speed=120
1717027200000, root.vehicle.car01.temperature=25.5
1717027260000, root.vehicle.car01.speed=130
1717027260000, root.vehicle.car01.temperature=26.0

IoTDB 与国产软硬件适配

类别适配情况
操作系统麒麟、统信 UOS
芯片架构龙芯、鲲鹏、飞腾
中间件达梦、东方通、金蝶中间件
云平台阿里云、华为云、腾讯云

 国产时序数据库的未来

随着国家对自主可控技术的重视以及市场需求的增长,预计未来几年内,国产时序数据库将迎来快速发展期。一方面,技术创新将持续提升产品的性能和可靠性;另一方面,通过加强国际合作,将进一步扩大市场影响力。

企业如何构建自主可控的时序数据平台

为了构建一个自主可控的时序数据平台,企业应遵循以下原则:

  • 选用国产化软件:优先考虑经过充分验证的国产软件产品。
  • 注重数据安全:建立健全的数据保护制度,定期开展安全审计。
  • 强化人员培训:培养一支熟悉国产技术的专业团队,增强内部技术支持能力。

如需要了解 IoTDB更多请自行查看

  • 官方网站:Apache IoTDB_国产开源时序数据库_时序数据管理服务商-天谋科技Timecho
  • 下载页面:发行版本 | IoTDB Website

在国产化替代与大数据架构升级的双重驱动下,Apache IoTDB 凭借其高性能、易用性、分布式能力与活跃的社区生态,正在成为越来越多企业时序数据库选型的首选。

http://www.dtcms.com/a/285620.html

相关文章:

  • 【每日算法】专题十三_队列 + 宽搜(bfs)
  • 四、CV_GoogLeNet
  • 代码训练营DAY35 第九章 动态规划part03
  • 【收集电脑信息】collect_info.sh
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 基于jieba实现词频统计
  • Kubernetes Pod深度理解
  • 【数据可视化-67】基于pyecharts的航空安全深度剖析:坠毁航班数据集可视化分析
  • 【问题解决】npm包下载速度慢
  • 【AI大模型学习路线】第三阶段之RAG与LangChain——第十八章(基于RAGAS的RAG的评估)RAG中的评估思路?
  • 把握流程节点,明确信息传递
  • C专题5:函数进阶和递归
  • 最小生成树算法详解
  • 2025外卖江湖:巨头争霸,谁主沉浮?
  • 洞见AI时代数据底座的思考——YashanDB亮相2025可信数据库发展大会
  • NIO网络通信基础
  • AndroidX中ComponentActivity与原生 Activity 的区别
  • 关于字符编辑器vi、vim版本的安装过程及其常用命令:
  • 从抓包GitHub Copilot认证请求,认识OAuth 2.0技术
  • web3 区块链技术与用
  • 基于深度学习的语音识别:从音频信号到文本转录
  • 开源的大语言模型(LLM)应用开发平台Dify
  • 如何用Python并发下载?深入解析concurrent.futures 与期物机制
  • 服务攻防-Java组件安全FastJson高版本JNDI不出网C3P0编码绕WAF写入文件CI链
  • ARM64高速缓存,内存属性及MAIR配置
  • 预测导管原位癌浸润性复发的深度学习:利用组织病理学图像和临床特征
  • Nand2Tetris(计算机系统要素)学习笔记 Project 3
  • sqli(1-8)
  • ASP.NET Core Web API 内存缓存(IMemoryCache)入门指南
  • Pytorch下载Mnist手写数据识别训练数据集的代码详解
  • PyTorch新手实操 安装