跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQLjava

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

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

DebugKing发布于 2026/3/16更新于 2026/6/2237 浏览
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 具体异构配置
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 基于 Python 调用通义万相 2.1 API 实现图像与文本生成实战
  • GitHub 国内镜像站汇总与加速配置指南
  • 微信开放官方 Bot API:ClawBot 插件技术解析与接入指南
  • Python 官方下载与 Windows 安装配置完整指南
  • Linux 信号的产生方式与保存机制
  • Spring Boot + jQuery 前后端分离图书管理系统:从接口设计到问题排查
  • DeepSeek、豆包、Kimi 三大模型命理测算实测与避坑
  • OpenClaw + Claude 搭建自动写作工作流实践
  • 2026 年 AI 行业趋势深度报告
  • AI 编程工具对比:Copilot、Cursor、Claude Code、Codex
  • AI 图像生成技术指南:从原理到实战应用
  • Microsoft C++ Build Tools 安装与验证指南
  • AIGC 时代下前端开发范式迁移与工程师成长路径
  • GitHub Copilot 学生认证流程解析与 Python 实践
  • Maven 核心机制:深入理解本地仓库
  • Whisper 模型国内镜像源汇总及各版本快速下载指南
  • Whisper 模型国内镜像源汇总与快速下载指南
  • Milvus 实战:Attu 可视化安装与 Python 整合指南
  • 鸿蒙 Share Kit 目标应用开发指南
  • 语义化 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