Apache IoTDB(6):深入解析数据库管理操作——增删改查与异构数据库实战指南

Apache IoTDB(6):深入解析数据库管理操作——增删改查与异构数据库实战指南

目录

引言

本文将基于技术实践,从数据库管理、设备模板构建、时间序列优化到路径查询技巧,全面揭示IoTDB在工业物联网场景中的核心应用逻辑。帮助开发者构建高可靠、易扩展的时序数据管理体系。

Apache IoTDB 时序数据库【系列篇章】

No.文章地址(点击进入)
1Apache IoTDB(1):时序数据库介绍与单机版安装部署指南
2Apache IoTDB(2):时序数据库 IoTDB 集群安装部署的技术优势与适用场景分析
3Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南
4Apache IoTDB(4):深度解析时序数据库 IoTDB 在Kubernetes 集群中的部署与实践指南
5Apache IoTDB(5):深度解析时序数据库 IoTDB 中 AINode 工具的部署与实践

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

1.1 数据库管理介绍

在这里插入图片描述

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

1.2 创建数据库

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

语句:

IoTDB>CREATEDATABASE root.ln 

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

错误提示:

IoTDB>CREATEDATABASE root.ln.wf01 Msg: 300: root.ln has already been created asdatabase.

数据库命名规范(重点)

节点名可由中英文字符、数字、下划线(_)、英文句号(.)、反引号(`) 组成若节点名为以下情况,则必须用反引号(`) 将整个名称包裹。
纯数字(如 12345)
含有特殊字符(如 . 或 _)并可能引发歧义的名称(如 db.01、_temp)
反引号的特殊处理:
若节点名本身需要包含反引号(`),则需用两个反引号(``) 表示一个反引号。例如:命名为`db123``(本身包含一个反引号),需写为 `db123```

1.2 数据库查询

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

IoTDB>showdatabases

返回结果:

+-------------+----+-------------------------+-----------------------+-----------------------+ | 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.3 删除数据库

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

语句:

IoTDB >DELETEDATABASE root.ln 

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

IoTDB >DELETEDATABASE root.**

1.4 统计数据库数量

语句

  1. 遍历
IoTDB>showdatabases
  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>SHOWALL 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 时设置异构参数

语法:

CREATEDATABASE prefixPath (WITH databaseAttributeClause (COMMA? databaseAttributeClause)*)? 

例如:

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

运行时调整异构参数

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

语法:

ALTERDATABASE prefixPath WITH databaseAttributeClause (COMMA? databaseAttributeClause)*

例如:

ALTERDATABASE root.db WITH SCHEMA_REGION_GROUP_NUM=1, DATA_REGION_GROUP_NUM=2;
注意:运行时只能调整下列异构参数SCHEMA_REGION_GROUP_NUMDATA_REGION_GROUP_NUM

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

语法:

SHOWDATABASES DETAILS prefixPath? 

例如:

IoTDB> SHOW DATABASES DETAILS +--------+--------+-----------------------+---------------------+---------------------+--------------------+-----------------------+-----------------------+------------------+---------------------+---------------------+ |Database| TTL|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|SchemaRegionGroupNum|MinSchemaRegionGroupNum|MaxSchemaRegionGroupNum|DataRegionGroupNum|MinDataRegionGroupNum|MaxDataRegionGroupNum| +--------+--------+-----------------------+---------------------+---------------------+--------------------+-----------------------+-----------------------+------------------+---------------------+---------------------+ |root.db1| null| 1| 3| 604800000| 0| 1| 1| 0| 2| 2| |root.db2|86400000| 1| 1| 604800000| 0| 1| 1| 0| 2| 2| |root.db3| null| 1| 1| 604800000| 0| 1| 1| 0| 2| 2| +--------+--------+-----------------------+---------------------+---------------------+--------------------+-----------------------+-----------------------+------------------+---------------------+---------------------+ Total line number = 3 It costs 0.058s 

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

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

四、结语

在这里插入图片描述

Apache IoTDB 时序数据库以其高吞吐、高压缩、树模型、端边云协同等独特优势,正在成为工业场景下的“隐形冠军”。对于技术博主、架构师、数据开发工程师而言,掌握 IoTDB,不仅是技术升级,更是认知升级。本文详细讲述了IoTDB 数据库管理操作增删改查与异构数据库,后续博主会详细的介绍 IoTDB 设备管理以及时间序列管理等

Read more

实战篇:Python开发monogod数据库mcp server看完你就会了

实战篇:Python开发monogod数据库mcp server看完你就会了

原创不易,请关注公众号:【爬虫与大模型开发】,大模型的应用开发之路,整理了大模型在现在的企业级应用的实操及大家需要注意的一些AI开发的知识点!持续输出爬虫与大模型的相关文章。 前言 目前mcp协议是给deepseek大模型插上工具链的翅膀,让大模型不仅拥有超高的推理和文本生成能力,还能具备执行大脑意识的工具能力! 如何开发一个mcp? mcp是一种协议,指的是模型上下文协议 (Model Context Protocol)。 官方结成的mcp https://github.com/modelcontextprotocol/python-sdk mcp库 pip install mcp from mcp.server.fastmcp import FastMCP 我们先来做一个简单的案例 from mcp.server.fastmcp import FastMCP import requests mcp = FastMCP("spider") @mcp.tool() def crawl(

By Ne0inhk
【大模型实战篇】基于Claude MCP协议的智能体落地示例

【大模型实战篇】基于Claude MCP协议的智能体落地示例

1. 背景         之前我们在《MCP(Model Context Protocol) 大模型智能体第一个开源标准协议》一文中,介绍了MCP的概念,虽然了解了其概念、架构、解决的问题,但还缺少具体的示例,来帮助进一步理解整套MCP框架如何落地。         今天我们基于claude的官方例子--获取天气预报【1】,来理解MCP落地的整条链路。 2. MCP示例         该案例是构建一个简单的MCP天气预报服务器,并将其连接到主机,即Claude for Desktop。从基本设置开始,然后逐步发展到更复杂的使用场景。         大模型虽然能力非常强,但其弊端就是内容是过时的,这里的过时不是说内容很旧,只是表达内容具有非实时性。比如没有获取天气预报和严重天气警报的能力。因此我们将使用MCP来解决这一问题。         构建一个服务器,该服务器提供两个工具:获取警报(get-alerts)和获取预报(get-forecast)。然后,将该服务器连接到MCP主机(在本例中为Claude for Desktop)。         首先我们配置下环

By Ne0inhk
AI Agent新范式:FastGPT+MCP协议实现工具增强型智能体构建

AI Agent新范式:FastGPT+MCP协议实现工具增强型智能体构建

AI Agent新范式:FastGPT+MCP协议实现工具增强型智能体构建 作者:高瑞冬 本文目录 * AI Agent新范式:FastGPT+MCP协议实现工具增强型智能体构建 * 一、MCP协议简介 * 二、创建MCP工具集 * 1. 获取MCP服务地址 * 2. 在FastGPT中创建MCP工具集 * 三、测试MCP工具 * 四、AI模型调用MCP工具 * 1. 调用单个工具 * 2. 调用整个工具集 * 五、私有化部署支持 * 1. 环境准备 * 2. 修改docker-compose.yml文件 * 3. 修改FastGPT配置 * 4. 重启服务 * 六、使用MCP-Proxy集成多个MCP服务 * 1. MCP-Proxy简介 * 2. 安装MCP-Proxy * 3. 配置MCP-Proxy * 4. 将MCP-Proxy与FastGPT集成 * 5. 高级配置

By Ne0inhk
基于腾讯云HAI + DeepSeek快速设计自己的个人网页

基于腾讯云HAI + DeepSeek快速设计自己的个人网页

前言:通过结合腾讯云HAI 强大的云端运算能力与DeepSeek先进的 AI技术,本文介绍高效、便捷且低成本的设计一个自己的个人网页。你将了解到如何轻松绕过常见的技术阻碍,在腾讯云HAI平台上快速部署DeepSeek模型,仅需简单几步,就能获取一个包含个人简介、技能特长、项目经历及联系方式等核心板块的响应式网页。 目录 一、DeepSeek模型部署在腾讯云HAI 二、设计个人网页 一、DeepSeek模型部署在腾讯云HAI 把 DeepSeek 模型部署于腾讯云 HAI,用户便能避开官网访问限制,直接依托腾讯云 HAI 的超强算力运行 DeepSeek-R1 等模型。这一举措不仅降低了技术门槛,还缩短了部署时间,削减了成本。尤为关键的是,凭借 HAI 平台灵活且可扩展的特性,用户能够依据自身特定需求定制专属解决方案,进而更出色地适配特定业务场景,满足各类技术要求 。 点击访问腾讯云HAI控制台地址: 算力管理 - 高性能应用服务 - 控制台 腾讯云高性能应用服务HAI已支持DeepSeek-R1模型预装环境和CPU算力,只需简单的几步就能调用DeepSeek - R1

By Ne0inhk