跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
SQLjava

Apache IoTDB 数据库管理:增删改查与异构数据库配置

Apache IoTDB 数据库管理涵盖增删改查、TTL 自动清除及异构数据库构建。支持通过 SQL 语句创建、查询和删除数据库,命名需遵循特定规范。TTL 功能可基于路径设置数据保留时间,自动清理过期设备数据以节省空间并提升性能。异构数据库允许针对不同需求配置元数据副本数、数据副本数及分区策略,可通过 CREATE DATABASE 或 ALTER DATABASE 命令调整参数,实现存储成本与查询性能的平衡。

DebugKing发布于 2026/3/16更新于 2026/5/415 浏览
Apache IoTDB 数据库管理:增删改查与异构数据库配置

一、IoTDB 数据库管理——增删改查

1.1 数据库管理介绍

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,是关系型数据库管理系统(RDBMS)中的核心组成部分。它通过表格形式存储数据,支持 SQL 查询语言,提供数据完整性、安全性和并发控制等功能。

1.2 创建数据库

基于存储模型构建对应的数据库。

语句:

IoTDB > CREATE DATABASE root.ln

注意:Database 的父子节点都不能再设置 database。已经有 root.ln 了,我们创建下试下。

错误提示:

IoTDB > CREATE DATABASE root.ln.wf01 Msg: 300: root.ln has already been created as database.

数据库命名规范(重点)

**节点名可由中英文字符、数字、下划线(_)、英文句号(.)、反引号()组成** 若节点名为以下情况,则必须用反引号()将整个名称包裹。

  • 纯数字(如 12345)
  • 含有特殊字符(如 . 或 _)并可能引发歧义的名称(如 db.01、_temp) 反引号的特殊处理:
  • 若节点名本身需要包含反引号(),则需用两个反引号(``)表示一个反引号。例如:命名为 db123`(本身包含一个反引号),需写为 ``db123```
1.3 数据库查询

database 创建后,使用下面语句查询:

IoTDB > SHOW DATABASES

返回结果:

+-------------+----+-------------------------+-----------------------+-----------------------+
| database    | ttl|schema_replication_factor|data_replication_factor|time_partition_interval|
+-------------+----+-------------------------+-----------------------+-----------------------+
| root.sgcc   |null| 2                       | 2                     | 604800                |
| root.ln     |null| 2                       | 2                     | 604800                |
+-------------+----+-------------------------+-----------------------+-----------------------+
Total line number = 2 It costs 0.060s 
1.4 删除数据库

可以使用删除语句删除数据库。在删除的过程中,需要注意的是数据库的数据也会被删除(慎重操作!)。

语句:

IoTDB > DELETE DATABASE root.ln

删除所有数据,时间序列以及数据库(非必要情况不要使用)

IoTDB > DELETE DATABASE root.**
1.5 统计数据库数量

语句:

  1. 遍历
IoTDB > SHOW DATABASES
  1. 统计
IoTDB > COUNT DATABASES

二、IoTDB 数据库管理——TTL 自动清除冗余数据

2.1 数据保留时间(TTL)

IoTDB 支持对 device 级别设置数据保留时间(TTL),这使得 IoTDB 可以定期、自动地删除一定时间之前的数据。合理使用 TTL 可以帮助您控制 IoTDB 占用的总磁盘空间以避免出现磁盘写满等异常。并且,随着文件数量的增多,查询性能往往随之下降,内存占用也会有所提高。及时地删除一些较老的文件有助于使查询性能维持在一个较高的水平和减少内存资源的占用。相比其他需要手动清理的数据库,省去了很多麻烦。

设置 TTL 时,系统会根据设置的路径寻找所包含的所有 device,并为这些 device 设置 TTL 时间,系统会按设备粒度对过期数据进行删除。

需注意:是否过期判断依据的是数据点时间,不是写入时间。

数据删除有一定的延迟,但不影响查数,会在一定时间内删除。当设备数据过期后,将不能被查询到,但磁盘文件中的数据不能保证立即删除(会在一定时间内删除),但可以保证最终被删除。

2.2 TTL Path 规则

设置的路径 path 只支持前缀路径(即路径中间不能带 * ,且必须以 ** 结尾),该路径会匹配到设备,也允许用户指定不带星的 path 为具体的 database 或 device,当 path 不带 * 时,会检查是否匹配到 database,若匹配到 database,则会同时设置 path 和 path.**。

注意:设备 TTL 设置不会对元数据的存在性进行校验,即允许对一条不存在的设备设置 TTL。

合格 path:root.** root.db.** root.db.group1.** root.db root.db.group1.d1
不合格 path:root.*.db root.**.db.* root.db.*
2.3 设置 TTL

set ttl 操作可以理解为设置一条 TTL 规则,比如 set ttl to root.sg.group1.** 就相当于对所有可以匹配到该路径模式的设备挂载 ttl。unset ttl 操作表示对相应路径模式卸载 TTL,若不存在对应 TTL,则不做任何事。若想把 TTL 调成无限大,则可以使用 INF 关键字。

设置 TTL 的 SQL 语句:

SET TTL TO pathPattern 360000;

需注意:

  • pathPattern 是前缀路径,即路径中间不能带 * 且必须以 ** 结尾。
  • pathPattern 匹配对应的设备。为了兼容老版本 SQL 语法,允许用户输入的 pathPattern 匹配到 db,则自动将前缀路径扩展为 path.**。

举例: 写 SET TTL TO root.sg 360000 则会自动转化为 SET TTL TO root.sg.** 360000,转化后的语句对所有 root.sg 下的 device 设置 TTL。 但若写的 pathPattern 无法匹配到 db,则上述逻辑不会生效。

2.4 取消 TTL

语句:

IoTDB > UNSET TTL FROM root.ln

取消设置 TTL 后,root.ln 路径下所有的数据都会被保存。

IoTDB > UNSET TTL FROM root.sgcc.**

取消设置 root.sgcc 路径下的所有的 TTL。

IoTDB > UNSET TTL FROM root.**
2.5 查询 TTL

(1)列出所有的 TTL

语句:

IoTDB > SHOW ALL TTL

(2)显示指定路径的 TTL

语句:

SHOW TTL ON pathPattern

(3)显示设备的 TTL

语句:

IoTDB > SHOW DEVICES

所有设备都一定会有 TTL,即不可能是 null。INF 表示无穷大。

三、IoTDB 数据库管理——构建异构数据库

3.1 异构数据库的构建

我们熟悉 IoTDB 元数据建模之后,可以在 IoTDB 中设置异构的数据库,以便应对不同的生产需求,这种异构设计能有效平衡查询性能(如实时分析)和存储成本(如历史归档)的关系。

在配置异构参数时注意事项有以下三点:

  • TTL 和 TIME_PARTITION_INTERVAL 必须为正整数
  • SCHEMA_REPLICATION_FACTOR 和 DATA_REPLICATION_FACTOR 必须小于等于已部署的 DataNode 数量
  • SCHEMA_REGION_GROUP_NUM 和 DATA_REGION_GROUP_NUM 的功能与 iotdb-system.properties 配置文件中的 schema_region_group_extension_policy 和 data_region_group_extension_policy 参数相关
3.2 数据库异构参数
参数名参数类型参数描述
TTLLong数据库的 TTL
SCHEMA_REPLICATION_FACTORInteger数据库的元数据副本数
DATA_REPLICATION_FACTORInteger数据库的数据副本数
SCHEMA_REGION_GROUP_NUMInteger数据库的 SchemaRegionGroup 数量
DATA_REGION_GROUP_NUMInteger数据库的 DataRegionGroup 数量

可以在创建 Database 时设置任意异构参数,或在单机/分布式 IoTDB 运行时调整部分异构参数。

3.3 创建 Database 时设置异构参数

语法:

CREATE DATABASE prefixPath (WITH databaseAttributeClause (COMMA? databaseAttributeClause)*)?

例如:

CREATE DATABASE root.db WITH SCHEMA_REPLICATION_FACTOR=1, DATA_REPLICATION_FACTOR=3, SCHEMA_REGION_GROUP_NUM=1, DATA_REGION_GROUP_NUM=2;

运行时调整异构参数

可以在 IoTDB 运行时调整部分异构参数。

语法:

ALTER DATABASE prefixPath WITH databaseAttributeClause (COMMA? databaseAttributeClause)*

例如:

ALTER DATABASE root.db WITH SCHEMA_REGION_GROUP_NUM=1, DATA_REGION_GROUP_NUM=2;

注意:运行时只能调整下列异构参数:

  • SCHEMA_REGION_GROUP_NUM
  • DATA_REGION_GROUP_NUM
3.4 查询每个 Database 具体异构配置

语法:

SHOW DATABASES DETAILS prefixPath?

例如:

IoTDB > SHOW DATABASES DETAILS

查询出的结果,根据每列所对应的信息统计并列出,如下:

  • 数据库名称
  • 数据库的 TTL
  • 数据库的元数据副本数
  • 数据库的数据副本数
  • 数据库的时间分区间隔
  • 数据库当前拥有的 SchemaRegionGroup 数量
  • 数据库需要拥有的最小 SchemaRegionGroup 数量
  • 数据库允许拥有的最大 SchemaRegionGroup 数量
  • 数据库当前拥有的 DataRegionGroup 数量
  • 数据库需要拥有的最小 DataRegionGroup 数量
  • 数据库允许拥有的最大 DataRegionGroup 数量

目录

  1. 一、IoTDB 数据库管理——增删改查
  2. 1.1 数据库管理介绍
  3. 1.2 创建数据库
  4. 1.3 数据库查询
  5. 1.4 删除数据库
  6. 1.5 统计数据库数量
  7. 二、IoTDB 数据库管理——TTL 自动清除冗余数据
  8. 2.1 数据保留时间(TTL)
  9. 2.2 TTL Path 规则
  10. 2.3 设置 TTL
  11. 2.4 取消 TTL
  12. 2.5 查询 TTL
  13. 三、IoTDB 数据库管理——构建异构数据库
  14. 3.1 异构数据库的构建
  15. 3.2 数据库异构参数
  16. 3.3 创建 Database 时设置异构参数
  17. 3.4 查询每个 Database 具体异构配置
  • 💰 8折买阿里云服务器限时8折了解详情
  • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
  • 代充Chatgpt Plus/pro 帐号了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Face Analysis WebUI 使用 Gradio share 开启远程临时链接调试
  • 医疗连续体机器人模块化控制界面设计与 Python 库应用
  • Kubernetes 云原生运维实战:AIGC 智能重构与深度实践
  • 医疗连续体机器人模块化控制界面设计与 Python 库应用
  • C++ 如何计算类的大小
  • 35 道常见前端 Vue 面试题解析
  • Kubernetes 边缘 AI 部署实战与最佳实践
  • 前端权限控制架构设计:告别硬编码判断
  • 机器人通讯架构选型:CAN/FD、高速 485 与 EtherCAT 深度对比
  • Windows 11 安装 JDK 25:下载、配置环境变量及验证
  • 动态规划经典题:Unique Paths 网格路径计数详解
  • 双指针算法实战:快乐数与盛最多水的容器
  • Python 深度学习:融合选择性卷积与残差结构的 SKResNet 架构详解
  • Java 多线程状态详解:NEW、RUNNABLE、BLOCKED 等六种状态解析
  • AI 生成前端代码:高效软件原型设计工作流
  • Python:self 详解
  • FPGA Debug:PCIE XDMA 无法 Link Up 使用 LTSSM 定位问题
  • 二分查找算法详解与实战题解
  • XXL-job注册模型与高可用架构解析
  • MySQL 与 MCP 协议集成:从环境构建到 AI 数据交互全流程

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online