diff --git a/src/zh/UserGuide/Master/Tree/Background-knowledge/Cluster-Concept_apache.md b/src/zh/UserGuide/Master/Tree/Background-knowledge/Cluster-Concept_apache.md
index 8be69d9ee..1d3fdba14 100644
--- a/src/zh/UserGuide/Master/Tree/Background-knowledge/Cluster-Concept_apache.md
+++ b/src/zh/UserGuide/Master/Tree/Background-knowledge/Cluster-Concept_apache.md
@@ -21,34 +21,35 @@
# 常见概念
-## 数据模型相关概念
+## 1 数据模型相关概念
-### 数据模型(sql_dialect)
+### 1.1 数据模型(sql_dialect)
IoTDB 支持两种时序数据模型(SQL语法),管理的对象均为设备和测点树:以层级路径的方式管理数据,一条路径对应一个设备的一个测点表;以关系表的方式管理数据,一张表对应一类设备。
-### 元数据(Schema)
+### 1.2 元数据(Schema)
元数据是数据库的数据模型信息,即树形结构或表结构。包括测点的名称、数据类型等定义。
-### 设备(Device)
+### 1.3 设备(Device)
对应一个实际场景中的物理设备,通常包含多个测点。
-### 测点(Timeseries)
+### 1.4 测点(Timeseries)
又名:物理量、时间序列、时间线、点位、信号量、指标、测量值等。
测点是多个数据点按时间戳递增排列形成的一个时间序列。通常一个测点代表一个采集点位,能够定期采集所在环境的物理量。
-### 编码(Encoding)
+### 1.5 编码(Encoding)
编码是一种压缩技术,将数据以二进制的形式进行表示,可以提高存储效率。IoTDB 支持多种针对不同类型的数据的编码方法,详细信息请查看:[压缩和编码](../Technical-Insider/Encoding-and-Compression.md)。
-### 压缩(Compression)
+### 1.6 压缩(Compression)
IoTDB 在数据编码后,使用压缩技术进一步压缩二进制数据,提升存储效率。IoTDB 支持多种压缩方法,详细信息请查看:[压缩和编码](../Technical-Insider/Encoding-and-Compression.md)。
-## 分布式相关概念
+
+## 2 分布式相关概念
下图展示了一个常见的 IoTDB 3C3D(3 个 ConfigNode、3 个 DataNode)的集群部署模式:
@@ -63,7 +64,7 @@ IoTDB 的集群包括如下常见概念:
下文将对以上概念进行介绍。
-### 节点
+### 2.1 节点
IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),DataNode(数据节点)和 AINode(分析节点),如下所示:
@@ -71,7 +72,7 @@ IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),Data
- DataNode:服务客户端请求,负责数据的存储和计算,如上图中的 DataNode-1,DataNode-2 和 DataNode-3 所示。
- AINode:负责提供机器学习能力,支持注册已训练好的机器学习模型,并通过 SQL 调用模型进行推理,目前已内置自研时序大模型和常见的机器学习算法(如预测与异常检测)。
-### 数据分区
+### 2.2 数据分区
在 IoTDB 中,元数据和数据都被分为小的分区,即 Region,由集群的各个 DataNode 进行管理。
@@ -79,7 +80,7 @@ IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),Data
- DataRegion:数据分区,管理一部分设备的一段时间的数据。不同 DataNode 相同 RegionID 的 DataRegion 互为副本,如上图中 DataRegion-2 拥有两个副本,分别放置于 DataNode-1 和 DataNode-2。
- 具体分区算法可参考:[数据分区](../Technical-Insider/Cluster-data-partitioning.md)
-### 多副本
+### 2.3 多副本
数据和元数据的副本数可配置,不同部署模式下的副本数推荐如下配置,其中多副本时可提供高可用服务。
@@ -89,11 +90,11 @@ IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),Data
| 数据 | data_replication_factor | 1 | 2 |
-## 部署相关概念
+## 3 部署相关概念
IoTDB 有两种运行模式:单机模式、集群模式。
-### 单机模式
+### 3.1 单机模式
IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D;
@@ -101,7 +102,7 @@ IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D;
- **适用场景**:资源有限或对高可用要求不高的场景,例如边缘端服务器。
- **部署方法**:[单机版部署](../Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md)
-### 集群模式
+### 3.2 集群模式
IoTDB 集群实例为 3 个ConfigNode 和不少于 3 个 DataNode,通常为 3 个 DataNode,即3C3D;当部分节点出现故障时,剩余节点仍然能对外提供服务,保证数据库服务的高可用性,且可随节点增加提升数据库性能。
@@ -109,7 +110,7 @@ IoTDB 集群实例为 3 个ConfigNode 和不少于 3 个 DataNode,通常为 3
- **适用场景**:需要提供高可用和可靠性的企业级应用场景。
- **部署方法**:[集群版部署](../Deployment-and-Maintenance/Cluster-Deployment_apache.md)
-### 特点总结
+### 3.3 特点总结
| 维度 | 单机模式 | 集群模式 |
| ------------ | ---------------------------- | ------------------------ |
diff --git a/src/zh/UserGuide/Master/Tree/Background-knowledge/Cluster-Concept_timecho.md b/src/zh/UserGuide/Master/Tree/Background-knowledge/Cluster-Concept_timecho.md
index ad0e513f4..1a4de58e5 100644
--- a/src/zh/UserGuide/Master/Tree/Background-knowledge/Cluster-Concept_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/Background-knowledge/Cluster-Concept_timecho.md
@@ -21,34 +21,34 @@
# 常见概念
-## 数据模型相关概念
+## 1 数据模型相关概念
-### 数据模型(sql_dialect)
+### 1.1 数据模型(sql_dialect)
IoTDB 支持两种时序数据模型(SQL语法),管理的对象均为设备和测点树:以层级路径的方式管理数据,一条路径对应一个设备的一个测点表;以关系表的方式管理数据,一张表对应一类设备。
-### 元数据(Schema)
+### 1.2 元数据(Schema)
元数据是数据库的数据模型信息,即树形结构或表结构。包括测点的名称、数据类型等定义。
-### 设备(Device)
+### 1.3 设备(Device)
对应一个实际场景中的物理设备,通常包含多个测点。
-### 测点(Timeseries)
+### 1.4 测点(Timeseries)
又名:物理量、时间序列、时间线、点位、信号量、指标、测量值等。
测点是多个数据点按时间戳递增排列形成的一个时间序列。通常一个测点代表一个采集点位,能够定期采集所在环境的物理量。
-### 编码(Encoding)
+### 1.5 编码(Encoding)
编码是一种压缩技术,将数据以二进制的形式进行表示,可以提高存储效率。IoTDB 支持多种针对不同类型的数据的编码方法,详细信息请查看:[压缩和编码](../Technical-Insider/Encoding-and-Compression.md)。
-### 压缩(Compression)
+### 1.6 压缩(Compression)
IoTDB 在数据编码后,使用压缩技术进一步压缩二进制数据,提升存储效率。IoTDB 支持多种压缩方法,详细信息请查看:[压缩和编码](../Technical-Insider/Encoding-and-Compression.md)。
-## 分布式相关概念
+## 2 分布式相关概念
下图展示了一个常见的 IoTDB 3C3D(3 个 ConfigNode、3 个 DataNode)的集群部署模式:
@@ -63,7 +63,7 @@ IoTDB 的集群包括如下常见概念:
下文将对以上概念进行介绍。
-### 节点
+### 2.1 节点
IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),DataNode(数据节点)和 AINode(分析节点),如下所示:
@@ -71,7 +71,7 @@ IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),Data
- DataNode:服务客户端请求,负责数据的存储和计算,如上图中的 DataNode-1,DataNode-2 和 DataNode-3 所示。
- AINode:负责提供机器学习能力,支持注册已训练好的机器学习模型,并通过 SQL 调用模型进行推理,目前已内置自研时序大模型和常见的机器学习算法(如预测与异常检测)。
-### 数据分区
+### 2.2 数据分区
在 IoTDB 中,元数据和数据都被分为小的分区,即 Region,由集群的各个 DataNode 进行管理。
@@ -79,7 +79,7 @@ IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),Data
- DataRegion:数据分区,管理一部分设备的一段时间的数据。不同 DataNode 相同 RegionID 的 DataRegion 互为副本,如上图中 DataRegion-2 拥有两个副本,分别放置于 DataNode-1 和 DataNode-2。
- 具体分区算法可参考:[数据分区](../Technical-Insider/Cluster-data-partitioning.md)
-### 多副本
+### 2.3 多副本
数据和元数据的副本数可配置,不同部署模式下的副本数推荐如下配置,其中多副本时可提供高可用服务。
@@ -89,11 +89,11 @@ IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),Data
| 数据 | data_replication_factor | 1 | 2 |
-## 部署相关概念
+## 3 部署相关概念
IoTDB 有三种运行模式:单机模式、集群模式和双活模式。
-### 单机模式
+### 3.1 单机模式
IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D;
@@ -101,7 +101,7 @@ IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D;
- **适用场景**:资源有限或对高可用要求不高的场景,例如边缘端服务器。
- **部署方法**:[单机版部署](../Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md)
-### 双活模式
+### 3.2 双活模式
双活版部署为 TimechoDB 企业版功能,是指两个独立的实例进行双向同步,能同时对外提供服务。当一台停机重启后,另一个实例会将缺失数据断点续传。
@@ -111,7 +111,7 @@ IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D;
- **适用场景**:资源有限(仅有两台服务器),但希望获得高可用能力。
- **部署方法**:[双活版部署](../Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md)
-### 集群模式
+### 3.3 集群模式
IoTDB 集群实例为 3 个ConfigNode 和不少于 3 个 DataNode,通常为 3 个 DataNode,即3C3D;当部分节点出现故障时,剩余节点仍然能对外提供服务,保证数据库服务的高可用性,且可随节点增加提升数据库性能。
@@ -119,7 +119,7 @@ IoTDB 集群实例为 3 个ConfigNode 和不少于 3 个 DataNode,通常为 3
- **适用场景**:需要提供高可用和可靠性的企业级应用场景。
- **部署方法**:[集群版部署](../Deployment-and-Maintenance/Cluster-Deployment_timecho.md)
-### 特点总结
+### 3.4 特点总结
| 维度 | 单机模式 | 双活模式 | 集群模式 |
| ------------ | ---------------------------- | ------------------------ | ------------------------ |
diff --git a/src/zh/UserGuide/Master/Tree/Background-knowledge/Data-Model-and-Terminology.md b/src/zh/UserGuide/Master/Tree/Background-knowledge/Data-Model-and-Terminology.md
index de2256cf7..8a9cf537f 100644
--- a/src/zh/UserGuide/Master/Tree/Background-knowledge/Data-Model-and-Terminology.md
+++ b/src/zh/UserGuide/Master/Tree/Background-knowledge/Data-Model-and-Terminology.md
@@ -31,7 +31,7 @@
IoTDB 模型结构涉及的基本概念在下文将做详细叙述。
-## 数据库(Database)
+## 1 数据库(Database)
用户可以将任意前缀路径设置成数据库。如有 4 条时间序列`root.ln.wf01.wt01.status`, `root.ln.wf01.wt01.temperature`, `root.ln.wf02.wt02.hardware`, `root.ln.wf02.wt02.status`,路径`root.ln`下的两个实体 `wf01`, `wf02`可能属于同一个业主,或者同一个制造商,这时候就可以将前缀路径`root.ln`指定为一个数据库。未来`root.ln`下增加了新的实体,也将属于该数据库。
@@ -51,26 +51,26 @@ Database 节点名只支持中英文字符、数字和下划线的组合。例
**无模式写入**:可以在未定义元数据时, 通过 insert 语句直接写入数据,数据库中将自动识别并注册所需的元数据,实现自动建模。
-## 设备(Device)
+## 2 设备(Device)
**一个物理设备**,也称实体(Entity),是在实际场景中拥有物理量的设备或装置。在 IoTDB 当中,所有的物理量都有其对应的归属实体。实体无需手动创建,默认为倒数第二层。实体是管理的一组时间序列的组合,可以是一个物理设备、测量装置、传感器集合等。
-## 物理量(Measurement)
+## 3 物理量(Measurement)
**物理量**,也称工况或字段(field),是在实际场景中检测装置所记录的测量信息,且可以按一定规律变换成为电信号或其他所需形式的信息输出并发送给 IoTDB。在 IoTDB 当中,存储的所有数据及路径,都是以物理量为单位进行组织。
-## 时间序列
+## 4 时间序列
-### 时间戳 (Timestamp)
+### 4.1 时间戳 (Timestamp)
时间戳是一个数据到来的时间点,其中包括绝对时间戳和相对时间戳,详细描述参见 [数据类型文档](../Background-knowledge/Data-Type.md)。
-### 数据点(Data Point)
+### 4.2 数据点(Data Point)
**一个“时间戳-值”对**。
-### 时间序列(Timeseries)
+### 4.3 时间序列(Timeseries)
**一个物理实体的某个物理量在时间轴上的记录**,是数据点的序列。
@@ -80,7 +80,7 @@ Database 节点名只支持中英文字符、数字和下划线的组合。例
例如,ln 电力集团、wf01 风电场的实体 wt01 有名为 status 的物理量,则它的时间序列可以表示为:`root.ln.wf01.wt01.status`。
-### 对齐时间序列(Aligned Timeseries)
+### 4.4 对齐时间序列(Aligned Timeseries)
在实际应用中,存在某些实体的多个物理量**同时采样**,形成一组时间列相同的时间序列,这样的一组时间序列在Apache IoTDB中可以建模为对齐时间序列。
@@ -98,7 +98,7 @@ Database 节点名只支持中英文字符、数字和下划线的组合。例
在后续数据定义语言、数据操作语言和 Java 原生接口章节,将对涉及到对齐时间序列的各种操作进行逐一介绍。
-## 路径(Path)
+## 5 路径(Path)
路径(`path`)是指符合以下约束的表达式:
@@ -128,11 +128,11 @@ wildcard
* ['\u2E80'..'\u9FFF'] (UNICODE 中文字符)
* 特别地,如果系统在 Windows 系统上部署,那么 database 路径结点名是大小写不敏感的。例如,同时创建`root.ln` 和 `root.LN` 是不被允许的。
-### 特殊字符(反引号)
+### 5.1 特殊字符(反引号)
-如果需要在路径结点名中用特殊字符,可以用反引号引用路径结点名,具体使用方法可以参考[反引号](../Reference/Syntax-Rule.md#反引号)。
+如果需要在路径结点名中用特殊字符,可以用反引号引用路径结点名,具体使用方法可以参考[反引号](../SQL-Manual/Syntax-Rule.md#反引号)。
-## 路径模式(Path Pattern)
+## 6 路径模式(Path Pattern)
为了使得在表达多个时间序列的时候更加方便快捷,IoTDB 为用户提供带通配符`*`或`**`的路径。用户可以利用两种通配符构造出期望的路径模式。通配符可以出现在路径中的任何层。
diff --git a/src/zh/UserGuide/Master/Tree/Background-knowledge/Data-Type.md b/src/zh/UserGuide/Master/Tree/Background-knowledge/Data-Type.md
index fc9a12c7c..3ed23a63e 100644
--- a/src/zh/UserGuide/Master/Tree/Background-knowledge/Data-Type.md
+++ b/src/zh/UserGuide/Master/Tree/Background-knowledge/Data-Type.md
@@ -21,7 +21,7 @@
# 数据类型
-## 基本数据类型
+## 1 基本数据类型
IoTDB 支持以下十种数据类型:
@@ -38,7 +38,7 @@ IoTDB 支持以下十种数据类型:
其中,STRING 和 TEXT 类型的区别在于,STRING 类型具有更多的统计信息,能够用于优化值过滤查询。TEXT 类型适合用于存储长字符串。
-### 浮点数精度配置
+### 1.1 浮点数精度配置
对于 **FLOAT** 与 **DOUBLE** 类型的序列,如果编码方式采用 `RLE`或 `TS_2DIFF`,可以在创建序列时通过 `MAX_POINT_NUMBER` 属性指定浮点数的小数点后位数。
@@ -49,7 +49,7 @@ CREATE TIMESERIES root.vehicle.d0.s0 WITH DATATYPE=FLOAT, ENCODING=RLE, 'MAX_POI
若不指定,系统会按照配置文件 `iotdb-system.properties` 中的 [float_precision](../Reference/Common-Config-Manual.md) 项配置(默认为 2 位)。
-### 数据类型兼容性
+### 1.2 数据类型兼容性
当写入数据的类型与序列注册的数据类型不一致时,
- 如果序列数据类型不兼容写入数据类型,系统会给出错误提示。
@@ -70,11 +70,11 @@ CREATE TIMESERIES root.vehicle.d0.s0 WITH DATATYPE=FLOAT, ENCODING=RLE, 'MAX_POI
| TIMESTAMP | INT32 INT64 TIMESTAMP |
| DATE | DATE |
-## 时间戳类型
+## 2 时间戳类型
时间戳是一个数据到来的时间点,其中包括绝对时间戳和相对时间戳。
-### 绝对时间戳
+### 2.1 绝对时间戳
IOTDB 中绝对时间戳分为二种,一种为 LONG 类型,一种为 DATETIME 类型(包含 DATETIME-INPUT, DATETIME-DISPLAY 两个小类)。
@@ -146,7 +146,7 @@ IoTDB 在显示时间戳时可以支持 LONG 类型以及 DATETIME-DISPLAY 类
-### 相对时间戳
+### 2.2 相对时间戳
相对时间是指与服务器时间```now()```和```DATETIME```类型时间相差一定时间间隔的时间。
形式化定义为:
diff --git a/src/zh/UserGuide/Master/Tree/Background-knowledge/Navigating_Time_Series_Data.md b/src/zh/UserGuide/Master/Tree/Background-knowledge/Navigating_Time_Series_Data.md
index 35f789271..65d170c0b 100644
--- a/src/zh/UserGuide/Master/Tree/Background-knowledge/Navigating_Time_Series_Data.md
+++ b/src/zh/UserGuide/Master/Tree/Background-knowledge/Navigating_Time_Series_Data.md
@@ -20,7 +20,7 @@
-->
# 走进时序数据
-## 什么叫时序数据?
+## 1 什么叫时序数据?
万物互联的今天,物联网场景、工业场景等各类场景都在进行数字化转型,人们通过在各类设备上安装传感器对设备的各类状态进行采集。如电机采集电压、电流,风机的叶片转速、角速度、发电功率;车辆采集经纬度、速度、油耗;桥梁的振动频率、挠度、位移量等。传感器的数据采集,已经渗透在各个行业中。
@@ -34,20 +34,20 @@
传感器产生的海量时序数据是各行各业数字化转型的基础,因此我们对时序数据的模型梳理主要围绕设备、传感器展开。
-## 时序数据中的关键概念有哪些?
+## 2 时序数据中的关键概念有哪些?
时序数据中主要涉及的概念由下至上可分为:数据点、测点、设备。

-### 数据点
+### 2.1 数据点
- 定义:由一个时间戳和一个数值组成,其中时间戳为 long 类型,数值可以为 BOOLEAN、FLOAT、INT32 等各种类型。
- 示例:如上图中表格形式的时间序列的一行,或图形形式的时间序列的一个点,就是一个数据点。

-### 测点
+### 2.2 测点
- 定义:是多个数据点按时间戳递增排列形成的一个时间序列。通常一个测点代表一个采集点位,能够定期采集所在环境的物理量。
- 又名:物理量、时间序列、时间线、信号量、指标、测量值等
@@ -57,7 +57,7 @@
- 车联网场景:油量、车速、经度、维度
- 工厂场景:温度、湿度
-### 设备
+### 2.3 设备
- 定义:对应一个实际场景中的物理设备,通常是一组测点的集合,由一到多个标签定位标识
- 示例
diff --git a/src/zh/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_apache.md b/src/zh/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_apache.md
index 594389b1b..1f4b0e793 100644
--- a/src/zh/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_apache.md
+++ b/src/zh/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_apache.md
@@ -21,11 +21,11 @@
# 测点管理
-## 数据库管理
+## 1 数据库管理
数据库(Database)可以被视为关系数据库中的Database。
-### 创建数据库
+### 1.1 创建数据库
我们可以根据存储模型建立相应的数据库。如下所示:
@@ -45,7 +45,7 @@ Database 节点名只支持中英文字符、数字、下划线、英文句号
还需注意,如果在 Windows 系统上部署,database 名是大小写不敏感的。例如同时创建`root.ln` 和 `root.LN` 是不被允许的。
-### 查看数据库
+### 1.2 查看数据库
在 database 创建后,我们可以使用 [SHOW DATABASES](../SQL-Manual/SQL-Manual.md#查看数据库) 语句和 [SHOW DATABASES \](../SQL-Manual/SQL-Manual.md#查看数据库) 来查看 database,SQL 语句如下所示:
@@ -68,7 +68,7 @@ Total line number = 2
It costs 0.060s
```
-### 删除数据库
+### 1.3 删除数据库
用户可以使用`DELETE DATABASE `语句删除该路径模式匹配的所有的数据库。在删除的过程中,需要注意的是数据库的数据也会被删除。
@@ -79,7 +79,7 @@ IoTDB > DELETE DATABASE root.sgcc
IoTDB > DELETE DATABASE root.**
```
-### 统计数据库数量
+### 1.4 统计数据库数量
用户可以使用`COUNT DATABASES `语句统计数据库的数量,允许指定`PathPattern` 用来统计匹配该`PathPattern` 的数据库的数量
@@ -139,7 +139,7 @@ Total line number = 1
It costs 0.002s
```
-### 数据存活时间(TTL)
+### 1.5 数据存活时间(TTL)
IoTDB 支持对 device 级别设置数据存活时间(TTL),这使得 IoTDB 可以定期、自动地删除一定时间之前的数据。合理使用 TTL
可以帮助您控制 IoTDB 占用的总磁盘空间以避免出现磁盘写满等异常。并且,随着文件数量的增多,查询性能往往随之下降,
@@ -250,7 +250,7 @@ IoTDB> show devices
所有设备都一定会有 TTL,即不可能是 null。INF 表示无穷大。
-### 设置异构数据库(进阶操作)
+### 1.6 设置异构数据库(进阶操作)
在熟悉 IoTDB 元数据建模的前提下,用户可以在 IoTDB 中设置异构的数据库,以便应对不同的生产需求。
@@ -341,7 +341,7 @@ It costs 0.058s
+ 数据库允许拥有的最大 DataRegionGroup 数量
-## 设备模板管理
+## 2 设备模板管理
IoTDB 支持设备模板功能,实现同类型不同实体的物理量元数据共享,减少元数据内存占用,同时简化同类型实体的管理。
@@ -350,7 +350,7 @@ IoTDB 支持设备模板功能,实现同类型不同实体的物理量元数

-### 创建设备模板
+### 2.1 创建设备模板
创建设备模板的 SQL 语法如下:
@@ -372,7 +372,7 @@ IoTDB> create device template t2 aligned (lat FLOAT encoding=Gorilla, lon FLOAT
其中,物理量 `lat` 和 `lon` 是对齐的。
-### 挂载设备模板
+### 2.2 挂载设备模板
元数据模板在创建后,需执行挂载操作,方可用于相应路径下的序列创建与数据写入。
@@ -388,7 +388,7 @@ IoTDB> create device template t2 aligned (lat FLOAT encoding=Gorilla, lon FLOAT
IoTDB> set device template t1 to root.sg1.d1
```
-### 激活设备模板
+### 2.3 激活设备模板
挂载好设备模板后,且系统开启自动注册序列功能的情况下,即可直接进行数据的写入。例如 database 为 root.sg1,模板 t1 被挂载到了节点 root.sg1.d1,那么可直接向时间序列(如 root.sg1.d1.temperature 和 root.sg1.d1.status)写入时间序列数据,该时间序列已可被当作正常创建的序列使用。
@@ -436,7 +436,7 @@ show devices root.sg1.**
+---------------+---------+---------+
```
-### 查看设备模板
+### 2.4 查看设备模板
- 查看所有设备模板
@@ -504,7 +504,7 @@ IoTDB> show paths using device template t1
+-----------+
```
-### 解除设备模板
+### 2.5 解除设备模板
若需删除模板表示的某一组时间序列,可采用解除模板操作,SQL语句如下所示:
@@ -532,7 +532,7 @@ IoTDB> deactivate device template t1 from root.sg1.*, root.sg2.*
若解除命令不指定模板名称,则会将给定路径涉及的所有模板使用情况均解除。
-### 卸载设备模板
+### 2.6 卸载设备模板
卸载设备模板的 SQL 语句如下所示:
@@ -542,7 +542,7 @@ IoTDB> unset device template t1 from root.sg1.d1
**注意**:不支持卸载仍处于激活状态的模板,需保证执行卸载操作前解除对该模板的所有使用,即删除所有该模板表示的序列。
-### 删除设备模板
+### 2.7 删除设备模板
删除设备模板的 SQL 语句如下所示:
@@ -552,7 +552,7 @@ IoTDB> drop device template t1
**注意**:不支持删除已经挂载的模板,需在删除操作前保证该模板卸载成功。
-### 修改设备模板
+### 2.8 修改设备模板
在需要新增物理量的场景中,可以通过修改设备模板来给所有已激活该模板的设备新增物理量。
@@ -565,9 +565,9 @@ IoTDB> alter device template t1 add (speed FLOAT encoding=RLE, FLOAT TEXT encodi
**向已挂载模板的路径下的设备中写入数据,若写入请求中的物理量不在模板中,将自动扩展模板。**
-## 时间序列管理
+## 3 时间序列管理
-### 创建时间序列
+### 3.1 创建时间序列
根据建立的数据模型,我们可以分别在两个数据库中创建相应的时间序列。创建时间序列的 SQL 语句如下所示:
@@ -597,9 +597,9 @@ IoTDB> create timeseries root.ln.wf02.wt02.status WITH DATATYPE=BOOLEAN, ENCODIN
error: encoding TS_2DIFF does not support BOOLEAN
```
-详细的数据类型与编码方式的对应列表请参见 [编码方式](../Basic-Concept/Encoding-and-Compression.md)。
+详细的数据类型与编码方式的对应列表请参见 [编码方式](../Technical-Insider/Encoding-and-Compression.md)。
-### 创建对齐时间序列
+### 3.2 创建对齐时间序列
创建一组对齐时间序列的SQL语句如下所示:
@@ -611,7 +611,7 @@ IoTDB> CREATE ALIGNED TIMESERIES root.ln.wf01.GPS(latitude FLOAT encoding=PLAIN
对齐的时间序列也支持设置别名、标签、属性。
-### 删除时间序列
+### 3.3 删除时间序列
我们可以使用`(DELETE | DROP) TimeSeries `语句来删除我们之前创建的时间序列。SQL 语句如下所示:
@@ -622,7 +622,7 @@ IoTDB> delete timeseries root.ln.wf02.*
IoTDB> drop timeseries root.ln.wf02.*
```
-### 查看时间序列
+### 3.4 查看时间序列
* SHOW LATEST? TIMESERIES pathPattern? timeseriesWhereClause? limitClause?
@@ -734,7 +734,7 @@ It costs 0.016s
需要注意的是,当查询路径不存在时,系统会返回 0 条时间序列。
-### 统计时间序列总数
+### 3.5 统计时间序列总数
IoTDB 支持使用`COUNT TIMESERIES`来统计一条路径中的时间序列个数。SQL 语句如下所示:
@@ -821,7 +821,7 @@ It costs 0.002s
> 注意:时间序列的路径只是过滤条件,与 level 的定义无关。
-### 标签点管理
+### 3.6 标签点管理
我们可以在创建时间序列的时候,为它添加别名和额外的标签和属性信息。
@@ -984,9 +984,9 @@ IoTDB> show timeseries where TAGS(tag1)='v1'
上述对时间序列标签、属性的更新等操作都支持。
-## 路径查询
+## 4 路径查询
-### 查看路径的所有子路径
+### 4.1 查看路径的所有子路径
```
SHOW CHILD PATHS pathPattern
@@ -1022,7 +1022,7 @@ It costs 0.002s
+---------------+
```
-### 查看路径的下一级节点
+### 4.2 查看路径的下一级节点
```
SHOW CHILD NODES pathPattern
@@ -1053,7 +1053,7 @@ SHOW CHILD NODES pathPattern
+------------+
```
-### 统计节点数
+### 4.3 统计节点数
IoTDB 支持使用`COUNT NODES LEVEL=`来统计当前 Metadata
树下满足某路径模式的路径中指定层级的节点个数。这条语句可以用来统计带有特定采样点的设备数。例如:
@@ -1103,7 +1103,7 @@ It costs 0.002s
> 注意:时间序列的路径只是过滤条件,与 level 的定义无关。
-### 查看设备
+### 4.4 查看设备
* SHOW DEVICES pathPattern? (WITH DATABASE)? devicesWhereClause? limitClause?
@@ -1215,7 +1215,7 @@ Total line number = 2
It costs 0.001s
```
-### 统计设备数量
+### 4.5 统计设备数量
* COUNT DEVICES \
diff --git a/src/zh/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_timecho.md b/src/zh/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_timecho.md
index a20a65bb4..7ccfffc77 100644
--- a/src/zh/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_timecho.md
@@ -21,11 +21,11 @@
# 测点管理
-## 数据库管理
+## 1 数据库管理
数据库(Database)可以被视为关系数据库中的Database。
-### 创建数据库
+### 1.1 创建数据库
我们可以根据存储模型建立相应的数据库。如下所示:
@@ -45,7 +45,7 @@ Database 节点名只支持中英文字符、数字、下划线、英文句号
还需注意,如果在 Windows 系统上部署,database 名是大小写不敏感的。例如同时创建`root.ln` 和 `root.LN` 是不被允许的。
-### 查看数据库
+### 1.2 查看数据库
在 database 创建后,我们可以使用 [SHOW DATABASES](../SQL-Manual/SQL-Manual.md#查看数据库) 语句和 [SHOW DATABASES \](../SQL-Manual/SQL-Manual.md#查看数据库) 来查看 database,SQL 语句如下所示:
@@ -68,7 +68,7 @@ Total line number = 2
It costs 0.060s
```
-### 删除数据库
+### 1.3 删除数据库
用户可以使用`DELETE DATABASE `语句删除该路径模式匹配的所有的数据库。在删除的过程中,需要注意的是数据库的数据也会被删除。
@@ -79,7 +79,7 @@ IoTDB > DELETE DATABASE root.sgcc
IoTDB > DELETE DATABASE root.**
```
-### 统计数据库数量
+### 1.4 统计数据库数量
用户可以使用`COUNT DATABASES `语句统计数据库的数量,允许指定`PathPattern` 用来统计匹配该`PathPattern` 的数据库的数量
@@ -139,7 +139,7 @@ Total line number = 1
It costs 0.002s
```
-### 数据存活时间(TTL)
+### 1.5 数据存活时间(TTL)
IoTDB 支持对 device 级别设置数据存活时间(TTL),这使得 IoTDB 可以定期、自动地删除一定时间之前的数据。合理使用 TTL
可以帮助您控制 IoTDB 占用的总磁盘空间以避免出现磁盘写满等异常。并且,随着文件数量的增多,查询性能往往随之下降,
@@ -250,7 +250,7 @@ IoTDB> show devices
所有设备都一定会有 TTL,即不可能是 null。INF 表示无穷大。
-### 设置异构数据库(进阶操作)
+### 1.6 设置异构数据库(进阶操作)
在熟悉 IoTDB 元数据建模的前提下,用户可以在 IoTDB 中设置异构的数据库,以便应对不同的生产需求。
@@ -341,7 +341,7 @@ It costs 0.058s
+ 数据库允许拥有的最大 DataRegionGroup 数量
-## 设备模板管理
+## 2 设备模板管理
IoTDB 支持设备模板功能,实现同类型不同实体的物理量元数据共享,减少元数据内存占用,同时简化同类型实体的管理。
@@ -350,7 +350,7 @@ IoTDB 支持设备模板功能,实现同类型不同实体的物理量元数

-### 创建设备模板
+### 2.1 创建设备模板
创建设备模板的 SQL 语法如下:
@@ -372,7 +372,7 @@ IoTDB> create device template t2 aligned (lat FLOAT encoding=Gorilla, lon FLOAT
其中,物理量 `lat` 和 `lon` 是对齐的。
-### 挂载设备模板
+### 2.2 挂载设备模板
元数据模板在创建后,需执行挂载操作,方可用于相应路径下的序列创建与数据写入。
@@ -388,7 +388,7 @@ IoTDB> create device template t2 aligned (lat FLOAT encoding=Gorilla, lon FLOAT
IoTDB> set device template t1 to root.sg1.d1
```
-### 激活设备模板
+### 2.3 激活设备模板
挂载好设备模板后,且系统开启自动注册序列功能的情况下,即可直接进行数据的写入。例如 database 为 root.sg1,模板 t1 被挂载到了节点 root.sg1.d1,那么可直接向时间序列(如 root.sg1.d1.temperature 和 root.sg1.d1.status)写入时间序列数据,该时间序列已可被当作正常创建的序列使用。
@@ -436,7 +436,7 @@ show devices root.sg1.**
+---------------+---------+---------+
```
-### 查看设备模板
+### 2.4 查看设备模板
- 查看所有设备模板
@@ -504,7 +504,7 @@ IoTDB> show paths using device template t1
+-----------+
```
-### 解除设备模板
+### 2.5 解除设备模板
若需删除模板表示的某一组时间序列,可采用解除模板操作,SQL语句如下所示:
@@ -532,7 +532,7 @@ IoTDB> deactivate device template t1 from root.sg1.*, root.sg2.*
若解除命令不指定模板名称,则会将给定路径涉及的所有模板使用情况均解除。
-### 卸载设备模板
+### 2.6 卸载设备模板
卸载设备模板的 SQL 语句如下所示:
@@ -542,7 +542,7 @@ IoTDB> unset device template t1 from root.sg1.d1
**注意**:不支持卸载仍处于激活状态的模板,需保证执行卸载操作前解除对该模板的所有使用,即删除所有该模板表示的序列。
-### 删除设备模板
+### 2.7 删除设备模板
删除设备模板的 SQL 语句如下所示:
@@ -552,7 +552,7 @@ IoTDB> drop device template t1
**注意**:不支持删除已经挂载的模板,需在删除操作前保证该模板卸载成功。
-### 修改设备模板
+### 2.8 修改设备模板
在需要新增物理量的场景中,可以通过修改设备模板来给所有已激活该模板的设备新增物理量。
@@ -565,9 +565,9 @@ IoTDB> alter device template t1 add (speed FLOAT encoding=RLE, FLOAT TEXT encodi
**向已挂载模板的路径下的设备中写入数据,若写入请求中的物理量不在模板中,将自动扩展模板。**
-## 时间序列管理
+## 3 时间序列管理
-### 创建时间序列
+### 3.1 创建时间序列
根据建立的数据模型,我们可以分别在两个数据库中创建相应的时间序列。创建时间序列的 SQL 语句如下所示:
@@ -597,9 +597,9 @@ IoTDB> create timeseries root.ln.wf02.wt02.status WITH DATATYPE=BOOLEAN, ENCODIN
error: encoding TS_2DIFF does not support BOOLEAN
```
-详细的数据类型与编码方式的对应列表请参见 [编码方式](../Basic-Concept/Encoding-and-Compression.md)。
+详细的数据类型与编码方式的对应列表请参见 [编码方式](../Technical-Insider/Encoding-and-Compression.md)。
-### 创建对齐时间序列
+### 3.2 创建对齐时间序列
创建一组对齐时间序列的SQL语句如下所示:
@@ -611,7 +611,7 @@ IoTDB> CREATE ALIGNED TIMESERIES root.ln.wf01.GPS(latitude FLOAT encoding=PLAIN
对齐的时间序列也支持设置别名、标签、属性。
-### 删除时间序列
+### 3.3 删除时间序列
我们可以使用`(DELETE | DROP) TimeSeries `语句来删除我们之前创建的时间序列。SQL 语句如下所示:
@@ -622,7 +622,7 @@ IoTDB> delete timeseries root.ln.wf02.*
IoTDB> drop timeseries root.ln.wf02.*
```
-### 查看时间序列
+### 3.4 查看时间序列
* SHOW LATEST? TIMESERIES pathPattern? timeseriesWhereClause? limitClause?
@@ -734,7 +734,7 @@ It costs 0.016s
需要注意的是,当查询路径不存在时,系统会返回 0 条时间序列。
-### 统计时间序列总数
+### 3.5 统计时间序列总数
IoTDB 支持使用`COUNT TIMESERIES`来统计一条路径中的时间序列个数。SQL 语句如下所示:
@@ -821,7 +821,7 @@ It costs 0.002s
> 注意:时间序列的路径只是过滤条件,与 level 的定义无关。
-### 活跃时间序列查询
+### 3.6 活跃时间序列查询
我们在原有的时间序列查询和统计上添加新的WHERE时间过滤条件,可以得到在指定时间范围中存在数据的时间序列。
需要注意的是, 在带有时间过滤的元数据查询中并不考虑视图的存在,只考虑TsFile中实际存储的时间序列。
@@ -862,7 +862,7 @@ IoTDB> count timeseries where time >= 15000 and time < 16000;
```
关于活跃时间序列的定义,能通过正常查询查出来的数据就是活跃数据,也就是说插入但被删除的时间序列不在考虑范围内。
-### 标签点管理
+### 3.7 标签点管理
我们可以在创建时间序列的时候,为它添加别名和额外的标签和属性信息。
@@ -1025,9 +1025,9 @@ IoTDB> show timeseries where TAGS(tag1)='v1'
上述对时间序列标签、属性的更新等操作都支持。
-## 路径查询
+## 4 路径查询
-### 查看路径的所有子路径
+### 4.1 查看路径的所有子路径
```
SHOW CHILD PATHS pathPattern
@@ -1063,7 +1063,7 @@ It costs 0.002s
+---------------+
```
-### 查看路径的下一级节点
+### 4.2 查看路径的下一级节点
```
SHOW CHILD NODES pathPattern
@@ -1094,7 +1094,7 @@ SHOW CHILD NODES pathPattern
+------------+
```
-### 统计节点数
+### 4.3 统计节点数
IoTDB 支持使用`COUNT NODES LEVEL=`来统计当前 Metadata
树下满足某路径模式的路径中指定层级的节点个数。这条语句可以用来统计带有特定采样点的设备数。例如:
@@ -1144,7 +1144,7 @@ It costs 0.002s
> 注意:时间序列的路径只是过滤条件,与 level 的定义无关。
-### 查看设备
+### 4.4 查看设备
* SHOW DEVICES pathPattern? (WITH DATABASE)? devicesWhereClause? limitClause?
@@ -1256,7 +1256,7 @@ Total line number = 2
It costs 0.001s
```
-### 统计设备数量
+### 4.5 统计设备数量
* COUNT DEVICES \
@@ -1301,7 +1301,7 @@ Total line number = 1
It costs 0.004s
```
-### 活跃设备查询
+### 4.6 活跃设备查询
和活跃时间序列一样,我们可以在查看和统计设备的基础上添加时间过滤条件来查询在某段时间内存在数据的活跃设备。这里活跃的定义与活跃时间序列相同,使用样例如下:
```
IoTDB> insert into root.sg.data(timestamp, s1,s2) values(15000, 1, 2);
diff --git a/src/zh/UserGuide/Master/Tree/Basic-Concept/Query-Data.md b/src/zh/UserGuide/Master/Tree/Basic-Concept/Query-Data.md
index 3ba87782e..5c0684e2b 100644
--- a/src/zh/UserGuide/Master/Tree/Basic-Concept/Query-Data.md
+++ b/src/zh/UserGuide/Master/Tree/Basic-Concept/Query-Data.md
@@ -20,11 +20,11 @@
-->
# 数据查询
-## 概述
+## 1 概述
在 IoTDB 中,使用 `SELECT` 语句从一条或多条时间序列中查询数据,IoTDB 不区分历史数据和实时数据,用户可以用统一的sql语法进行查询,通过 `WHERE` 子句中的时间过滤谓词决定查询的时间范围。
-### 语法定义
+### 1.1 语法定义
```sql
SELECT [LAST] selectExpr [, selectExpr] ...
@@ -48,7 +48,7 @@ SELECT [LAST] selectExpr [, selectExpr] ...
[ALIGN BY {TIME | DEVICE}]
```
-### 语法说明
+### 1.2 语法说明
#### `SELECT` 子句
@@ -108,7 +108,7 @@ SELECT [LAST] selectExpr [, selectExpr] ...
- 查询结果集默认**按时间对齐**,包含一列时间列和若干个值列,每一行数据各列的时间戳相同。
- 除按时间对齐之外,还支持**按设备对齐**,查询结果集包含一列时间列、一列设备列和若干个值列。
-### SQL 示例
+### 1.3 SQL 示例
IoTDB 支持即席(Ad_hoc)查询,即支持用户在使用系统时,自定义查询条件,根据自己当时的需求写出查询sql并执行。用户可以通过上述介绍的子句,进行组合,指定任意合法的过滤条件来满足当时的查询需求,下面介绍了一些查询的示例:
@@ -267,7 +267,7 @@ Total line number = 10
It costs 0.016s
```
-### 查询执行接口
+### 1.4 查询执行接口
在 IoTDB 中,提供两种方式执行数据查询操作:
- 使用 IoTDB-SQL 执行查询。
@@ -333,7 +333,7 @@ SessionDataSet executeAggregationQuery(
long slidingStep);
```
-## 选择表达式(SELECT FROM 子句)
+## 2 选择表达式(SELECT FROM 子句)
`SELECT` 子句指定查询的输出,由若干个 `selectExpr` 组成。 每个 `selectExpr` 定义了查询结果中的一列或多列。
@@ -348,7 +348,7 @@ SessionDataSet executeAggregationQuery(
- 时间序列生成函数(包括内置函数和用户自定义函数)
- 常量
-### 使用别名
+### 2.1 使用别名
由于 IoTDB 独特的数据模型,在每个传感器前都附带有设备等诸多额外信息。有时,我们只针对某个具体设备查询,而这些前缀信息频繁显示造成了冗余,影响了结果集的显示与分析。
@@ -366,11 +366,11 @@ select s1 as temperature, s2 as speed from root.ln.wf01.wt01;
| ---- | ----------- | ----- |
| ... | ... | ... |
-### 运算符
+### 2.2 运算符
IoTDB 中支持的运算符列表见文档 [运算符和函数](../SQL-Manual/Operator-and-Expression.md)。
-### 函数
+### 2.3 函数
#### 聚合函数
@@ -402,7 +402,7 @@ IoTDB 中支持的内置函数列表见文档 [运算符和函数](../SQL-Manual
IoTDB 支持通过用户自定义函数(点击查看: [用户自定义函数](../User-Manual/Database-Programming.md#用户自定义函数) )能力进行函数功能扩展。
-### 嵌套表达式举例
+### 2.4 嵌套表达式举例
IoTDB 支持嵌套表达式,由于聚合查询和时间序列查询不能在一条查询语句中同时出现,我们将支持的嵌套表达式分为时间序列查询嵌套表达式和聚合查询嵌套表达式两类。
@@ -599,7 +599,7 @@ Total line number = 8
It costs 0.012s
```
-### 最新点查询
+### 2.5 最新点查询
最新点查询是时序数据库 Apache IoTDB 中提供的一种特殊查询。它返回指定时间序列中时间戳最大的数据点,即一条序列的最新状态。
@@ -680,7 +680,7 @@ Total line number = 2
It costs 0.002s
```
-## 查询过滤条件(WHERE 子句)
+## 3 查询过滤条件(WHERE 子句)
`WHERE` 子句指定了对数据行的筛选条件,由一个 `whereCondition` 组成。
@@ -689,9 +689,9 @@ It costs 0.002s
根据过滤条件的不同,可以分为时间过滤条件和值过滤条件。时间过滤条件和值过滤条件可以混合使用。
-### 时间过滤条件
+### 3.1 时间过滤条件
-使用时间过滤条件可以筛选特定时间范围的数据。对于时间戳支持的格式,请参考 [时间戳类型](../Basic-Concept/Data-Type.md) 。
+使用时间过滤条件可以筛选特定时间范围的数据。对于时间戳支持的格式,请参考 [时间戳类型](../Background-knowledge/Data-Type.md) 。
示例如下:
@@ -715,7 +715,7 @@ It costs 0.002s
注:在上述示例中,`time` 也可写做 `timestamp`。
-### 值过滤条件
+### 3.2 值过滤条件
使用值过滤条件可以筛选数据值满足特定条件的数据。
**允许**使用 select 子句中未选择的时间序列作为值过滤条件。
@@ -766,7 +766,7 @@ It costs 0.002s
select code from root.sg1.d1 where temperature is not null;
````
-### 模糊查询
+### 3.3 模糊查询
对于 TEXT 类型的数据,支持使用 `Like` 和 `Regexp` 运算符对数据进行模糊匹配
@@ -845,14 +845,14 @@ Total line number = 2
It costs 0.002s
```
-## 分段分组聚合(GROUP BY 子句)
+## 4 分段分组聚合(GROUP BY 子句)
IoTDB支持通过`GROUP BY`子句对序列进行分段或者分组聚合。
分段聚合是指按照时间维度,针对同时间序列中不同数据点之间的时间关系,对数据在行的方向进行分段,每个段得到一个聚合值。目前支持**时间区间分段**、**差值分段**、**条件分段**、**会话分段**和**点数分段**,未来将支持更多分段方式。
分组聚合是指针对不同时间序列,在时间序列的潜在业务属性上分组,每个组包含若干条时间序列,每个组得到一个聚合值。支持**按路径层级分组**和**按序列标签分组**两种分组方式。
-### 分段聚合
+### 4.1 分段聚合
#### 时间区间分段聚合
@@ -1419,7 +1419,7 @@ select count(charging_stauts), first_value(soc) from root.sg group by count(char
|1970-01-01T08:00:00.006+08:00|1970-01-01T08:00:00.010+08:00| 24.0|
+-----------------------------+-----------------------------+--------------------------------------+
```
-### 分组聚合
+### 4.2 分组聚合
#### 路径层级分组聚合
@@ -1738,7 +1738,7 @@ SELECT AVG(temperature) FROM root.factory1.** GROUP BY ([1000, 10000), 5s), TAGS
> 5. 暂不支持聚合函数内部包含表达式,例如 `count(s+1)`。
> 6. 不支持值过滤条件聚合,和分层聚合查询行为保持一致。
-## 聚合结果过滤(HAVING 子句)
+## 5 聚合结果过滤(HAVING 子句)
如果想对聚合查询的结果进行过滤,可以在 `GROUP BY` 子句之后使用 `HAVING` 子句。
@@ -1834,15 +1834,15 @@ SELECT AVG(temperature) FROM root.factory1.** GROUP BY ([1000, 10000), 5s), TAGS
```
-## 结果集补空值(FILL 子句)
+## 6 结果集补空值(FILL 子句)
-### 功能介绍
+### 6.1 功能介绍
当执行一些数据查询时,结果集的某行某列可能没有数据,则此位置结果为空,但这种空值不利于进行数据可视化展示和分析,需要对空值进行填充。
在 IoTDB 中,用户可以使用 `FILL` 子句指定数据缺失情况下的填充模式,允许用户按照特定的方法对任何查询的结果集填充空值,如取前一个不为空的值、线性插值等。
-### 语法定义
+### 6.2 语法定义
**`FILL` 子句的语法定义如下:**
@@ -1854,7 +1854,7 @@ FILL '(' PREVIOUS | LINEAR | constant ')'
- 在 `Fill` 语句中只能指定一种填充方法,该方法作用于结果集的全部列。
- 空值填充不兼容 0.13 版本及以前的语法(即不支持 `FILL(([(, , )?])+)`)
-### 填充方式
+### 6.3 填充方式
**IoTDB 目前支持以下三种空值填充方式:**
@@ -2145,14 +2145,14 @@ Total line number = 4
```
-## 查询结果分页(LIMIT/SLIMIT 子句)
+## 7 查询结果分页(LIMIT/SLIMIT 子句)
当查询结果集数据量很大,放在一个页面不利于显示,可以使用 `LIMIT/SLIMIT` 子句和 `OFFSET/SOFFSET `子句进行分页控制。
- `LIMIT` 和 `SLIMIT` 子句用于控制查询结果的行数和列数。
- `OFFSET` 和 `SOFFSET` 子句用于控制结果显示的起始位置。
-### 按行分页
+### 7.1 按行分页
用户可以通过 `LIMIT` 和 `OFFSET` 子句控制查询结果的行数,`LIMIT rowLimit` 指定查询结果的行数,`OFFSET rowOffset` 指定查询结果显示的起始行位置。
@@ -2279,7 +2279,7 @@ Total line number = 4
It costs 0.016s
```
-### 按列分页
+### 7.2 按列分页
用户可以通过 `SLIMIT` 和 `SOFFSET` 子句控制查询结果的列数,`SLIMIT seriesLimit` 指定查询结果的列数,`SOFFSET seriesOffset` 指定查询结果显示的起始列位置。
@@ -2408,9 +2408,9 @@ Total line number = 10
It costs 0.009s
```
-## 结果集排序(ORDER BY 子句)
+## 8 结果集排序(ORDER BY 子句)
-### 时间对齐模式下的排序
+### 8.1 时间对齐模式下的排序
IoTDB的查询结果集默认按照时间对齐,可以使用`ORDER BY TIME`的子句指定时间戳的排列顺序。示例代码如下:
```sql
select * from root.ln.** where time <= 2017-11-01T00:01:00 order by time desc;
@@ -2427,7 +2427,7 @@ select * from root.ln.** where time <= 2017-11-01T00:01:00 order by time desc;
|1970-01-01T08:00:00.001+08:00| v1| true| null| null|
+-----------------------------+--------------------------+------------------------+-----------------------------+------------------------+
```
-### 设备对齐模式下的排序
+### 8.2 设备对齐模式下的排序
当使用`ALIGN BY DEVICE`查询对齐模式下的结果集时,可以使用`ORDER BY`子句对返回的结果集顺序进行规定。
在设备对齐模式下支持4种排序模式的子句,其中包括两种排序键,`DEVICE`和`TIME`,靠前的排序键为主排序键,每种排序键都支持`ASC`和`DESC`两种排列顺序。
@@ -2514,7 +2514,7 @@ select count(*) from root.ln.** group by ((2017-11-01T00:00:00.000+08:00,2017-11
+-----------------------------+-----------------+---------------+-------------+------------------+
```
-### 任意表达式排序
+### 8.3 任意表达式排序
除了IoTDB中规定的Time,Device关键字外,还可以通过`ORDER BY`子句对指定时间序列中任意列的表达式进行排序。
排序在通过`ASC`,`DESC`指定排序顺序的同时,可以通过`NULLS`语法来指定NULL值在排序中的优先级,`NULLS FIRST`默认NULL值在结果集的最上方,`NULLS LAST`则保证NULL值在结果集的最后。如果没有在子句中指定,则默认顺序为`ASC`,`NULLS LAST`。
@@ -2665,7 +2665,7 @@ select score from root.** order by device asc, score desc, time asc align by dev
+-----------------------------+---------+-----+
```
-## 查询对齐模式(ALIGN BY DEVICE 子句)
+## 9 查询对齐模式(ALIGN BY DEVICE 子句)
在 IoTDB 中,查询结果集**默认按照时间对齐**,包含一列时间列和若干个值列,每一行数据各列的时间戳相同。
@@ -2673,7 +2673,7 @@ select score from root.** order by device asc, score desc, time asc align by dev
- 按设备对齐 `ALIGN BY DEVICE`
-### 按设备对齐
+### 9.1 按设备对齐
在按设备对齐模式下,设备名会单独作为一列出现,查询结果集包含一列时间列、一列设备列和若干个值列。如果 `SELECT` 子句中选择了 `N` 列,则结果集包含 `N + 2` 列(时间列和设备名字列)。
@@ -2705,12 +2705,12 @@ select * from root.ln.** where time <= 2017-11-01T00:01:00 align by device;
Total line number = 6
It costs 0.012s
```
-### 设备对齐模式下的排序
+### 9.2 设备对齐模式下的排序
在设备对齐模式下,默认按照设备名的字典序升序排列,每个设备内部按照时间戳大小升序排列,可以通过 `ORDER BY` 子句调整设备列和时间列的排序优先级。
详细说明及示例见文档 [结果集排序](../SQL-Manual/Operator-and-Expression.md)。
-## 查询写回(INTO 子句)
+## 10 查询写回(INTO 子句)
`SELECT INTO` 语句用于将查询结果写入一系列指定的时间序列中。
@@ -2719,7 +2719,7 @@ It costs 0.012s
- **查询结果存储**:将查询结果进行持久化存储,起到类似物化视图的作用。
- **非对齐序列转对齐序列**:对齐序列从0.13版本开始支持,可以通过该功能将非对齐序列的数据写入新的对齐序列中。
-### 语法定义
+### 10.1 语法定义
#### 整体描述
@@ -2961,11 +2961,11 @@ select s1, s2 into root.sg_copy.d1(t1, t2), aligned root.sg_copy.d2(t1, t2) from
#### 其他要注意的点
- 对于一般的聚合查询,时间戳是无意义的,约定使用 0 来存储。
-- 当目标序列存在时,需要保证源序列和目标时间序列的数据类型兼容。关于数据类型的兼容性,查看文档 [数据类型](../Basic-Concept/Data-Type.md#数据类型兼容性)。
+- 当目标序列存在时,需要保证源序列和目标时间序列的数据类型兼容。关于数据类型的兼容性,查看文档 [数据类型](../Background-knowledge/Data-Type.md#数据类型兼容性)。
- 当目标序列不存在时,系统将自动创建目标序列(包括 database)。
- 当查询的序列不存在或查询的序列不存在数据,则不会自动创建目标序列。
-### 应用举例
+### 10.2 应用举例
#### 实现 IoTDB 内部 ETL
对原始数据进行 ETL 处理后写入新序列。
@@ -3020,7 +3020,7 @@ It costs 0.375s
```
以上语句将一组非对齐的序列的数据迁移到一组对齐序列。
-### 相关用户权限
+### 10.3 相关用户权限
用户必须有下列权限才能正常执行查询写回语句:
@@ -3029,7 +3029,7 @@ It costs 0.375s
更多用户权限相关的内容,请参考[权限管理语句](../User-Manual/Authority-Management.md)。
-### 相关配置参数
+### 10.4 相关配置参数
* `select_into_insert_tablet_plan_row_limit`
diff --git a/src/zh/UserGuide/Master/Tree/Basic-Concept/Write-Delete-Data.md b/src/zh/UserGuide/Master/Tree/Basic-Concept/Write-Delete-Data.md
index bed9b3280..c1ee08f77 100644
--- a/src/zh/UserGuide/Master/Tree/Basic-Concept/Write-Delete-Data.md
+++ b/src/zh/UserGuide/Master/Tree/Basic-Concept/Write-Delete-Data.md
@@ -21,7 +21,7 @@
# 数据写入与删除
-## CLI写入数据
+## 1 CLI写入数据
IoTDB 为用户提供多种插入实时数据的方式,例如在 [Cli/Shell 工具](../Tools-System/CLI.md) 中直接输入插入数据的 INSERT 语句,或使用 Java API(标准 [Java JDBC](../API/Programming-JDBC.md) 接口)单条或批量执行插入数据的 INSERT 语句。
@@ -29,7 +29,7 @@ IoTDB 为用户提供多种插入实时数据的方式,例如在 [Cli/Shell
注:写入重复时间戳的数据则原时间戳数据被覆盖,可视为更新数据。
-### 使用 INSERT 语句
+### 1.1 使用 INSERT 语句
使用 INSERT 语句可以向指定的已经创建的一条或多条时间序列中插入数据。对于每一条数据,均由一个时间戳类型的时间戳和一个数值或布尔值、字符串类型的传感器采集值组成。
@@ -87,7 +87,7 @@ IoTDB > insert into root.ln.wf02.wt02(status, hardware) values (false, 'v2')
```
**注意:** 当一次插入多行数据时必须指定时间戳。
-### 向对齐时间序列插入数据
+### 1.2 向对齐时间序列插入数据
向对齐时间序列插入数据只需在SQL中增加`ALIGNED`关键词,其他类似。
@@ -114,10 +114,10 @@ Total line number = 3
It costs 0.004s
```
-## 原生接口写入
+## 2 原生接口写入
原生接口 (Session) 是目前IoTDB使用最广泛的系列接口,包含多种写入接口,适配不同的数据采集场景,性能高效且支持多语言。
-### 多语言接口写入
+### 2.1 多语言接口写入
* ### Java
使用Java接口写入之前,你需要先建立连接,参考 [Java原生接口](../API/Programming-Java-Native-API.md)。
之后通过 [ JAVA 数据操作接口(DML)](../API/Programming-Java-Native-API.md#数据写入)写入。
@@ -131,7 +131,7 @@ It costs 0.004s
* ### Go
参考 [Go 原生接口](../API/Programming-Go-Native-API.md)
-## REST API写入
+## 3 REST API写入
参考 [insertTablet (v1)](../API/RestServiceV1.md#inserttablet) or [insertTablet (v2)](../API/RestServiceV2.md#inserttablet)
@@ -168,29 +168,29 @@ It costs 0.004s
}
```
-## MQTT写入
+## 4 MQTT写入
参考 [内置 MQTT 服务](../API/Programming-MQTT.md#内置-mqtt-服务)
-## 批量数据导入
+## 5 批量数据导入
针对于不同场景,IoTDB 为用户提供多种批量导入数据的操作方式,本章节向大家介绍最为常用的两种方式为 CSV文本形式的导入 和 TsFile文件形式的导入。
-### TsFile批量导入
+### 5.1 TsFile批量导入
TsFile 是在 IoTDB 中使用的时间序列的文件格式,您可以通过CLI等工具直接将存有时间序列的一个或多个 TsFile 文件导入到另外一个正在运行的IoTDB实例中。具体操作方式请参考[数据导入](../Tools-System/Data-Import-Tool.md)。
-### CSV批量导入
+### 5.2 CSV批量导入
CSV 是以纯文本形式存储表格数据,您可以在CSV文件中写入多条格式化的数据,并批量的将这些数据导入到 IoTDB 中,在导入数据之前,建议在IoTDB中创建好对应的元数据信息。如果忘记创建元数据也不要担心,IoTDB 可以自动将CSV中数据推断为其对应的数据类型,前提是你每一列的数据类型必须唯一。除单个文件外,此工具还支持以文件夹的形式导入多个 CSV 文件,并且支持设置如时间精度等优化参数。具体操作方式请参考[数据导入](../Tools-System/Data-Import-Tool.md)。
-## 删除数据
+## 6 删除数据
用户使用 [DELETE 语句](../SQL-Manual/SQL-Manual.md#删除数据) 可以删除指定的时间序列中符合时间删除条件的数据。在删除数据时,用户可以选择需要删除的一个或多个时间序列、时间序列的前缀、时间序列带、*路径对某一个时间区间内的数据进行删除。
在 JAVA 编程环境中,您可以使用 JDBC API 单条或批量执行 DELETE 语句。
-### 单传感器时间序列值删除
+### 6.1 单传感器时间序列值删除
以测控 ln 集团为例,存在这样的使用场景:
@@ -228,7 +228,7 @@ expressions like : time > XXX, time <= XXX, or two atomic expressions connected
delete from root.ln.wf02.wt02.status
```
-### 多传感器时间序列值删除
+### 6.2 多传感器时间序列值删除
当 ln 集团 wf02 子站的 wt02 设备在 2017-11-01 16:26:00 之前的供电状态和设备硬件版本都需要删除,此时可以使用含义更广的 [路径模式(Path Pattern)](../Background-knowledge/Data-Model-and-Terminology.md) 进行删除操作,进行此操作的 SQL 语句为:
@@ -244,7 +244,7 @@ IoTDB> delete from root.ln.wf03.wt02.status where time < now()
Msg: The statement is executed successfully.
```
-### 删除时间分区 (实验性功能)
+### 6.3 删除时间分区 (实验性功能)
您可以通过如下语句来删除某一个 database 下的指定时间分区:
```sql
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/AINode_Deployment_apache.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/AINode_Deployment_apache.md
index 143b1eda8..b78edee84 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/AINode_Deployment_apache.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/AINode_Deployment_apache.md
@@ -20,24 +20,24 @@
-->
# AINode 部署
-## AINode介绍
+## 1 AINode介绍
-### 能力介绍
+### 1.1 能力介绍
AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,该节点通过与 IoTDB 集群的 DataNode、ConfigNode 的交互,扩展了对时间序列进行机器学习分析的能力,支持从外部引入已有机器学习模型进行注册,并使用注册的模型在指定时序数据上通过简单 SQL 语句完成时序分析任务的过程,将模型的创建、管理及推理融合在数据库引擎中。目前已提供常见时序分析场景(例如预测与异常检测)的机器学习算法或自研模型。
-### 交付方式
+### 1.2 交付方式
是 IoTDB 集群外的额外套件,独立安装包,独立激活(如需试用或使用,请联系天谋科技商务或技术支持)。
-### 部署模式
+### 1.3 部署模式
-## 安装准备
+## 2 安装准备
-### 安装包获取
+### 2.1 安装包获取
用户可以下载AINode的软件安装包,下载并解压后即完成AINode的安装。
@@ -52,7 +52,7 @@ AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,
| README_ZH.md | 文件 | markdown格式的中文版说明 |
| `README.md` | 文件 | 使用说明 |
-### 环境准备
+### 2.2 环境准备
- 建议操作环境: Ubuntu, CentOS, MacOS
- 运行环境
@@ -67,9 +67,9 @@ AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,
# 安装3.8.0版本的venv,创建虚拟环境,文件夹名为 `venv`
../Python-3.8.0/python -m venv `venv`
```
-## 安装部署及使用
+## 3 安装部署及使用
-### 安装 AINode
+### 3.1 安装 AINode
1. 检查Linux的内核架构
```shell
@@ -137,7 +137,7 @@ AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,
```
> 回到系统默认环境:conda deactivate
-### 配置项修改
+### 3.2 配置项修改
AINode 支持修改一些必要的参数。可以在 `conf/iotdb-ainode.properties` 文件中找到下列参数并进行持久化的修改:
| **名称** | **描述** | **类型** | **默认值** | **改后生效方式** |
@@ -150,7 +150,7 @@ AINode 支持修改一些必要的参数。可以在 `conf/iotdb-ainode.properti
| ain_models_dir | AINode 存储模型文件的路径,相对路径的起始目录与操作系统相关,建议使用绝对路径 | String | data/AINode/models | 仅允许在第一次启动服务前修改 |
| ain_logs_dir | AINode 存储日志的路径,相对路径的起始目录与操作系统相关,建议使用绝对路径 | String | logs/AINode | 重启后生效 |
| ain_thrift_compression_enabled | AINode 是否启用 thrift 的压缩机制,0-不启动、1-启动 | Boolean | 0 | 重启后生效 |
-### 启动 AINode
+### 3.3 启动 AINode
在完成 Seed-ConfigNode 的部署后,可以通过添加 AINode 节点来支持模型的注册和推理功能。在配置项中指定 IoTDB 集群的信息后,可以执行相应的指令来启动 AINode,加入 IoTDB 集群。
@@ -302,7 +302,7 @@ AINode 支持修改一些必要的参数。可以在 `conf/iotdb-ainode.properti
nohup bash sbin\start-ainode.bat > myout.file 2>& 1 &
```
-### 检测 AINode 节点状态
+### 3.4 检测 AINode 节点状态
AINode 启动过程中会自动将新的 AINode 加入 IoTDB 集群。启动 AINode 后可以在 命令行中输入 SQL 来查询,集群中看到 AINode 节点,其运行状态为 Running(如下展示)表示加入成功。
@@ -317,7 +317,7 @@ IoTDB> show cluster
+------+----------+-------+---------------+------------+-------+-----------+
```
-### 停止 AINode
+### 3.5 停止 AINode
如果需要停止正在运行的 AINode 节点,则执行相应的关闭脚本。
@@ -369,7 +369,7 @@ IoTDB> show cluster
```
如果需要重新启动该节点,需重新执行启动脚本。
-### 移除 AINode
+### 3.6 移除 AINode
当需要把一个 AINode 节点移出集群时,可以执行移除脚本。移除和停止脚本的差别是:停止是在集群中保留 AINode 节点但停止 AINode 服务,移除则是把 AINode 节点从集群中移除出去。
@@ -451,9 +451,9 @@ IoTDB> show cluster
sbin\remove-ainode.bat -t /:
```
-## 常见问题
+## 4 常见问题
-### 启动AINode时出现找不到venv模块的报错
+### 4.1 启动AINode时出现找不到venv模块的报错
当使用默认方式启动 AINode 时,会在安装包目录下创建一个 python 虚拟环境并安装依赖,因此要求安装 venv 模块。通常来说 python3.8 及以上的版本会自带 venv,但对于一些系统自带的 python 环境可能并不满足这一要求。出现该报错时有两种解决方案(二选一):
@@ -469,7 +469,7 @@ apt-get install python3.8-venv
```
在运行启动脚本时通过 `-i` 指定已有的 python 解释器路径作为 AINode 的运行环境,这样就不再需要创建一个新的虚拟环境。
- ### python中的SSL模块没有被正确安装和配置,无法处理HTTPS资源
+ ### 4.2 python中的SSL模块没有被正确安装和配置,无法处理HTTPS资源
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
可以安装 OpenSSLS 后,再重新构建 python 来解决这个问题
> Currently Python versions 3.6 to 3.9 are compatible with OpenSSL 1.0.2, 1.1.0, and 1.1.1.
@@ -483,7 +483,7 @@ make
sudo make install
```
- ### pip版本较低
+ ### 4.3 pip版本较低
windows下出现类似“error:Microsoft Visual C++ 14.0 or greater is required...”的编译问题
@@ -495,7 +495,7 @@ sudo make install
```
- ### 安装编译python
+ ### 4.4 安装编译python
使用以下指定从官网下载安装包并解压:
```shell
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/AINode_Deployment_timecho.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/AINode_Deployment_timecho.md
index 91f91cbba..41b5db378 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/AINode_Deployment_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/AINode_Deployment_timecho.md
@@ -20,24 +20,24 @@
-->
# AINode 部署
-## AINode介绍
+## 1 AINode介绍
-### 能力介绍
+### 1.1 能力介绍
AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,该节点通过与 IoTDB 集群的 DataNode、ConfigNode 的交互,扩展了对时间序列进行机器学习分析的能力,支持从外部引入已有机器学习模型进行注册,并使用注册的模型在指定时序数据上通过简单 SQL 语句完成时序分析任务的过程,将模型的创建、管理及推理融合在数据库引擎中。目前已提供常见时序分析场景(例如预测与异常检测)的机器学习算法或自研模型。
-### 交付方式
+### 1.2 交付方式
是 IoTDB 集群外的额外套件,独立安装包,独立激活(如需试用或使用,请联系天谋科技商务或技术支持)。
-### 部署模式
+### 1.3 部署模式
-## 安装准备
+## 2 安装准备
-### 安装包获取
+### 2.1 装包获取
用户可以下载AINode的软件安装包,下载并解压后即完成AINode的安装。
@@ -52,7 +52,7 @@ AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,
| README_ZH.md | 文件 | markdown格式的中文版说明 |
| `README.md` | 文件 | 使用说明 |
-### 环境准备
+### 2.2 环境准备
- 建议操作环境: Ubuntu, CentOS, MacOS
- 运行环境
@@ -67,9 +67,9 @@ AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,
# 安装3.8.0版本的venv,创建虚拟环境,文件夹名为 `venv`
../Python-3.8.0/python -m venv `venv`
```
-## 安装部署及使用
+## 3 安装部署及使用
-### 安装 AINode
+### 3.1 安装 AINode
1. AINode 激活
@@ -171,7 +171,7 @@ AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,
```
> 回到系统默认环境:conda deactivate
-### 配置项修改
+### 3.2 配置项修改
AINode 支持修改一些必要的参数。可以在 `conf/iotdb-ainode.properties` 文件中找到下列参数并进行持久化的修改:
| **名称** | **描述** | **类型** | **默认值** | **改后生效方式** |
@@ -184,7 +184,7 @@ AINode 支持修改一些必要的参数。可以在 `conf/iotdb-ainode.properti
| ain_models_dir | AINode 存储模型文件的路径,相对路径的起始目录与操作系统相关,建议使用绝对路径 | String | data/AINode/models | 仅允许在第一次启动服务前修改 |
| ain_logs_dir | AINode 存储日志的路径,相对路径的起始目录与操作系统相关,建议使用绝对路径 | String | logs/AINode | 重启后生效 |
| ain_thrift_compression_enabled | AINode 是否启用 thrift 的压缩机制,0-不启动、1-启动 | Boolean | 0 | 重启后生效 |
-### 启动 AINode
+### 3.3 启动 AINode
在完成 Seed-ConfigNode 的部署后,可以通过添加 AINode 节点来支持模型的注册和推理功能。在配置项中指定 IoTDB 集群的信息后,可以执行相应的指令来启动 AINode,加入 IoTDB 集群。
@@ -336,7 +336,7 @@ AINode 支持修改一些必要的参数。可以在 `conf/iotdb-ainode.properti
nohup bash sbin\start-ainode.bat > myout.file 2>& 1 &
```
-### 检测 AINode 节点状态
+### 3.4 检测 AINode 节点状态
AINode 启动过程中会自动将新的 AINode 加入 IoTDB 集群。启动 AINode 后可以在 命令行中输入 SQL 来查询,集群中看到 AINode 节点,其运行状态为 Running(如下展示)表示加入成功。
@@ -351,7 +351,7 @@ IoTDB> show cluster
+------+----------+-------+---------------+------------+-------+-----------+
```
-### 停止 AINode
+### 3.5 停止 AINode
如果需要停止正在运行的 AINode 节点,则执行相应的关闭脚本。
@@ -403,7 +403,7 @@ IoTDB> show cluster
```
如果需要重新启动该节点,需重新执行启动脚本。
-### 移除 AINode
+### 3.6 移除 AINode
当需要把一个 AINode 节点移出集群时,可以执行移除脚本。移除和停止脚本的差别是:停止是在集群中保留 AINode 节点但停止 AINode 服务,移除则是把 AINode 节点从集群中移除出去。
@@ -485,9 +485,9 @@ IoTDB> show cluster
sbin\remove-ainode.bat -t /:
```
-## 常见问题
+## 4 常见问题
-### 启动AINode时出现找不到venv模块的报错
+### 4.1 启动AINode时出现找不到venv模块的报错
当使用默认方式启动 AINode 时,会在安装包目录下创建一个 python 虚拟环境并安装依赖,因此要求安装 venv 模块。通常来说 python3.8 及以上的版本会自带 venv,但对于一些系统自带的 python 环境可能并不满足这一要求。出现该报错时有两种解决方案(二选一):
@@ -503,7 +503,7 @@ apt-get install python3.8-venv
```
在运行启动脚本时通过 `-i` 指定已有的 python 解释器路径作为 AINode 的运行环境,这样就不再需要创建一个新的虚拟环境。
- ### python中的SSL模块没有被正确安装和配置,无法处理HTTPS资源
+ ### 4.2 python中的SSL模块没有被正确安装和配置,无法处理HTTPS资源
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
可以安装 OpenSSLS 后,再重新构建 python 来解决这个问题
> Currently Python versions 3.6 to 3.9 are compatible with OpenSSL 1.0.2, 1.1.0, and 1.1.1.
@@ -517,7 +517,7 @@ make
sudo make install
```
- ### pip版本较低
+ ### 4.3 pip版本较低
windows下出现类似“error:Microsoft Visual C++ 14.0 or greater is required...”的编译问题
@@ -529,7 +529,7 @@ sudo make install
```
- ### 安装编译python
+ ### 4.4 安装编译python
使用以下指定从官网下载安装包并解压:
```shell
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_apache.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_apache.md
index 428a9426a..fb129fdee 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_apache.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_apache.md
@@ -26,7 +26,7 @@
-## 注意事项
+## 1 注意事项
1. 安装前请确认系统已参照[系统配置](./Environment-Requirements.md)准备完成。
@@ -46,13 +46,13 @@
- 使用同一用户操作:确保在启动、停止等操作均保持使用同一用户,不要切换用户。
- 避免使用 sudo:尽量避免使用 sudo 命令,因为它会以 root 用户权限执行命令,可能会引起权限混淆或安全问题。
-## 准备步骤
+## 2 准备步骤
1. 准备IoTDB数据库安装包 :apache-iotdb-{version}-all-bin.zip(安装包获取见:[链接](../Deployment-and-Maintenance/IoTDB-Package_apache.md))
2. 按环境要求配置好操作系统环境(系统环境配置见:[链接](../Deployment-and-Maintenance/Environment-Requirements.md))
-## 安装步骤
+## 3 安装步骤
假设现在有3台linux服务器,IP地址和服务角色分配如下:
@@ -62,7 +62,7 @@
| 192.168.1.4 | iotdb-2 | ConfigNode、DataNode |
| 192.168.1.5 | iotdb-3 | ConfigNode、DataNode |
-### 设置主机名
+### 3.1 设置主机名
在3台机器上分别配置主机名,设置主机名需要在目标服务器上配置`/etc/hosts`,使用如下命令:
@@ -72,7 +72,7 @@ echo "192.168.1.4 iotdb-2" >> /etc/hosts
echo "192.168.1.5 iotdb-3" >> /etc/hosts
```
-### 参数配置
+### 3.2 参数配置
解压安装包并进入安装目录
@@ -133,7 +133,7 @@ cd apache-iotdb-{version}-all-bin
> ❗️注意:VSCode Remote等编辑器无自动保存配置功能,请确保修改的文件被持久化保存,否则配置项无法生效
-### 启动ConfigNode节点
+### 3.3 启动ConfigNode节点
先启动第一个iotdb-1的confignode, 保证种子confignode节点先启动,然后依次启动第2和第3个confignode节点
@@ -143,7 +143,7 @@ cd sbin
```
如果启动失败,请参考[常见问题](#常见问题)。
-### 启动DataNode 节点
+### 3.4 启动DataNode 节点
分别进入iotdb的`sbin`目录下,依次启动3个datanode节点:
@@ -152,7 +152,7 @@ cd sbin
./start-datanode.sh -d #“-d”参数将在后台进行启动
```
-### 验证部署
+### 3.5 验证部署
可直接执行`./sbin`目录下的Cli启动脚本:
@@ -170,9 +170,9 @@ cd sbin
> 出现`ACTIVATED(W)`为被动激活,表示此ConfigNode没有license文件(或没有签发时间戳最新的license文件),其激活依赖于集群中其它Activate状态的ConfigNode。此时建议检查license文件是否已放入license文件夹,没有请放入license文件,若已存在license文件,可能是此节点license文件与其他节点信息不一致导致,请联系天谋工作人员重新申请.
-## 节点维护步骤
+## 4 节点维护步骤
-### ConfigNode节点维护
+### 4.1 ConfigNode节点维护
ConfigNode节点维护分为ConfigNode添加和移除两种操作,有两个常见使用场景:
- 集群扩展:如集群中只有1个ConfigNode时,希望增加ConfigNode以提升ConfigNode节点高可用性,则可以添加2个ConfigNode,使得集群中有3个ConfigNode。
@@ -211,7 +211,7 @@ sbin/start-confignode.bat
#### 移除ConfigNode节点
-首先通过CLI连接集群,通过`show confignodes`确认想要移除ConfigNode的NodeID:
+首先通过CLI连接集群,通过`show confignodes`确认想要移除ConfigNode的内部地址与端口号:
```Bash
IoTDB> show confignodes
@@ -226,12 +226,18 @@ Total line number = 3
It costs 0.030s
```
-然后使用SQL将ConfigNode移除,SQL命令:
+然后使用脚本将DataNode移除。脚本命令:
+
```Bash
-remove confignode [confignode_id]
+# Linux / MacOS
+sbin/remove-confignode.sh [confignode_id]
+
+#Windows
+sbin/remove-confignode.bat [confignode_id]
+
```
-### DataNode节点维护
+### 4.2 DataNode节点维护
DataNode节点维护有两个常见场景:
@@ -274,7 +280,7 @@ sbin/start-datanode.bat
#### 移除DataNode节点
-首先通过CLI连接集群,通过`show datanodes`确认想要移除的DataNode的NodeID:
+首先通过CLI连接集群,通过`show datanodes`确认想要移除的DataNode的RPC地址与端口号:
```Bash
IoTDB> show datanodes
@@ -289,12 +295,17 @@ Total line number = 3
It costs 0.110s
```
-然后使用SQL将DataNode移除,SQL命令:
+然后使用脚本将DataNode移除。脚本命令:
+
```Bash
-remove datanode [datanode_id]
+# Linux / MacOS
+sbin/remove-datanode.sh [datanode_id]
+
+#Windows
+sbin/remove-datanode.bat [datanode_id]
```
-## 常见问题
+## 5 常见问题
1. Confignode节点启动失败
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_timecho.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_timecho.md
index 8f33c5d4a..c6b022ff3 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_timecho.md
@@ -26,7 +26,7 @@
-## 注意事项
+## 1 注意事项
1. 安装前请确认系统已参照[系统配置](./Environment-Requirements.md)准备完成。
@@ -48,12 +48,12 @@
6. 推荐部署监控面板,可以对重要运行指标进行监控,随时掌握数据库运行状态,监控面板可以联系商务获取,部署监控面板步骤可以参考:[监控面板部署](./Monitoring-panel-deployment.md)
-## 准备步骤
+## 2 准备步骤
1. 准备IoTDB数据库安装包 :iotdb-enterprise-{version}-bin.zip(安装包获取见:[链接](../Deployment-and-Maintenance/IoTDB-Package_timecho.md))
2. 按环境要求配置好操作系统环境(系统环境配置见:[链接](../Deployment-and-Maintenance/Environment-Requirements.md))
-## 安装步骤
+## 3 安装步骤
假设现在有3台linux服务器,IP地址和服务角色分配如下:
@@ -63,7 +63,7 @@
| 192.168.1.4 | iotdb-2 | ConfigNode、DataNode |
| 192.168.1.5 | iotdb-3 | ConfigNode、DataNode |
-### 设置主机名
+### 3.1 设置主机名
在3台机器上分别配置主机名,设置主机名需要在目标服务器上配置`/etc/hosts`,使用如下命令:
@@ -73,7 +73,7 @@ echo "192.168.1.4 iotdb-2" >> /etc/hosts
echo "192.168.1.5 iotdb-3" >> /etc/hosts
```
-### 参数配置
+### 3.2 参数配置
解压安装包并进入安装目录
@@ -134,7 +134,7 @@ cd iotdb-enterprise-{version}-bin
> ❗️注意:VSCode Remote等编辑器无自动保存配置功能,请确保修改的文件被持久化保存,否则配置项无法生效
-### 启动ConfigNode节点
+### 3.3 启动ConfigNode节点
先启动第一个iotdb-1的confignode, 保证种子confignode节点先启动,然后依次启动第2和第3个confignode节点
@@ -144,7 +144,7 @@ cd sbin
```
如果启动失败,请参考[常见问题](#常见问题)。
-### 激活数据库
+### 3.4 激活数据库
#### **方式一:激活文件拷贝激活**
@@ -179,7 +179,7 @@ cd sbin
Import completed. Please start cluster and excute 'show cluster' to verify activation status
```
-### 启动DataNode 节点
+### 3.5 启动DataNode 节点
分别进入iotdb的`sbin`目录下,依次启动3个datanode节点:
@@ -188,7 +188,7 @@ cd sbin
./start-datanode.sh -d #-d参数将在后台进行启动
```
-### 验证部署
+### 3.6 验证部署
可直接执行`./sbin`目录下的Cli启动脚本:
@@ -208,9 +208,9 @@ cd sbin
> 出现`ACTIVATED(W)`为被动激活,表示此ConfigNode没有license文件(或没有签发时间戳最新的license文件),其激活依赖于集群中其它Activate状态的ConfigNode。此时建议检查license文件是否已放入license文件夹,没有请放入license文件,若已存在license文件,可能是此节点license文件与其他节点信息不一致导致,请联系天谋工作人员重新申请.
-## 节点维护步骤
+## 4 节点维护步骤
-### ConfigNode节点维护
+### 4.1 ConfigNode节点维护
ConfigNode节点维护分为ConfigNode添加和移除两种操作,有两个常见使用场景:
- 集群扩展:如集群中只有1个ConfigNode时,希望增加ConfigNode以提升ConfigNode节点高可用性,则可以添加2个ConfigNode,使得集群中有3个ConfigNode。
@@ -249,7 +249,8 @@ sbin/start-confignode.bat
#### 移除ConfigNode节点
-首先通过CLI连接集群,通过`show confignodes`确认想要移除ConfigNode的NodeID:
+首先通过CLI连接集群,通过`show confignodes`确认想要移除ConfigNode的内部地址与端口号:
+
```Bash
IoTDB> show confignodes
+------+-------+---------------+------------+--------+
@@ -263,12 +264,18 @@ Total line number = 3
It costs 0.030s
```
-然后使用SQL将ConfigNode移除,SQL命令:
+然后使用脚本将DataNode移除。脚本命令:
+
```Bash
-remove confignode [confignode_id]
+# Linux / MacOS
+sbin/remove-confignode.sh [confignode_id]
+
+#Windows
+sbin/remove-confignode.bat [confignode_id]
+
```
-### DataNode节点维护
+### 4.2 DataNode节点维护
DataNode节点维护有两个常见场景:
@@ -311,7 +318,7 @@ sbin/start-datanode.bat
#### 移除DataNode节点
-首先通过CLI连接集群,通过`show datanodes`确认想要移除的DataNode的NodeID:
+首先通过CLI连接集群,通过`show datanodes`确认想要移除的DataNode的RPC地址与端口号:
```Bash
IoTDB> show datanodes
@@ -326,12 +333,17 @@ Total line number = 3
It costs 0.110s
```
-然后使用SQL将DataNode移除,SQL命令:
+然后使用脚本将DataNode移除。脚本命令:
+
```Bash
-remove datanode [datanode_id]
+# Linux / MacOS
+sbin/remove-datanode.sh [datanode_id]
+
+#Windows
+sbin/remove-datanode.bat [datanode_id]
```
-## 常见问题
+## 5 常见问题
1. 部署过程中多次提示激活失败
- 使用 `ls -al` 命令:使用 `ls -al` 命令检查安装包根目录的所有者信息是否为当前用户。
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Database-Resources.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Database-Resources.md
index 463eeeb8d..2ecff8d69 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Database-Resources.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Database-Resources.md
@@ -19,7 +19,7 @@
-->
# 资源规划
-## CPU
+## 1 CPU
-## 内存
+## 2 内存
-## 存储(磁盘)
-### 存储空间
+## 3 存储(磁盘)
+### 3.1 存储空间
计算公式:测点数量 * 采样频率(Hz)* 每个数据点大小(Byte,不同数据类型不一样,见下表)
@@ -187,14 +187,13 @@
示例:1000设备,每个设备100 测点,共 100000 序列,INT32 类型。采样频率1Hz(每秒一次),存储1年,3副本。
- 完整计算公式:1000设备 * 100测点 * 12字节每数据点 * 86400秒每天 * 365天每年 * 3副本/10压缩比 / 1024 / 1024 / 1024 / 1024 =11T
- 简版计算公式:1000 * 100 * 12 * 86400 * 365 * 3 / 10 / 1024 / 1024 / 1024 / 1024 = 11T
-
-### 存储配置
+### 3.2 存储配置
1000w 点位以上或查询负载较大,推荐配置 SSD。
-## 网络(网卡)
+## 4 网络(网卡)
在写入吞吐不超过1000万点/秒时,需配置千兆网卡;当写入吞吐超过 1000万点/秒时,需配置万兆网卡。
| **写入吞吐(数据点/秒)** | **网卡速率** |
| ------------------- | ------------- |
| <1000万 | 1Gbps(千兆) |
| >=1000万 | 10Gbps(万兆) |
-## 其他说明
+## 5 其他说明
IoTDB 具有集群秒级扩容能力,扩容节点数据可不迁移,因此您无需担心按现有数据情况估算的集群能力有限,未来您可在需要扩容时为集群加入新的节点。
\ No newline at end of file
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Deployment-form.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Deployment-form.md
index 86e6b7a42..fa4b0dcee 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Deployment-form.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Deployment-form.md
@@ -19,11 +19,11 @@
-->
-## 部署形态
+# 部署形态
IoTDB 有两种运行模式:单机模式、集群模式。
-### 单机模式
+## 1 单机模式
IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D;
@@ -31,7 +31,7 @@ IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D;
- **适用场景**:资源有限或对高可用要求不高的场景,例如边缘端服务器。
- **部署方法**:[单机版部署](../Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md)
-### 集群模式
+## 2 集群模式
IoTDB 集群实例为 3 个ConfigNode 和不少于 3 个 DataNode,通常为 3 个 DataNode,即3C3D;当部分节点出现故障时,剩余节点仍然能对外提供服务,保证数据库服务的高可用性,且可随节点增加提升数据库性能。
@@ -39,7 +39,7 @@ IoTDB 集群实例为 3 个ConfigNode 和不少于 3 个 DataNode,通常为 3
- **适用场景**:需要提供高可用和可靠性的企业级应用场景。
- **部署方法**:[集群版部署](../Deployment-and-Maintenance/Cluster-Deployment_apache.md)
-### 特点总结
+## 3 特点总结
| 维度 | 单机模式 | 集群模式 |
| ------------ | ---------------------------- | ------------------------ |
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_apache.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_apache.md
index 12d14db9b..0d9e90aee 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_apache.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_apache.md
@@ -20,9 +20,9 @@
-->
# Docker部署
-## 环境准备
+## 1 环境准备
-### Docker安装
+### 1.1 Docker安装
```SQL
#以ubuntu为例,其他操作系统可以自行搜索安装方法
@@ -42,7 +42,7 @@ sudo systemctl enable docker
docker --version #显示版本信息,即安装成功
```
-### docker-compose安装
+### 1.2 docker-compose安装
```SQL
#安装命令
@@ -53,11 +53,11 @@ ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version #显示版本信息即安装成功
```
-## 单机版
+## 2 单机版
本节演示如何部署1C1D的docker单机版。
-### 拉取镜像文件
+### 2.1 拉取镜像文件
Apache IoTDB的Docker镜像已经上传至https://hub.docker.com/r/apache/iotdb。
@@ -75,13 +75,13 @@ docker images

-### 创建docker bridge网络
+### 2.2 创建docker bridge网络
```Bash
docker network create --driver=bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 iotdb
```
-### 编写docker-compose的yml文件
+### 2.3 编写docker-compose的yml文件
这里我们以把IoTDB安装目录和yml文件统一放在`/docker-iotdb`文件夹下为例:
@@ -130,7 +130,7 @@ networks:
external: true
```
-### 启动IoTDB
+### 2.4 启动IoTDB
使用下面的命令启动:
@@ -139,7 +139,7 @@ cd /docker-iotdb
docker-compose -f docker-compose-standalone.yml up -d #后台启动
```
-### 验证部署
+### 2.5 验证部署
- 查看日志,有如下字样,表示启动成功
@@ -172,7 +172,7 @@ docker-compose -f docker-compose-standalone.yml up -d #后台启动

-### 映射/conf目录(可选)
+### 2.6 映射/conf目录(可选)
后续如果想在物理机中直接修改配置文件,可以把容器中的/conf文件夹映射出来,分三步:
@@ -197,7 +197,7 @@ docker cp iotdb:/iotdb/conf /docker-iotdb/iotdb/conf
docker-compose -f docker-compose-standalone.yml up -d
```
-## 集群版
+## 3 集群版
本小节描述如何手动部署包括3个ConfigNode和3个DataNode的实例,即通常所说的3C3D集群。
@@ -209,7 +209,7 @@ docker-compose -f docker-compose-standalone.yml up -d
下面以host网络为例演示如何部署3C3D集群。
-### 设置主机名
+### 3.1 设置主机名
假设现在有3台linux服务器,IP地址和服务角色分配如下:
@@ -227,7 +227,7 @@ echo "192.168.1.4 iotdb-2" >> /etc/hosts
echo "192.168.1.5 iotdb-3" >> /etc/hosts
```
-### 拉取镜像文件
+### 3.2 拉取镜像文件
Apache IoTDB的Docker镜像已经上传至https://hub.docker.com/r/apache/iotdb。
@@ -245,7 +245,7 @@ docker images

-### 编写docker-compose的yml文件
+### 3.3 编写docker-compose的yml文件
这里我们以把IoTDB安装目录和yml文件统一放在`/docker-iotdb`文件夹下为例:
@@ -320,7 +320,7 @@ services:
network_mode: "host" #使用host网络
```
-### 首次启动confignode
+### 3.4 首次启动confignode
先在3台服务器上分别启动confignode, 注意启动顺序,先启动第1台iotdb-1,再启动iotdb-2和iotdb-3。
@@ -329,7 +329,7 @@ cd /docker-iotdb
docker-compose -f confignode.yml up -d #后台启动
```
-### 启动datanode
+### 3.5 启动datanode
在3台服务器上分别启动datanode
@@ -340,7 +340,7 @@ docker-compose -f datanode.yml up -d #后台启动

-### 验证部署
+### 3.6 验证部署
- 查看日志,有如下字样,表示datanode启动成功
@@ -373,7 +373,7 @@ docker-compose -f datanode.yml up -d #后台启动

-### 映射/conf目录(可选)
+### 3.7 映射/conf目录(可选)
后续如果想在物理机中直接修改配置文件,可以把容器中的/conf文件夹映射出来,分三步:
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_timecho.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_timecho.md
index 8d98b0f45..cfd708fdb 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_timecho.md
@@ -20,9 +20,9 @@
-->
# Docker部署
-## 环境准备
+## 1 环境准备
-### Docker安装
+### 1.1 Docker安装
```Bash
#以ubuntu为例,其他操作系统可以自行搜索安装方法
@@ -42,7 +42,7 @@ sudo systemctl enable docker
docker --version #显示版本信息,即安装成功
```
-### docker-compose安装
+### 1.2 docker-compose安装
```Bash
#安装命令
@@ -53,7 +53,7 @@ ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version #显示版本信息即安装成功
```
-### 安装dmidecode插件
+### 1.3 安装dmidecode插件
默认情况下,linux服务器应该都已安装,如果没有安装的话,可以使用下面的命令安装。
@@ -63,15 +63,15 @@ sudo apt-get install dmidecode
dmidecode 安装后,查找安装路径:`whereis dmidecode`,这里假设结果为`/usr/sbin/dmidecode`,记住该路径,后面的docker-compose的yml文件会用到。
-### 获取IoTDB的容器镜像
+### 1.4 获取IoTDB的容器镜像
关于IoTDB企业版的容器镜像您可联系商务或技术支持获取。
-## 单机版部署
+## 2 单机版部署
本节演示如何部署1C1D的docker单机版。
-### load 镜像文件
+### 2.1 load 镜像文件
比如这里获取的IoTDB的容器镜像文件名是:`iotdb-enterprise-1.3.2.3-standalone-docker.tar.gz`
@@ -89,13 +89,13 @@ docker images

-### 创建docker bridge网络
+### 2.2 创建docker bridge网络
```Bash
docker network create --driver=bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 iotdb
```
-### 编写docker-compose的yml文件
+### 2.3 编写docker-compose的yml文件
这里我们以把IoTDB安装目录和yml文件统一放在`/docker-iotdb` 文件夹下为例:
@@ -147,7 +147,7 @@ networks:
external: true
```
-### 首次启动
+### 2.4 首次启动
使用下面的命令启动:
@@ -160,7 +160,7 @@ docker-compose -f docker-compose-standalone.yml up

-### 申请激活
+### 2.5 申请激活
- 首次启动后,在物理机目录`/docker-iotdb/iotdb/activation`下会生成一个 `system_info`文件,将这个文件拷贝给天谋工作人员。
@@ -170,7 +170,7 @@ docker-compose -f docker-compose-standalone.yml up

-### 再次启动IoTDB
+### 2.6 再次启动IoTDB
```Bash
docker-compose -f docker-compose-standalone.yml up -d
@@ -178,7 +178,7 @@ docker-compose -f docker-compose-standalone.yml up -d

-### 验证部署
+### 2.7 验证部署
- 查看日志,有如下字样,表示启动成功
@@ -211,7 +211,7 @@ docker logs -f iotdb-datanode #查看日志命令

-### 映射/conf目录(可选)
+### 2.8 映射/conf目录(可选)
后续如果想在物理机中直接修改配置文件,可以把容器中的/conf文件夹映射出来,分三步:
@@ -239,7 +239,7 @@ docker cp iotdb:/iotdb/conf /docker-iotdb/iotdb/conf
docker-compose -f docker-compose-standalone.yml up -d
```
-## 集群版部署
+## 3 集群版部署
本小节描述如何手动部署包括3个ConfigNode和3个DataNode的实例,即通常所说的3C3D集群。
@@ -251,7 +251,7 @@ docker-compose -f docker-compose-standalone.yml up -d
下面以host网络为例演示如何部署3C3D集群。
-### 设置主机名
+### 3.1 设置主机名
假设现在有3台linux服务器,IP地址和服务角色分配如下:
@@ -269,7 +269,7 @@ echo "192.168.1.4 iotdb-2" >> /etc/hosts
echo "192.168.1.5 iotdb-3" >> /etc/hosts
```
-### load镜像文件
+### 3.2 load镜像文件
比如获取的IoTDB的容器镜像文件名是:`iotdb-enterprise-1.3.2.3-standalone-docker.tar.gz`
@@ -287,7 +287,7 @@ docker images

-### 编写docker-compose的yml文件
+### 3.3 编写docker-compose的yml文件
这里我们以把IoTDB安装目录和yml文件统一放在/docker-iotdb文件夹下为例:
@@ -366,7 +366,7 @@ services:
network_mode: "host" #使用host网络
```
-### 首次启动confignode
+### 3.4 首次启动confignode
先在3台服务器上分别启动confignode, 用来获取机器码,注意启动顺序,先启动第1台iotdb-1,再启动iotdb-2和iotdb-3。
@@ -375,7 +375,7 @@ cd /docker-iotdb
docker-compose -f confignode.yml up -d #后台启动
```
-### 申请激活
+### 3.5 申请激活
- 首次启动3个confignode后,在每个物理机目录`/docker-iotdb/iotdb/activation`下都会生成一个`system_info`文件,将3个服务器的`system_info`文件拷贝给天谋工作人员;
@@ -387,7 +387,7 @@ docker-compose -f confignode.yml up -d #后台启动
- license放入对应的activation文件夹后,confignode会自动激活,不用重启confignode
-### 启动datanode
+### 3.6 启动datanode
在3台服务器上分别启动datanode
@@ -398,7 +398,7 @@ docker-compose -f datanode.yml up -d #后台启动

-### 验证部署
+### 3.7 验证部署
- 查看日志,有如下字样,表示datanode启动成功
@@ -431,7 +431,7 @@ docker-compose -f datanode.yml up -d #后台启动

-### 映射/conf目录(可选)
+### 3.8 映射/conf目录(可选)
后续如果想在物理机中直接修改配置文件,可以把容器中的/conf文件夹映射出来,分三步:
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md
index 545e0ca75..0abc1148c 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md
@@ -20,7 +20,7 @@
-->
# 双活版部署
-## 什么是双活版?
+## 1 什么是双活版?
双活通常是指两个独立的单机(或集群),实时进行镜像同步,它们的配置完全独立,可以同时接收外界的写入,每一个独立的单机(或集群)都可以将写入到自己的数据同步到另一个单机(或集群)中,两个单机(或集群)的数据可达到最终一致。
@@ -30,7 +30,7 @@

-## 注意事项
+## 2 注意事项
1. 部署时推荐优先使用`hostname`进行IP配置,可避免后期修改主机ip导致数据库无法启动的问题。设置hostname需要在目标服务器上配置`/etc/hosts`,如本机ip是192.168.1.3,hostname是iotdb-1,则可以使用以下命令设置服务器的 hostname,并使用hostname配置IoTDB的`cn_internal_address`、`dn_internal_address`。
@@ -42,7 +42,7 @@
3. 推荐部署监控面板,可以对重要运行指标进行监控,随时掌握数据库运行状态,监控面板可以联系商务获取,部署监控面板步骤可以参考[文档](https://www.timecho.com/docs/zh/UserGuide/latest/Deployment-and-Maintenance/Monitoring-panel-deployment.html)
-## 安装步骤
+## 3 安装步骤
我们以两台单机A和B构建的双活版IoTDB为例,A和B的ip分别是192.168.1.3 和 192.168.1.4 ,这里用hostname来表示不同的主机,规划如下:
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Environment-Requirements.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Environment-Requirements.md
index 9b91e2952..5e1fe7edf 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Environment-Requirements.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Environment-Requirements.md
@@ -18,11 +18,11 @@
under the License.
-->
-# 系统配置
+# 环境配置
-## 磁盘阵列
+## 1 磁盘阵列
-### 配置建议
+### 1.1 配置建议
IoTDB对磁盘阵列配置没有严格运行要求,推荐使用多个磁盘阵列存储IoTDB的数据,以达到多个磁盘阵列并发写入的目标,配置可参考以下建议:
@@ -35,7 +35,7 @@ IoTDB对磁盘阵列配置没有严格运行要求,推荐使用多个磁盘阵
建议挂载多块硬盘(1-6块左右)
3. 在部署 IoTDB 时,建议避免使用 NAS 等网络存储设备。
-### 配置示例
+### 1.2 配置示例
- 示例1,4块3.5英寸硬盘
@@ -77,13 +77,13 @@ IoTDB对磁盘阵列配置没有严格运行要求,推荐使用多个磁盘阵
| 数据盘 | RAID5 | 7 | 允许坏1块 | 6 |
| 数据盘 | NoRaid | 1 | 损坏丢失 | 1 |
-## 操作系统
+## 2 操作系统
-### 版本要求
+### 2.1 版本要求
IoTDB支持Linux、Windows、MacOS等操作系统,同时企业版支持龙芯、飞腾、鲲鹏等国产 CPU,支持中标麒麟、银河麒麟、统信、凝思等国产服务器操作系统。
-### 硬盘分区
+### 2.2 硬盘分区
- 建议使用默认的标准分区方式,不推荐LVM扩展和硬盘加密。
- 系统盘只需满足操作系统的使用空间即可,不需要为IoTDB预留空间。
@@ -130,7 +130,7 @@ IoTDB支持Linux、Windows、MacOS等操作系统,同时企业版支持龙芯
-### 网络配置
+### 2.3 网络配置
1. 关闭防火墙
@@ -163,7 +163,7 @@ systemctl start sshd #启用22号端口
3. 保证服务器之间的网络相互连通
-### 其他配置
+### 2.4 其他配置
1. 将系统 swap 优先级降至最低
@@ -192,7 +192,7 @@ echo "* hard nofile 65535" >> /etc/security/limits.conf
ulimit -n
```
-## 软件依赖
+## 3 软件依赖
安装 Java 运行环境 ,Java 版本 >= 1.8,请确保已设置 jdk 环境变量。(V1.3.2.2 及之上版本推荐直接部署JDK17,老版本JDK部分场景下性能有问题,且datanode会出现stop不掉的问题)
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_apache.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_apache.md
index 9e3270818..e3f14a95d 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_apache.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_apache.md
@@ -19,11 +19,11 @@
-->
# 安装包获取
-## 安装包获取方式
+## 1 安装包获取方式
安装包可直接在Apache IoTDB官网获取:https://iotdb.apache.org/zh/Download/
-## 安装包结构
+## 2 安装包结构
解压后安装包(`apache-iotdb--all-bin.zip`),安装包解压后目录结构如下:
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_timecho.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_timecho.md
index 0fd789513..e2e8f1e90 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_timecho.md
@@ -20,11 +20,11 @@
-->
# 安装包获取
-## 企业版获取方式
+## 1 企业版获取方式
企业版安装包可通过产品试用申请,或直接联系与您对接的商务人员获取。
-## 安装包结构
+## 2 安装包结构
解压后安装包(iotdb-enterprise-{version}-bin.zip),安装包解压后目录结构如下:
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Monitoring-panel-deployment.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Monitoring-panel-deployment.md
index b0bc2dcd4..4060e1de4 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Monitoring-panel-deployment.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Monitoring-panel-deployment.md
@@ -24,14 +24,14 @@ IoTDB配套监控面板是IoTDB企业版配套工具之一。它旨在解决IoTD
监控面板工具的使用说明可参考文档 [使用说明](../Tools-System/Monitor-Tool.md) 章节。
-## 安装准备
+## 1 安装准备
1. 安装 IoTDB:需先安装IoTDB V1.0 版本及以上企业版,您可联系商务或技术支持获取
2. 获取 IoTDB 监控面板安装包:基于企业版 IoTDB 的数据库监控面板,您可联系商务或技术支持获取
-## 安装步骤
+## 2 安装步骤
-### 步骤一:IoTDB开启监控指标采集
+### 2.1 步骤一:IoTDB开启监控指标采集
1. 打开监控配置项。IoTDB中监控有关的配置项默认是关闭的,在部署监控面板前,您需要打开相关配置项(注意开启监控配置后需要重启服务)。
@@ -67,7 +67,7 @@ IoTDB配套监控面板是IoTDB企业版配套工具之一。它旨在解决IoTD

-### 步骤二:安装、配置Prometheus
+### 2.2 步骤二:安装、配置Prometheus
> 此处以prometheus安装在服务器192.168.1.3为例。
@@ -120,7 +120,7 @@ scrape_configs:

-### 步骤三:安装grafana并配置数据源
+### 2.3 步骤三:安装grafana并配置数据源
> 此处以Grafana安装在服务器192.168.1.3为例。
@@ -148,7 +148,7 @@ cd grafana-*

-### 步骤四:导入IoTDB Grafana看板
+### 2.4 步骤四:导入IoTDB Grafana看板
1. 进入Grafana,选择Dashboards:
@@ -186,9 +186,9 @@ cd grafana-*

-## 附录、监控指标详解
+## 3 附录、监控指标详解
-### 系统面板(System Dashboard)
+### 3.1 系统面板(System Dashboard)
该面板展示了当前系统CPU、内存、磁盘、网络资源的使用情况已经JVM的部分状况。
@@ -274,7 +274,7 @@ eno 指的是到公网的网卡,lo 是虚拟网卡。
- Packet Speed:网卡发送和接收数据包的速度,一次 RPC 请求可以对应一个或者多个数据包
- Connection Num:当前选定进程的 socket 连接数(IoTDB只有 TCP)
-### 整体性能面板(Performance Overview Dashboard)
+### 3.2 整体性能面板(Performance Overview Dashboard)
#### Cluster Overview
@@ -352,7 +352,7 @@ eno 指的是到公网的网卡,lo 是虚拟网卡。
- File Size: 节点管理文件大小情况
- Log Number Per Minute: 节点的每分钟不同类型日志情况
-### ConfigNode 面板(ConfigNode Dashboard)
+### 3.3 ConfigNode 面板(ConfigNode Dashboard)
该面板展示了集群中所有管理节点的表现情况,包括分区、节点信息、客户端连接情况统计等。
@@ -410,7 +410,7 @@ eno 指的是到公网的网卡,lo 是虚拟网卡。
- Remote / Local Write QPS: 节点 Ratis 的远程和本地写入的 QPS
- RatisConsensus Memory: 节点 Ratis 共识协议的内存使用
-### DataNode 面板(DataNode Dashboard)
+### 3.4 DataNode 面板(DataNode Dashboard)
该面板展示了集群中所有数据节点的监控情况,包含写入耗时、查询耗时、存储文件数等。
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md
index 37813097d..c238afda0 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md
@@ -20,7 +20,7 @@
-->
# 单机版部署
-## 注意事项
+## 1 注意事项
1. 安装前请确认系统已参照[系统配置](./Environment-Requirements.md)准备完成。
@@ -40,16 +40,16 @@
- 使用同一用户操作:确保在启动、停止等操作均保持使用同一用户,不要切换用户。
- 避免使用 sudo:尽量避免使用 sudo 命令,因为它会以 root 用户权限执行命令,可能会引起权限混淆或安全问题。
-## 安装步骤
+## 2 安装步骤
-### 解压安装包并进入安装目录
+### 2.1 解压安装包并进入安装目录
```shell
unzip apache-iotdb-{version}-all-bin.zip
cd apache-iotdb-{version}-all-bin
```
-### 参数配置
+### 2.2 参数配置
#### 环境脚本配置
@@ -103,7 +103,7 @@ cd apache-iotdb-{version}-all-bin
> ❗️注意:VSCode Remote等编辑器无自动保存配置功能,请确保修改的文件被持久化保存,否则配置项无法生效
-### 启动ConfigNode 节点
+### 2.3 启动ConfigNode 节点
进入iotdb的sbin目录下,启动confignode
@@ -112,7 +112,7 @@ cd apache-iotdb-{version}-all-bin
```
如果启动失败,请参考[常见问题](#常见问题)。
-### 启动DataNode 节点
+### 2.4 启动DataNode 节点
进入iotdb的sbin目录下,启动datanode:
@@ -121,7 +121,7 @@ cd sbin
./start-datanode.sh -d #-d参数将在后台进行启动
```
-### 验证部署
+### 2.5 验证部署
可直接执行 ./sbin 目录下的 Cli 启动脚本:
@@ -141,7 +141,7 @@ cd sbin
> 出现`ACTIVATED(W)`为被动激活,表示此ConfigNode没有license文件(或没有签发时间戳最新的license文件)。此时建议检查license文件是否已放入license文件夹,没有请放入license文件,若已存在license文件,可能是此节点license文件与其他节点信息不一致导致,请联系天谋工作人员重新申请.
-## 常见问题
+## 3 常见问题
1. Confignode节点启动失败
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md
index adba3593b..4a6e850d1 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md
@@ -22,7 +22,7 @@
本章将介绍如何启动IoTDB单机实例,IoTDB单机实例包括 1 个ConfigNode 和1个DataNode(即通常所说的1C1D)。
-## 注意事项
+## 1 注意事项
1. 安装前请确认系统已参照[系统配置](./Environment-Requirements.md)准备完成。
@@ -44,16 +44,16 @@
6. 推荐部署监控面板,可以对重要运行指标进行监控,随时掌握数据库运行状态,监控面板可以联系商务获取,部署监控面板步骤可以参考:[监控面板部署](./Monitoring-panel-deployment.md)。
-## 安装步骤
+## 2 安装步骤
-### 解压安装包并进入安装目录
+### 2.1 解压安装包并进入安装目录
```shell
unzip iotdb-enterprise-{version}-bin.zip
cd iotdb-enterprise-{version}-bin
```
-### 参数配置
+### 2.2 参数配置
#### 环境脚本配置
@@ -107,7 +107,7 @@ cd iotdb-enterprise-{version}-bin
> ❗️注意:VSCode Remote等编辑器无自动保存配置功能,请确保修改的文件被持久化保存,否则配置项无法生效
-### 启动 ConfigNode 节点
+### 2.3 启动 ConfigNode 节点
进入iotdb的sbin目录下,启动confignode
@@ -116,7 +116,7 @@ cd iotdb-enterprise-{version}-bin
```
如果启动失败,请参考[常见问题](#常见问题)。
-### 激活数据库
+### 2.4 激活数据库
#### 方式一:激活文件拷贝激活
@@ -150,7 +150,7 @@ License has been stored to sbin/../activation/license
Import completed. Please start cluster and excute 'show cluster' to verify activation status
```
-### 启动DataNode 节点
+### 2.5 启动DataNode 节点
进入iotdb的sbin目录下,启动datanode:
@@ -159,7 +159,7 @@ cd sbin
./start-datanode.sh -d #-d参数将在后台进行启动
```
-### 验证部署
+### 2.6 验证部署
可直接执行 ./sbin 目录下的 Cli 启动脚本:
@@ -180,7 +180,7 @@ cd sbin
> 出现`ACTIVATED(W)`为被动激活,表示此ConfigNode没有license文件(或没有签发时间戳最新的license文件)。此时建议检查license文件是否已放入license文件夹,没有请放入license文件,若已存在license文件,可能是此节点license文件与其他节点信息不一致导致,请联系天谋工作人员重新申请.
-## 常见问题
+## 3 常见问题
1. 部署过程中多次提示激活失败
- 使用 `ls -al` 命令:使用 `ls -al` 命令检查安装包根目录的所有者信息是否为当前用户。
diff --git a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/workbench-deployment_timecho.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/workbench-deployment_timecho.md
index 7d9eb8b4d..770f426b8 100644
--- a/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/workbench-deployment_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/workbench-deployment_timecho.md
@@ -29,7 +29,7 @@
可视化控制台工具的使用说明可参考文档 [使用说明](../Tools-System/Workbench_timecho.md) 章节。
-## 安装准备
+## 1 安装准备
| 准备内容 | 名称 | 版本要求 | 官方链接 |
| :------: | :-----------------------: | :----------------------------------------------------------: | :----------------------------------------------------: |
@@ -39,9 +39,9 @@
| 数据库 | IoTDB | 需要>=V1.2.0企业版 | 您可联系商务或技术支持获取 |
| 控制台 | IoTDB-Workbench-``| - | 您可根据附录版本对照表进行选择后联系商务或技术支持获取 |
-## 安装步骤
+## 2 安装步骤
-### 步骤一:IoTDB 开启监控指标采集
+### 2.1 步骤一:IoTDB 开启监控指标采集
1. 打开监控配置项。IoTDB中监控有关的配置项默认是关闭的,在部署监控面板前,您需要打开相关配置项(注意开启监控配置后需要重启服务)。
@@ -110,7 +110,7 @@

-### 步骤二:安装、配置Prometheus监控
+### 2.2 步骤二:安装、配置Prometheus监控
1. 确保Prometheus安装完成(官方安装说明可参考:https://prometheus.io/docs/introduction/first_steps/)
2. 解压安装包,进入解压后的文件夹:
@@ -155,7 +155,7 @@
-### 步骤三:安装Workbench
+### 2.3 步骤三:安装Workbench
1. 进入iotdb-Workbench-``的config目录
@@ -191,7 +191,7 @@

-## 附录:IoTDB与控制台版本对照表
+## 4 附录:IoTDB与控制台版本对照表
| 控制台版本号 | 版本说明 | 可支持IoTDB版本 |
| :------------: | :------------------------------------------------------------: | :----------------: |
diff --git a/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_apache.md b/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_apache.md
index e5855ae05..661d2fc65 100644
--- a/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_apache.md
+++ b/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_apache.md
@@ -30,7 +30,7 @@ Apache IoTDB 是一款低成本、高性能的物联网原生时序数据库。
- 安装部署与使用文档:[快速上手](../QuickStart/QuickStart_apache.md)
-## 产品体系
+## 1 产品体系
IoTDB 体系由若干个组件构成,帮助用户高效地管理和分析物联网产生的海量时序数据。
@@ -44,13 +44,13 @@ IoTDB 体系由若干个组件构成,帮助用户高效地管理和分析物
2. **时序数据标准文件格式(Apache TsFile)**:该文件格式是一种专为时序数据设计的存储格式,可以高效地存储和查询海量时序数据。目前 IoTDB、AINode 等模块的底层存储文件均由 Apache TsFile 进行支撑。通过 TsFile,用户可以在采集、管理、应用&分析阶段统一使用相同的文件格式进行数据管理,极大简化了数据采集到分析的整个流程,提高时序数据管理的效率和便捷度。
3. **时序模型训推一体化引擎(IoTDB AINode)**:针对智能分析场景,IoTDB 提供 AINode 时序模型训推一体化引擎,它提供了一套完整的时序数据分析工具,底层为模型训练引擎,支持训练任务与数据管理,与包括机器学习、深度学习等。通过这些工具,用户可以对存储在 IoTDB 中的数据进行深入分析,挖掘出其中的价值。
-## TimechoDB 整体架构
+## 2 TimechoDB 整体架构
下图展示了一个常见的 IoTDB 3C3D(3 个 ConfigNode、3 个 DataNode)的集群部署模式:
-## 产品特性
+## 3 产品特性
Apache IoTDB 具备以下优势和特性:
@@ -70,7 +70,7 @@ Apache IoTDB 具备以下优势和特性:
- 丰富的生态环境对接:支持Hadoop、Spark等大数据生态系统组件对接,支持Grafana、Thingsboard、DataEase等设备管理和可视化工具
-## 商业版本
+## 4 商业版本
天谋科技在 Apache IoTDB 开源版本的基础上提供了原厂商业化产品 TimechoDB,为企业、商业客户提供企业级产品和服务,它可以解决企业组建物联网大数据平台管理时序数据时所遇到的应用场景复杂、数据体量大、采样频率高、数据乱序多、数据处理耗时长、分析需求多样、存储与运维成本高等多种问题。
diff --git a/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_timecho.md b/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_timecho.md
index 8bbd61f78..8ecf2b001 100644
--- a/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_timecho.md
@@ -27,7 +27,7 @@ TimechoDB 是一款低成本、高性能的物联网原生时序数据库,是
- 下载、部署与使用:[快速上手](../QuickStart/QuickStart_timecho.md)
-## 产品体系
+## 1 产品体系
天谋产品体系由若干个组件构成,覆盖由【数据采集】到【数据管理】到【数据分析&应用】的全时序数据生命周期,做到“采-存-用”一体化时序数据解决方案,帮助用户高效地管理和分析物联网产生的海量时序数据。
@@ -43,13 +43,13 @@ TimechoDB 是一款低成本、高性能的物联网原生时序数据库,是
3. **时序模型训推一体化引擎(AINode)**:针对智能分析场景,TimechoDB 提供 AINode 时序模型训推一体化引擎,它提供了一套完整的时序数据分析工具,底层为模型训练引擎,支持训练任务与数据管理,与包括机器学习、深度学习等。通过这些工具,用户可以对存储在 TimechoDB 中的数据进行深入分析,挖掘出其中的价值。
4. **数据采集**:为了更加便捷的对接各类工业采集场景, 天谋科技提供数据采集接入服务,支持多种协议和格式,可以接入各种传感器、设备产生的数据,同时支持断点续传、网闸穿透等特性。更加适配工业领域采集过程中配置难、传输慢、网络弱的特点,让用户的数采变得更加简单、高效。
-## TimechoDB 整体架构
+## 2 TimechoDB 整体架构
下图展示了一个常见的 IoTDB 3C3D(3 个 ConfigNode、3 个 DataNode)的集群部署模式:
-## 产品特性
+## 3 产品特性
TimechoDB 具备以下优势和特性:
@@ -69,9 +69,9 @@ TimechoDB 具备以下优势和特性:
- 丰富的生态环境对接:支持Hadoop、Spark等大数据生态系统组件对接,支持Grafana、Thingsboard、DataEase等设备管理和可视化工具
-## 企业特性
+## 4 企业特性
-### 更高阶的产品功能
+### 4.1 更高阶的产品功能
TimechoDB 在开源版基础上提供了更多高阶产品功能,在内核层面针对工业生产场景进行原生升级和优化,如多级存储、云边协同、可视化工具、安全增强等功能,能够让用户无需过多关注底层逻辑,将精力聚焦在业务开发中,让工业生产更简单更高效,为企业带来更多的经济效益。如:
@@ -214,11 +214,11 @@ TimechoDB 在开源版基础上提供了更多高阶产品功能,在内核层
-### 更高效/稳定的产品性能
+### 4.2 更高效/稳定的产品性能
TimechoDB 在开源版的基础上优化了稳定性与性能,经过企业版技术支持,能够实现10倍以上性能提升,并具有故障及时恢复的性能优势。
-### 更用户友好的工具体系
+### 4.3 更用户友好的工具体系
TimechoDB 将为用户提供更简单、易用的工具体系,通过集群监控面板(IoTDB Grafana)、数据库控制台(IoTDB Workbench)、集群管理工具(IoTDB Deploy Tool,简称 IoTD)等产品帮助用户快速部署、管理、监控数据库集群,降低运维人员工作/学习成本,简化数据库运维工作,使运维过程更加方便、快捷。
@@ -259,13 +259,13 @@ TimechoDB 将为用户提供更简单、易用的工具体系,通过集群监
-### 更专业的企业技术服务
+### 4.4 更专业的企业技术服务
TimechoDB 客户提供强大的原厂服务,包括但不限于现场安装及培训、专家顾问咨询、现场紧急救助、软件升级、在线自助服务、远程支持、最新开发版使用指导等服务。同时,为了使 IoTDB 更契合工业生产场景,我们会根据企业实际数据结构和读写负载,进行建模方案推荐、读写性能调优、压缩比调优、数据库配置推荐及其他的技术支持。如遇到部分产品未覆盖的工业化定制场景,TimechoDB 将根据用户特点提供定制化开发工具。
相较于开源版本,每 2-3 个月一个发版周期,TimechoDB 提供周期更快的发版频率,同时针对客户现场紧急问题,提供天级别的专属修复,确保生产环境稳定。
-### 更兼容的国产化适配
+### 4.5 更兼容的国产化适配
TimechoDB 代码自研可控,同时兼容大部分主流信创产品(CPU、操作系统等),并完成与多个厂家的兼容认证,确保产品的合规性和安全性。
\ No newline at end of file
diff --git a/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/Release-history_timecho.md b/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/Release-history_timecho.md
index cff39be78..a07bcc8b4 100644
--- a/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/Release-history_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/Release-history_timecho.md
@@ -20,7 +20,7 @@
-->
# 发版历史
-## TimechoDB(数据库内核)
+## 1 TimechoDB(数据库内核)
### V1.3.4.1
> 发版时间:2025.01.08
>
@@ -202,7 +202,7 @@ V1.0.0.1主要修复分区计算及查询执行时的相关问题,历史快照
- 流处理模块:支持流处理框架
- 流处理模块:支持集群间数据同步功能
-## Workbench(控制台工具)
+## 2 Workbench(控制台工具)
| **控制台版本号** | **版本说明** | **可支持IoTDB版本** |
| ---------------- | ------------------------------------------------------------ | ------------------- |
diff --git a/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/Scenario.md b/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/Scenario.md
index 5a7798089..16ee26f3f 100644
--- a/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/Scenario.md
+++ b/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/Scenario.md
@@ -21,65 +21,65 @@
# 应用场景
-## 应用1——能源电力
+## 1 应用1——能源电力
-### 背景:
+### 1.1 背景:
通过对电力生产、传输、存储和消费过程中的海量时序数据进行采集、存储、分析以及对电力系统的实时监控、精准预测和智能调度,企业可以有效提升能源利用效率,降低运营成本,确保能源生产的安全性和可持续性,保障电网的安全稳定运行。
-### 架构
+### 1.2 架构
IoTDB 凭借集群高可用、低流量数据同步、跨网闸支持和优异的性能为企业提供国产化自主可控的时序数据管理解决方案,支撑企业应对大规模时序数据管理挑战,推动传统能源和可再生能源的高效管理与整合。

-## 应用2——航空航天
+## 2 应用2——航空航天
-### 背景
+### 2.1 背景
近年来,随着科技的不断进步,航空航天领域正进一步加快数字化与智能化建设。先进的数据采集和处理技术逐渐成为提升飞行安全、优化系统性能的重要手段。通过对飞机、火箭、卫星等设备在设计、制造、试飞、运行等全流程中产生的海量时序数据进行高效管理,企业能实现对飞行任务中关键系统的精准监测与分析,通过遥测数据实时回传、试飞数据快速导入,实现航空信息的监测和设计改进,确保飞行任务的安全可靠执行。
-### 架构
+### 2.2 架构
IoTDB 凭借其国产自研的高效低流量数据同步、离线数据迁移、丰富的部署选择和低资源占用等特点,为行业的数据管理和业务扩展提供了数据基础,为航空航天领域的技术创新和持续发展提供有力支撑。

-## 应用3——交通运输
+## 3 应用3——交通运输
-### 背景
+### 3.1 背景
交通运输行业的快速发展带来了对多样化交通数据管理的需求,尤其在铁路、地铁等关键枢纽中,数据的实时性、可靠性和精准性至关重要。通过对列车、地铁、船舶、汽车等设备的运行、状态、位置信息等多维数据进行实时采集、存储与分析,企业可实现智能调度、故障预警、线路优化和高效运维。企业不仅可以提升交通系统的运转效率,还降低了运营管理成本。
-### 架构
+### 3.2 架构
IoTDB 凭借其高效的时序数据管理和低延迟查询能力,有效应对交通运输行业中的数据爆发式增长,实现多源异构数据高效流转和管理,为铁路、船舶等构建起稳定可靠的智能交通系统管理基础,为行业向智能化和自动化方向发展提供了重要支撑。

-## 应用4——钢铁冶炼
+## 4 应用4——钢铁冶炼
-### 背景
+### 4.1 背景
作为传统制造业的典型代表,钢铁冶炼行业近年来逐步推进数字化转型和智能化改造,以应对日益增长的市场竞争和环保、安全等要求。特别是工业物联网平台的部署,已成为钢铁冶炼企业在生产环节中提升产能、优化产品质量、降低能耗的关键手段。通过工业物联网平台,企业能够对冶炼设备和生产线进行实时数据采集、存储和分析,从而实现对核心生产环节的智能监测、精准控制与高效管理。
-### 架构
+### 4.2 架构
IoTDB 通过其强大的数据存储与计算能力,为钢铁冶炼场景提供跨平台支持、低资源占用的灵活部署方案,丰富的外部接口也使其可以与其他系统高效集成,助力钢铁冶炼行业构建智慧工厂,进一步支撑传统工业加快形成新质生产力。

-## 应用5——物联网
+## 5 应用5——物联网
-### 背景
+### 5.1 背景
物联网(IoT)正在从根本上改变各个行业的运行方式,通过连接海量设备和深度数据分析实现智能化管理。随着物联网设备接入规模的不断扩大,对数据管理系统的处理、存储和分析能力提出了更高要求。企业需要高效管理来自边缘设备和云端的数据流,保证系统的实时性、稳定性和可扩展性,以支持设备状态监测、故障诊断、预测性维护等核心业务应用。
-### 架构
+### 5.2 架构
作为物联网原生的高性能时序数据库,IoTDB 支持从边缘设备到云端的全链路数据同步和存储分析,具备高并发处理能力,能够满足大规模设备接入的需求。IoTDB为企业提供灵活的数据解决方案,助力发掘设备运行数据中的深层次价值,提升运营效率,推动企业物联网业务的全面发展。
diff --git a/src/zh/UserGuide/Master/Tree/QuickStart/QuickStart_apache.md b/src/zh/UserGuide/Master/Tree/QuickStart/QuickStart_apache.md
index 8fa2a80d6..b8aceb03e 100644
--- a/src/zh/UserGuide/Master/Tree/QuickStart/QuickStart_apache.md
+++ b/src/zh/UserGuide/Master/Tree/QuickStart/QuickStart_apache.md
@@ -23,7 +23,7 @@
本篇文档将帮助您了解快速入门 IoTDB 的方法。
-## 如何安装部署?
+## 1 如何安装部署?
本篇文档将帮助您快速安装部署 IoTDB,您可以通过以下文档的链接快速定位到所需要查看的内容:
@@ -41,7 +41,7 @@
> ❗️注意:目前我们仍然推荐直接在物理机/虚拟机上安装部署,如需要 docker 部署,可参考:[Docker 部署](../Deployment-and-Maintenance/Docker-Deployment_apache.md)
-## 如何使用?
+## 2 如何使用?
1. 数据库建模设计:数据库建模是创建数据库系统的重要步骤,它涉及到设计数据的结构和关系,以确保数据的组织方式能够满足特定应用的需求,下面的文档将会帮助您快速了解 IoTDB 的建模设计:
@@ -65,7 +65,7 @@
5. 应用编程接口: IoTDB 提供了多种应用编程接口(API),以便于开发者在应用程序中与 IoTDB 进行交互,目前支持 [Java](../API/Programming-Java-Native-API.md)、[Python](../API/Programming-Python-Native-API.md)、[C++](../API/Programming-Cpp-Native-API.md)等,更多编程接口可参见官网【应用编程接口】其他章节
-## 还有哪些便捷的周边工具?
+## 3 还有哪些便捷的周边工具?
IoTDB 除了自身拥有丰富的功能外,其周边的工具体系包含的种类十分齐全。本篇文档将帮助您快速使用周边工具体系:
@@ -76,7 +76,7 @@ IoTDB 除了自身拥有丰富的功能外,其周边的工具体系包含的
- 数据导出脚本:针对于不同场景,IoTDB 为用户提供多种批量导出数据的操作方式,具体使用介绍请查看:[数据导出](../Tools-System/Data-Export-Tool.md)
-## 想了解更多技术细节?
+## 4 想了解更多技术细节?
如果您想了解 IoTDB 的更多技术内幕,可以移步至下面的文档:
@@ -86,6 +86,6 @@ IoTDB 除了自身拥有丰富的功能外,其周边的工具体系包含的
- 数据分区和负载均衡:IoTDB 基于时序数据特性,精心设计了数据分区策略和负载均衡算法,提升了集群的可用性和性能,想了解更多请查看 [数据分区和负载均衡](../Technical-Insider/Cluster-data-partitioning.md)
-## 使用过程中遇到问题?
+## 5 使用过程中遇到问题?
如果您在安装或使用过程中遇到困难,可以移步至 [常见问题](../FAQ/Frequently-asked-questions.md) 中进行查看
\ No newline at end of file
diff --git a/src/zh/UserGuide/Master/Tree/QuickStart/QuickStart_timecho.md b/src/zh/UserGuide/Master/Tree/QuickStart/QuickStart_timecho.md
index 77bca47ab..7ab8e85a6 100644
--- a/src/zh/UserGuide/Master/Tree/QuickStart/QuickStart_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/QuickStart/QuickStart_timecho.md
@@ -23,7 +23,7 @@
本篇文档将帮助您了解快速入门 IoTDB 的方法。
-## 如何安装部署?
+## 1 如何安装部署?
本篇文档将帮助您快速安装部署 IoTDB,您可以通过以下文档的链接快速定位到所需要查看的内容:
@@ -49,14 +49,14 @@
- 可视化控制台:是 IoTDB 的可视化界面,支持通过界面交互的形式提供元数据管理、数据查询、数据可视化等功能的操作,帮助用户简单、高效的使用数据库,安装步骤可查看 [可视化控制台部署](../Deployment-and-Maintenance/workbench-deployment_timecho.md)
-## 如何使用?
+## 2 如何使用?
1. 数据库建模设计:数据库建模是创建数据库系统的重要步骤,它涉及到设计数据的结构和关系,以确保数据的组织方式能够满足特定应用的需求,下面的文档将会帮助您快速了解 IoTDB 的建模设计:
- 时序概念介绍:[走进时序数据](../Background-knowledge/Navigating_Time_Series_Data.md)
- 建模设计介绍:[数据模型介绍](../Background-knowledge/Data-Model-and-Terminology.md)
-
+
- SQL 语法介绍:[SQL 语法介绍](../Basic-Concept/Operate-Metadata_timecho.md)
2. 数据写入:在数据写入方面,IoTDB 提供了多种方式来插入实时数据,基本的数据写入操作请查看 [数据写入](../Basic-Concept/Write-Delete-Data.md)
@@ -77,7 +77,7 @@
5. 应用编程接口: IoTDB 提供了多种应用编程接口(API),以便于开发者在应用程序中与 IoTDB 进行交互,目前支持[ Java 原生接口](../API/Programming-Java-Native-API.md)、[Python 原生接口](../API/Programming-Python-Native-API.md)、[C++原生接口](../API/Programming-Cpp-Native-API.md)、[Go 原生接口](../API/Programming-Go-Native-API.md)等,更多编程接口可参见官网【应用编程接口】其他章节
-## 还有哪些便捷的周边工具?
+## 3 还有哪些便捷的周边工具?
IoTDB 除了自身拥有丰富的功能外,其周边的工具体系包含的种类十分齐全。本篇文档将帮助您快速使用周边工具体系:
@@ -93,7 +93,7 @@ IoTDB 除了自身拥有丰富的功能外,其周边的工具体系包含的
- 数据导出脚本:针对于不同场景,IoTDB 为用户提供多种批量导出数据的操作方式,具体使用介绍请查看:[数据导出](../Tools-System/Data-Export-Tool.md)
-## 想了解更多技术细节?
+## 4 想了解更多技术细节?
如果您想了解 IoTDB 的更多技术内幕,可以移步至下面的文档:
@@ -104,6 +104,6 @@ IoTDB 除了自身拥有丰富的功能外,其周边的工具体系包含的
- 数据分区和负载均衡:IoTDB 基于时序数据特性,精心设计了数据分区策略和负载均衡算法,提升了集群的可用性和性能,想了解更多请查看 [数据分区和负载均衡](../Technical-Insider/Cluster-data-partitioning.md)
-## 使用过程中遇到问题?
+## 5 使用过程中遇到问题?
如果您在安装或使用过程中遇到困难,可以移步至 [常见问题](../FAQ/Frequently-asked-questions.md) 中进行查看
\ No newline at end of file
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/AINode_apache.md b/src/zh/UserGuide/Master/Tree/User-Manual/AINode_apache.md
index 6ff0a959f..8f4b1274d 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/AINode_apache.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/AINode_apache.md
@@ -33,7 +33,7 @@ AINode 是 IoTDB 在ConfigNode、DataNode后提供的第三种内生节点,该
- **DataNode**:负责接收并解析用户的 SQL请求;负责存储时间序列数据;负责数据的预处理计算。
- **AINode**:负责模型文件的导入创建以及模型推理。
-## 优势特点
+## 1 优势特点
与单独构建机器学习服务相比,具有以下优势:
@@ -49,7 +49,7 @@ AINode 是 IoTDB 在ConfigNode、DataNode后提供的第三种内生节点,该
- **时间序列标注(Time Series Annotation)**:为每个数据点或特定时间段添加额外的信息或标记,例如事件发生、异常点、趋势变化等,以便更好地理解和分析数据。
-## 基本概念
+## 2 基本概念
- **模型(Model)**:机器学习模型,以时序数据作为输入,输出分析任务的结果或决策。模型是AINode 的基本管理单元,支持模型的增(注册)、删、查、用(推理)。
- **创建(Create)**: 将外部设计或训练好的模型文件或算法加载到MLNode中,由IoTDB统一管理与使用。
@@ -60,15 +60,15 @@ AINode 是 IoTDB 在ConfigNode、DataNode后提供的第三种内生节点,该
:::
-## 安装部署
+## 3 安装部署
AINode 的部署可参考文档 [部署指导](../Deployment-and-Maintenance/AINode_Deployment_apache.md#ainode-部署) 章节。
-## 使用指导
+## 4 使用指导
AINode 对时序数据相关的深度学习模型提供了模型创建及删除的流程,内置模型无需创建及删除,可直接使用,并且在完成推理后创建的内置模型实例将自动销毁。
-### 注册模型
+### 4.1 注册模型
通过指定模型输入输出的向量维度,可以注册训练好的深度学习模型,从而用于模型推理。
@@ -154,7 +154,7 @@ SQL执行后会异步进行注册的流程,可以通过模型展示查看模
模型注册完成后,就可以通过使用正常查询的方式调用具体函数,进行模型推理。
-### 查看模型
+### 4.2 查看模型
注册成功的模型可以通过show models指令查询模型的具体信息。其SQL定义如下:
@@ -202,7 +202,7 @@ IoTDB> show models
我们前面已经注册了对应的模型,可以通过对应的指定查看模型状态,active表明模型注册成功,可用于推理。
-### 删除模型
+### 4.3 删除模型
对于注册成功的模型,用户可以通过SQL进行删除。该操作除了删除configNode上的元信息外,还会删除所有AINode下的相关模型文件。其SQL如下:
@@ -212,7 +212,7 @@ drop model
需要指定已经成功注册的模型model_name来删除对应的模型。由于模型删除涉及多个节点上的数据删除,操作不会立即完成,此时模型的状态为DROPPING,该状态的模型不能用于模型推理。
-### 使用内置模型推理
+### 4.4 使用内置模型推理
SQL语法如下:
@@ -281,7 +281,7 @@ IoTDB> call inference(_Stray, "select s0 from root.eg.airline", k=2)
Total line number = 144
```
-### 使用深度学习模型推理
+### 4.5 使用深度学习模型推理
SQL语法如下:
@@ -441,7 +441,7 @@ Total line number = 4
其中结果集中每行的标签对应每24行数据为一组,输入该异常检测模型后的输出。
-## 权限管理
+## 5 权限管理
使用AINode相关的功能时,可以使用IoTDB本身的鉴权去做一个权限管理,用户只有在具备 USE_MODEL 权限时,才可以使用模型管理的相关功能。当使用推理功能时,用户需要有访问输入模型的SQL对应的源序列的权限。
@@ -450,9 +450,9 @@ Total line number = 4
| USE_MODEL | create model / show models / drop model | √ | √ | x |
| READ_DATA | call inference | √ | √ | √ |
-## 实际案例
+## 6 实际案例
-### 电力负载预测
+### 6.1 电力负载预测
在部分工业场景下,会存在预测电力负载的需求,预测结果可用于优化电力供应、节约能源和资源、支持规划和扩展以及增强电力系统的可靠性。
@@ -523,7 +523,7 @@ Total line number = 48
可以看到,我们使用了过去96个小时(4天)的六个负载信息和对应时间油温的关系,基于之前学习到的序列间相互关系对未来48个小时(2天)的油温这一数据的可能变化进行了建模,可以看到可视化后预测曲线与实际结果在趋势上保持了较高程度的一致性。
-### 功率预测
+### 6.2 功率预测
变电站需要对电流、电压、功率等数据进行电力监控,用于检测潜在的电网问题、识别电力系统中的故障、有效管理电网负载以及分析电力系统的性能和趋势等。
@@ -588,7 +588,7 @@ Total line number = 48
可以看到,我们使用了过去10分钟的电压的数据,基于之前学习到的序列间相互关系对未来5分钟的C相电压这一数据的可能变化进行了建模,可以看到可视化后预测曲线与实际结果在趋势上保持了一定的同步性。
-### 异常检测
+### 6.3 异常检测
在民航交通运输业,存在着对乘机旅客数量进行异常检测的需求。异常检测的结果可用于指导调整航班的调度,以使得企业获得更大效益。
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/AINode_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/AINode_timecho.md
index 594236294..3f4aa77e0 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/AINode_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/AINode_timecho.md
@@ -33,7 +33,7 @@ AINode 是 IoTDB 在ConfigNode、DataNode后提供的第三种内生节点,该
- **DataNode**:负责接收并解析用户的 SQL请求;负责存储时间序列数据;负责数据的预处理计算。
- **AINode**:负责模型文件的导入创建以及模型推理。
-## 优势特点
+## 1 优势特点
与单独构建机器学习服务相比,具有以下优势:
@@ -49,7 +49,7 @@ AINode 是 IoTDB 在ConfigNode、DataNode后提供的第三种内生节点,该
- **时间序列标注(Time Series Annotation)**:为每个数据点或特定时间段添加额外的信息或标记,例如事件发生、异常点、趋势变化等,以便更好地理解和分析数据。
-## 基本概念
+## 2 基本概念
- **模型(Model)**:机器学习模型,以时序数据作为输入,输出分析任务的结果或决策。模型是AINode 的基本管理单元,支持模型的增(注册)、删、查、用(推理)。
- **创建(Create)**: 将外部设计或训练好的模型文件或算法加载到MLNode中,由IoTDB统一管理与使用。
@@ -60,15 +60,15 @@ AINode 是 IoTDB 在ConfigNode、DataNode后提供的第三种内生节点,该
:::
-## 安装部署
+## 3 安装部署
AINode 的部署可参考文档 [部署指导](../Deployment-and-Maintenance/AINode_Deployment_timecho.md#AINode-部署) 章节。
-## 使用指导
+## 4 使用指导
AINode 对时序数据相关的深度学习模型提供了模型创建及删除的流程,内置模型无需创建及删除,可直接使用,并且在完成推理后创建的内置模型实例将自动销毁。
-### 注册模型
+### 4.1 注册模型
通过指定模型输入输出的向量维度,可以注册训练好的深度学习模型,从而用于模型推理。
@@ -154,7 +154,7 @@ SQL执行后会异步进行注册的流程,可以通过模型展示查看模
模型注册完成后,就可以通过使用正常查询的方式调用具体函数,进行模型推理。
-### 查看模型
+### 4.2 查看模型
注册成功的模型可以通过show models指令查询模型的具体信息。其SQL定义如下:
@@ -202,7 +202,7 @@ IoTDB> show models
我们前面已经注册了对应的模型,可以通过对应的指定查看模型状态,active表明模型注册成功,可用于推理。
-### 删除模型
+### 4.3 删除模型
对于注册成功的模型,用户可以通过SQL进行删除。该操作除了删除configNode上的元信息外,还会删除所有AINode下的相关模型文件。其SQL如下:
@@ -212,7 +212,7 @@ drop model
需要指定已经成功注册的模型model_name来删除对应的模型。由于模型删除涉及多个节点上的数据删除,操作不会立即完成,此时模型的状态为DROPPING,该状态的模型不能用于模型推理。
-### 使用内置模型推理
+### 4.4 使用内置模型推理
SQL语法如下:
@@ -281,7 +281,7 @@ IoTDB> call inference(_Stray, "select s0 from root.eg.airline", k=2)
Total line number = 144
```
-### 使用深度学习模型推理
+### 4.5 使用深度学习模型推理
SQL语法如下:
@@ -441,7 +441,7 @@ Total line number = 4
其中结果集中每行的标签对应每24行数据为一组,输入该异常检测模型后的输出。
-## 权限管理
+## 5 权限管理
使用AINode相关的功能时,可以使用IoTDB本身的鉴权去做一个权限管理,用户只有在具备 USE_MODEL 权限时,才可以使用模型管理的相关功能。当使用推理功能时,用户需要有访问输入模型的SQL对应的源序列的权限。
@@ -450,9 +450,9 @@ Total line number = 4
| USE_MODEL | create model / show models / drop model | √ | √ | x |
| READ_DATA | call inference | √ | √ | √ |
-## 实际案例
+## 6 实际案例
-### 电力负载预测
+### 6.1 电力负载预测
在部分工业场景下,会存在预测电力负载的需求,预测结果可用于优化电力供应、节约能源和资源、支持规划和扩展以及增强电力系统的可靠性。
@@ -523,7 +523,7 @@ Total line number = 48
可以看到,我们使用了过去96个小时(4天)的六个负载信息和对应时间油温的关系,基于之前学习到的序列间相互关系对未来48个小时(2天)的油温这一数据的可能变化进行了建模,可以看到可视化后预测曲线与实际结果在趋势上保持了较高程度的一致性。
-### 功率预测
+### 6.2 功率预测
变电站需要对电流、电压、功率等数据进行电力监控,用于检测潜在的电网问题、识别电力系统中的故障、有效管理电网负载以及分析电力系统的性能和趋势等。
@@ -588,7 +588,7 @@ Total line number = 48
可以看到,我们使用了过去10分钟的电压的数据,基于之前学习到的序列间相互关系对未来5分钟的C相电压这一数据的可能变化进行了建模,可以看到可视化后预测曲线与实际结果在趋势上保持了一定的同步性。
-### 异常检测
+### 6.3 异常检测
在民航交通运输业,存在着对乘机旅客数量进行异常检测的需求。异常检测的结果可用于指导调整航班的调度,以使得企业获得更大效益。
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/Audit-Log_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/Audit-Log_timecho.md
index b4609b543..2aacd8444 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/Audit-Log_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Audit-Log_timecho.md
@@ -22,7 +22,7 @@
# 审计日志
-## 功能背景
+## 1 功能背景
审计日志是数据库的记录凭证,通过审计日志功能可以查询到用户在数据库中增删改查等各项操作,以保证信息安全。关于IoTDB的审计日志功能可以实现以下场景的需求:
@@ -31,7 +31,7 @@
-### 场景说明
+### 1.1 场景说明
@@ -56,7 +56,7 @@
-## 功能定义
+## 2 功能定义
@@ -72,7 +72,7 @@
2. 数据和元数据的查询操作
3. 元数据类的新增、修改、删除操作
-### 配置项
+### 2.1 配置项
在iotdb-system.properties中修改以下几项配置
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/Authority-Management.md b/src/zh/UserGuide/Master/Tree/User-Manual/Authority-Management.md
index 12a207857..7abacc09f 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/Authority-Management.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Authority-Management.md
@@ -24,51 +24,51 @@
IoTDB 为用户提供了权限管理操作,为用户提供对数据与集群系统的权限管理功能,保障数据与系统安全。
本篇介绍IoTDB 中权限模块的基本概念、用户定义、权限管理、鉴权逻辑与功能用例。在 JAVA 编程环境中,您可以使用 [JDBC API](../API/Programming-JDBC.md) 单条或批量执行权限管理类语句。
-## 基本概念
+## 1 基本概念
-### 用户
+### 1.1 用户
用户即数据库的合法使用者。一个用户与一个唯一的用户名相对应,并且拥有密码作为身份验证的手段。一个人在使用数据库之前,必须先提供合法的(即存于数据库中的)用户名与密码,作为用户成功登录。
-### 权限
+### 1.2 权限
数据库提供多种操作,但并非所有的用户都能执行所有操作。如果一个用户可以执行某项操作,则称该用户有执行该操作的权限。权限通常需要一个路径来限定其生效范围,可以使用[路径模式](../Background-knowledge/Data-Model-and-Terminology.md)灵活管理权限。
-### 角色
+### 1.3 角色
角色是若干权限的集合,并且有一个唯一的角色名作为标识符。角色通常和一个现实身份相对应(例如交通调度员),而一个现实身份可能对应着多个用户。这些具有相同现实身份的用户往往具有相同的一些权限,角色就是为了能对这样的权限进行统一的管理的抽象。
-### 默认用户与角色
+### 1.4 默认用户与角色
安装初始化后的 IoTDB 中有一个默认用户:root,默认密码为 root。该用户为管理员用户,固定拥有所有权限,无法被赋予、撤销权限,也无法被删除,数据库内仅有一个管理员用户。
一个新创建的用户或角色不具备任何权限。
-## 用户定义
+## 2 用户定义
拥有 MANAGE_USER、MANAGE_ROLE 的用户或者管理员可以创建用户或者角色,需要满足以下约束:
-### 用户名限制
+### 2.1 用户名限制
4~32个字符,支持使用英文大小写字母、数字、特殊字符(`!@#$%^&*()_+-=`)
用户无法创建和管理员用户同名的用户。
-### 密码限制
+### 2.2 密码限制
4~32个字符,可使用大写小写字母、数字、特殊字符(`!@#$%^&*()_+-=`),密码默认采用 MD5 进行加密。
-### 角色名限制
+### 2.3 角色名限制
4~32个字符,支持使用英文大小写字母、数字、特殊字符(`!@#$%^&*()_+-=`)
用户无法创建和管理员用户同名的角色。
-## 权限管理
+## 3 权限管理
IoTDB 主要有两类权限:序列权限、全局权限。
-### 序列权限
+### 3.1 序列权限
序列权限约束了用户访问数据的范围与方式,支持对绝对路径与前缀匹配路径授权,可对timeseries 粒度生效。
@@ -81,7 +81,7 @@ IoTDB 主要有两类权限:序列权限、全局权限。
| READ_SCHEMA | 允许获取授权路径下元数据树的详细信息:
包括:路径下的数据库、子路径、子节点、设备、序列、模版、视图等。 |
| WRITE_SCHEMA | 允许获取授权路径下元数据树的详细信息。
允许在授权路径下对序列、模版、视图等进行创建、删除、修改操作。
在创建或修改 view 的时候,会检查 view 路径的 WRITE_SCHEMA 权限、数据源的 READ_SCHEMA 权限。
在对 view 进行查询、插入时,会检查 view 路径的 READ_DATA 权限、WRITE_DATA 权限。
允许在授权路径下设置、取消、查看TTL。
允许在授权路径下挂载或者接触挂载模板。 |
-### 全局权限
+### 3.2 全局权限
全局权限约束了用户使用的数据库功能、限制了用户执行改变系统状态与任务状态的命令,用户获得全局授权后,可对数据库进行管理。
@@ -108,7 +108,7 @@ IoTDB 主要有两类权限:序列权限、全局权限。
4. 解除模板,需要拥有挂载模板路径的 WRITE_SCHEMA 权限。
5. 查询使用了某个元数据模板的路径,需要有路径的 READ_SCHEMA 权限,否则将返回为空。
-### 权限授予与取消
+### 3.3 权限授予与取消
在 IoTDB 中,用户可以由三种途径获得权限:
@@ -128,7 +128,7 @@ IoTDB 主要有两类权限:序列权限、全局权限。
-## 鉴权
+## 4 鉴权
用户权限主要由三部分组成:权限生效范围(路径), 权限类型, with grant option 标记:
@@ -151,7 +151,7 @@ userTest1 :
-## 功能语法与示例
+## 5 功能语法与示例
IoTDB 提供了组合权限,方便用户授权:
@@ -165,7 +165,7 @@ IoTDB 提供了组合权限,方便用户授权:
下面将通过一系列具体的用例展示权限语句的用法,非管理员执行下列语句需要提前获取权限,所需的权限标记在操作描述后。
-### 用户与角色相关
+### 5.1 用户与角色相关
- 创建用户(需 MANAGE_USER 权限)
@@ -270,7 +270,7 @@ ALTER USER SET PASSWORD ;
eg: ALTER USER tempuser SET PASSWORD 'newpwd';
```
-### 授权与取消授权
+### 5.2 授权与取消授权
用户使用授权语句对赋予其他用户权限,语法如下:
@@ -331,11 +331,11 @@ eg: REVOKE ALL ON ROOT.** FROM USER user1;
root.t1*.t2.t3
```
-## 示例
+## 6 示例
根据本文中描述的 [样例数据](https://github.com/thulab/iotdb/files/4438687/OtherMaterial-Sample.Data.txt) 内容,IoTDB 的样例数据可能同时属于 ln, sgcc 等不同发电集团,不同的发电集团不希望其他发电集团获取自己的数据库数据,因此我们需要将不同的数据在集团层进行权限隔离。
-### 创建用户
+### 6.1 创建用户
使用 `CREATE USER ` 创建用户。例如,我们可以使用具有所有权限的root用户为 ln 和 sgcc 集团创建两个用户角色,名为 ln_write_user, sgcc_write_user,密码均为 write_pwd。建议使用反引号(`)包裹用户名。SQL 语句为:
@@ -368,7 +368,7 @@ Total line number = 3
It costs 0.012s
```
-### 赋予用户权限
+### 6.2 赋予用户权限
此时,虽然两个用户已经创建,但是他们不具有任何权限,因此他们并不能对数据库进行操作,例如我们使用 ln_write_user 用户对数据库中的数据进行写入,SQL 语句为:
@@ -407,7 +407,7 @@ IoTDB> INSERT INTO root.ln.wf01.wt01(timestamp, status) values(1509465600000, tr
Msg: The statement is executed successfully.
```
-### 撤销用户权限
+### 6.3 撤销用户权限
授予用户权限后,我们可以使用 `REVOKE ON FROM USER `来撤销已经授予用户的权限。例如,用root用户撤销ln_write_user和sgcc_write_user的权限:
``` SQL
@@ -430,7 +430,7 @@ IoTDB> INSERT INTO root.ln.wf01.wt01(timestamp, status) values(1509465600000, tr
Msg: 803: No permissions for this operation, please add privilege WRITE_DATA on [root.ln.wf01.wt01.status]
```
-## 其他说明
+## 7 其他说明
角色是权限的集合,而权限和角色都是用户的一种属性。即一个角色可以拥有若干权限。一个用户可以拥有若干角色与权限(称为用户自身权限)。
@@ -440,7 +440,7 @@ Msg: 803: No permissions for this operation, please add privilege WRITE_DATA on
同时,对角色的修改会立即反映到所有拥有该角色的用户上,例如对角色增加某种权限将立即使所有拥有该角色的用户都拥有对应权限,删除某种权限也将使对应用户失去该权限(除非用户本身有该权限)。
-## 升级说明
+## 8 升级说明
在 1.3 版本前,权限类型较多,在这一版实现中,权限类型做了精简,并且添加了对权限路径的约束。
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/Data-Recovery.md b/src/zh/UserGuide/Master/Tree/User-Manual/Data-Recovery.md
index c02f04f3b..95902c846 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/Data-Recovery.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Data-Recovery.md
@@ -19,11 +19,11 @@
-->
-## 数据修复
+# 数据修复
用于修复数据中存在的问题,如顺序空间内的数据未按时间递增顺序排列。
-### START REPAIR DATA
+## 1 START REPAIR DATA
启动一个数据修复任务,扫描创建修复任务的时间之前产生的 tsfile 文件并修复有乱序错误的文件。
@@ -33,7 +33,7 @@ IoTDB> START REPAIR DATA ON LOCAL
IoTDB> START REPAIR DATA ON CLUSTER
```
-### STOP REPAIR DATA
+## 2 STOP REPAIR DATA
停止一个进行中的修复任务。如果需要再次恢复一个已停止的数据修复任务的进度,可以重新执行 `START REPAIR DATA`.
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/Data-Sync_apache.md b/src/zh/UserGuide/Master/Tree/User-Manual/Data-Sync_apache.md
index 079184a76..8acb21db6 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/Data-Sync_apache.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Data-Sync_apache.md
@@ -22,9 +22,9 @@
# 数据同步
数据同步是工业物联网的典型需求,通过数据同步机制,可实现 IoTDB 之间的数据共享,搭建完整的数据链路来满足内网外网数据互通、端边云同步、数据迁移、数据备份等需求。
-## 功能概述
+## 1 功能概述
-### 数据同步
+### 1.1 数据同步
一个数据同步任务包含 3 个阶段:
@@ -76,7 +76,7 @@
-### 功能限制及说明
+### 1.2 功能限制及说明
元数据(schema)、权限(auth)同步功能存在如下限制:
@@ -88,7 +88,7 @@
- 在进行数据同步任务时,请避免执行任何删除操作,防止两端状态不一致。
-## 使用说明
+## 2 使用说明
数据同步任务有三种状态:RUNNING、STOPPED 和 DROPPED。任务状态转换如下图所示:
@@ -98,7 +98,7 @@
提供以下 SQL 语句对同步任务进行状态管理。
-### 创建任务
+### 2.1 创建任务
使用 `CREATE PIPE` 语句来创建一条数据同步任务,下列属性中`PipeId`和`sink`必填,`source`和`processor`为选填项,输入 SQL 时注意 `SOURCE`与 `SINK` 插件顺序不能替换。
@@ -122,7 +122,7 @@ WITH SINK (
**IF NOT EXISTS 语义**:用于创建操作中,确保当指定 Pipe 不存在时,执行创建命令,防止因尝试创建已存在的 Pipe 而导致报错。
-### 开始任务
+### 2.2 开始任务
开始处理数据:
@@ -130,7 +130,7 @@ WITH SINK (
START PIPE
```
-### 停止任务
+### 2.3 停止任务
停止处理数据:
@@ -138,7 +138,7 @@ START PIPE
STOP PIPE
```
-### 删除任务
+### 2.4 删除任务
删除指定任务:
@@ -150,7 +150,7 @@ DROP PIPE [IF EXISTS]
删除任务不需要先停止同步任务。
-### 查看任务
+### 2.5 查看任务
查看全部任务:
@@ -187,7 +187,7 @@ SHOW PIPE
- **RemainingEventCount(统计存在延迟)**:剩余 event 数,当前数据同步任务中的所有 event 总数,包括数据和元数据同步的 event,以及系统和用户自定义的 event。
- **EstimatedRemainingSeconds(统计存在延迟)**:剩余时间,基于当前 event 个数和 pipe 处速率,预估完成传输的剩余时间。
-### 同步插件
+### 2.6 同步插件
为了使得整体架构更加灵活以匹配不同的同步场景需求,我们支持在同步任务框架中进行插件组装。系统为您预置了一些常用插件可直接使用,同时您也可以自定义 processor 插件 和 Sink 插件,并加载至 IoTDB 系统进行使用。查看系统中的插件(含自定义与内置插件)可以用以下语句:
@@ -255,11 +255,11 @@ IoTDB> SHOW PIPEPLUGINS
-导入自定义插件可参考[流处理框架](./Streaming_timecho.md#自定义流处理插件管理)章节。
+导入自定义插件可参考[流处理框架](./Streaming_apache.md#自定义流处理插件管理)章节。
-## 使用示例
+## 3 使用示例
-### 全量数据同步
+### 3.1 全量数据同步
本例子用来演示将一个 IoTDB 的所有数据同步至另一个 IoTDB,数据链路如下图所示:
@@ -275,7 +275,7 @@ with sink (
)
```
-### 部分数据同步
+### 3.2 部分数据同步
本例子用来演示同步某个历史时间范围( 2023 年 8 月 23 日 8 点到 2023 年 10 月 23 日 8 点)的数据至另一个 IoTDB,数据链路如下图所示:
@@ -299,7 +299,7 @@ with SINK (
)
```
-### 边云数据传输
+### 3.3 边云数据传输
本例子用来演示多个 IoTDB 之间边云传输数据的场景,数据由 B 、C、D 集群分别都同步至 A 集群,数据链路如下图所示:
@@ -349,7 +349,7 @@ with sink (
)
```
-### 级联数据传输
+### 3.4 级联数据传输
本例子用来演示多个 IoTDB 之间级联传输数据的场景,数据由 A 集群同步至 B 集群,再同步至 C 集群,数据链路如下图所示:
@@ -380,7 +380,7 @@ with sink (
)
```
-### 压缩同步
+### 3.5 压缩同步
IoTDB 支持在同步过程中指定数据压缩方式。可通过配置 `compressor` 参数,实现数据的实时压缩和传输。`compressor`目前支持 snappy / gzip / lz4 / zstd / lzma2 5 种可选算法,且可以选择多种压缩算法组合,按配置的顺序进行压缩。`rate-limit-bytes-per-second`(V1.3.3 及以后版本支持)每秒最大允许传输的byte数,计算压缩后的byte,若小于0则不限制。
@@ -394,7 +394,7 @@ with sink (
)
```
-### 加密同步
+### 3.6 加密同步
IoTDB 支持在同步过程中使用 SSL 加密,从而在不同的 IoTDB 实例之间安全地传输数据。通过配置 SSL 相关的参数,如证书地址和密码(`ssl.trust-store-path`)、(`ssl.trust-store-pwd`)可以确保数据在同步过程中被 SSL 加密所保护。
@@ -410,7 +410,7 @@ with sink (
)
```
-## 参考:注意事项
+## 4 参考:注意事项
可通过修改 IoTDB 配置文件(`iotdb-system.properties`)以调整数据同步的参数,如同步数据存储目录等。完整配置如下::
@@ -474,9 +474,9 @@ pipe_sink_max_client_number=16
pipe_all_sinks_rate_limit_bytes_per_second=-1
```
-## 参考:参数说明
+## 5 参考:参数说明
-### source 参数(V1.3.3)
+### 5.1 source 参数(V1.3.3)
| 参数 | 描述 | value 取值范围 | 是否必填 | 默认取值 |
| ------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -------- | -------------- |
@@ -500,7 +500,7 @@ pipe_all_sinks_rate_limit_bytes_per_second=-1
> - **batch**:该模式下,任务将对数据进行批量(按底层数据文件)处理、发送,其特点是低时效、高吞吐
-### sink 参数
+### 5.2 sink 参数
> 在 1.3.3 及以上的版本中,只包含sink的情况下,不再需要额外增加with sink 前缀
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/Data-Sync_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/Data-Sync_timecho.md
index 7d9b059a5..beda99c85 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/Data-Sync_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Data-Sync_timecho.md
@@ -22,9 +22,9 @@
# 数据同步
数据同步是工业物联网的典型需求,通过数据同步机制,可实现 IoTDB 之间的数据共享,搭建完整的数据链路来满足内网外网数据互通、端边云同步、数据迁移、数据备份等需求。
-## 功能概述
+## 1 功能概述
-### 数据同步
+### 1.1 数据同步
一个数据同步任务包含 3 个阶段:
@@ -76,7 +76,7 @@
-### 功能限制及说明
+### 1.2 功能限制及说明
元数据(schema)、权限(auth)同步功能存在如下限制:
@@ -90,7 +90,7 @@
- 在进行数据同步任务时,请避免执行任何删除操作,防止两端状态不一致。
-## 使用说明
+## 2 使用说明
数据同步任务有三种状态:RUNNING、STOPPED 和 DROPPED。任务状态转换如下图所示:
@@ -100,7 +100,7 @@
提供以下 SQL 语句对同步任务进行状态管理。
-### 创建任务
+### 2.1 创建任务
使用 `CREATE PIPE` 语句来创建一条数据同步任务,下列属性中`PipeId`和`sink`必填,`source`和`processor`为选填项,输入 SQL 时注意 `SOURCE`与 `SINK` 插件顺序不能替换。
@@ -124,7 +124,7 @@ WITH SINK (
**IF NOT EXISTS 语义**:用于创建操作中,确保当指定 Pipe 不存在时,执行创建命令,防止因尝试创建已存在的 Pipe 而导致报错。
-### 开始任务
+### 2.2 开始任务
开始处理数据:
@@ -132,7 +132,7 @@ WITH SINK (
START PIPE
```
-### 停止任务
+### 2.3 停止任务
停止处理数据:
@@ -140,7 +140,7 @@ START PIPE
STOP PIPE
```
-### 删除任务
+### 2.4 删除任务
删除指定任务:
@@ -152,7 +152,7 @@ DROP PIPE [IF EXISTS]
删除任务不需要先停止同步任务。
-### 查看任务
+### 2.5 查看任务
查看全部任务:
@@ -188,7 +188,7 @@ SHOW PIPE
- **RemainingEventCount(统计存在延迟)**:剩余 event 数,当前数据同步任务中的所有 event 总数,包括数据和元数据同步的 event,以及系统和用户自定义的 event。
- **EstimatedRemainingSeconds(统计存在延迟)**:剩余时间,基于当前 event 个数和 pipe 处速率,预估完成传输的剩余时间。
-### 同步插件
+### 2.6 同步插件
为了使得整体架构更加灵活以匹配不同的同步场景需求,我们支持在同步任务框架中进行插件组装。系统为您预置了一些常用插件可直接使用,同时您也可以自定义 processor 插件 和 Sink 插件,并加载至 IoTDB 系统进行使用。查看系统中的插件(含自定义与内置插件)可以用以下语句:
@@ -265,9 +265,9 @@ IoTDB> SHOW PIPEPLUGINS
导入自定义插件可参考[流处理框架](./Streaming_timecho.md#自定义流处理插件管理)章节。
-## 使用示例
+## 3 使用示例
-### 全量数据同步
+### 3.1 全量数据同步
本例子用来演示将一个 IoTDB 的所有数据同步至另一个 IoTDB,数据链路如下图所示:
@@ -283,7 +283,7 @@ with sink (
)
```
-### 部分数据同步
+### 3.2 部分数据同步
本例子用来演示同步某个历史时间范围( 2023 年 8 月 23 日 8 点到 2023 年 10 月 23 日 8 点)的数据至另一个 IoTDB,数据链路如下图所示:
@@ -307,7 +307,7 @@ with SINK (
)
```
-### 双向数据传输
+### 3.3 双向数据传输
本例子用来演示两个 IoTDB 之间互为双活的场景,数据链路如下图所示:
@@ -344,7 +344,7 @@ with sink (
'node-urls' = '127.0.0.1:6667', -- 目标端 IoTDB 中 DataNode 节点的数据服务端口的 url
)
```
-### 边云数据传输
+### 3.4 边云数据传输
本例子用来演示多个 IoTDB 之间边云传输数据的场景,数据由 B 、C、D 集群分别都同步至 A 集群,数据链路如下图所示:
@@ -394,7 +394,7 @@ with sink (
)
```
-### 级联数据传输
+### 3.5 级联数据传输
本例子用来演示多个 IoTDB 之间级联传输数据的场景,数据由 A 集群同步至 B 集群,再同步至 C 集群,数据链路如下图所示:
@@ -425,7 +425,7 @@ with sink (
)
```
-### 跨网闸数据传输
+### 3.6 跨网闸数据传输
本例子用来演示将一个 IoTDB 的数据,经过单向网闸,同步至另一个 IoTDB 的场景,数据链路如下图所示:
@@ -452,7 +452,7 @@ with sink (
| 未标记正反向 | 迪普科技ISG5000 | 无限制 | 无限制 |
| 未标记正反向 | 熙羚安全隔离与信息交换系统XL—GAP | 无限制 | 无限制 |
-### 压缩同步
+### 3.7 压缩同步
IoTDB 支持在同步过程中指定数据压缩方式。可通过配置 `compressor` 参数,实现数据的实时压缩和传输。`compressor`目前支持 snappy / gzip / lz4 / zstd / lzma2 5 种可选算法,且可以选择多种压缩算法组合,按配置的顺序进行压缩。`rate-limit-bytes-per-second`(V1.3.3 及以后版本支持)每秒最大允许传输的byte数,计算压缩后的byte,若小于0则不限制。
@@ -467,7 +467,7 @@ with sink (
)
```
-### 加密同步
+### 3.8 加密同步
IoTDB 支持在同步过程中使用 SSL 加密,从而在不同的 IoTDB 实例之间安全地传输数据。通过配置 SSL 相关的参数,如证书地址和密码(`ssl.trust-store-path`)、(`ssl.trust-store-pwd`)可以确保数据在同步过程中被 SSL 加密所保护。
@@ -483,7 +483,7 @@ with sink (
)
```
-## 参考:注意事项
+## 4 参考:注意事项
可通过修改 IoTDB 配置文件(`iotdb-system.properties`)以调整数据同步的参数,如同步数据存储目录等。完整配置如下::
@@ -558,9 +558,9 @@ pipe_air_gap_receiver_port=9780
pipe_all_sinks_rate_limit_bytes_per_second=-1
```
-## 参考:参数说明
+## 5 参考:参数说明
-### source 参数(V1.3.3)
+### 5.1 source 参数(V1.3.3)
| 参数 | 描述 | value 取值范围 | 是否必填 | 默认取值 |
| ------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -------- | -------------- |
@@ -585,7 +585,7 @@ pipe_all_sinks_rate_limit_bytes_per_second=-1
> - **batch**:该模式下,任务将对数据进行批量(按底层数据文件)处理、发送,其特点是低时效、高吞吐
-## sink **参数**
+### 5.2 sink **参数**
> 在 1.3.3 及以上的版本中,只包含sink的情况下,不再需要额外增加with sink 前缀
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/Data-subscription.md b/src/zh/UserGuide/Master/Tree/User-Manual/Data-subscription.md
index cb46617a5..e77b9b74e 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/Data-subscription.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Data-subscription.md
@@ -1,6 +1,6 @@
# 数据订阅
-## 1. 功能介绍
+## 1 功能介绍
IoTDB 数据订阅模块(又称 IoTDB 订阅客户端)是IoTDB V1.3.3 版本后支持的功能,它为用户提供了一种区别于数据查询的流式数据消费方式。它参考了 Kafka 等消息队列产品的基本概念和逻辑,**提供数据订阅和消费接口**,但并不是为了完全替代这些消费队列的产品,更多的是在简单流式获取数据的场景为用户提供更加便捷的数据订阅服务。
@@ -9,7 +9,7 @@ IoTDB 数据订阅模块(又称 IoTDB 订阅客户端)是IoTDB V1.3.3 版本
1. **持续获取最新数据**:使用订阅的方式,比定时查询更实时、应用编程更简单、系统负担更小;
2. **简化数据推送至第三方系统**:无需在 IoTDB 内部开发不同系统的数据推送组件,可以在第三方系统内实现数据的流式获取,更方便将数据发送至 Flink、Kafka、DataX、Camel、MySQL、PG 等系统。
-## 2. 主要概念
+## 2 主要概念
IoTDB 订阅客户端包含 3 个核心概念:Topic、Consumer、Consumer Group,具体关系如下图
@@ -29,7 +29,7 @@ IoTDB 订阅客户端包含 3 个核心概念:Topic、Consumer、Consumer Grou
- 一个 topic 不需要被一个 consumer group 中的所有 consumer 订阅
- 当同一个 Consumer Group 中不同的 Consumers 订阅了相同的 Topic 时,该 Topic 下的每条数据只会被组内的一个 Consumer 处理,确保数据不会被重复处理
-## 3. SQL 语句
+## 3 SQL 语句
### 3.1 Topic 管理
@@ -125,11 +125,11 @@ SHOW SUBSCRIPTIONS ON
- ConsumerGroupName:用户代码中指定的消费者组 ID
- SubscribedConsumers:该消费者组中订阅了该主题的所有客户端 ID
-## 4. API 接口
+## 4 API 接口
除 SQL 语句外,IoTDB 还支持通过 Java 原生接口使用数据订阅功能。详细语法参见页面:Java 原生接口([链接](../API/Programming-Java-Native-API.md))。
-## 5. 常见问题
+## 5 常见问题
### 5.1 IoTDB 数据订阅与 Kafka 的区别是什么?
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/Database-Programming.md b/src/zh/UserGuide/Master/Tree/User-Manual/Database-Programming.md
index 6cec2fea9..4c994ee39 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/Database-Programming.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Database-Programming.md
@@ -21,12 +21,12 @@
# 连续查询
-## 简介
+## 1 简介
连续查询(Continuous queries, aka CQ) 是对实时数据周期性地自动执行的查询,并将查询结果写入指定的时间序列中。
用户可以通过连续查询实现滑动窗口流式计算,如计算某个序列每小时平均温度,并写入一个新序列中。用户可以自定义 `RESAMPLE` 子句去创建不同的滑动窗口,可以实现对于乱序数据一定程度的容忍。
-## 语法
+## 2 语法
```sql
CREATE (CONTINUOUS QUERY | CQ)
@@ -54,7 +54,7 @@ END
> 2. GROUP BY TIME CLAUSE在连续查询中的语法稍有不同,它不能包含原来的第一个参数,即 [start_time, end_time),IoTDB会自动填充这个缺失的参数。如果指定,IoTDB将会抛出异常。
> 3. 如果连续查询中既没有GROUP BY TIME子句,也没有指定EVERY子句,IoTDB将会抛出异常。
-### 连续查询语法中参数含义的描述
+### 2.1 连续查询语法中参数含义的描述
- `` 为连续查询指定一个全局唯一的标识。
- `` 指定了连续查询周期性执行的间隔。现在支持的时间单位有:ns, us, ms, s, m, h, d, w, 并且它的值不能小于用户在`iotdb-system.properties`配置文件中指定的`continuous_query_min_every_interval`。这是一个可选参数,默认等于group by子句中的`group_by_interval`。
@@ -97,7 +97,7 @@ END
- `DISCARD`意味着如果前一个时间窗口还未执行完,我们会直接丢弃下一个窗口的执行时间。如果使用`DISCARD`策略,可能会有部分时间窗口得不到执行。但是一旦前一个查询执行完后,它将会使用最新的时间窗口,所以它的执行结果总能赶上最新的时间窗口范围,当然是以部分时间窗口得不到执行为代价。
-## 连续查询的用例
+## 3 连续查询的用例
下面是用例数据,这是一个实时的数据流,我们假设数据都按时到达。
@@ -117,7 +117,7 @@ END
+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+
````
-### 配置连续查询执行的周期性间隔
+### 3.1 配置连续查询执行的周期性间隔
在`RESAMPLE`子句中使用`EVERY`参数指定连续查询的执行间隔,如果没有指定,默认等于`group_by_interval`。
@@ -175,7 +175,7 @@ At **2021-05-11T22:19:00.000+08:00**, `cq1` executes a query within the time ran
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
````
-### 配置连续查询的时间窗口大小
+### 3.2 配置连续查询的时间窗口大小
使用`RANGE`子句中的`start_time_offset`参数指定连续查询每次执行的时间窗口的开始时间偏移,如果没有指定,默认值等于`EVERY`参数。
@@ -250,7 +250,7 @@ At **2021-05-11T22:19:00.000+08:00**, `cq2` executes a query within the time ran
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
````
-### 同时配置连续查询执行的周期性间隔和时间窗口大小
+### 3.3 同时配置连续查询执行的周期性间隔和时间窗口大小
使用`RESAMPLE`子句中的`EVERY`参数和`RANGE`参数分别指定连续查询的执行间隔和窗口大小。并且使用`fill()`来填充没有值的时间区间。
@@ -315,7 +315,7 @@ At **2021-05-11T22:19:00.000+08:00**, `cq3` executes a query within the time ran
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
````
-### 配置连续查询每次查询执行时间窗口的结束时间
+### 3.4 配置连续查询每次查询执行时间窗口的结束时间
使用`RESAMPLE`子句中的`EVERY`参数和`RANGE`参数分别指定连续查询的执行间隔和窗口大小。并且使用`fill()`来填充没有值的时间区间。
@@ -374,7 +374,7 @@ At **2021-05-11T22:19:00.000+08:00**, `cq4` executes a query within the time ran
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
````
-### 没有GROUP BY TIME子句的连续查询
+### 3.5 没有GROUP BY TIME子句的连续查询
不使用`GROUP BY TIME`子句,并在`RESAMPLE`子句中显式使用`EVERY`参数指定连续查询的执行间隔。
@@ -480,9 +480,9 @@ At **2021-05-11T22:19:00.000+08:00**, `cq5` executes a query within the time ran
+-----------------------------+-------------------------------+-----------+
````
-## 连续查询的管理
+## 4 连续查询的管理
-### 查询系统已有的连续查询
+### 4.1 查询系统已有的连续查询
展示集群中所有的已注册的连续查询
@@ -505,7 +505,7 @@ SHOW CONTINUOUS QUERIES;
| s1_count_cq | CREATE CQ s1_count_cq
BEGIN
SELECT count(s1)
INTO root.sg_count.d.count_s1
FROM root.sg.d
GROUP BY(30m)
END | active |
-### 删除已有的连续查询
+### 4.2 删除已有的连续查询
删除指定的名为cq_id的连续查询:
@@ -523,24 +523,24 @@ DROP CQ并不会返回任何结果集。
DROP CONTINUOUS QUERY s1_count_cq;
```
-### 修改已有的连续查询
+### 4.3 修改已有的连续查询
目前连续查询一旦被创建就不能再被修改。如果想要修改某个连续查询,只能先用`DROP`命令删除它,然后再用`CREATE`命令重新创建。
-## 连续查询的使用场景
+## 5 连续查询的使用场景
-### 对数据进行降采样并对降采样后的数据使用不同的保留策略
+### 5.1 对数据进行降采样并对降采样后的数据使用不同的保留策略
可以使用连续查询,定期将高频率采样的原始数据(如每秒1000个点),降采样(如每秒仅保留一个点)后保存到另一个 database 的同名序列中。高精度的原始数据所在 database 的`TTL`可能设置的比较短,比如一天,而低精度的降采样后的数据所在的 database `TTL`可以设置的比较长,比如一个月,从而达到快速释放磁盘空间的目的。
-### 预计算代价昂贵的查询
+### 5.2 预计算代价昂贵的查询
我们可以通过连续查询对一些重复的查询进行预计算,并将查询结果保存在某些目标序列中,这样真实查询并不需要真的再次去做计算,而是直接查询目标序列的结果,从而缩短了查询的时间。
> 预计算查询结果尤其对一些可视化工具渲染时序图和工作台时有很大的加速作用。
-### 作为子查询的替代品
+### 5.3 作为子查询的替代品
IoTDB现在不支持子查询,但是我们可以通过创建连续查询得到相似的功能。我们可以将子查询注册为一个连续查询,并将子查询的结果物化到目标序列中,外层查询再直接查询哪个目标序列。
@@ -579,7 +579,7 @@ SELECT avg(count_s1) from root.sg_count.d;
```
-## 连续查询相关的配置参数
+## 6 连续查询相关的配置参数
| 参数名 | 描述 | 类型 | 默认值 |
| :---------------------------------- |----------------------|----------|---------------|
| `continuous_query_submit_thread_count` | 用于周期性提交连续查询执行任务的线程数 | int32 | 2 |
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/IoTDB-View_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/IoTDB-View_timecho.md
index 482317b37..091b2064c 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/IoTDB-View_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/IoTDB-View_timecho.md
@@ -21,9 +21,9 @@
# 视图
-## 序列视图应用背景
+## 1 序列视图应用背景
-### 应用场景1 时间序列重命名(PI资产管理)
+### 1.1 应用场景1 时间序列重命名(PI资产管理)
实际应用中,采集数据的设备可能使用人类难以理解的标识号来命名,这给业务层带来了查询上的困难。
@@ -33,19 +33,19 @@
对于用户来说,它是难以理解的。但此时,用户能够使用序列视图功能对它重命名,将它映射到一个序列视图中去,使用`root.view.device001.temperature`来访问采集到的数据。
-### 应用场景2 简化业务层查询逻辑
+### 1.2 应用场景2 简化业务层查询逻辑
有时用户有大量设备,管理着大量时间序列。在进行某项业务时,用户希望仅处理其中的部分序列,此时就可以通过序列视图功能挑选出关注重点,方便反复查询、写入。
**例如**:用户管理一条产品流水线,各环节的设备有大量时间序列。温度检测员仅需要关注设备温度,就可以抽取温度相关的序列,组成序列视图。
-### 应用场景3 辅助权限管理
+### 1.3 应用场景3 辅助权限管理
生产过程中,不同业务负责的范围一般不同,出于安全考虑往往需要通过权限管理来限制业务员的访问范围。
**例如**:安全管理部门现在仅需要监控某生产线上各设备的温度,但这些数据与其他机密数据存放在同一数据库。此时,就可以创建若干新的视图,视图中仅含有生产线上与温度有关的时间序列,接着,向安全员只赋予这些序列视图的权限,从而达到权限限制的目的。
-### 设计序列视图功能的动机
+### 1.4 设计序列视图功能的动机
结合上述两类使用场景,设计序列视图功能的动机,主要有:
@@ -53,13 +53,13 @@
2. 简化业务层查询逻辑。
3. 辅助权限管理,通过视图向特定用户开放数据。
-## 序列视图概念
+## 2 序列视图概念
-### 术语概念
+### 2.1 术语概念
约定:若无特殊说明,本文档所指定的视图均是**序列视图**,未来可能引入设备视图等新功能。
-### 序列视图
+### 2.2 序列视图
序列视图是一种组织管理时间序列的方式。
@@ -69,7 +69,7 @@
用户可以使用复杂的SQL查询创建视图,此时序列视图就像一条被存储的查询语句,当从视图中读取数据时,就把被存储的查询语句作为数据来源,放在FROM子句中。
-### 别名序列
+### 2.3 别名序列
在序列视图中,有一类特殊的存在,他们满足如下所有条件:
@@ -81,13 +81,13 @@
**所有序列视图包括别名序列目前均不支持触发器功能(Trigger)。**
-### 嵌套视图
+### 2.4 嵌套视图
用户可能想从一个现有的序列视图中选出若干序列,组成一个新的序列视图,就称之为嵌套视图。
**当前版本不支持嵌套视图功能**。
-### IoTDB中对序列视图的一些约束
+### 2.5 IoTDB中对序列视图的一些约束
#### 限制1 序列视图必须依赖于一个或者若干个时间序列
@@ -130,9 +130,9 @@
这是因为进行业务查询时,面向视图的用户关心的是当前视图的结构,而如果使用group by tag等方式做查询,显然希望是得到视图下含有对应tag的分组效果,而非时间序列的tag的分组效果(用户甚至对那些时间序列毫无感知)。
-## 序列视图功能介绍
+## 3 序列视图功能介绍
-### 创建视图
+### 3.1 创建视图
创建一个序列视图与创建一条时间序列类似,区别在于需要通过AS关键字指定数据来源,即原始序列。
@@ -340,7 +340,7 @@ AS
简单来说,`AS`后只能使用`SELECT ... FROM ... `的结构,且该查询语句的结果必须能构成一条时间序列。
-### 视图数据查询
+### 3.2 视图数据查询
对于可以支持的数据查询功能,在执行时序数据查询时,序列视图与时间序列可以无差别使用,行为完全一致。
@@ -362,7 +362,7 @@ WHERE temperature01 < temperature02
此外,对于别名序列,如果用户想要得到时间序列的tag、attributes等信息,则需要先查询视图列的映射,找到对应的时间序列,再向时间序列查询tag、attributes等信息。查询视图列的映射的方法将会在3.5部分说明。
-### 视图修改
+### 3.3 视图修改
视图支持的修改操作包括:修改计算逻辑,修改标签/属性,以及删除。
@@ -432,7 +432,7 @@ ALTER view root.turbine.d1.s1 UPSERT TAGS(tag2=newV2, tag3=v3) ATTRIBUTES(attr3=
DELETE VIEW root.view.device.avg_temperatue
```
-### 视图同步
+### 3.4 视图同步
#### 如果依赖的原序列被删除了
@@ -452,7 +452,7 @@ DELETE VIEW root.view.device.avg_temperatue
详情请参考前文2.1.6 限制5
-### 视图元数据查询
+### 3.5 视图元数据查询
视图元数据查询,特指查询视图本身的元数据(例如视图有多少列),以及数据库内视图的信息(例如有哪些视图)。
@@ -518,7 +518,7 @@ IoTDB>
上述两种查询都涉及视图的数据类型。视图的数据类型是根据定义视图的查询语句或别名序列的原始时间序列类型推断出来的。这个数据类型是根据当前系统的状态实时计算出来的,因此在不同时刻查询到的数据类型可能是改变的。
-## FAQ
+## 4 FAQ
#### Q1:我想让视图实现类型转换的功能。例如,原有一个int32类型的时间序列,和其他int64类型的序列被放在了同一个视图中。我现在希望通过视图查询到的数据,都能自动转换为int64类型。
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/Load-Balance.md b/src/zh/UserGuide/Master/Tree/User-Manual/Load-Balance.md
index 942aa5ac4..72e52cecd 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/Load-Balance.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Load-Balance.md
@@ -19,11 +19,11 @@
-->
-## 负载均衡
+# 负载均衡
Region 迁移属于高级运维功能,具有一定操作成本,建议完整阅读后再使用该功能。如有疑问请联系 IoTDB 团队寻求技术支持。
-### 功能介绍
+## 1 功能介绍
IoTDB 是一个分布式数据库,数据的均衡分布对集群的磁盘空间、写入压力的负载均衡有着重要作用,region 是数据在 IoTDB 集群中进行分布式存储的基本单元,具体概念可见[region](../Background-knowledge/Cluster-Concept.md)。
@@ -34,14 +34,14 @@ IoTDB 是一个分布式数据库,数据的均衡分布对集群的磁盘空

-### 注意事项
+## 2 注意事项
1. 推荐仅在 IoTDB 1.3.3 以及更高版本使用 Region 迁移功能。
2. 仅在共识协议为 IoTConsensus、Ratis 时支持 Region 迁移(iotdb-system.properties中的`schema_region_consensus_protocol_class` 和 `data_region_consensus_protocol_class`)。
3. Region 迁移会占用硬盘和网络带宽等系统资源,推荐在低业务负载时进行。
4. 在理想情况下,Region 迁移不影响用户侧读写。特殊情况下,Region 迁移可能阻塞写入,这种情况的具体鉴别与处理方式见使用说明。
-### 使用说明
+## 3 使用说明
- **语法定义**:
@@ -107,4 +107,4 @@ IoTDB 是一个分布式数据库,数据的均衡分布对集群的磁盘空
```plain
IoTDB> set configuration "wal_throttle_threshold_in_byte"="536870912000"
Msg: The statement is executed successfully.
- ```
+ ```
\ No newline at end of file
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/Query-Performance-Analysis.md b/src/zh/UserGuide/Master/Tree/User-Manual/Query-Performance-Analysis.md
index bd89214ef..998682ed1 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/Query-Performance-Analysis.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Query-Performance-Analysis.md
@@ -20,7 +20,7 @@
-->
# 运维语句
-## 查询性能分析
+## 1 查询性能分析
查询分析的意义在于帮助用户理解查询的执行机制和性能瓶颈,从而实现查询优化和性能提升。这不仅关乎到查询的执行效率,也直接影响到应用的用户体验和资源的有效利用。为了进行有效的查询分析,**IoTDB** **V1.3.2及以上版本**提供了查询分析语句:Explain 和 Explain Analyze。
@@ -33,7 +33,7 @@
| 监控面板 | 中。需要安装IoTDB监控面板工具(企业版工具),并开启IoTDB监控服务 | 中。IoTDB监控服务记录指标会带来额外耗时 | 支持分布式,仅支持对数据库整体查询负载和耗时进行分析 |
| Arthas抽样 | 中。需要安装Java Arthas工具(部分内网无法直接安装Arthas,且安装后,有时需要重启应用) | 高。CPU 抽样可能会影响线上业务的响应速度 | 不支持分布式,仅支持对数据库整体查询负载和耗时进行分析 |
-### Explain 语句
+### 1.1 Explain 语句
#### 语法
@@ -75,7 +75,7 @@ explain select * from root.explain.data
+-----------------------------------------------------------------------+
```
-### Explain Analyze 语句
+### 1.2 Explain Analyze 语句
#### 语法
@@ -255,7 +255,7 @@ FRAGMENT-INSTANCE[Id: 20240311_041502_00001_1.3.0][IP: 192.168.130.9][DataRegion
......
```
-### 常见问题
+### 1.3 常见问题
#### WALL TIME(墙上时间)和 CPU TIME(CPU时间)的区别?
@@ -296,7 +296,7 @@ TimeSeriesMetadata 的加载分别统计了顺序和乱序文件,但 Chunk 的
升级时,只替换了 lib 包,没有替换 conf/logback-datanode.xml,需要替换一下 conf/logback-datanode.xml,然后不需要重启(该文件内容可以被热加载),大约等待 1 分钟后,重新执行 explain analyze verbose。
-### 实战案例
+### 1.4 实战案例
#### 案例一:查询涉及文件数量过多,磁盘IO成为瓶颈,导致查询速度变慢
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/Streaming_apache.md b/src/zh/UserGuide/Master/Tree/User-Manual/Streaming_apache.md
index 839e036e3..c2ee7495f 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/Streaming_apache.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Streaming_apache.md
@@ -42,9 +42,9 @@ Pipe Source 用于抽取数据,Pipe Processor 用于处理数据,Pipe Sink
利用流处理框架,可以搭建完整的数据链路来满足端*边云同步、异地灾备、读写负载分库*等需求。
-## 自定义流处理插件开发
+## 1 自定义流处理插件开发
-### 编程开发依赖
+### 1.1 编程开发依赖
推荐采用 maven 构建项目,在`pom.xml`中添加以下依赖。请注意选择和 IoTDB 服务器版本相同的依赖版本。
@@ -57,7 +57,7 @@ Pipe Source 用于抽取数据,Pipe Processor 用于处理数据,Pipe Sink
```
-### 事件驱动编程模型
+### 1.2 事件驱动编程模型
流处理插件的用户编程接口设计,参考了事件驱动编程模型的通用设计理念。事件(Event)是用户编程接口中的数据抽象,而编程接口与具体的执行方式解耦,只需要专注于描述事件(数据)到达系统后,系统期望的处理方式即可。
@@ -127,7 +127,7 @@ public interface TsFileInsertionEvent extends Event {
}
```
-### 自定义流处理插件编程接口定义
+### 1.3 自定义流处理插件编程接口定义
基于自定义流处理插件编程接口,用户可以轻松编写数据抽取插件、数据处理插件和数据发送插件,从而使得流处理功能灵活适配各种工业场景。
@@ -438,12 +438,12 @@ public interface PipeSink extends PipePlugin {
}
```
-## 自定义流处理插件管理
+## 2 自定义流处理插件管理
为了保证用户自定义插件在实际生产中的灵活性和易用性,系统还需要提供对插件进行动态统一管理的能力。
本章节介绍的流处理插件管理语句提供了对插件进行动态统一管理的入口。
-### 加载插件语句
+### 2.1 加载插件语句
在 IoTDB 中,若要在系统中动态载入一个用户自定义插件,则首先需要基于 PipeSource、 PipeProcessor 或者 PipeSink 实现一个具体的插件类,
然后需要将插件类编译打包成 jar 可执行文件,最后使用加载插件的管理语句将插件载入 IoTDB。
@@ -468,7 +468,7 @@ AS 'edu.tsinghua.iotdb.pipe.ExampleProcessor'
USING URI
```
-### 删除插件语句
+### 2.2 删除插件语句
当用户不再想使用一个插件,需要将插件从系统中卸载时,可以使用如图所示的删除插件语句。
@@ -478,7 +478,7 @@ DROP PIPEPLUGIN [IF EXISTS] <别名>
**IF EXISTS 语义**:用于删除操作中,确保当指定 Pipe Plugin 存在时,执行删除命令,防止因尝试删除不存在的 Pipe Plugin 而导致报错。
-### 查看插件语句
+### 2.3 查看插件语句
用户也可以按需查看系统中的插件。查看插件的语句如图所示。
@@ -486,9 +486,9 @@ DROP PIPEPLUGIN [IF EXISTS] <别名>
SHOW PIPEPLUGINS
```
-## 系统预置的流处理插件
+## 3 系统预置的流处理插件
-### 预置 source 插件
+### 3.1 预置 source 插件
#### iotdb-source
@@ -539,7 +539,7 @@ SHOW PIPEPLUGINS
>
> 历史数据传输阶段和实时数据传输阶段,**两阶段串行执行,只有当历史数据传输阶段完成后,才执行实时数据传输阶段。**
-### 预置 processor 插件
+### 3.2 预置 processor 插件
#### do-nothing-processor
@@ -550,7 +550,7 @@ SHOW PIPEPLUGINS
|-----------|----------------------|------------------------------|-----------------------------------|
| processor | do-nothing-processor | String: do-nothing-processor | required |
-### 预置 sink 插件
+### 3.3 预置 sink 插件
#### do-nothing-sink
@@ -561,9 +561,9 @@ SHOW PIPEPLUGINS
|------|-----------------|-------------------------|-----------------------------------|
| sink | do-nothing-sink | String: do-nothing-sink | required |
-## 流处理任务管理
+## 4 流处理任务管理
-### 创建流处理任务
+### 4.1 创建流处理任务
使用 `CREATE PIPE` 语句来创建流处理任务。以数据同步流处理任务的创建为例,示例 SQL 语句如下:
@@ -651,7 +651,7 @@ WITH SINK (
- IoTDB A -> IoTDB B -> IoTDB A
- IoTDB A -> IoTDB A
-### 启动流处理任务
+### 4.2 启动流处理任务
CREATE PIPE 语句成功执行后,流处理任务相关实例会被创建,但整个流处理任务的运行状态会被置为 STOPPED(V1.3.0),即流处理任务不会立刻处理数据。在 1.3.1 及以上的版本,流处理任务的运行状态在创建后将被立即置为 RUNNING。
@@ -661,7 +661,7 @@ CREATE PIPE 语句成功执行后,流处理任务相关实例会被创建,
START PIPE
```
-### 停止流处理任务
+### 4.3 停止流处理任务
使用 STOP PIPE 语句使流处理任务停止处理数据:
@@ -669,7 +669,7 @@ START PIPE
STOP PIPE
```
-### 删除流处理任务
+### 4.4 删除流处理任务
使用 DROP PIPE 语句使流处理任务停止处理数据(当流处理任务状态为 RUNNING 时),然后删除整个流处理任务流处理任务:
@@ -679,7 +679,7 @@ DROP PIPE
用户在删除流处理任务前,不需要执行 STOP 操作。
-### 展示流处理任务
+### 4.5 展示流处理任务
使用 SHOW PIPES 语句查看所有流处理任务:
@@ -712,7 +712,7 @@ SHOW PIPES
WHERE SINK USED BY
```
-### 流处理任务运行状态迁移
+### 4.6 流处理任务运行状态迁移
一个流处理 pipe 在其生命周期中会经过多种状态:
@@ -728,9 +728,9 @@ WHERE SINK USED BY

-## 权限管理
+## 5 权限管理
-### 流处理任务
+### 5.1 流处理任务
| 权限名称 | 描述 |
@@ -741,7 +741,7 @@ WHERE SINK USED BY
| USE_PIPE | 卸载流处理任务。路径无关。 |
| USE_PIPE | 查询流处理任务。路径无关。 |
-### 流处理任务插件
+### 5.2 流处理任务插件
| 权限名称 | 描述 |
@@ -750,7 +750,7 @@ WHERE SINK USED BY
| USE_PIPE | 卸载流处理任务插件。路径无关。 |
| USE_PIPE | 查询流处理任务插件。路径无关。 |
-## 配置参数
+## 6 配置参数
在 iotdb-system.properties 中:
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/Streaming_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/Streaming_timecho.md
index 64245aece..1f707da61 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/Streaming_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Streaming_timecho.md
@@ -42,9 +42,9 @@ Pipe Source 用于抽取数据,Pipe Processor 用于处理数据,Pipe Sink
利用流处理框架,可以搭建完整的数据链路来满足端*边云同步、异地灾备、读写负载分库*等需求。
-## 自定义流处理插件开发
+## 1 自定义流处理插件开发
-### 编程开发依赖
+### 1.1 编程开发依赖
推荐采用 maven 构建项目,在`pom.xml`中添加以下依赖。请注意选择和 IoTDB 服务器版本相同的依赖版本。
@@ -57,7 +57,7 @@ Pipe Source 用于抽取数据,Pipe Processor 用于处理数据,Pipe Sink
```
-### 事件驱动编程模型
+### 1.2 事件驱动编程模型
流处理插件的用户编程接口设计,参考了事件驱动编程模型的通用设计理念。事件(Event)是用户编程接口中的数据抽象,而编程接口与具体的执行方式解耦,只需要专注于描述事件(数据)到达系统后,系统期望的处理方式即可。
@@ -127,7 +127,7 @@ public interface TsFileInsertionEvent extends Event {
}
```
-### 自定义流处理插件编程接口定义
+### 1.3 自定义流处理插件编程接口定义
基于自定义流处理插件编程接口,用户可以轻松编写数据抽取插件、数据处理插件和数据发送插件,从而使得流处理功能灵活适配各种工业场景。
@@ -438,12 +438,12 @@ public interface PipeSink extends PipePlugin {
}
```
-## 自定义流处理插件管理
+## 2 自定义流处理插件管理
为了保证用户自定义插件在实际生产中的灵活性和易用性,系统还需要提供对插件进行动态统一管理的能力。
本章节介绍的流处理插件管理语句提供了对插件进行动态统一管理的入口。
-### 加载插件语句
+### 2.1 加载插件语句
在 IoTDB 中,若要在系统中动态载入一个用户自定义插件,则首先需要基于 PipeSource、 PipeProcessor 或者 PipeSink 实现一个具体的插件类,
然后需要将插件类编译打包成 jar 可执行文件,最后使用加载插件的管理语句将插件载入 IoTDB。
@@ -484,7 +484,7 @@ AS 'edu.tsinghua.iotdb.pipe.ExampleProcessor'
USING URI
```
-### 删除插件语句
+### 2.2 删除插件语句
当用户不再想使用一个插件,需要将插件从系统中卸载时,可以使用如图所示的删除插件语句。
@@ -494,7 +494,7 @@ DROP PIPEPLUGIN [IF EXISTS] <别名>
**IF EXISTS 语义**:用于删除操作中,确保当指定 Pipe Plugin 存在时,执行删除命令,防止因尝试删除不存在的 Pipe Plugin 而导致报错。
-### 查看插件语句
+### 2.3 查看插件语句
用户也可以按需查看系统中的插件。查看插件的语句如图所示。
@@ -502,9 +502,9 @@ DROP PIPEPLUGIN [IF EXISTS] <别名>
SHOW PIPEPLUGINS
```
-## 系统预置的流处理插件
+## 3 系统预置的流处理插件
-### 预置 source 插件
+### 3.1 预置 source 插件
#### iotdb-source
@@ -568,7 +568,7 @@ SHOW PIPEPLUGINS
> * 如果要使用 pipe 构建 A -> B -> C 的数据同步,那么 B -> C 的 pipe 需要将该参数为 true 后,A -> B 中 A 通过 pipe 写入 B 的数据才能被正确转发到 C
> * 如果要使用 pipe 构建 A \<-> B 的双向数据同步(双活),那么 A -> B 和 B -> A 的 pipe 都需要将该参数设置为 false,否则将会造成数据无休止的集群间循环转发
-### 预置 processor 插件
+### 3.2 预置 processor 插件
#### do-nothing-processor
@@ -579,7 +579,7 @@ SHOW PIPEPLUGINS
|-----------|----------------------|------------------------------|-----------------------------------|
| processor | do-nothing-processor | String: do-nothing-processor | required |
-### 预置 sink 插件
+### 3.3 预置 sink 插件
#### do-nothing-sink
@@ -590,9 +590,9 @@ SHOW PIPEPLUGINS
|------|-----------------|-------------------------|-----------------------------------|
| sink | do-nothing-sink | String: do-nothing-sink | required |
-## 流处理任务管理
+## 4 流处理任务管理
-### 创建流处理任务
+### 4.1 创建流处理任务
使用 `CREATE PIPE` 语句来创建流处理任务。以数据同步流处理任务的创建为例,示例 SQL 语句如下:
@@ -686,7 +686,7 @@ WITH SINK (
- IoTDB A -> IoTDB B -> IoTDB A
- IoTDB A -> IoTDB A
-### 启动流处理任务
+### 4.2 启动流处理任务
CREATE PIPE 语句成功执行后,流处理任务相关实例会被创建,但整个流处理任务的运行状态会被置为 STOPPED,即流处理任务不会立刻处理数据(V1.3.0)。在 1.3.1 及以上的版本,流处理任务的运行状态在创建后将被立即置为 RUNNING。
@@ -696,7 +696,7 @@ CREATE PIPE 语句成功执行后,流处理任务相关实例会被创建,
START PIPE
```
-### 停止流处理任务
+### 4.3 停止流处理任务
使用 STOP PIPE 语句使流处理任务停止处理数据:
@@ -704,7 +704,7 @@ START PIPE
STOP PIPE
```
-### 删除流处理任务
+### 4.4 删除流处理任务
使用 DROP PIPE 语句使流处理任务停止处理数据(当流处理任务状态为 RUNNING 时),然后删除整个流处理任务流处理任务:
@@ -714,7 +714,7 @@ DROP PIPE
用户在删除流处理任务前,不需要执行 STOP 操作。
-### 展示流处理任务
+### 4.5 展示流处理任务
使用 SHOW PIPES 语句查看所有流处理任务:
@@ -747,7 +747,7 @@ SHOW PIPES
WHERE SINK USED BY
```
-### 流处理任务运行状态迁移
+### 4.6 流处理任务运行状态迁移
一个流处理 pipe 在其的生命周期中会经过多种状态:
@@ -763,9 +763,9 @@ WHERE SINK USED BY

-## 权限管理
+## 5 权限管理
-### 流处理任务
+### 5.1 流处理任务
| 权限名称 | 描述 |
@@ -776,7 +776,7 @@ WHERE SINK USED BY
| USE_PIPE | 卸载流处理任务。路径无关。 |
| USE_PIPE | 查询流处理任务。路径无关。 |
-### 流处理任务插件
+### 5.2 流处理任务插件
| 权限名称 | 描述 |
@@ -785,7 +785,7 @@ WHERE SINK USED BY
| USE_PIPE | 卸载流处理任务插件。路径无关。 |
| USE_PIPE | 查询流处理任务插件。路径无关。 |
-## 配置参数
+## 6 配置参数
在 iotdb-system.properties 中:
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/Tiered-Storage_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/Tiered-Storage_timecho.md
index 501a3966f..7e3d3bfce 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/Tiered-Storage_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Tiered-Storage_timecho.md
@@ -20,11 +20,11 @@
-->
# 多级存储
-## 概述
+## 1 概述
多级存储功能向用户提供多种存储介质管理的能力,用户可以使用多级存储功能为 IoTDB 配置不同类型的存储介质,并为存储介质进行分级。具体的,在 IoTDB 中,多级存储的配置体现为多目录的管理。用户可以将多个存储目录归为同一类,作为一个“层级”向 IoTDB 中配置,这种“层级”我们称之为 storage tier;同时,用户可以根据数据的冷热进行分类,并将不同类别的数据存储到指定的“层级”中。当前 IoTDB 支持通过数据的 TTL 进行冷热数据的分类,当一个层级中的数据不满足当前层级定义的 TTL 规则时,该数据会被自动迁移至下一层级中。
-## 参数定义
+## 2 参数定义
在 IoTDB 中开启多级存储,需要进行以下几个方面的配置:
@@ -49,7 +49,7 @@
| remote_tsfile_cache_max_disk_usage_in_mb | 51200 | 云端存储本地缓存的最大磁盘占用大小 | 如果未使用远端存储,无需配置 |
-## 本地多级存储配置示例
+## 3 本地多级存储配置示例
以下以本地两级存储的配置示例。
@@ -67,7 +67,7 @@ dn_default_space_usage_thresholds=0.2;0.1
| 层级一 | 目录一:/data1/data | 最近 1 天的数据 | 20% |
| 层级二 | 目录一:/data2/data目录二:/data3/data | 1 天以前的数据 | 10% |
-## 远端多级存储配置示例
+## 4 远端多级存储配置示例
以下以三级存储为例:
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/Trigger.md b/src/zh/UserGuide/Master/Tree/User-Manual/Trigger.md
index 0e5f54d20..c03613913 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/Trigger.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Trigger.md
@@ -21,33 +21,33 @@
# 触发器
-## 使用说明
+## 1 使用说明
触发器提供了一种侦听序列数据变动的机制。配合用户自定义逻辑,可完成告警、数据转发等功能。
触发器基于 Java 反射机制实现。用户通过简单实现 Java 接口,即可实现数据侦听。IoTDB 允许用户动态注册、卸载触发器,在注册、卸载期间,无需启停服务器。
-### 侦听模式
+### 1.1 侦听模式
IoTDB 的单个触发器可用于侦听符合特定模式的时间序列的数据变动,如时间序列 root.sg.a 上的数据变动,或者符合路径模式 root.**.a 的时间序列上的数据变动。您在注册触发器时可以通过 SQL 语句指定触发器侦听的路径模式。
-### 触发器类型
+### 1.2 触发器类型
目前触发器分为两类,您在注册触发器时可以通过 SQL 语句指定类型:
- 有状态的触发器。该类触发器的执行逻辑可能依赖前后的多条数据,框架会将不同节点写入的数据汇总到同一个触发器实例进行计算,来保留上下文信息,通常用于采样或者统计一段时间的数据聚合信息。集群中只有一个节点持有有状态触发器的实例。
- 无状态的触发器。触发器的执行逻辑只和当前输入的数据有关,框架无需将不同节点的数据汇总到同一个触发器实例中,通常用于单行数据的计算和异常检测等。集群中每个节点均持有无状态触发器的实例。
-### 触发时机
+### 1.3 触发时机
触发器的触发时机目前有两种,后续会拓展其它触发时机。您在注册触发器时可以通过 SQL 语句指定触发时机:
- BEFORE INSERT,即在数据持久化之前触发。请注意,目前触发器并不支持数据清洗,不会对要持久化的数据本身进行变动。
- AFTER INSERT,即在数据持久化之后触发。
-## 编写触发器
+## 2 编写触发器
-### 触发器依赖
+### 2.1 触发器依赖
触发器的逻辑需要您编写 Java 类进行实现。
在编写触发器逻辑时,需要使用到下面展示的依赖。如果您使用 [Maven](http://search.maven.org/),则可以直接从 [Maven 库](http://search.maven.org/)中搜索到它们。请注意选择和目标服务器版本相同的依赖版本。
@@ -61,7 +61,7 @@ IoTDB 的单个触发器可用于侦听符合特定模式的时间序列的数
```
-### 接口说明
+### 2.2 接口说明
编写一个触发器需要实现 `org.apache.iotdb.trigger.api.Trigger` 类。
@@ -212,7 +212,7 @@ insert into root.sg(time, a, b) values (1, 1, 1);
-### 示例
+### 2.3 示例
如果您使用 [Maven](http://search.maven.org/),可以参考我们编写的示例项目 trigger-example。您可以在 [这里](https://github.com/apache/iotdb/tree/master/example/trigger) 找到它。后续我们会加入更多的示例项目供您参考。
@@ -319,13 +319,13 @@ public class ClusterAlertingExample implements Trigger {
}
}
```
-## 管理触发器
+## 3 管理触发器
您可以通过 SQL 语句注册和卸载一个触发器实例,您也可以通过 SQL 语句查询到所有已经注册的触发器。
**我们建议您在注册触发器时停止写入。**
-### 注册触发器
+### 3.1 注册触发器
触发器可以注册在任意路径模式上。被注册有触发器的序列将会被触发器侦听,当序列上有数据变动时,触发器中对应的触发方法将会被调用。
@@ -401,7 +401,7 @@ WITH (
- JAR 包的 URI 为 http://jar/ClusterAlertingExample.jar
- 创建该触发器实例时会传入 name 和 limit 两个参数。
-### 卸载触发器
+### 3.2 卸载触发器
可以通过指定触发器 ID 的方式卸载触发器,卸载触发器的过程中会且仅会调用一次触发器的 `onDrop` 接口。
@@ -422,7 +422,7 @@ DROP TRIGGER triggerTest1
上述语句将会卸载 ID 为 triggerTest1 的触发器。
-### 查询触发器
+### 3.3 查询触发器
可以通过 SQL 语句查询集群中存在的触发器的信息。SQL 语法如下:
@@ -437,7 +437,7 @@ SHOW TRIGGERS
| triggerTest1 | BEFORE_INSERT / AFTER_INSERT | STATELESS / STATEFUL | INACTIVE / ACTIVE / DROPPING / TRANSFFERING | root.** | org.apache.iotdb.trigger.TriggerExample | ALL(STATELESS) / DATA_NODE_ID(STATEFUL) |
-### 触发器状态说明
+### 3.4 触发器状态说明
在集群中注册以及卸载触发器的过程中,我们维护了触发器的状态,下面是对这些状态的说明:
@@ -448,7 +448,7 @@ SHOW TRIGGERS
| DROPPING | 执行 `DROP TRIGGER` 的中间状态,集群正处在卸载该触发器的过程中 | 否 |
| TRANSFERRING | 集群正在进行该触发器实例位置的迁移 | 否 |
-## 重要注意事项
+## 4 重要注意事项
- 触发器从注册时开始生效,不对已有的历史数据进行处理。**即只有成功注册触发器之后发生的写入请求才会被触发器侦听到。**
- 触发器目前采用**同步触发**,所以编写时需要保证触发器效率,否则可能会大幅影响写入性能。**您需要自己保证触发器内部的并发安全性**。
@@ -459,7 +459,7 @@ SHOW TRIGGERS
- 触发器 JAR 包有大小限制,必须小于 min(`config_node_ratis_log_appender_buffer_size_max`, 2G),其中 `config_node_ratis_log_appender_buffer_size_max` 是一个配置项,具体含义可以参考 IOTDB 配置项说明。
- **不同的 JAR 包中最好不要有全类名相同但功能实现不一样的类**。例如:触发器 trigger1、trigger2 分别对应资源 trigger1.jar、trigger2.jar。如果两个 JAR 包里都包含一个 `org.apache.iotdb.trigger.example.AlertListener` 类,当 `CREATE TRIGGER` 使用到这个类时,系统会随机加载其中一个 JAR 包中的类,最终导致触发器执行行为不一致以及其他的问题。
-## 配置参数
+## 5 配置参数
| 配置项 | 含义 |
| ------------------------------------------------- | ---------------------------------------------- |
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/UDF-development.md b/src/zh/UserGuide/Master/Tree/User-Manual/UDF-development.md
index 24e0366ad..fc252335c 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/UDF-development.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/UDF-development.md
@@ -1,6 +1,6 @@
# UDF 开发
-## 1. UDF 开发
+## 1 UDF 开发
### 1.1 UDF 依赖
@@ -675,7 +675,7 @@ UDAF 的结束方法,您可以在此方法中进行一些资源释放等的操
如果您使用 [Maven](http://search.maven.org/),可以参考我们编写的示例项目**udf-example**。您可以在 [这里](https://github.com/apache/iotdb/tree/master/example/udf) 找到它。
-## 2. 为iotdb贡献通用的内置UDF函数
+## 2 为iotdb贡献通用的内置UDF函数
该部分主要讲述了外部用户如何将自己编写的 UDF 贡献给 IoTDB 社区。
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/User-defined-function_apache.md b/src/zh/UserGuide/Master/Tree/User-Manual/User-defined-function_apache.md
index b375a8911..6d49a6eca 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/User-defined-function_apache.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/User-defined-function_apache.md
@@ -1,6 +1,6 @@
# 用户自定义函数
-## 1. UDF 介绍
+## 1 UDF 介绍
UDF(User Defined Function)即用户自定义函数,IoTDB 提供多种内建的面向时序处理的函数,也支持扩展自定义函数来满足更多的计算需求。
@@ -78,11 +78,11 @@ SELECT s1, s2, s1 + example(s1, s2), s1 - example(s1 + example(s1, s2) / s2) FRO
```
-## 2. UDF 开发
+## 2 UDF 开发
可以参考 UDF函数开发:[开发指导](./UDF-development.md)
-## 3. UDF 管理
+## 3 UDF 管理
### 3.1 UDF 注册
@@ -191,13 +191,13 @@ udf_reader_transformer_collector_memory_proportion=1:1:1
更多用户权限相关的内容,请参考 [权限管理语句](../User-Manual/Authority-Management.md##权限管理)。
-## 4. UDF 函数库
+## 4 UDF 函数库
基于用户自定义函数能力,IoTDB 提供了一系列关于时序数据处理的函数,包括数据质量、数据画像、异常检测、 频域分析、数据匹配、数据修复、序列发现、机器学习等,能够满足工业领域对时序数据处理的需求。
可以参考 [UDF 函数库](../SQL-Manual/UDF-Libraries_apache.md)文档,查找安装步骤及每个函数对应的注册语句,以确保正确注册所有需要的函数。
-## 5. 常见问题:
+## 5 常见问题
1. 如何修改已经注册的 UDF?
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/User-defined-function_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/User-defined-function_timecho.md
index 0cc6c55a3..3e5325a94 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/User-defined-function_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/User-defined-function_timecho.md
@@ -1,6 +1,6 @@
# 用户自定义函数
-## 1. UDF 介绍
+## 1 UDF 介绍
UDF(User Defined Function)即用户自定义函数,IoTDB 提供多种内建的面向时序处理的函数,也支持扩展自定义函数来满足更多的计算需求。
@@ -78,11 +78,11 @@ SELECT s1, s2, s1 + example(s1, s2), s1 - example(s1 + example(s1, s2) / s2) FRO
```
-## 2. UDF 开发
+## 2 UDF 开发
可以参考 UDF函数开发:[开发指导](./UDF-development.md)
-## 3. UDF 管理
+## 3 UDF 管理
### 3.1 UDF 注册
@@ -191,13 +191,13 @@ udf_reader_transformer_collector_memory_proportion=1:1:1
更多用户权限相关的内容,请参考 [权限管理语句](../User-Manual/Authority-Management.md##权限管理)。
-## 4. UDF 函数库
+## 4 UDF 函数库
基于用户自定义函数能力,IoTDB 提供了一系列关于时序数据处理的函数,包括数据质量、数据画像、异常检测、 频域分析、数据匹配、数据修复、序列发现、机器学习等,能够满足工业领域对时序数据处理的需求。
可以参考 [UDF 函数库](../SQL-Manual/UDF-Libraries_timecho.md)文档,查找安装步骤及每个函数对应的注册语句,以确保正确注册所有需要的函数。
-## 5. 常见问题:
+## 5 常见问题
1. 如何修改已经注册的 UDF?
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/White-List_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/White-List_timecho.md
index d69a563fc..0db9d1d9d 100644
--- a/src/zh/UserGuide/Master/Tree/User-Manual/White-List_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/White-List_timecho.md
@@ -22,17 +22,17 @@
# 白名单
-**功能描述**
+## 1 功能描述
允许哪些客户端地址能连接 IoTDB
-**配置文件**
+## 2 配置文件
conf/iotdb-system.properties
conf/white.list
-**配置项**
+## 3 配置项
iotdb-system.properties:
diff --git a/src/zh/UserGuide/latest/Background-knowledge/Cluster-Concept_apache.md b/src/zh/UserGuide/latest/Background-knowledge/Cluster-Concept_apache.md
index 5cdd9aae8..1d3fdba14 100644
--- a/src/zh/UserGuide/latest/Background-knowledge/Cluster-Concept_apache.md
+++ b/src/zh/UserGuide/latest/Background-knowledge/Cluster-Concept_apache.md
@@ -21,35 +21,35 @@
# 常见概念
-## 数据模型相关概念
+## 1 数据模型相关概念
-### 数据模型(sql_dialect)
+### 1.1 数据模型(sql_dialect)
IoTDB 支持两种时序数据模型(SQL语法),管理的对象均为设备和测点树:以层级路径的方式管理数据,一条路径对应一个设备的一个测点表;以关系表的方式管理数据,一张表对应一类设备。
-### 元数据(Schema)
+### 1.2 元数据(Schema)
元数据是数据库的数据模型信息,即树形结构或表结构。包括测点的名称、数据类型等定义。
-### 设备(Device)
+### 1.3 设备(Device)
对应一个实际场景中的物理设备,通常包含多个测点。
-### 测点(Timeseries)
+### 1.4 测点(Timeseries)
又名:物理量、时间序列、时间线、点位、信号量、指标、测量值等。
测点是多个数据点按时间戳递增排列形成的一个时间序列。通常一个测点代表一个采集点位,能够定期采集所在环境的物理量。
-### 编码(Encoding)
+### 1.5 编码(Encoding)
编码是一种压缩技术,将数据以二进制的形式进行表示,可以提高存储效率。IoTDB 支持多种针对不同类型的数据的编码方法,详细信息请查看:[压缩和编码](../Technical-Insider/Encoding-and-Compression.md)。
-### 压缩(Compression)
+### 1.6 压缩(Compression)
IoTDB 在数据编码后,使用压缩技术进一步压缩二进制数据,提升存储效率。IoTDB 支持多种压缩方法,详细信息请查看:[压缩和编码](../Technical-Insider/Encoding-and-Compression.md)。
-## 分布式相关概念
+## 2 分布式相关概念
下图展示了一个常见的 IoTDB 3C3D(3 个 ConfigNode、3 个 DataNode)的集群部署模式:
@@ -64,7 +64,7 @@ IoTDB 的集群包括如下常见概念:
下文将对以上概念进行介绍。
-### 节点
+### 2.1 节点
IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),DataNode(数据节点)和 AINode(分析节点),如下所示:
@@ -72,7 +72,7 @@ IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),Data
- DataNode:服务客户端请求,负责数据的存储和计算,如上图中的 DataNode-1,DataNode-2 和 DataNode-3 所示。
- AINode:负责提供机器学习能力,支持注册已训练好的机器学习模型,并通过 SQL 调用模型进行推理,目前已内置自研时序大模型和常见的机器学习算法(如预测与异常检测)。
-### 数据分区
+### 2.2 数据分区
在 IoTDB 中,元数据和数据都被分为小的分区,即 Region,由集群的各个 DataNode 进行管理。
@@ -80,7 +80,7 @@ IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),Data
- DataRegion:数据分区,管理一部分设备的一段时间的数据。不同 DataNode 相同 RegionID 的 DataRegion 互为副本,如上图中 DataRegion-2 拥有两个副本,分别放置于 DataNode-1 和 DataNode-2。
- 具体分区算法可参考:[数据分区](../Technical-Insider/Cluster-data-partitioning.md)
-### 多副本
+### 2.3 多副本
数据和元数据的副本数可配置,不同部署模式下的副本数推荐如下配置,其中多副本时可提供高可用服务。
@@ -90,11 +90,11 @@ IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),Data
| 数据 | data_replication_factor | 1 | 2 |
-## 部署相关概念
+## 3 部署相关概念
IoTDB 有两种运行模式:单机模式、集群模式。
-### 单机模式
+### 3.1 单机模式
IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D;
@@ -102,7 +102,7 @@ IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D;
- **适用场景**:资源有限或对高可用要求不高的场景,例如边缘端服务器。
- **部署方法**:[单机版部署](../Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md)
-### 集群模式
+### 3.2 集群模式
IoTDB 集群实例为 3 个ConfigNode 和不少于 3 个 DataNode,通常为 3 个 DataNode,即3C3D;当部分节点出现故障时,剩余节点仍然能对外提供服务,保证数据库服务的高可用性,且可随节点增加提升数据库性能。
@@ -110,7 +110,7 @@ IoTDB 集群实例为 3 个ConfigNode 和不少于 3 个 DataNode,通常为 3
- **适用场景**:需要提供高可用和可靠性的企业级应用场景。
- **部署方法**:[集群版部署](../Deployment-and-Maintenance/Cluster-Deployment_apache.md)
-### 特点总结
+### 3.3 特点总结
| 维度 | 单机模式 | 集群模式 |
| ------------ | ---------------------------- | ------------------------ |
diff --git a/src/zh/UserGuide/latest/Background-knowledge/Cluster-Concept_timecho.md b/src/zh/UserGuide/latest/Background-knowledge/Cluster-Concept_timecho.md
index ad0e513f4..1a4de58e5 100644
--- a/src/zh/UserGuide/latest/Background-knowledge/Cluster-Concept_timecho.md
+++ b/src/zh/UserGuide/latest/Background-knowledge/Cluster-Concept_timecho.md
@@ -21,34 +21,34 @@
# 常见概念
-## 数据模型相关概念
+## 1 数据模型相关概念
-### 数据模型(sql_dialect)
+### 1.1 数据模型(sql_dialect)
IoTDB 支持两种时序数据模型(SQL语法),管理的对象均为设备和测点树:以层级路径的方式管理数据,一条路径对应一个设备的一个测点表;以关系表的方式管理数据,一张表对应一类设备。
-### 元数据(Schema)
+### 1.2 元数据(Schema)
元数据是数据库的数据模型信息,即树形结构或表结构。包括测点的名称、数据类型等定义。
-### 设备(Device)
+### 1.3 设备(Device)
对应一个实际场景中的物理设备,通常包含多个测点。
-### 测点(Timeseries)
+### 1.4 测点(Timeseries)
又名:物理量、时间序列、时间线、点位、信号量、指标、测量值等。
测点是多个数据点按时间戳递增排列形成的一个时间序列。通常一个测点代表一个采集点位,能够定期采集所在环境的物理量。
-### 编码(Encoding)
+### 1.5 编码(Encoding)
编码是一种压缩技术,将数据以二进制的形式进行表示,可以提高存储效率。IoTDB 支持多种针对不同类型的数据的编码方法,详细信息请查看:[压缩和编码](../Technical-Insider/Encoding-and-Compression.md)。
-### 压缩(Compression)
+### 1.6 压缩(Compression)
IoTDB 在数据编码后,使用压缩技术进一步压缩二进制数据,提升存储效率。IoTDB 支持多种压缩方法,详细信息请查看:[压缩和编码](../Technical-Insider/Encoding-and-Compression.md)。
-## 分布式相关概念
+## 2 分布式相关概念
下图展示了一个常见的 IoTDB 3C3D(3 个 ConfigNode、3 个 DataNode)的集群部署模式:
@@ -63,7 +63,7 @@ IoTDB 的集群包括如下常见概念:
下文将对以上概念进行介绍。
-### 节点
+### 2.1 节点
IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),DataNode(数据节点)和 AINode(分析节点),如下所示:
@@ -71,7 +71,7 @@ IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),Data
- DataNode:服务客户端请求,负责数据的存储和计算,如上图中的 DataNode-1,DataNode-2 和 DataNode-3 所示。
- AINode:负责提供机器学习能力,支持注册已训练好的机器学习模型,并通过 SQL 调用模型进行推理,目前已内置自研时序大模型和常见的机器学习算法(如预测与异常检测)。
-### 数据分区
+### 2.2 数据分区
在 IoTDB 中,元数据和数据都被分为小的分区,即 Region,由集群的各个 DataNode 进行管理。
@@ -79,7 +79,7 @@ IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),Data
- DataRegion:数据分区,管理一部分设备的一段时间的数据。不同 DataNode 相同 RegionID 的 DataRegion 互为副本,如上图中 DataRegion-2 拥有两个副本,分别放置于 DataNode-1 和 DataNode-2。
- 具体分区算法可参考:[数据分区](../Technical-Insider/Cluster-data-partitioning.md)
-### 多副本
+### 2.3 多副本
数据和元数据的副本数可配置,不同部署模式下的副本数推荐如下配置,其中多副本时可提供高可用服务。
@@ -89,11 +89,11 @@ IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),Data
| 数据 | data_replication_factor | 1 | 2 |
-## 部署相关概念
+## 3 部署相关概念
IoTDB 有三种运行模式:单机模式、集群模式和双活模式。
-### 单机模式
+### 3.1 单机模式
IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D;
@@ -101,7 +101,7 @@ IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D;
- **适用场景**:资源有限或对高可用要求不高的场景,例如边缘端服务器。
- **部署方法**:[单机版部署](../Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md)
-### 双活模式
+### 3.2 双活模式
双活版部署为 TimechoDB 企业版功能,是指两个独立的实例进行双向同步,能同时对外提供服务。当一台停机重启后,另一个实例会将缺失数据断点续传。
@@ -111,7 +111,7 @@ IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D;
- **适用场景**:资源有限(仅有两台服务器),但希望获得高可用能力。
- **部署方法**:[双活版部署](../Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md)
-### 集群模式
+### 3.3 集群模式
IoTDB 集群实例为 3 个ConfigNode 和不少于 3 个 DataNode,通常为 3 个 DataNode,即3C3D;当部分节点出现故障时,剩余节点仍然能对外提供服务,保证数据库服务的高可用性,且可随节点增加提升数据库性能。
@@ -119,7 +119,7 @@ IoTDB 集群实例为 3 个ConfigNode 和不少于 3 个 DataNode,通常为 3
- **适用场景**:需要提供高可用和可靠性的企业级应用场景。
- **部署方法**:[集群版部署](../Deployment-and-Maintenance/Cluster-Deployment_timecho.md)
-### 特点总结
+### 3.4 特点总结
| 维度 | 单机模式 | 双活模式 | 集群模式 |
| ------------ | ---------------------------- | ------------------------ | ------------------------ |
diff --git a/src/zh/UserGuide/latest/Background-knowledge/Data-Model-and-Terminology.md b/src/zh/UserGuide/latest/Background-knowledge/Data-Model-and-Terminology.md
index 8b4d3733c..8a9cf537f 100644
--- a/src/zh/UserGuide/latest/Background-knowledge/Data-Model-and-Terminology.md
+++ b/src/zh/UserGuide/latest/Background-knowledge/Data-Model-and-Terminology.md
@@ -31,7 +31,7 @@
IoTDB 模型结构涉及的基本概念在下文将做详细叙述。
-## 数据库(Database)
+## 1 数据库(Database)
用户可以将任意前缀路径设置成数据库。如有 4 条时间序列`root.ln.wf01.wt01.status`, `root.ln.wf01.wt01.temperature`, `root.ln.wf02.wt02.hardware`, `root.ln.wf02.wt02.status`,路径`root.ln`下的两个实体 `wf01`, `wf02`可能属于同一个业主,或者同一个制造商,这时候就可以将前缀路径`root.ln`指定为一个数据库。未来`root.ln`下增加了新的实体,也将属于该数据库。
@@ -51,26 +51,26 @@ Database 节点名只支持中英文字符、数字和下划线的组合。例
**无模式写入**:可以在未定义元数据时, 通过 insert 语句直接写入数据,数据库中将自动识别并注册所需的元数据,实现自动建模。
-## 设备(Device)
+## 2 设备(Device)
**一个物理设备**,也称实体(Entity),是在实际场景中拥有物理量的设备或装置。在 IoTDB 当中,所有的物理量都有其对应的归属实体。实体无需手动创建,默认为倒数第二层。实体是管理的一组时间序列的组合,可以是一个物理设备、测量装置、传感器集合等。
-## 物理量(Measurement)
+## 3 物理量(Measurement)
**物理量**,也称工况或字段(field),是在实际场景中检测装置所记录的测量信息,且可以按一定规律变换成为电信号或其他所需形式的信息输出并发送给 IoTDB。在 IoTDB 当中,存储的所有数据及路径,都是以物理量为单位进行组织。
-## 时间序列
+## 4 时间序列
-### 时间戳 (Timestamp)
+### 4.1 时间戳 (Timestamp)
时间戳是一个数据到来的时间点,其中包括绝对时间戳和相对时间戳,详细描述参见 [数据类型文档](../Background-knowledge/Data-Type.md)。
-### 数据点(Data Point)
+### 4.2 数据点(Data Point)
**一个“时间戳-值”对**。
-### 时间序列(Timeseries)
+### 4.3 时间序列(Timeseries)
**一个物理实体的某个物理量在时间轴上的记录**,是数据点的序列。
@@ -80,7 +80,7 @@ Database 节点名只支持中英文字符、数字和下划线的组合。例
例如,ln 电力集团、wf01 风电场的实体 wt01 有名为 status 的物理量,则它的时间序列可以表示为:`root.ln.wf01.wt01.status`。
-### 对齐时间序列(Aligned Timeseries)
+### 4.4 对齐时间序列(Aligned Timeseries)
在实际应用中,存在某些实体的多个物理量**同时采样**,形成一组时间列相同的时间序列,这样的一组时间序列在Apache IoTDB中可以建模为对齐时间序列。
@@ -98,7 +98,7 @@ Database 节点名只支持中英文字符、数字和下划线的组合。例
在后续数据定义语言、数据操作语言和 Java 原生接口章节,将对涉及到对齐时间序列的各种操作进行逐一介绍。
-## 路径(Path)
+## 5 路径(Path)
路径(`path`)是指符合以下约束的表达式:
@@ -128,11 +128,11 @@ wildcard
* ['\u2E80'..'\u9FFF'] (UNICODE 中文字符)
* 特别地,如果系统在 Windows 系统上部署,那么 database 路径结点名是大小写不敏感的。例如,同时创建`root.ln` 和 `root.LN` 是不被允许的。
-### 特殊字符(反引号)
+### 5.1 特殊字符(反引号)
如果需要在路径结点名中用特殊字符,可以用反引号引用路径结点名,具体使用方法可以参考[反引号](../SQL-Manual/Syntax-Rule.md#反引号)。
-## 路径模式(Path Pattern)
+## 6 路径模式(Path Pattern)
为了使得在表达多个时间序列的时候更加方便快捷,IoTDB 为用户提供带通配符`*`或`**`的路径。用户可以利用两种通配符构造出期望的路径模式。通配符可以出现在路径中的任何层。
diff --git a/src/zh/UserGuide/latest/Background-knowledge/Data-Type.md b/src/zh/UserGuide/latest/Background-knowledge/Data-Type.md
index fc9a12c7c..3ed23a63e 100644
--- a/src/zh/UserGuide/latest/Background-knowledge/Data-Type.md
+++ b/src/zh/UserGuide/latest/Background-knowledge/Data-Type.md
@@ -21,7 +21,7 @@
# 数据类型
-## 基本数据类型
+## 1 基本数据类型
IoTDB 支持以下十种数据类型:
@@ -38,7 +38,7 @@ IoTDB 支持以下十种数据类型:
其中,STRING 和 TEXT 类型的区别在于,STRING 类型具有更多的统计信息,能够用于优化值过滤查询。TEXT 类型适合用于存储长字符串。
-### 浮点数精度配置
+### 1.1 浮点数精度配置
对于 **FLOAT** 与 **DOUBLE** 类型的序列,如果编码方式采用 `RLE`或 `TS_2DIFF`,可以在创建序列时通过 `MAX_POINT_NUMBER` 属性指定浮点数的小数点后位数。
@@ -49,7 +49,7 @@ CREATE TIMESERIES root.vehicle.d0.s0 WITH DATATYPE=FLOAT, ENCODING=RLE, 'MAX_POI
若不指定,系统会按照配置文件 `iotdb-system.properties` 中的 [float_precision](../Reference/Common-Config-Manual.md) 项配置(默认为 2 位)。
-### 数据类型兼容性
+### 1.2 数据类型兼容性
当写入数据的类型与序列注册的数据类型不一致时,
- 如果序列数据类型不兼容写入数据类型,系统会给出错误提示。
@@ -70,11 +70,11 @@ CREATE TIMESERIES root.vehicle.d0.s0 WITH DATATYPE=FLOAT, ENCODING=RLE, 'MAX_POI
| TIMESTAMP | INT32 INT64 TIMESTAMP |
| DATE | DATE |
-## 时间戳类型
+## 2 时间戳类型
时间戳是一个数据到来的时间点,其中包括绝对时间戳和相对时间戳。
-### 绝对时间戳
+### 2.1 绝对时间戳
IOTDB 中绝对时间戳分为二种,一种为 LONG 类型,一种为 DATETIME 类型(包含 DATETIME-INPUT, DATETIME-DISPLAY 两个小类)。
@@ -146,7 +146,7 @@ IoTDB 在显示时间戳时可以支持 LONG 类型以及 DATETIME-DISPLAY 类
-### 相对时间戳
+### 2.2 相对时间戳
相对时间是指与服务器时间```now()```和```DATETIME```类型时间相差一定时间间隔的时间。
形式化定义为:
diff --git a/src/zh/UserGuide/latest/Background-knowledge/Navigating_Time_Series_Data.md b/src/zh/UserGuide/latest/Background-knowledge/Navigating_Time_Series_Data.md
index 35f789271..65d170c0b 100644
--- a/src/zh/UserGuide/latest/Background-knowledge/Navigating_Time_Series_Data.md
+++ b/src/zh/UserGuide/latest/Background-knowledge/Navigating_Time_Series_Data.md
@@ -20,7 +20,7 @@
-->
# 走进时序数据
-## 什么叫时序数据?
+## 1 什么叫时序数据?
万物互联的今天,物联网场景、工业场景等各类场景都在进行数字化转型,人们通过在各类设备上安装传感器对设备的各类状态进行采集。如电机采集电压、电流,风机的叶片转速、角速度、发电功率;车辆采集经纬度、速度、油耗;桥梁的振动频率、挠度、位移量等。传感器的数据采集,已经渗透在各个行业中。
@@ -34,20 +34,20 @@
传感器产生的海量时序数据是各行各业数字化转型的基础,因此我们对时序数据的模型梳理主要围绕设备、传感器展开。
-## 时序数据中的关键概念有哪些?
+## 2 时序数据中的关键概念有哪些?
时序数据中主要涉及的概念由下至上可分为:数据点、测点、设备。

-### 数据点
+### 2.1 数据点
- 定义:由一个时间戳和一个数值组成,其中时间戳为 long 类型,数值可以为 BOOLEAN、FLOAT、INT32 等各种类型。
- 示例:如上图中表格形式的时间序列的一行,或图形形式的时间序列的一个点,就是一个数据点。

-### 测点
+### 2.2 测点
- 定义:是多个数据点按时间戳递增排列形成的一个时间序列。通常一个测点代表一个采集点位,能够定期采集所在环境的物理量。
- 又名:物理量、时间序列、时间线、信号量、指标、测量值等
@@ -57,7 +57,7 @@
- 车联网场景:油量、车速、经度、维度
- 工厂场景:温度、湿度
-### 设备
+### 2.3 设备
- 定义:对应一个实际场景中的物理设备,通常是一组测点的集合,由一到多个标签定位标识
- 示例
diff --git a/src/zh/UserGuide/latest/Basic-Concept/Operate-Metadata_apache.md b/src/zh/UserGuide/latest/Basic-Concept/Operate-Metadata_apache.md
index ea83b049c..1f4b0e793 100644
--- a/src/zh/UserGuide/latest/Basic-Concept/Operate-Metadata_apache.md
+++ b/src/zh/UserGuide/latest/Basic-Concept/Operate-Metadata_apache.md
@@ -21,11 +21,11 @@
# 测点管理
-## 数据库管理
+## 1 数据库管理
数据库(Database)可以被视为关系数据库中的Database。
-### 创建数据库
+### 1.1 创建数据库
我们可以根据存储模型建立相应的数据库。如下所示:
@@ -45,7 +45,7 @@ Database 节点名只支持中英文字符、数字、下划线、英文句号
还需注意,如果在 Windows 系统上部署,database 名是大小写不敏感的。例如同时创建`root.ln` 和 `root.LN` 是不被允许的。
-### 查看数据库
+### 1.2 查看数据库
在 database 创建后,我们可以使用 [SHOW DATABASES](../SQL-Manual/SQL-Manual.md#查看数据库) 语句和 [SHOW DATABASES \](../SQL-Manual/SQL-Manual.md#查看数据库) 来查看 database,SQL 语句如下所示:
@@ -68,7 +68,7 @@ Total line number = 2
It costs 0.060s
```
-### 删除数据库
+### 1.3 删除数据库
用户可以使用`DELETE DATABASE `语句删除该路径模式匹配的所有的数据库。在删除的过程中,需要注意的是数据库的数据也会被删除。
@@ -79,7 +79,7 @@ IoTDB > DELETE DATABASE root.sgcc
IoTDB > DELETE DATABASE root.**
```
-### 统计数据库数量
+### 1.4 统计数据库数量
用户可以使用`COUNT DATABASES `语句统计数据库的数量,允许指定`PathPattern` 用来统计匹配该`PathPattern` 的数据库的数量
@@ -139,7 +139,7 @@ Total line number = 1
It costs 0.002s
```
-### 数据存活时间(TTL)
+### 1.5 数据存活时间(TTL)
IoTDB 支持对 device 级别设置数据存活时间(TTL),这使得 IoTDB 可以定期、自动地删除一定时间之前的数据。合理使用 TTL
可以帮助您控制 IoTDB 占用的总磁盘空间以避免出现磁盘写满等异常。并且,随着文件数量的增多,查询性能往往随之下降,
@@ -250,7 +250,7 @@ IoTDB> show devices
所有设备都一定会有 TTL,即不可能是 null。INF 表示无穷大。
-### 设置异构数据库(进阶操作)
+### 1.6 设置异构数据库(进阶操作)
在熟悉 IoTDB 元数据建模的前提下,用户可以在 IoTDB 中设置异构的数据库,以便应对不同的生产需求。
@@ -341,7 +341,7 @@ It costs 0.058s
+ 数据库允许拥有的最大 DataRegionGroup 数量
-## 设备模板管理
+## 2 设备模板管理
IoTDB 支持设备模板功能,实现同类型不同实体的物理量元数据共享,减少元数据内存占用,同时简化同类型实体的管理。
@@ -350,7 +350,7 @@ IoTDB 支持设备模板功能,实现同类型不同实体的物理量元数

-### 创建设备模板
+### 2.1 创建设备模板
创建设备模板的 SQL 语法如下:
@@ -372,7 +372,7 @@ IoTDB> create device template t2 aligned (lat FLOAT encoding=Gorilla, lon FLOAT
其中,物理量 `lat` 和 `lon` 是对齐的。
-### 挂载设备模板
+### 2.2 挂载设备模板
元数据模板在创建后,需执行挂载操作,方可用于相应路径下的序列创建与数据写入。
@@ -388,7 +388,7 @@ IoTDB> create device template t2 aligned (lat FLOAT encoding=Gorilla, lon FLOAT
IoTDB> set device template t1 to root.sg1.d1
```
-### 激活设备模板
+### 2.3 激活设备模板
挂载好设备模板后,且系统开启自动注册序列功能的情况下,即可直接进行数据的写入。例如 database 为 root.sg1,模板 t1 被挂载到了节点 root.sg1.d1,那么可直接向时间序列(如 root.sg1.d1.temperature 和 root.sg1.d1.status)写入时间序列数据,该时间序列已可被当作正常创建的序列使用。
@@ -436,7 +436,7 @@ show devices root.sg1.**
+---------------+---------+---------+
```
-### 查看设备模板
+### 2.4 查看设备模板
- 查看所有设备模板
@@ -504,7 +504,7 @@ IoTDB> show paths using device template t1
+-----------+
```
-### 解除设备模板
+### 2.5 解除设备模板
若需删除模板表示的某一组时间序列,可采用解除模板操作,SQL语句如下所示:
@@ -532,7 +532,7 @@ IoTDB> deactivate device template t1 from root.sg1.*, root.sg2.*
若解除命令不指定模板名称,则会将给定路径涉及的所有模板使用情况均解除。
-### 卸载设备模板
+### 2.6 卸载设备模板
卸载设备模板的 SQL 语句如下所示:
@@ -542,7 +542,7 @@ IoTDB> unset device template t1 from root.sg1.d1
**注意**:不支持卸载仍处于激活状态的模板,需保证执行卸载操作前解除对该模板的所有使用,即删除所有该模板表示的序列。
-### 删除设备模板
+### 2.7 删除设备模板
删除设备模板的 SQL 语句如下所示:
@@ -552,7 +552,7 @@ IoTDB> drop device template t1
**注意**:不支持删除已经挂载的模板,需在删除操作前保证该模板卸载成功。
-### 修改设备模板
+### 2.8 修改设备模板
在需要新增物理量的场景中,可以通过修改设备模板来给所有已激活该模板的设备新增物理量。
@@ -565,9 +565,9 @@ IoTDB> alter device template t1 add (speed FLOAT encoding=RLE, FLOAT TEXT encodi
**向已挂载模板的路径下的设备中写入数据,若写入请求中的物理量不在模板中,将自动扩展模板。**
-## 时间序列管理
+## 3 时间序列管理
-### 创建时间序列
+### 3.1 创建时间序列
根据建立的数据模型,我们可以分别在两个数据库中创建相应的时间序列。创建时间序列的 SQL 语句如下所示:
@@ -599,7 +599,7 @@ error: encoding TS_2DIFF does not support BOOLEAN
详细的数据类型与编码方式的对应列表请参见 [编码方式](../Technical-Insider/Encoding-and-Compression.md)。
-### 创建对齐时间序列
+### 3.2 创建对齐时间序列
创建一组对齐时间序列的SQL语句如下所示:
@@ -611,7 +611,7 @@ IoTDB> CREATE ALIGNED TIMESERIES root.ln.wf01.GPS(latitude FLOAT encoding=PLAIN
对齐的时间序列也支持设置别名、标签、属性。
-### 删除时间序列
+### 3.3 删除时间序列
我们可以使用`(DELETE | DROP) TimeSeries `语句来删除我们之前创建的时间序列。SQL 语句如下所示:
@@ -622,7 +622,7 @@ IoTDB> delete timeseries root.ln.wf02.*
IoTDB> drop timeseries root.ln.wf02.*
```
-### 查看时间序列
+### 3.4 查看时间序列
* SHOW LATEST? TIMESERIES pathPattern? timeseriesWhereClause? limitClause?
@@ -734,7 +734,7 @@ It costs 0.016s
需要注意的是,当查询路径不存在时,系统会返回 0 条时间序列。
-### 统计时间序列总数
+### 3.5 统计时间序列总数
IoTDB 支持使用`COUNT TIMESERIES`来统计一条路径中的时间序列个数。SQL 语句如下所示:
@@ -821,7 +821,7 @@ It costs 0.002s
> 注意:时间序列的路径只是过滤条件,与 level 的定义无关。
-### 标签点管理
+### 3.6 标签点管理
我们可以在创建时间序列的时候,为它添加别名和额外的标签和属性信息。
@@ -984,9 +984,9 @@ IoTDB> show timeseries where TAGS(tag1)='v1'
上述对时间序列标签、属性的更新等操作都支持。
-## 路径查询
+## 4 路径查询
-### 查看路径的所有子路径
+### 4.1 查看路径的所有子路径
```
SHOW CHILD PATHS pathPattern
@@ -1022,7 +1022,7 @@ It costs 0.002s
+---------------+
```
-### 查看路径的下一级节点
+### 4.2 查看路径的下一级节点
```
SHOW CHILD NODES pathPattern
@@ -1053,7 +1053,7 @@ SHOW CHILD NODES pathPattern
+------------+
```
-### 统计节点数
+### 4.3 统计节点数
IoTDB 支持使用`COUNT NODES LEVEL=`来统计当前 Metadata
树下满足某路径模式的路径中指定层级的节点个数。这条语句可以用来统计带有特定采样点的设备数。例如:
@@ -1103,7 +1103,7 @@ It costs 0.002s
> 注意:时间序列的路径只是过滤条件,与 level 的定义无关。
-### 查看设备
+### 4.4 查看设备
* SHOW DEVICES pathPattern? (WITH DATABASE)? devicesWhereClause? limitClause?
@@ -1215,7 +1215,7 @@ Total line number = 2
It costs 0.001s
```
-### 统计设备数量
+### 4.5 统计设备数量
* COUNT DEVICES \
diff --git a/src/zh/UserGuide/latest/Basic-Concept/Operate-Metadata_timecho.md b/src/zh/UserGuide/latest/Basic-Concept/Operate-Metadata_timecho.md
index 11ea81ef3..7ccfffc77 100644
--- a/src/zh/UserGuide/latest/Basic-Concept/Operate-Metadata_timecho.md
+++ b/src/zh/UserGuide/latest/Basic-Concept/Operate-Metadata_timecho.md
@@ -21,11 +21,11 @@
# 测点管理
-## 数据库管理
+## 1 数据库管理
数据库(Database)可以被视为关系数据库中的Database。
-### 创建数据库
+### 1.1 创建数据库
我们可以根据存储模型建立相应的数据库。如下所示:
@@ -45,7 +45,7 @@ Database 节点名只支持中英文字符、数字、下划线、英文句号
还需注意,如果在 Windows 系统上部署,database 名是大小写不敏感的。例如同时创建`root.ln` 和 `root.LN` 是不被允许的。
-### 查看数据库
+### 1.2 查看数据库
在 database 创建后,我们可以使用 [SHOW DATABASES](../SQL-Manual/SQL-Manual.md#查看数据库) 语句和 [SHOW DATABASES \](../SQL-Manual/SQL-Manual.md#查看数据库) 来查看 database,SQL 语句如下所示:
@@ -68,7 +68,7 @@ Total line number = 2
It costs 0.060s
```
-### 删除数据库
+### 1.3 删除数据库
用户可以使用`DELETE DATABASE `语句删除该路径模式匹配的所有的数据库。在删除的过程中,需要注意的是数据库的数据也会被删除。
@@ -79,7 +79,7 @@ IoTDB > DELETE DATABASE root.sgcc
IoTDB > DELETE DATABASE root.**
```
-### 统计数据库数量
+### 1.4 统计数据库数量
用户可以使用`COUNT DATABASES `语句统计数据库的数量,允许指定`PathPattern` 用来统计匹配该`PathPattern` 的数据库的数量
@@ -139,7 +139,7 @@ Total line number = 1
It costs 0.002s
```
-### 数据存活时间(TTL)
+### 1.5 数据存活时间(TTL)
IoTDB 支持对 device 级别设置数据存活时间(TTL),这使得 IoTDB 可以定期、自动地删除一定时间之前的数据。合理使用 TTL
可以帮助您控制 IoTDB 占用的总磁盘空间以避免出现磁盘写满等异常。并且,随着文件数量的增多,查询性能往往随之下降,
@@ -250,7 +250,7 @@ IoTDB> show devices
所有设备都一定会有 TTL,即不可能是 null。INF 表示无穷大。
-### 设置异构数据库(进阶操作)
+### 1.6 设置异构数据库(进阶操作)
在熟悉 IoTDB 元数据建模的前提下,用户可以在 IoTDB 中设置异构的数据库,以便应对不同的生产需求。
@@ -341,7 +341,7 @@ It costs 0.058s
+ 数据库允许拥有的最大 DataRegionGroup 数量
-## 设备模板管理
+## 2 设备模板管理
IoTDB 支持设备模板功能,实现同类型不同实体的物理量元数据共享,减少元数据内存占用,同时简化同类型实体的管理。
@@ -350,7 +350,7 @@ IoTDB 支持设备模板功能,实现同类型不同实体的物理量元数

-### 创建设备模板
+### 2.1 创建设备模板
创建设备模板的 SQL 语法如下:
@@ -372,7 +372,7 @@ IoTDB> create device template t2 aligned (lat FLOAT encoding=Gorilla, lon FLOAT
其中,物理量 `lat` 和 `lon` 是对齐的。
-### 挂载设备模板
+### 2.2 挂载设备模板
元数据模板在创建后,需执行挂载操作,方可用于相应路径下的序列创建与数据写入。
@@ -388,7 +388,7 @@ IoTDB> create device template t2 aligned (lat FLOAT encoding=Gorilla, lon FLOAT
IoTDB> set device template t1 to root.sg1.d1
```
-### 激活设备模板
+### 2.3 激活设备模板
挂载好设备模板后,且系统开启自动注册序列功能的情况下,即可直接进行数据的写入。例如 database 为 root.sg1,模板 t1 被挂载到了节点 root.sg1.d1,那么可直接向时间序列(如 root.sg1.d1.temperature 和 root.sg1.d1.status)写入时间序列数据,该时间序列已可被当作正常创建的序列使用。
@@ -436,7 +436,7 @@ show devices root.sg1.**
+---------------+---------+---------+
```
-### 查看设备模板
+### 2.4 查看设备模板
- 查看所有设备模板
@@ -504,7 +504,7 @@ IoTDB> show paths using device template t1
+-----------+
```
-### 解除设备模板
+### 2.5 解除设备模板
若需删除模板表示的某一组时间序列,可采用解除模板操作,SQL语句如下所示:
@@ -532,7 +532,7 @@ IoTDB> deactivate device template t1 from root.sg1.*, root.sg2.*
若解除命令不指定模板名称,则会将给定路径涉及的所有模板使用情况均解除。
-### 卸载设备模板
+### 2.6 卸载设备模板
卸载设备模板的 SQL 语句如下所示:
@@ -542,7 +542,7 @@ IoTDB> unset device template t1 from root.sg1.d1
**注意**:不支持卸载仍处于激活状态的模板,需保证执行卸载操作前解除对该模板的所有使用,即删除所有该模板表示的序列。
-### 删除设备模板
+### 2.7 删除设备模板
删除设备模板的 SQL 语句如下所示:
@@ -552,7 +552,7 @@ IoTDB> drop device template t1
**注意**:不支持删除已经挂载的模板,需在删除操作前保证该模板卸载成功。
-### 修改设备模板
+### 2.8 修改设备模板
在需要新增物理量的场景中,可以通过修改设备模板来给所有已激活该模板的设备新增物理量。
@@ -565,9 +565,9 @@ IoTDB> alter device template t1 add (speed FLOAT encoding=RLE, FLOAT TEXT encodi
**向已挂载模板的路径下的设备中写入数据,若写入请求中的物理量不在模板中,将自动扩展模板。**
-## 时间序列管理
+## 3 时间序列管理
-### 创建时间序列
+### 3.1 创建时间序列
根据建立的数据模型,我们可以分别在两个数据库中创建相应的时间序列。创建时间序列的 SQL 语句如下所示:
@@ -599,7 +599,7 @@ error: encoding TS_2DIFF does not support BOOLEAN
详细的数据类型与编码方式的对应列表请参见 [编码方式](../Technical-Insider/Encoding-and-Compression.md)。
-### 创建对齐时间序列
+### 3.2 创建对齐时间序列
创建一组对齐时间序列的SQL语句如下所示:
@@ -611,7 +611,7 @@ IoTDB> CREATE ALIGNED TIMESERIES root.ln.wf01.GPS(latitude FLOAT encoding=PLAIN
对齐的时间序列也支持设置别名、标签、属性。
-### 删除时间序列
+### 3.3 删除时间序列
我们可以使用`(DELETE | DROP) TimeSeries `语句来删除我们之前创建的时间序列。SQL 语句如下所示:
@@ -622,7 +622,7 @@ IoTDB> delete timeseries root.ln.wf02.*
IoTDB> drop timeseries root.ln.wf02.*
```
-### 查看时间序列
+### 3.4 查看时间序列
* SHOW LATEST? TIMESERIES pathPattern? timeseriesWhereClause? limitClause?
@@ -734,7 +734,7 @@ It costs 0.016s
需要注意的是,当查询路径不存在时,系统会返回 0 条时间序列。
-### 统计时间序列总数
+### 3.5 统计时间序列总数
IoTDB 支持使用`COUNT TIMESERIES`来统计一条路径中的时间序列个数。SQL 语句如下所示:
@@ -821,7 +821,7 @@ It costs 0.002s
> 注意:时间序列的路径只是过滤条件,与 level 的定义无关。
-### 活跃时间序列查询
+### 3.6 活跃时间序列查询
我们在原有的时间序列查询和统计上添加新的WHERE时间过滤条件,可以得到在指定时间范围中存在数据的时间序列。
需要注意的是, 在带有时间过滤的元数据查询中并不考虑视图的存在,只考虑TsFile中实际存储的时间序列。
@@ -862,7 +862,7 @@ IoTDB> count timeseries where time >= 15000 and time < 16000;
```
关于活跃时间序列的定义,能通过正常查询查出来的数据就是活跃数据,也就是说插入但被删除的时间序列不在考虑范围内。
-### 标签点管理
+### 3.7 标签点管理
我们可以在创建时间序列的时候,为它添加别名和额外的标签和属性信息。
@@ -1025,9 +1025,9 @@ IoTDB> show timeseries where TAGS(tag1)='v1'
上述对时间序列标签、属性的更新等操作都支持。
-## 路径查询
+## 4 路径查询
-### 查看路径的所有子路径
+### 4.1 查看路径的所有子路径
```
SHOW CHILD PATHS pathPattern
@@ -1063,7 +1063,7 @@ It costs 0.002s
+---------------+
```
-### 查看路径的下一级节点
+### 4.2 查看路径的下一级节点
```
SHOW CHILD NODES pathPattern
@@ -1094,7 +1094,7 @@ SHOW CHILD NODES pathPattern
+------------+
```
-### 统计节点数
+### 4.3 统计节点数
IoTDB 支持使用`COUNT NODES LEVEL=`来统计当前 Metadata
树下满足某路径模式的路径中指定层级的节点个数。这条语句可以用来统计带有特定采样点的设备数。例如:
@@ -1144,7 +1144,7 @@ It costs 0.002s
> 注意:时间序列的路径只是过滤条件,与 level 的定义无关。
-### 查看设备
+### 4.4 查看设备
* SHOW DEVICES pathPattern? (WITH DATABASE)? devicesWhereClause? limitClause?
@@ -1256,7 +1256,7 @@ Total line number = 2
It costs 0.001s
```
-### 统计设备数量
+### 4.5 统计设备数量
* COUNT DEVICES \
@@ -1301,7 +1301,7 @@ Total line number = 1
It costs 0.004s
```
-### 活跃设备查询
+### 4.6 活跃设备查询
和活跃时间序列一样,我们可以在查看和统计设备的基础上添加时间过滤条件来查询在某段时间内存在数据的活跃设备。这里活跃的定义与活跃时间序列相同,使用样例如下:
```
IoTDB> insert into root.sg.data(timestamp, s1,s2) values(15000, 1, 2);
diff --git a/src/zh/UserGuide/latest/Basic-Concept/Query-Data.md b/src/zh/UserGuide/latest/Basic-Concept/Query-Data.md
index cc7895a9d..5c0684e2b 100644
--- a/src/zh/UserGuide/latest/Basic-Concept/Query-Data.md
+++ b/src/zh/UserGuide/latest/Basic-Concept/Query-Data.md
@@ -20,11 +20,11 @@
-->
# 数据查询
-## 概述
+## 1 概述
在 IoTDB 中,使用 `SELECT` 语句从一条或多条时间序列中查询数据,IoTDB 不区分历史数据和实时数据,用户可以用统一的sql语法进行查询,通过 `WHERE` 子句中的时间过滤谓词决定查询的时间范围。
-### 语法定义
+### 1.1 语法定义
```sql
SELECT [LAST] selectExpr [, selectExpr] ...
@@ -48,7 +48,7 @@ SELECT [LAST] selectExpr [, selectExpr] ...
[ALIGN BY {TIME | DEVICE}]
```
-### 语法说明
+### 1.2 语法说明
#### `SELECT` 子句
@@ -108,7 +108,7 @@ SELECT [LAST] selectExpr [, selectExpr] ...
- 查询结果集默认**按时间对齐**,包含一列时间列和若干个值列,每一行数据各列的时间戳相同。
- 除按时间对齐之外,还支持**按设备对齐**,查询结果集包含一列时间列、一列设备列和若干个值列。
-### SQL 示例
+### 1.3 SQL 示例
IoTDB 支持即席(Ad_hoc)查询,即支持用户在使用系统时,自定义查询条件,根据自己当时的需求写出查询sql并执行。用户可以通过上述介绍的子句,进行组合,指定任意合法的过滤条件来满足当时的查询需求,下面介绍了一些查询的示例:
@@ -267,7 +267,7 @@ Total line number = 10
It costs 0.016s
```
-### 查询执行接口
+### 1.4 查询执行接口
在 IoTDB 中,提供两种方式执行数据查询操作:
- 使用 IoTDB-SQL 执行查询。
@@ -333,7 +333,7 @@ SessionDataSet executeAggregationQuery(
long slidingStep);
```
-## 选择表达式(SELECT FROM 子句)
+## 2 选择表达式(SELECT FROM 子句)
`SELECT` 子句指定查询的输出,由若干个 `selectExpr` 组成。 每个 `selectExpr` 定义了查询结果中的一列或多列。
@@ -348,7 +348,7 @@ SessionDataSet executeAggregationQuery(
- 时间序列生成函数(包括内置函数和用户自定义函数)
- 常量
-### 使用别名
+### 2.1 使用别名
由于 IoTDB 独特的数据模型,在每个传感器前都附带有设备等诸多额外信息。有时,我们只针对某个具体设备查询,而这些前缀信息频繁显示造成了冗余,影响了结果集的显示与分析。
@@ -366,11 +366,11 @@ select s1 as temperature, s2 as speed from root.ln.wf01.wt01;
| ---- | ----------- | ----- |
| ... | ... | ... |
-### 运算符
+### 2.2 运算符
IoTDB 中支持的运算符列表见文档 [运算符和函数](../SQL-Manual/Operator-and-Expression.md)。
-### 函数
+### 2.3 函数
#### 聚合函数
@@ -402,7 +402,7 @@ IoTDB 中支持的内置函数列表见文档 [运算符和函数](../SQL-Manual
IoTDB 支持通过用户自定义函数(点击查看: [用户自定义函数](../User-Manual/Database-Programming.md#用户自定义函数) )能力进行函数功能扩展。
-### 嵌套表达式举例
+### 2.4 嵌套表达式举例
IoTDB 支持嵌套表达式,由于聚合查询和时间序列查询不能在一条查询语句中同时出现,我们将支持的嵌套表达式分为时间序列查询嵌套表达式和聚合查询嵌套表达式两类。
@@ -599,7 +599,7 @@ Total line number = 8
It costs 0.012s
```
-### 最新点查询
+### 2.5 最新点查询
最新点查询是时序数据库 Apache IoTDB 中提供的一种特殊查询。它返回指定时间序列中时间戳最大的数据点,即一条序列的最新状态。
@@ -680,7 +680,7 @@ Total line number = 2
It costs 0.002s
```
-## 查询过滤条件(WHERE 子句)
+## 3 查询过滤条件(WHERE 子句)
`WHERE` 子句指定了对数据行的筛选条件,由一个 `whereCondition` 组成。
@@ -689,7 +689,7 @@ It costs 0.002s
根据过滤条件的不同,可以分为时间过滤条件和值过滤条件。时间过滤条件和值过滤条件可以混合使用。
-### 时间过滤条件
+### 3.1 时间过滤条件
使用时间过滤条件可以筛选特定时间范围的数据。对于时间戳支持的格式,请参考 [时间戳类型](../Background-knowledge/Data-Type.md) 。
@@ -715,7 +715,7 @@ It costs 0.002s
注:在上述示例中,`time` 也可写做 `timestamp`。
-### 值过滤条件
+### 3.2 值过滤条件
使用值过滤条件可以筛选数据值满足特定条件的数据。
**允许**使用 select 子句中未选择的时间序列作为值过滤条件。
@@ -766,7 +766,7 @@ It costs 0.002s
select code from root.sg1.d1 where temperature is not null;
````
-### 模糊查询
+### 3.3 模糊查询
对于 TEXT 类型的数据,支持使用 `Like` 和 `Regexp` 运算符对数据进行模糊匹配
@@ -845,14 +845,14 @@ Total line number = 2
It costs 0.002s
```
-## 分段分组聚合(GROUP BY 子句)
+## 4 分段分组聚合(GROUP BY 子句)
IoTDB支持通过`GROUP BY`子句对序列进行分段或者分组聚合。
分段聚合是指按照时间维度,针对同时间序列中不同数据点之间的时间关系,对数据在行的方向进行分段,每个段得到一个聚合值。目前支持**时间区间分段**、**差值分段**、**条件分段**、**会话分段**和**点数分段**,未来将支持更多分段方式。
分组聚合是指针对不同时间序列,在时间序列的潜在业务属性上分组,每个组包含若干条时间序列,每个组得到一个聚合值。支持**按路径层级分组**和**按序列标签分组**两种分组方式。
-### 分段聚合
+### 4.1 分段聚合
#### 时间区间分段聚合
@@ -1419,7 +1419,7 @@ select count(charging_stauts), first_value(soc) from root.sg group by count(char
|1970-01-01T08:00:00.006+08:00|1970-01-01T08:00:00.010+08:00| 24.0|
+-----------------------------+-----------------------------+--------------------------------------+
```
-### 分组聚合
+### 4.2 分组聚合
#### 路径层级分组聚合
@@ -1738,7 +1738,7 @@ SELECT AVG(temperature) FROM root.factory1.** GROUP BY ([1000, 10000), 5s), TAGS
> 5. 暂不支持聚合函数内部包含表达式,例如 `count(s+1)`。
> 6. 不支持值过滤条件聚合,和分层聚合查询行为保持一致。
-## 聚合结果过滤(HAVING 子句)
+## 5 聚合结果过滤(HAVING 子句)
如果想对聚合查询的结果进行过滤,可以在 `GROUP BY` 子句之后使用 `HAVING` 子句。
@@ -1834,15 +1834,15 @@ SELECT AVG(temperature) FROM root.factory1.** GROUP BY ([1000, 10000), 5s), TAGS
```
-## 结果集补空值(FILL 子句)
+## 6 结果集补空值(FILL 子句)
-### 功能介绍
+### 6.1 功能介绍
当执行一些数据查询时,结果集的某行某列可能没有数据,则此位置结果为空,但这种空值不利于进行数据可视化展示和分析,需要对空值进行填充。
在 IoTDB 中,用户可以使用 `FILL` 子句指定数据缺失情况下的填充模式,允许用户按照特定的方法对任何查询的结果集填充空值,如取前一个不为空的值、线性插值等。
-### 语法定义
+### 6.2 语法定义
**`FILL` 子句的语法定义如下:**
@@ -1854,7 +1854,7 @@ FILL '(' PREVIOUS | LINEAR | constant ')'
- 在 `Fill` 语句中只能指定一种填充方法,该方法作用于结果集的全部列。
- 空值填充不兼容 0.13 版本及以前的语法(即不支持 `FILL(([(, , )?])+)`)
-### 填充方式
+### 6.3 填充方式
**IoTDB 目前支持以下三种空值填充方式:**
@@ -2145,14 +2145,14 @@ Total line number = 4
```
-## 查询结果分页(LIMIT/SLIMIT 子句)
+## 7 查询结果分页(LIMIT/SLIMIT 子句)
当查询结果集数据量很大,放在一个页面不利于显示,可以使用 `LIMIT/SLIMIT` 子句和 `OFFSET/SOFFSET `子句进行分页控制。
- `LIMIT` 和 `SLIMIT` 子句用于控制查询结果的行数和列数。
- `OFFSET` 和 `SOFFSET` 子句用于控制结果显示的起始位置。
-### 按行分页
+### 7.1 按行分页
用户可以通过 `LIMIT` 和 `OFFSET` 子句控制查询结果的行数,`LIMIT rowLimit` 指定查询结果的行数,`OFFSET rowOffset` 指定查询结果显示的起始行位置。
@@ -2279,7 +2279,7 @@ Total line number = 4
It costs 0.016s
```
-### 按列分页
+### 7.2 按列分页
用户可以通过 `SLIMIT` 和 `SOFFSET` 子句控制查询结果的列数,`SLIMIT seriesLimit` 指定查询结果的列数,`SOFFSET seriesOffset` 指定查询结果显示的起始列位置。
@@ -2408,9 +2408,9 @@ Total line number = 10
It costs 0.009s
```
-## 结果集排序(ORDER BY 子句)
+## 8 结果集排序(ORDER BY 子句)
-### 时间对齐模式下的排序
+### 8.1 时间对齐模式下的排序
IoTDB的查询结果集默认按照时间对齐,可以使用`ORDER BY TIME`的子句指定时间戳的排列顺序。示例代码如下:
```sql
select * from root.ln.** where time <= 2017-11-01T00:01:00 order by time desc;
@@ -2427,7 +2427,7 @@ select * from root.ln.** where time <= 2017-11-01T00:01:00 order by time desc;
|1970-01-01T08:00:00.001+08:00| v1| true| null| null|
+-----------------------------+--------------------------+------------------------+-----------------------------+------------------------+
```
-### 设备对齐模式下的排序
+### 8.2 设备对齐模式下的排序
当使用`ALIGN BY DEVICE`查询对齐模式下的结果集时,可以使用`ORDER BY`子句对返回的结果集顺序进行规定。
在设备对齐模式下支持4种排序模式的子句,其中包括两种排序键,`DEVICE`和`TIME`,靠前的排序键为主排序键,每种排序键都支持`ASC`和`DESC`两种排列顺序。
@@ -2514,7 +2514,7 @@ select count(*) from root.ln.** group by ((2017-11-01T00:00:00.000+08:00,2017-11
+-----------------------------+-----------------+---------------+-------------+------------------+
```
-### 任意表达式排序
+### 8.3 任意表达式排序
除了IoTDB中规定的Time,Device关键字外,还可以通过`ORDER BY`子句对指定时间序列中任意列的表达式进行排序。
排序在通过`ASC`,`DESC`指定排序顺序的同时,可以通过`NULLS`语法来指定NULL值在排序中的优先级,`NULLS FIRST`默认NULL值在结果集的最上方,`NULLS LAST`则保证NULL值在结果集的最后。如果没有在子句中指定,则默认顺序为`ASC`,`NULLS LAST`。
@@ -2665,7 +2665,7 @@ select score from root.** order by device asc, score desc, time asc align by dev
+-----------------------------+---------+-----+
```
-## 查询对齐模式(ALIGN BY DEVICE 子句)
+## 9 查询对齐模式(ALIGN BY DEVICE 子句)
在 IoTDB 中,查询结果集**默认按照时间对齐**,包含一列时间列和若干个值列,每一行数据各列的时间戳相同。
@@ -2673,7 +2673,7 @@ select score from root.** order by device asc, score desc, time asc align by dev
- 按设备对齐 `ALIGN BY DEVICE`
-### 按设备对齐
+### 9.1 按设备对齐
在按设备对齐模式下,设备名会单独作为一列出现,查询结果集包含一列时间列、一列设备列和若干个值列。如果 `SELECT` 子句中选择了 `N` 列,则结果集包含 `N + 2` 列(时间列和设备名字列)。
@@ -2705,12 +2705,12 @@ select * from root.ln.** where time <= 2017-11-01T00:01:00 align by device;
Total line number = 6
It costs 0.012s
```
-### 设备对齐模式下的排序
+### 9.2 设备对齐模式下的排序
在设备对齐模式下,默认按照设备名的字典序升序排列,每个设备内部按照时间戳大小升序排列,可以通过 `ORDER BY` 子句调整设备列和时间列的排序优先级。
详细说明及示例见文档 [结果集排序](../SQL-Manual/Operator-and-Expression.md)。
-## 查询写回(INTO 子句)
+## 10 查询写回(INTO 子句)
`SELECT INTO` 语句用于将查询结果写入一系列指定的时间序列中。
@@ -2719,7 +2719,7 @@ It costs 0.012s
- **查询结果存储**:将查询结果进行持久化存储,起到类似物化视图的作用。
- **非对齐序列转对齐序列**:对齐序列从0.13版本开始支持,可以通过该功能将非对齐序列的数据写入新的对齐序列中。
-### 语法定义
+### 10.1 语法定义
#### 整体描述
@@ -2965,7 +2965,7 @@ select s1, s2 into root.sg_copy.d1(t1, t2), aligned root.sg_copy.d2(t1, t2) from
- 当目标序列不存在时,系统将自动创建目标序列(包括 database)。
- 当查询的序列不存在或查询的序列不存在数据,则不会自动创建目标序列。
-### 应用举例
+### 10.2 应用举例
#### 实现 IoTDB 内部 ETL
对原始数据进行 ETL 处理后写入新序列。
@@ -3020,7 +3020,7 @@ It costs 0.375s
```
以上语句将一组非对齐的序列的数据迁移到一组对齐序列。
-### 相关用户权限
+### 10.3 相关用户权限
用户必须有下列权限才能正常执行查询写回语句:
@@ -3029,7 +3029,7 @@ It costs 0.375s
更多用户权限相关的内容,请参考[权限管理语句](../User-Manual/Authority-Management.md)。
-### 相关配置参数
+### 10.4 相关配置参数
* `select_into_insert_tablet_plan_row_limit`
diff --git a/src/zh/UserGuide/latest/Basic-Concept/Write-Delete-Data.md b/src/zh/UserGuide/latest/Basic-Concept/Write-Delete-Data.md
index bed9b3280..c1ee08f77 100644
--- a/src/zh/UserGuide/latest/Basic-Concept/Write-Delete-Data.md
+++ b/src/zh/UserGuide/latest/Basic-Concept/Write-Delete-Data.md
@@ -21,7 +21,7 @@
# 数据写入与删除
-## CLI写入数据
+## 1 CLI写入数据
IoTDB 为用户提供多种插入实时数据的方式,例如在 [Cli/Shell 工具](../Tools-System/CLI.md) 中直接输入插入数据的 INSERT 语句,或使用 Java API(标准 [Java JDBC](../API/Programming-JDBC.md) 接口)单条或批量执行插入数据的 INSERT 语句。
@@ -29,7 +29,7 @@ IoTDB 为用户提供多种插入实时数据的方式,例如在 [Cli/Shell
注:写入重复时间戳的数据则原时间戳数据被覆盖,可视为更新数据。
-### 使用 INSERT 语句
+### 1.1 使用 INSERT 语句
使用 INSERT 语句可以向指定的已经创建的一条或多条时间序列中插入数据。对于每一条数据,均由一个时间戳类型的时间戳和一个数值或布尔值、字符串类型的传感器采集值组成。
@@ -87,7 +87,7 @@ IoTDB > insert into root.ln.wf02.wt02(status, hardware) values (false, 'v2')
```
**注意:** 当一次插入多行数据时必须指定时间戳。
-### 向对齐时间序列插入数据
+### 1.2 向对齐时间序列插入数据
向对齐时间序列插入数据只需在SQL中增加`ALIGNED`关键词,其他类似。
@@ -114,10 +114,10 @@ Total line number = 3
It costs 0.004s
```
-## 原生接口写入
+## 2 原生接口写入
原生接口 (Session) 是目前IoTDB使用最广泛的系列接口,包含多种写入接口,适配不同的数据采集场景,性能高效且支持多语言。
-### 多语言接口写入
+### 2.1 多语言接口写入
* ### Java
使用Java接口写入之前,你需要先建立连接,参考 [Java原生接口](../API/Programming-Java-Native-API.md)。
之后通过 [ JAVA 数据操作接口(DML)](../API/Programming-Java-Native-API.md#数据写入)写入。
@@ -131,7 +131,7 @@ It costs 0.004s
* ### Go
参考 [Go 原生接口](../API/Programming-Go-Native-API.md)
-## REST API写入
+## 3 REST API写入
参考 [insertTablet (v1)](../API/RestServiceV1.md#inserttablet) or [insertTablet (v2)](../API/RestServiceV2.md#inserttablet)
@@ -168,29 +168,29 @@ It costs 0.004s
}
```
-## MQTT写入
+## 4 MQTT写入
参考 [内置 MQTT 服务](../API/Programming-MQTT.md#内置-mqtt-服务)
-## 批量数据导入
+## 5 批量数据导入
针对于不同场景,IoTDB 为用户提供多种批量导入数据的操作方式,本章节向大家介绍最为常用的两种方式为 CSV文本形式的导入 和 TsFile文件形式的导入。
-### TsFile批量导入
+### 5.1 TsFile批量导入
TsFile 是在 IoTDB 中使用的时间序列的文件格式,您可以通过CLI等工具直接将存有时间序列的一个或多个 TsFile 文件导入到另外一个正在运行的IoTDB实例中。具体操作方式请参考[数据导入](../Tools-System/Data-Import-Tool.md)。
-### CSV批量导入
+### 5.2 CSV批量导入
CSV 是以纯文本形式存储表格数据,您可以在CSV文件中写入多条格式化的数据,并批量的将这些数据导入到 IoTDB 中,在导入数据之前,建议在IoTDB中创建好对应的元数据信息。如果忘记创建元数据也不要担心,IoTDB 可以自动将CSV中数据推断为其对应的数据类型,前提是你每一列的数据类型必须唯一。除单个文件外,此工具还支持以文件夹的形式导入多个 CSV 文件,并且支持设置如时间精度等优化参数。具体操作方式请参考[数据导入](../Tools-System/Data-Import-Tool.md)。
-## 删除数据
+## 6 删除数据
用户使用 [DELETE 语句](../SQL-Manual/SQL-Manual.md#删除数据) 可以删除指定的时间序列中符合时间删除条件的数据。在删除数据时,用户可以选择需要删除的一个或多个时间序列、时间序列的前缀、时间序列带、*路径对某一个时间区间内的数据进行删除。
在 JAVA 编程环境中,您可以使用 JDBC API 单条或批量执行 DELETE 语句。
-### 单传感器时间序列值删除
+### 6.1 单传感器时间序列值删除
以测控 ln 集团为例,存在这样的使用场景:
@@ -228,7 +228,7 @@ expressions like : time > XXX, time <= XXX, or two atomic expressions connected
delete from root.ln.wf02.wt02.status
```
-### 多传感器时间序列值删除
+### 6.2 多传感器时间序列值删除
当 ln 集团 wf02 子站的 wt02 设备在 2017-11-01 16:26:00 之前的供电状态和设备硬件版本都需要删除,此时可以使用含义更广的 [路径模式(Path Pattern)](../Background-knowledge/Data-Model-and-Terminology.md) 进行删除操作,进行此操作的 SQL 语句为:
@@ -244,7 +244,7 @@ IoTDB> delete from root.ln.wf03.wt02.status where time < now()
Msg: The statement is executed successfully.
```
-### 删除时间分区 (实验性功能)
+### 6.3 删除时间分区 (实验性功能)
您可以通过如下语句来删除某一个 database 下的指定时间分区:
```sql
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/AINode_Deployment_apache.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/AINode_Deployment_apache.md
index 143b1eda8..b78edee84 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/AINode_Deployment_apache.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/AINode_Deployment_apache.md
@@ -20,24 +20,24 @@
-->
# AINode 部署
-## AINode介绍
+## 1 AINode介绍
-### 能力介绍
+### 1.1 能力介绍
AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,该节点通过与 IoTDB 集群的 DataNode、ConfigNode 的交互,扩展了对时间序列进行机器学习分析的能力,支持从外部引入已有机器学习模型进行注册,并使用注册的模型在指定时序数据上通过简单 SQL 语句完成时序分析任务的过程,将模型的创建、管理及推理融合在数据库引擎中。目前已提供常见时序分析场景(例如预测与异常检测)的机器学习算法或自研模型。
-### 交付方式
+### 1.2 交付方式
是 IoTDB 集群外的额外套件,独立安装包,独立激活(如需试用或使用,请联系天谋科技商务或技术支持)。
-### 部署模式
+### 1.3 部署模式
-## 安装准备
+## 2 安装准备
-### 安装包获取
+### 2.1 安装包获取
用户可以下载AINode的软件安装包,下载并解压后即完成AINode的安装。
@@ -52,7 +52,7 @@ AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,
| README_ZH.md | 文件 | markdown格式的中文版说明 |
| `README.md` | 文件 | 使用说明 |
-### 环境准备
+### 2.2 环境准备
- 建议操作环境: Ubuntu, CentOS, MacOS
- 运行环境
@@ -67,9 +67,9 @@ AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,
# 安装3.8.0版本的venv,创建虚拟环境,文件夹名为 `venv`
../Python-3.8.0/python -m venv `venv`
```
-## 安装部署及使用
+## 3 安装部署及使用
-### 安装 AINode
+### 3.1 安装 AINode
1. 检查Linux的内核架构
```shell
@@ -137,7 +137,7 @@ AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,
```
> 回到系统默认环境:conda deactivate
-### 配置项修改
+### 3.2 配置项修改
AINode 支持修改一些必要的参数。可以在 `conf/iotdb-ainode.properties` 文件中找到下列参数并进行持久化的修改:
| **名称** | **描述** | **类型** | **默认值** | **改后生效方式** |
@@ -150,7 +150,7 @@ AINode 支持修改一些必要的参数。可以在 `conf/iotdb-ainode.properti
| ain_models_dir | AINode 存储模型文件的路径,相对路径的起始目录与操作系统相关,建议使用绝对路径 | String | data/AINode/models | 仅允许在第一次启动服务前修改 |
| ain_logs_dir | AINode 存储日志的路径,相对路径的起始目录与操作系统相关,建议使用绝对路径 | String | logs/AINode | 重启后生效 |
| ain_thrift_compression_enabled | AINode 是否启用 thrift 的压缩机制,0-不启动、1-启动 | Boolean | 0 | 重启后生效 |
-### 启动 AINode
+### 3.3 启动 AINode
在完成 Seed-ConfigNode 的部署后,可以通过添加 AINode 节点来支持模型的注册和推理功能。在配置项中指定 IoTDB 集群的信息后,可以执行相应的指令来启动 AINode,加入 IoTDB 集群。
@@ -302,7 +302,7 @@ AINode 支持修改一些必要的参数。可以在 `conf/iotdb-ainode.properti
nohup bash sbin\start-ainode.bat > myout.file 2>& 1 &
```
-### 检测 AINode 节点状态
+### 3.4 检测 AINode 节点状态
AINode 启动过程中会自动将新的 AINode 加入 IoTDB 集群。启动 AINode 后可以在 命令行中输入 SQL 来查询,集群中看到 AINode 节点,其运行状态为 Running(如下展示)表示加入成功。
@@ -317,7 +317,7 @@ IoTDB> show cluster
+------+----------+-------+---------------+------------+-------+-----------+
```
-### 停止 AINode
+### 3.5 停止 AINode
如果需要停止正在运行的 AINode 节点,则执行相应的关闭脚本。
@@ -369,7 +369,7 @@ IoTDB> show cluster
```
如果需要重新启动该节点,需重新执行启动脚本。
-### 移除 AINode
+### 3.6 移除 AINode
当需要把一个 AINode 节点移出集群时,可以执行移除脚本。移除和停止脚本的差别是:停止是在集群中保留 AINode 节点但停止 AINode 服务,移除则是把 AINode 节点从集群中移除出去。
@@ -451,9 +451,9 @@ IoTDB> show cluster
sbin\remove-ainode.bat -t /:
```
-## 常见问题
+## 4 常见问题
-### 启动AINode时出现找不到venv模块的报错
+### 4.1 启动AINode时出现找不到venv模块的报错
当使用默认方式启动 AINode 时,会在安装包目录下创建一个 python 虚拟环境并安装依赖,因此要求安装 venv 模块。通常来说 python3.8 及以上的版本会自带 venv,但对于一些系统自带的 python 环境可能并不满足这一要求。出现该报错时有两种解决方案(二选一):
@@ -469,7 +469,7 @@ apt-get install python3.8-venv
```
在运行启动脚本时通过 `-i` 指定已有的 python 解释器路径作为 AINode 的运行环境,这样就不再需要创建一个新的虚拟环境。
- ### python中的SSL模块没有被正确安装和配置,无法处理HTTPS资源
+ ### 4.2 python中的SSL模块没有被正确安装和配置,无法处理HTTPS资源
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
可以安装 OpenSSLS 后,再重新构建 python 来解决这个问题
> Currently Python versions 3.6 to 3.9 are compatible with OpenSSL 1.0.2, 1.1.0, and 1.1.1.
@@ -483,7 +483,7 @@ make
sudo make install
```
- ### pip版本较低
+ ### 4.3 pip版本较低
windows下出现类似“error:Microsoft Visual C++ 14.0 or greater is required...”的编译问题
@@ -495,7 +495,7 @@ sudo make install
```
- ### 安装编译python
+ ### 4.4 安装编译python
使用以下指定从官网下载安装包并解压:
```shell
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/AINode_Deployment_timecho.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/AINode_Deployment_timecho.md
index 91f91cbba..41b5db378 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/AINode_Deployment_timecho.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/AINode_Deployment_timecho.md
@@ -20,24 +20,24 @@
-->
# AINode 部署
-## AINode介绍
+## 1 AINode介绍
-### 能力介绍
+### 1.1 能力介绍
AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,该节点通过与 IoTDB 集群的 DataNode、ConfigNode 的交互,扩展了对时间序列进行机器学习分析的能力,支持从外部引入已有机器学习模型进行注册,并使用注册的模型在指定时序数据上通过简单 SQL 语句完成时序分析任务的过程,将模型的创建、管理及推理融合在数据库引擎中。目前已提供常见时序分析场景(例如预测与异常检测)的机器学习算法或自研模型。
-### 交付方式
+### 1.2 交付方式
是 IoTDB 集群外的额外套件,独立安装包,独立激活(如需试用或使用,请联系天谋科技商务或技术支持)。
-### 部署模式
+### 1.3 部署模式
-## 安装准备
+## 2 安装准备
-### 安装包获取
+### 2.1 装包获取
用户可以下载AINode的软件安装包,下载并解压后即完成AINode的安装。
@@ -52,7 +52,7 @@ AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,
| README_ZH.md | 文件 | markdown格式的中文版说明 |
| `README.md` | 文件 | 使用说明 |
-### 环境准备
+### 2.2 环境准备
- 建议操作环境: Ubuntu, CentOS, MacOS
- 运行环境
@@ -67,9 +67,9 @@ AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,
# 安装3.8.0版本的venv,创建虚拟环境,文件夹名为 `venv`
../Python-3.8.0/python -m venv `venv`
```
-## 安装部署及使用
+## 3 安装部署及使用
-### 安装 AINode
+### 3.1 安装 AINode
1. AINode 激活
@@ -171,7 +171,7 @@ AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,
```
> 回到系统默认环境:conda deactivate
-### 配置项修改
+### 3.2 配置项修改
AINode 支持修改一些必要的参数。可以在 `conf/iotdb-ainode.properties` 文件中找到下列参数并进行持久化的修改:
| **名称** | **描述** | **类型** | **默认值** | **改后生效方式** |
@@ -184,7 +184,7 @@ AINode 支持修改一些必要的参数。可以在 `conf/iotdb-ainode.properti
| ain_models_dir | AINode 存储模型文件的路径,相对路径的起始目录与操作系统相关,建议使用绝对路径 | String | data/AINode/models | 仅允许在第一次启动服务前修改 |
| ain_logs_dir | AINode 存储日志的路径,相对路径的起始目录与操作系统相关,建议使用绝对路径 | String | logs/AINode | 重启后生效 |
| ain_thrift_compression_enabled | AINode 是否启用 thrift 的压缩机制,0-不启动、1-启动 | Boolean | 0 | 重启后生效 |
-### 启动 AINode
+### 3.3 启动 AINode
在完成 Seed-ConfigNode 的部署后,可以通过添加 AINode 节点来支持模型的注册和推理功能。在配置项中指定 IoTDB 集群的信息后,可以执行相应的指令来启动 AINode,加入 IoTDB 集群。
@@ -336,7 +336,7 @@ AINode 支持修改一些必要的参数。可以在 `conf/iotdb-ainode.properti
nohup bash sbin\start-ainode.bat > myout.file 2>& 1 &
```
-### 检测 AINode 节点状态
+### 3.4 检测 AINode 节点状态
AINode 启动过程中会自动将新的 AINode 加入 IoTDB 集群。启动 AINode 后可以在 命令行中输入 SQL 来查询,集群中看到 AINode 节点,其运行状态为 Running(如下展示)表示加入成功。
@@ -351,7 +351,7 @@ IoTDB> show cluster
+------+----------+-------+---------------+------------+-------+-----------+
```
-### 停止 AINode
+### 3.5 停止 AINode
如果需要停止正在运行的 AINode 节点,则执行相应的关闭脚本。
@@ -403,7 +403,7 @@ IoTDB> show cluster
```
如果需要重新启动该节点,需重新执行启动脚本。
-### 移除 AINode
+### 3.6 移除 AINode
当需要把一个 AINode 节点移出集群时,可以执行移除脚本。移除和停止脚本的差别是:停止是在集群中保留 AINode 节点但停止 AINode 服务,移除则是把 AINode 节点从集群中移除出去。
@@ -485,9 +485,9 @@ IoTDB> show cluster
sbin\remove-ainode.bat -t /:
```
-## 常见问题
+## 4 常见问题
-### 启动AINode时出现找不到venv模块的报错
+### 4.1 启动AINode时出现找不到venv模块的报错
当使用默认方式启动 AINode 时,会在安装包目录下创建一个 python 虚拟环境并安装依赖,因此要求安装 venv 模块。通常来说 python3.8 及以上的版本会自带 venv,但对于一些系统自带的 python 环境可能并不满足这一要求。出现该报错时有两种解决方案(二选一):
@@ -503,7 +503,7 @@ apt-get install python3.8-venv
```
在运行启动脚本时通过 `-i` 指定已有的 python 解释器路径作为 AINode 的运行环境,这样就不再需要创建一个新的虚拟环境。
- ### python中的SSL模块没有被正确安装和配置,无法处理HTTPS资源
+ ### 4.2 python中的SSL模块没有被正确安装和配置,无法处理HTTPS资源
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
可以安装 OpenSSLS 后,再重新构建 python 来解决这个问题
> Currently Python versions 3.6 to 3.9 are compatible with OpenSSL 1.0.2, 1.1.0, and 1.1.1.
@@ -517,7 +517,7 @@ make
sudo make install
```
- ### pip版本较低
+ ### 4.3 pip版本较低
windows下出现类似“error:Microsoft Visual C++ 14.0 or greater is required...”的编译问题
@@ -529,7 +529,7 @@ sudo make install
```
- ### 安装编译python
+ ### 4.4 安装编译python
使用以下指定从官网下载安装包并解压:
```shell
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Cluster-Deployment_apache.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Cluster-Deployment_apache.md
index 6603bd7c8..fb129fdee 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Cluster-Deployment_apache.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Cluster-Deployment_apache.md
@@ -26,7 +26,7 @@
-## 注意事项
+## 1 注意事项
1. 安装前请确认系统已参照[系统配置](./Environment-Requirements.md)准备完成。
@@ -46,13 +46,13 @@
- 使用同一用户操作:确保在启动、停止等操作均保持使用同一用户,不要切换用户。
- 避免使用 sudo:尽量避免使用 sudo 命令,因为它会以 root 用户权限执行命令,可能会引起权限混淆或安全问题。
-## 准备步骤
+## 2 准备步骤
1. 准备IoTDB数据库安装包 :apache-iotdb-{version}-all-bin.zip(安装包获取见:[链接](../Deployment-and-Maintenance/IoTDB-Package_apache.md))
2. 按环境要求配置好操作系统环境(系统环境配置见:[链接](../Deployment-and-Maintenance/Environment-Requirements.md))
-## 安装步骤
+## 3 安装步骤
假设现在有3台linux服务器,IP地址和服务角色分配如下:
@@ -62,7 +62,7 @@
| 192.168.1.4 | iotdb-2 | ConfigNode、DataNode |
| 192.168.1.5 | iotdb-3 | ConfigNode、DataNode |
-### 设置主机名
+### 3.1 设置主机名
在3台机器上分别配置主机名,设置主机名需要在目标服务器上配置`/etc/hosts`,使用如下命令:
@@ -72,7 +72,7 @@ echo "192.168.1.4 iotdb-2" >> /etc/hosts
echo "192.168.1.5 iotdb-3" >> /etc/hosts
```
-### 参数配置
+### 3.2 参数配置
解压安装包并进入安装目录
@@ -133,7 +133,7 @@ cd apache-iotdb-{version}-all-bin
> ❗️注意:VSCode Remote等编辑器无自动保存配置功能,请确保修改的文件被持久化保存,否则配置项无法生效
-### 启动ConfigNode节点
+### 3.3 启动ConfigNode节点
先启动第一个iotdb-1的confignode, 保证种子confignode节点先启动,然后依次启动第2和第3个confignode节点
@@ -143,7 +143,7 @@ cd sbin
```
如果启动失败,请参考[常见问题](#常见问题)。
-### 启动DataNode 节点
+### 3.4 启动DataNode 节点
分别进入iotdb的`sbin`目录下,依次启动3个datanode节点:
@@ -152,7 +152,7 @@ cd sbin
./start-datanode.sh -d #“-d”参数将在后台进行启动
```
-### 验证部署
+### 3.5 验证部署
可直接执行`./sbin`目录下的Cli启动脚本:
@@ -170,9 +170,9 @@ cd sbin
> 出现`ACTIVATED(W)`为被动激活,表示此ConfigNode没有license文件(或没有签发时间戳最新的license文件),其激活依赖于集群中其它Activate状态的ConfigNode。此时建议检查license文件是否已放入license文件夹,没有请放入license文件,若已存在license文件,可能是此节点license文件与其他节点信息不一致导致,请联系天谋工作人员重新申请.
-## 节点维护步骤
+## 4 节点维护步骤
-### ConfigNode节点维护
+### 4.1 ConfigNode节点维护
ConfigNode节点维护分为ConfigNode添加和移除两种操作,有两个常见使用场景:
- 集群扩展:如集群中只有1个ConfigNode时,希望增加ConfigNode以提升ConfigNode节点高可用性,则可以添加2个ConfigNode,使得集群中有3个ConfigNode。
@@ -237,7 +237,7 @@ sbin/remove-confignode.bat [confignode_id]
```
-### DataNode节点维护
+### 4.2 DataNode节点维护
DataNode节点维护有两个常见场景:
@@ -305,7 +305,7 @@ sbin/remove-datanode.sh [datanode_id]
sbin/remove-datanode.bat [datanode_id]
```
-## 常见问题
+## 5 常见问题
1. Confignode节点启动失败
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Cluster-Deployment_timecho.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Cluster-Deployment_timecho.md
index 933476514..c6b022ff3 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Cluster-Deployment_timecho.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Cluster-Deployment_timecho.md
@@ -26,7 +26,7 @@
-## 注意事项
+## 1 注意事项
1. 安装前请确认系统已参照[系统配置](./Environment-Requirements.md)准备完成。
@@ -48,12 +48,12 @@
6. 推荐部署监控面板,可以对重要运行指标进行监控,随时掌握数据库运行状态,监控面板可以联系商务获取,部署监控面板步骤可以参考:[监控面板部署](./Monitoring-panel-deployment.md)
-## 准备步骤
+## 2 准备步骤
1. 准备IoTDB数据库安装包 :iotdb-enterprise-{version}-bin.zip(安装包获取见:[链接](../Deployment-and-Maintenance/IoTDB-Package_timecho.md))
2. 按环境要求配置好操作系统环境(系统环境配置见:[链接](../Deployment-and-Maintenance/Environment-Requirements.md))
-## 安装步骤
+## 3 安装步骤
假设现在有3台linux服务器,IP地址和服务角色分配如下:
@@ -63,7 +63,7 @@
| 192.168.1.4 | iotdb-2 | ConfigNode、DataNode |
| 192.168.1.5 | iotdb-3 | ConfigNode、DataNode |
-### 设置主机名
+### 3.1 设置主机名
在3台机器上分别配置主机名,设置主机名需要在目标服务器上配置`/etc/hosts`,使用如下命令:
@@ -73,7 +73,7 @@ echo "192.168.1.4 iotdb-2" >> /etc/hosts
echo "192.168.1.5 iotdb-3" >> /etc/hosts
```
-### 参数配置
+### 3.2 参数配置
解压安装包并进入安装目录
@@ -134,7 +134,7 @@ cd iotdb-enterprise-{version}-bin
> ❗️注意:VSCode Remote等编辑器无自动保存配置功能,请确保修改的文件被持久化保存,否则配置项无法生效
-### 启动ConfigNode节点
+### 3.3 启动ConfigNode节点
先启动第一个iotdb-1的confignode, 保证种子confignode节点先启动,然后依次启动第2和第3个confignode节点
@@ -144,7 +144,7 @@ cd sbin
```
如果启动失败,请参考[常见问题](#常见问题)。
-### 激活数据库
+### 3.4 激活数据库
#### **方式一:激活文件拷贝激活**
@@ -179,7 +179,7 @@ cd sbin
Import completed. Please start cluster and excute 'show cluster' to verify activation status
```
-### 启动DataNode 节点
+### 3.5 启动DataNode 节点
分别进入iotdb的`sbin`目录下,依次启动3个datanode节点:
@@ -188,7 +188,7 @@ cd sbin
./start-datanode.sh -d #-d参数将在后台进行启动
```
-### 验证部署
+### 3.6 验证部署
可直接执行`./sbin`目录下的Cli启动脚本:
@@ -208,9 +208,9 @@ cd sbin
> 出现`ACTIVATED(W)`为被动激活,表示此ConfigNode没有license文件(或没有签发时间戳最新的license文件),其激活依赖于集群中其它Activate状态的ConfigNode。此时建议检查license文件是否已放入license文件夹,没有请放入license文件,若已存在license文件,可能是此节点license文件与其他节点信息不一致导致,请联系天谋工作人员重新申请.
-## 节点维护步骤
+## 4 节点维护步骤
-### ConfigNode节点维护
+### 4.1 ConfigNode节点维护
ConfigNode节点维护分为ConfigNode添加和移除两种操作,有两个常见使用场景:
- 集群扩展:如集群中只有1个ConfigNode时,希望增加ConfigNode以提升ConfigNode节点高可用性,则可以添加2个ConfigNode,使得集群中有3个ConfigNode。
@@ -275,7 +275,7 @@ sbin/remove-confignode.bat [confignode_id]
```
-### DataNode节点维护
+### 4.2 DataNode节点维护
DataNode节点维护有两个常见场景:
@@ -343,7 +343,7 @@ sbin/remove-datanode.sh [datanode_id]
sbin/remove-datanode.bat [datanode_id]
```
-## 常见问题
+## 5 常见问题
1. 部署过程中多次提示激活失败
- 使用 `ls -al` 命令:使用 `ls -al` 命令检查安装包根目录的所有者信息是否为当前用户。
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Database-Resources.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Database-Resources.md
index 5b85630b4..2ecff8d69 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Database-Resources.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Database-Resources.md
@@ -19,7 +19,7 @@
-->
# 资源规划
-## CPU
+## 1 CPU
-## 内存
+## 2 内存
-## 存储(磁盘)
-### 存储空间
+## 3 存储(磁盘)
+### 3.1 存储空间
计算公式:测点数量 * 采样频率(Hz)* 每个数据点大小(Byte,不同数据类型不一样,见下表)
@@ -187,13 +187,13 @@
示例:1000设备,每个设备100 测点,共 100000 序列,INT32 类型。采样频率1Hz(每秒一次),存储1年,3副本。
- 完整计算公式:1000设备 * 100测点 * 12字节每数据点 * 86400秒每天 * 365天每年 * 3副本/10压缩比 / 1024 / 1024 / 1024 / 1024 =11T
- 简版计算公式:1000 * 100 * 12 * 86400 * 365 * 3 / 10 / 1024 / 1024 / 1024 / 1024 = 11T
-### 存储配置
+### 3.2 存储配置
1000w 点位以上或查询负载较大,推荐配置 SSD。
-## 网络(网卡)
+## 4 网络(网卡)
在写入吞吐不超过1000万点/秒时,需配置千兆网卡;当写入吞吐超过 1000万点/秒时,需配置万兆网卡。
| **写入吞吐(数据点/秒)** | **网卡速率** |
| ------------------- | ------------- |
| <1000万 | 1Gbps(千兆) |
| >=1000万 | 10Gbps(万兆) |
-## 其他说明
+## 5 其他说明
IoTDB 具有集群秒级扩容能力,扩容节点数据可不迁移,因此您无需担心按现有数据情况估算的集群能力有限,未来您可在需要扩容时为集群加入新的节点。
\ No newline at end of file
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Deployment-form.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Deployment-form.md
index 86e6b7a42..fa4b0dcee 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Deployment-form.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Deployment-form.md
@@ -19,11 +19,11 @@
-->
-## 部署形态
+# 部署形态
IoTDB 有两种运行模式:单机模式、集群模式。
-### 单机模式
+## 1 单机模式
IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D;
@@ -31,7 +31,7 @@ IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D;
- **适用场景**:资源有限或对高可用要求不高的场景,例如边缘端服务器。
- **部署方法**:[单机版部署](../Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md)
-### 集群模式
+## 2 集群模式
IoTDB 集群实例为 3 个ConfigNode 和不少于 3 个 DataNode,通常为 3 个 DataNode,即3C3D;当部分节点出现故障时,剩余节点仍然能对外提供服务,保证数据库服务的高可用性,且可随节点增加提升数据库性能。
@@ -39,7 +39,7 @@ IoTDB 集群实例为 3 个ConfigNode 和不少于 3 个 DataNode,通常为 3
- **适用场景**:需要提供高可用和可靠性的企业级应用场景。
- **部署方法**:[集群版部署](../Deployment-and-Maintenance/Cluster-Deployment_apache.md)
-### 特点总结
+## 3 特点总结
| 维度 | 单机模式 | 集群模式 |
| ------------ | ---------------------------- | ------------------------ |
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Docker-Deployment_apache.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Docker-Deployment_apache.md
index 12d14db9b..0d9e90aee 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Docker-Deployment_apache.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Docker-Deployment_apache.md
@@ -20,9 +20,9 @@
-->
# Docker部署
-## 环境准备
+## 1 环境准备
-### Docker安装
+### 1.1 Docker安装
```SQL
#以ubuntu为例,其他操作系统可以自行搜索安装方法
@@ -42,7 +42,7 @@ sudo systemctl enable docker
docker --version #显示版本信息,即安装成功
```
-### docker-compose安装
+### 1.2 docker-compose安装
```SQL
#安装命令
@@ -53,11 +53,11 @@ ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version #显示版本信息即安装成功
```
-## 单机版
+## 2 单机版
本节演示如何部署1C1D的docker单机版。
-### 拉取镜像文件
+### 2.1 拉取镜像文件
Apache IoTDB的Docker镜像已经上传至https://hub.docker.com/r/apache/iotdb。
@@ -75,13 +75,13 @@ docker images

-### 创建docker bridge网络
+### 2.2 创建docker bridge网络
```Bash
docker network create --driver=bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 iotdb
```
-### 编写docker-compose的yml文件
+### 2.3 编写docker-compose的yml文件
这里我们以把IoTDB安装目录和yml文件统一放在`/docker-iotdb`文件夹下为例:
@@ -130,7 +130,7 @@ networks:
external: true
```
-### 启动IoTDB
+### 2.4 启动IoTDB
使用下面的命令启动:
@@ -139,7 +139,7 @@ cd /docker-iotdb
docker-compose -f docker-compose-standalone.yml up -d #后台启动
```
-### 验证部署
+### 2.5 验证部署
- 查看日志,有如下字样,表示启动成功
@@ -172,7 +172,7 @@ docker-compose -f docker-compose-standalone.yml up -d #后台启动

-### 映射/conf目录(可选)
+### 2.6 映射/conf目录(可选)
后续如果想在物理机中直接修改配置文件,可以把容器中的/conf文件夹映射出来,分三步:
@@ -197,7 +197,7 @@ docker cp iotdb:/iotdb/conf /docker-iotdb/iotdb/conf
docker-compose -f docker-compose-standalone.yml up -d
```
-## 集群版
+## 3 集群版
本小节描述如何手动部署包括3个ConfigNode和3个DataNode的实例,即通常所说的3C3D集群。
@@ -209,7 +209,7 @@ docker-compose -f docker-compose-standalone.yml up -d
下面以host网络为例演示如何部署3C3D集群。
-### 设置主机名
+### 3.1 设置主机名
假设现在有3台linux服务器,IP地址和服务角色分配如下:
@@ -227,7 +227,7 @@ echo "192.168.1.4 iotdb-2" >> /etc/hosts
echo "192.168.1.5 iotdb-3" >> /etc/hosts
```
-### 拉取镜像文件
+### 3.2 拉取镜像文件
Apache IoTDB的Docker镜像已经上传至https://hub.docker.com/r/apache/iotdb。
@@ -245,7 +245,7 @@ docker images

-### 编写docker-compose的yml文件
+### 3.3 编写docker-compose的yml文件
这里我们以把IoTDB安装目录和yml文件统一放在`/docker-iotdb`文件夹下为例:
@@ -320,7 +320,7 @@ services:
network_mode: "host" #使用host网络
```
-### 首次启动confignode
+### 3.4 首次启动confignode
先在3台服务器上分别启动confignode, 注意启动顺序,先启动第1台iotdb-1,再启动iotdb-2和iotdb-3。
@@ -329,7 +329,7 @@ cd /docker-iotdb
docker-compose -f confignode.yml up -d #后台启动
```
-### 启动datanode
+### 3.5 启动datanode
在3台服务器上分别启动datanode
@@ -340,7 +340,7 @@ docker-compose -f datanode.yml up -d #后台启动

-### 验证部署
+### 3.6 验证部署
- 查看日志,有如下字样,表示datanode启动成功
@@ -373,7 +373,7 @@ docker-compose -f datanode.yml up -d #后台启动

-### 映射/conf目录(可选)
+### 3.7 映射/conf目录(可选)
后续如果想在物理机中直接修改配置文件,可以把容器中的/conf文件夹映射出来,分三步:
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Docker-Deployment_timecho.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Docker-Deployment_timecho.md
index 8d98b0f45..cfd708fdb 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Docker-Deployment_timecho.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Docker-Deployment_timecho.md
@@ -20,9 +20,9 @@
-->
# Docker部署
-## 环境准备
+## 1 环境准备
-### Docker安装
+### 1.1 Docker安装
```Bash
#以ubuntu为例,其他操作系统可以自行搜索安装方法
@@ -42,7 +42,7 @@ sudo systemctl enable docker
docker --version #显示版本信息,即安装成功
```
-### docker-compose安装
+### 1.2 docker-compose安装
```Bash
#安装命令
@@ -53,7 +53,7 @@ ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version #显示版本信息即安装成功
```
-### 安装dmidecode插件
+### 1.3 安装dmidecode插件
默认情况下,linux服务器应该都已安装,如果没有安装的话,可以使用下面的命令安装。
@@ -63,15 +63,15 @@ sudo apt-get install dmidecode
dmidecode 安装后,查找安装路径:`whereis dmidecode`,这里假设结果为`/usr/sbin/dmidecode`,记住该路径,后面的docker-compose的yml文件会用到。
-### 获取IoTDB的容器镜像
+### 1.4 获取IoTDB的容器镜像
关于IoTDB企业版的容器镜像您可联系商务或技术支持获取。
-## 单机版部署
+## 2 单机版部署
本节演示如何部署1C1D的docker单机版。
-### load 镜像文件
+### 2.1 load 镜像文件
比如这里获取的IoTDB的容器镜像文件名是:`iotdb-enterprise-1.3.2.3-standalone-docker.tar.gz`
@@ -89,13 +89,13 @@ docker images

-### 创建docker bridge网络
+### 2.2 创建docker bridge网络
```Bash
docker network create --driver=bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 iotdb
```
-### 编写docker-compose的yml文件
+### 2.3 编写docker-compose的yml文件
这里我们以把IoTDB安装目录和yml文件统一放在`/docker-iotdb` 文件夹下为例:
@@ -147,7 +147,7 @@ networks:
external: true
```
-### 首次启动
+### 2.4 首次启动
使用下面的命令启动:
@@ -160,7 +160,7 @@ docker-compose -f docker-compose-standalone.yml up

-### 申请激活
+### 2.5 申请激活
- 首次启动后,在物理机目录`/docker-iotdb/iotdb/activation`下会生成一个 `system_info`文件,将这个文件拷贝给天谋工作人员。
@@ -170,7 +170,7 @@ docker-compose -f docker-compose-standalone.yml up

-### 再次启动IoTDB
+### 2.6 再次启动IoTDB
```Bash
docker-compose -f docker-compose-standalone.yml up -d
@@ -178,7 +178,7 @@ docker-compose -f docker-compose-standalone.yml up -d

-### 验证部署
+### 2.7 验证部署
- 查看日志,有如下字样,表示启动成功
@@ -211,7 +211,7 @@ docker logs -f iotdb-datanode #查看日志命令

-### 映射/conf目录(可选)
+### 2.8 映射/conf目录(可选)
后续如果想在物理机中直接修改配置文件,可以把容器中的/conf文件夹映射出来,分三步:
@@ -239,7 +239,7 @@ docker cp iotdb:/iotdb/conf /docker-iotdb/iotdb/conf
docker-compose -f docker-compose-standalone.yml up -d
```
-## 集群版部署
+## 3 集群版部署
本小节描述如何手动部署包括3个ConfigNode和3个DataNode的实例,即通常所说的3C3D集群。
@@ -251,7 +251,7 @@ docker-compose -f docker-compose-standalone.yml up -d
下面以host网络为例演示如何部署3C3D集群。
-### 设置主机名
+### 3.1 设置主机名
假设现在有3台linux服务器,IP地址和服务角色分配如下:
@@ -269,7 +269,7 @@ echo "192.168.1.4 iotdb-2" >> /etc/hosts
echo "192.168.1.5 iotdb-3" >> /etc/hosts
```
-### load镜像文件
+### 3.2 load镜像文件
比如获取的IoTDB的容器镜像文件名是:`iotdb-enterprise-1.3.2.3-standalone-docker.tar.gz`
@@ -287,7 +287,7 @@ docker images

-### 编写docker-compose的yml文件
+### 3.3 编写docker-compose的yml文件
这里我们以把IoTDB安装目录和yml文件统一放在/docker-iotdb文件夹下为例:
@@ -366,7 +366,7 @@ services:
network_mode: "host" #使用host网络
```
-### 首次启动confignode
+### 3.4 首次启动confignode
先在3台服务器上分别启动confignode, 用来获取机器码,注意启动顺序,先启动第1台iotdb-1,再启动iotdb-2和iotdb-3。
@@ -375,7 +375,7 @@ cd /docker-iotdb
docker-compose -f confignode.yml up -d #后台启动
```
-### 申请激活
+### 3.5 申请激活
- 首次启动3个confignode后,在每个物理机目录`/docker-iotdb/iotdb/activation`下都会生成一个`system_info`文件,将3个服务器的`system_info`文件拷贝给天谋工作人员;
@@ -387,7 +387,7 @@ docker-compose -f confignode.yml up -d #后台启动
- license放入对应的activation文件夹后,confignode会自动激活,不用重启confignode
-### 启动datanode
+### 3.6 启动datanode
在3台服务器上分别启动datanode
@@ -398,7 +398,7 @@ docker-compose -f datanode.yml up -d #后台启动

-### 验证部署
+### 3.7 验证部署
- 查看日志,有如下字样,表示datanode启动成功
@@ -431,7 +431,7 @@ docker-compose -f datanode.yml up -d #后台启动

-### 映射/conf目录(可选)
+### 3.8 映射/conf目录(可选)
后续如果想在物理机中直接修改配置文件,可以把容器中的/conf文件夹映射出来,分三步:
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md
index 545e0ca75..0abc1148c 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md
@@ -20,7 +20,7 @@
-->
# 双活版部署
-## 什么是双活版?
+## 1 什么是双活版?
双活通常是指两个独立的单机(或集群),实时进行镜像同步,它们的配置完全独立,可以同时接收外界的写入,每一个独立的单机(或集群)都可以将写入到自己的数据同步到另一个单机(或集群)中,两个单机(或集群)的数据可达到最终一致。
@@ -30,7 +30,7 @@

-## 注意事项
+## 2 注意事项
1. 部署时推荐优先使用`hostname`进行IP配置,可避免后期修改主机ip导致数据库无法启动的问题。设置hostname需要在目标服务器上配置`/etc/hosts`,如本机ip是192.168.1.3,hostname是iotdb-1,则可以使用以下命令设置服务器的 hostname,并使用hostname配置IoTDB的`cn_internal_address`、`dn_internal_address`。
@@ -42,7 +42,7 @@
3. 推荐部署监控面板,可以对重要运行指标进行监控,随时掌握数据库运行状态,监控面板可以联系商务获取,部署监控面板步骤可以参考[文档](https://www.timecho.com/docs/zh/UserGuide/latest/Deployment-and-Maintenance/Monitoring-panel-deployment.html)
-## 安装步骤
+## 3 安装步骤
我们以两台单机A和B构建的双活版IoTDB为例,A和B的ip分别是192.168.1.3 和 192.168.1.4 ,这里用hostname来表示不同的主机,规划如下:
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Environment-Requirements.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Environment-Requirements.md
index 9b91e2952..5e1fe7edf 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Environment-Requirements.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Environment-Requirements.md
@@ -18,11 +18,11 @@
under the License.
-->
-# 系统配置
+# 环境配置
-## 磁盘阵列
+## 1 磁盘阵列
-### 配置建议
+### 1.1 配置建议
IoTDB对磁盘阵列配置没有严格运行要求,推荐使用多个磁盘阵列存储IoTDB的数据,以达到多个磁盘阵列并发写入的目标,配置可参考以下建议:
@@ -35,7 +35,7 @@ IoTDB对磁盘阵列配置没有严格运行要求,推荐使用多个磁盘阵
建议挂载多块硬盘(1-6块左右)
3. 在部署 IoTDB 时,建议避免使用 NAS 等网络存储设备。
-### 配置示例
+### 1.2 配置示例
- 示例1,4块3.5英寸硬盘
@@ -77,13 +77,13 @@ IoTDB对磁盘阵列配置没有严格运行要求,推荐使用多个磁盘阵
| 数据盘 | RAID5 | 7 | 允许坏1块 | 6 |
| 数据盘 | NoRaid | 1 | 损坏丢失 | 1 |
-## 操作系统
+## 2 操作系统
-### 版本要求
+### 2.1 版本要求
IoTDB支持Linux、Windows、MacOS等操作系统,同时企业版支持龙芯、飞腾、鲲鹏等国产 CPU,支持中标麒麟、银河麒麟、统信、凝思等国产服务器操作系统。
-### 硬盘分区
+### 2.2 硬盘分区
- 建议使用默认的标准分区方式,不推荐LVM扩展和硬盘加密。
- 系统盘只需满足操作系统的使用空间即可,不需要为IoTDB预留空间。
@@ -130,7 +130,7 @@ IoTDB支持Linux、Windows、MacOS等操作系统,同时企业版支持龙芯
-### 网络配置
+### 2.3 网络配置
1. 关闭防火墙
@@ -163,7 +163,7 @@ systemctl start sshd #启用22号端口
3. 保证服务器之间的网络相互连通
-### 其他配置
+### 2.4 其他配置
1. 将系统 swap 优先级降至最低
@@ -192,7 +192,7 @@ echo "* hard nofile 65535" >> /etc/security/limits.conf
ulimit -n
```
-## 软件依赖
+## 3 软件依赖
安装 Java 运行环境 ,Java 版本 >= 1.8,请确保已设置 jdk 环境变量。(V1.3.2.2 及之上版本推荐直接部署JDK17,老版本JDK部分场景下性能有问题,且datanode会出现stop不掉的问题)
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/IoTDB-Package_apache.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/IoTDB-Package_apache.md
index 9e3270818..e3f14a95d 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/IoTDB-Package_apache.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/IoTDB-Package_apache.md
@@ -19,11 +19,11 @@
-->
# 安装包获取
-## 安装包获取方式
+## 1 安装包获取方式
安装包可直接在Apache IoTDB官网获取:https://iotdb.apache.org/zh/Download/
-## 安装包结构
+## 2 安装包结构
解压后安装包(`apache-iotdb--all-bin.zip`),安装包解压后目录结构如下:
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/IoTDB-Package_timecho.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/IoTDB-Package_timecho.md
index 0fd789513..e2e8f1e90 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/IoTDB-Package_timecho.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/IoTDB-Package_timecho.md
@@ -20,11 +20,11 @@
-->
# 安装包获取
-## 企业版获取方式
+## 1 企业版获取方式
企业版安装包可通过产品试用申请,或直接联系与您对接的商务人员获取。
-## 安装包结构
+## 2 安装包结构
解压后安装包(iotdb-enterprise-{version}-bin.zip),安装包解压后目录结构如下:
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Monitoring-panel-deployment.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Monitoring-panel-deployment.md
index b0bc2dcd4..4060e1de4 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Monitoring-panel-deployment.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Monitoring-panel-deployment.md
@@ -24,14 +24,14 @@ IoTDB配套监控面板是IoTDB企业版配套工具之一。它旨在解决IoTD
监控面板工具的使用说明可参考文档 [使用说明](../Tools-System/Monitor-Tool.md) 章节。
-## 安装准备
+## 1 安装准备
1. 安装 IoTDB:需先安装IoTDB V1.0 版本及以上企业版,您可联系商务或技术支持获取
2. 获取 IoTDB 监控面板安装包:基于企业版 IoTDB 的数据库监控面板,您可联系商务或技术支持获取
-## 安装步骤
+## 2 安装步骤
-### 步骤一:IoTDB开启监控指标采集
+### 2.1 步骤一:IoTDB开启监控指标采集
1. 打开监控配置项。IoTDB中监控有关的配置项默认是关闭的,在部署监控面板前,您需要打开相关配置项(注意开启监控配置后需要重启服务)。
@@ -67,7 +67,7 @@ IoTDB配套监控面板是IoTDB企业版配套工具之一。它旨在解决IoTD

-### 步骤二:安装、配置Prometheus
+### 2.2 步骤二:安装、配置Prometheus
> 此处以prometheus安装在服务器192.168.1.3为例。
@@ -120,7 +120,7 @@ scrape_configs:

-### 步骤三:安装grafana并配置数据源
+### 2.3 步骤三:安装grafana并配置数据源
> 此处以Grafana安装在服务器192.168.1.3为例。
@@ -148,7 +148,7 @@ cd grafana-*

-### 步骤四:导入IoTDB Grafana看板
+### 2.4 步骤四:导入IoTDB Grafana看板
1. 进入Grafana,选择Dashboards:
@@ -186,9 +186,9 @@ cd grafana-*

-## 附录、监控指标详解
+## 3 附录、监控指标详解
-### 系统面板(System Dashboard)
+### 3.1 系统面板(System Dashboard)
该面板展示了当前系统CPU、内存、磁盘、网络资源的使用情况已经JVM的部分状况。
@@ -274,7 +274,7 @@ eno 指的是到公网的网卡,lo 是虚拟网卡。
- Packet Speed:网卡发送和接收数据包的速度,一次 RPC 请求可以对应一个或者多个数据包
- Connection Num:当前选定进程的 socket 连接数(IoTDB只有 TCP)
-### 整体性能面板(Performance Overview Dashboard)
+### 3.2 整体性能面板(Performance Overview Dashboard)
#### Cluster Overview
@@ -352,7 +352,7 @@ eno 指的是到公网的网卡,lo 是虚拟网卡。
- File Size: 节点管理文件大小情况
- Log Number Per Minute: 节点的每分钟不同类型日志情况
-### ConfigNode 面板(ConfigNode Dashboard)
+### 3.3 ConfigNode 面板(ConfigNode Dashboard)
该面板展示了集群中所有管理节点的表现情况,包括分区、节点信息、客户端连接情况统计等。
@@ -410,7 +410,7 @@ eno 指的是到公网的网卡,lo 是虚拟网卡。
- Remote / Local Write QPS: 节点 Ratis 的远程和本地写入的 QPS
- RatisConsensus Memory: 节点 Ratis 共识协议的内存使用
-### DataNode 面板(DataNode Dashboard)
+### 3.4 DataNode 面板(DataNode Dashboard)
该面板展示了集群中所有数据节点的监控情况,包含写入耗时、查询耗时、存储文件数等。
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md
index 37813097d..c238afda0 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md
@@ -20,7 +20,7 @@
-->
# 单机版部署
-## 注意事项
+## 1 注意事项
1. 安装前请确认系统已参照[系统配置](./Environment-Requirements.md)准备完成。
@@ -40,16 +40,16 @@
- 使用同一用户操作:确保在启动、停止等操作均保持使用同一用户,不要切换用户。
- 避免使用 sudo:尽量避免使用 sudo 命令,因为它会以 root 用户权限执行命令,可能会引起权限混淆或安全问题。
-## 安装步骤
+## 2 安装步骤
-### 解压安装包并进入安装目录
+### 2.1 解压安装包并进入安装目录
```shell
unzip apache-iotdb-{version}-all-bin.zip
cd apache-iotdb-{version}-all-bin
```
-### 参数配置
+### 2.2 参数配置
#### 环境脚本配置
@@ -103,7 +103,7 @@ cd apache-iotdb-{version}-all-bin
> ❗️注意:VSCode Remote等编辑器无自动保存配置功能,请确保修改的文件被持久化保存,否则配置项无法生效
-### 启动ConfigNode 节点
+### 2.3 启动ConfigNode 节点
进入iotdb的sbin目录下,启动confignode
@@ -112,7 +112,7 @@ cd apache-iotdb-{version}-all-bin
```
如果启动失败,请参考[常见问题](#常见问题)。
-### 启动DataNode 节点
+### 2.4 启动DataNode 节点
进入iotdb的sbin目录下,启动datanode:
@@ -121,7 +121,7 @@ cd sbin
./start-datanode.sh -d #-d参数将在后台进行启动
```
-### 验证部署
+### 2.5 验证部署
可直接执行 ./sbin 目录下的 Cli 启动脚本:
@@ -141,7 +141,7 @@ cd sbin
> 出现`ACTIVATED(W)`为被动激活,表示此ConfigNode没有license文件(或没有签发时间戳最新的license文件)。此时建议检查license文件是否已放入license文件夹,没有请放入license文件,若已存在license文件,可能是此节点license文件与其他节点信息不一致导致,请联系天谋工作人员重新申请.
-## 常见问题
+## 3 常见问题
1. Confignode节点启动失败
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md
index adba3593b..4a6e850d1 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md
@@ -22,7 +22,7 @@
本章将介绍如何启动IoTDB单机实例,IoTDB单机实例包括 1 个ConfigNode 和1个DataNode(即通常所说的1C1D)。
-## 注意事项
+## 1 注意事项
1. 安装前请确认系统已参照[系统配置](./Environment-Requirements.md)准备完成。
@@ -44,16 +44,16 @@
6. 推荐部署监控面板,可以对重要运行指标进行监控,随时掌握数据库运行状态,监控面板可以联系商务获取,部署监控面板步骤可以参考:[监控面板部署](./Monitoring-panel-deployment.md)。
-## 安装步骤
+## 2 安装步骤
-### 解压安装包并进入安装目录
+### 2.1 解压安装包并进入安装目录
```shell
unzip iotdb-enterprise-{version}-bin.zip
cd iotdb-enterprise-{version}-bin
```
-### 参数配置
+### 2.2 参数配置
#### 环境脚本配置
@@ -107,7 +107,7 @@ cd iotdb-enterprise-{version}-bin
> ❗️注意:VSCode Remote等编辑器无自动保存配置功能,请确保修改的文件被持久化保存,否则配置项无法生效
-### 启动 ConfigNode 节点
+### 2.3 启动 ConfigNode 节点
进入iotdb的sbin目录下,启动confignode
@@ -116,7 +116,7 @@ cd iotdb-enterprise-{version}-bin
```
如果启动失败,请参考[常见问题](#常见问题)。
-### 激活数据库
+### 2.4 激活数据库
#### 方式一:激活文件拷贝激活
@@ -150,7 +150,7 @@ License has been stored to sbin/../activation/license
Import completed. Please start cluster and excute 'show cluster' to verify activation status
```
-### 启动DataNode 节点
+### 2.5 启动DataNode 节点
进入iotdb的sbin目录下,启动datanode:
@@ -159,7 +159,7 @@ cd sbin
./start-datanode.sh -d #-d参数将在后台进行启动
```
-### 验证部署
+### 2.6 验证部署
可直接执行 ./sbin 目录下的 Cli 启动脚本:
@@ -180,7 +180,7 @@ cd sbin
> 出现`ACTIVATED(W)`为被动激活,表示此ConfigNode没有license文件(或没有签发时间戳最新的license文件)。此时建议检查license文件是否已放入license文件夹,没有请放入license文件,若已存在license文件,可能是此节点license文件与其他节点信息不一致导致,请联系天谋工作人员重新申请.
-## 常见问题
+## 3 常见问题
1. 部署过程中多次提示激活失败
- 使用 `ls -al` 命令:使用 `ls -al` 命令检查安装包根目录的所有者信息是否为当前用户。
diff --git a/src/zh/UserGuide/latest/Deployment-and-Maintenance/workbench-deployment_timecho.md b/src/zh/UserGuide/latest/Deployment-and-Maintenance/workbench-deployment_timecho.md
index 7d9eb8b4d..770f426b8 100644
--- a/src/zh/UserGuide/latest/Deployment-and-Maintenance/workbench-deployment_timecho.md
+++ b/src/zh/UserGuide/latest/Deployment-and-Maintenance/workbench-deployment_timecho.md
@@ -29,7 +29,7 @@
可视化控制台工具的使用说明可参考文档 [使用说明](../Tools-System/Workbench_timecho.md) 章节。
-## 安装准备
+## 1 安装准备
| 准备内容 | 名称 | 版本要求 | 官方链接 |
| :------: | :-----------------------: | :----------------------------------------------------------: | :----------------------------------------------------: |
@@ -39,9 +39,9 @@
| 数据库 | IoTDB | 需要>=V1.2.0企业版 | 您可联系商务或技术支持获取 |
| 控制台 | IoTDB-Workbench-``| - | 您可根据附录版本对照表进行选择后联系商务或技术支持获取 |
-## 安装步骤
+## 2 安装步骤
-### 步骤一:IoTDB 开启监控指标采集
+### 2.1 步骤一:IoTDB 开启监控指标采集
1. 打开监控配置项。IoTDB中监控有关的配置项默认是关闭的,在部署监控面板前,您需要打开相关配置项(注意开启监控配置后需要重启服务)。
@@ -110,7 +110,7 @@

-### 步骤二:安装、配置Prometheus监控
+### 2.2 步骤二:安装、配置Prometheus监控
1. 确保Prometheus安装完成(官方安装说明可参考:https://prometheus.io/docs/introduction/first_steps/)
2. 解压安装包,进入解压后的文件夹:
@@ -155,7 +155,7 @@
-### 步骤三:安装Workbench
+### 2.3 步骤三:安装Workbench
1. 进入iotdb-Workbench-``的config目录
@@ -191,7 +191,7 @@

-## 附录:IoTDB与控制台版本对照表
+## 4 附录:IoTDB与控制台版本对照表
| 控制台版本号 | 版本说明 | 可支持IoTDB版本 |
| :------------: | :------------------------------------------------------------: | :----------------: |
diff --git a/src/zh/UserGuide/latest/IoTDB-Introduction/IoTDB-Introduction_apache.md b/src/zh/UserGuide/latest/IoTDB-Introduction/IoTDB-Introduction_apache.md
index e5855ae05..661d2fc65 100644
--- a/src/zh/UserGuide/latest/IoTDB-Introduction/IoTDB-Introduction_apache.md
+++ b/src/zh/UserGuide/latest/IoTDB-Introduction/IoTDB-Introduction_apache.md
@@ -30,7 +30,7 @@ Apache IoTDB 是一款低成本、高性能的物联网原生时序数据库。
- 安装部署与使用文档:[快速上手](../QuickStart/QuickStart_apache.md)
-## 产品体系
+## 1 产品体系
IoTDB 体系由若干个组件构成,帮助用户高效地管理和分析物联网产生的海量时序数据。
@@ -44,13 +44,13 @@ IoTDB 体系由若干个组件构成,帮助用户高效地管理和分析物
2. **时序数据标准文件格式(Apache TsFile)**:该文件格式是一种专为时序数据设计的存储格式,可以高效地存储和查询海量时序数据。目前 IoTDB、AINode 等模块的底层存储文件均由 Apache TsFile 进行支撑。通过 TsFile,用户可以在采集、管理、应用&分析阶段统一使用相同的文件格式进行数据管理,极大简化了数据采集到分析的整个流程,提高时序数据管理的效率和便捷度。
3. **时序模型训推一体化引擎(IoTDB AINode)**:针对智能分析场景,IoTDB 提供 AINode 时序模型训推一体化引擎,它提供了一套完整的时序数据分析工具,底层为模型训练引擎,支持训练任务与数据管理,与包括机器学习、深度学习等。通过这些工具,用户可以对存储在 IoTDB 中的数据进行深入分析,挖掘出其中的价值。
-## TimechoDB 整体架构
+## 2 TimechoDB 整体架构
下图展示了一个常见的 IoTDB 3C3D(3 个 ConfigNode、3 个 DataNode)的集群部署模式:
-## 产品特性
+## 3 产品特性
Apache IoTDB 具备以下优势和特性:
@@ -70,7 +70,7 @@ Apache IoTDB 具备以下优势和特性:
- 丰富的生态环境对接:支持Hadoop、Spark等大数据生态系统组件对接,支持Grafana、Thingsboard、DataEase等设备管理和可视化工具
-## 商业版本
+## 4 商业版本
天谋科技在 Apache IoTDB 开源版本的基础上提供了原厂商业化产品 TimechoDB,为企业、商业客户提供企业级产品和服务,它可以解决企业组建物联网大数据平台管理时序数据时所遇到的应用场景复杂、数据体量大、采样频率高、数据乱序多、数据处理耗时长、分析需求多样、存储与运维成本高等多种问题。
diff --git a/src/zh/UserGuide/latest/IoTDB-Introduction/IoTDB-Introduction_timecho.md b/src/zh/UserGuide/latest/IoTDB-Introduction/IoTDB-Introduction_timecho.md
index 8bbd61f78..8ecf2b001 100644
--- a/src/zh/UserGuide/latest/IoTDB-Introduction/IoTDB-Introduction_timecho.md
+++ b/src/zh/UserGuide/latest/IoTDB-Introduction/IoTDB-Introduction_timecho.md
@@ -27,7 +27,7 @@ TimechoDB 是一款低成本、高性能的物联网原生时序数据库,是
- 下载、部署与使用:[快速上手](../QuickStart/QuickStart_timecho.md)
-## 产品体系
+## 1 产品体系
天谋产品体系由若干个组件构成,覆盖由【数据采集】到【数据管理】到【数据分析&应用】的全时序数据生命周期,做到“采-存-用”一体化时序数据解决方案,帮助用户高效地管理和分析物联网产生的海量时序数据。
@@ -43,13 +43,13 @@ TimechoDB 是一款低成本、高性能的物联网原生时序数据库,是
3. **时序模型训推一体化引擎(AINode)**:针对智能分析场景,TimechoDB 提供 AINode 时序模型训推一体化引擎,它提供了一套完整的时序数据分析工具,底层为模型训练引擎,支持训练任务与数据管理,与包括机器学习、深度学习等。通过这些工具,用户可以对存储在 TimechoDB 中的数据进行深入分析,挖掘出其中的价值。
4. **数据采集**:为了更加便捷的对接各类工业采集场景, 天谋科技提供数据采集接入服务,支持多种协议和格式,可以接入各种传感器、设备产生的数据,同时支持断点续传、网闸穿透等特性。更加适配工业领域采集过程中配置难、传输慢、网络弱的特点,让用户的数采变得更加简单、高效。
-## TimechoDB 整体架构
+## 2 TimechoDB 整体架构
下图展示了一个常见的 IoTDB 3C3D(3 个 ConfigNode、3 个 DataNode)的集群部署模式:
-## 产品特性
+## 3 产品特性
TimechoDB 具备以下优势和特性:
@@ -69,9 +69,9 @@ TimechoDB 具备以下优势和特性:
- 丰富的生态环境对接:支持Hadoop、Spark等大数据生态系统组件对接,支持Grafana、Thingsboard、DataEase等设备管理和可视化工具
-## 企业特性
+## 4 企业特性
-### 更高阶的产品功能
+### 4.1 更高阶的产品功能
TimechoDB 在开源版基础上提供了更多高阶产品功能,在内核层面针对工业生产场景进行原生升级和优化,如多级存储、云边协同、可视化工具、安全增强等功能,能够让用户无需过多关注底层逻辑,将精力聚焦在业务开发中,让工业生产更简单更高效,为企业带来更多的经济效益。如:
@@ -214,11 +214,11 @@ TimechoDB 在开源版基础上提供了更多高阶产品功能,在内核层
-### 更高效/稳定的产品性能
+### 4.2 更高效/稳定的产品性能
TimechoDB 在开源版的基础上优化了稳定性与性能,经过企业版技术支持,能够实现10倍以上性能提升,并具有故障及时恢复的性能优势。
-### 更用户友好的工具体系
+### 4.3 更用户友好的工具体系
TimechoDB 将为用户提供更简单、易用的工具体系,通过集群监控面板(IoTDB Grafana)、数据库控制台(IoTDB Workbench)、集群管理工具(IoTDB Deploy Tool,简称 IoTD)等产品帮助用户快速部署、管理、监控数据库集群,降低运维人员工作/学习成本,简化数据库运维工作,使运维过程更加方便、快捷。
@@ -259,13 +259,13 @@ TimechoDB 将为用户提供更简单、易用的工具体系,通过集群监
-### 更专业的企业技术服务
+### 4.4 更专业的企业技术服务
TimechoDB 客户提供强大的原厂服务,包括但不限于现场安装及培训、专家顾问咨询、现场紧急救助、软件升级、在线自助服务、远程支持、最新开发版使用指导等服务。同时,为了使 IoTDB 更契合工业生产场景,我们会根据企业实际数据结构和读写负载,进行建模方案推荐、读写性能调优、压缩比调优、数据库配置推荐及其他的技术支持。如遇到部分产品未覆盖的工业化定制场景,TimechoDB 将根据用户特点提供定制化开发工具。
相较于开源版本,每 2-3 个月一个发版周期,TimechoDB 提供周期更快的发版频率,同时针对客户现场紧急问题,提供天级别的专属修复,确保生产环境稳定。
-### 更兼容的国产化适配
+### 4.5 更兼容的国产化适配
TimechoDB 代码自研可控,同时兼容大部分主流信创产品(CPU、操作系统等),并完成与多个厂家的兼容认证,确保产品的合规性和安全性。
\ No newline at end of file
diff --git a/src/zh/UserGuide/latest/IoTDB-Introduction/Release-history_timecho.md b/src/zh/UserGuide/latest/IoTDB-Introduction/Release-history_timecho.md
index cff39be78..a07bcc8b4 100644
--- a/src/zh/UserGuide/latest/IoTDB-Introduction/Release-history_timecho.md
+++ b/src/zh/UserGuide/latest/IoTDB-Introduction/Release-history_timecho.md
@@ -20,7 +20,7 @@
-->
# 发版历史
-## TimechoDB(数据库内核)
+## 1 TimechoDB(数据库内核)
### V1.3.4.1
> 发版时间:2025.01.08
>
@@ -202,7 +202,7 @@ V1.0.0.1主要修复分区计算及查询执行时的相关问题,历史快照
- 流处理模块:支持流处理框架
- 流处理模块:支持集群间数据同步功能
-## Workbench(控制台工具)
+## 2 Workbench(控制台工具)
| **控制台版本号** | **版本说明** | **可支持IoTDB版本** |
| ---------------- | ------------------------------------------------------------ | ------------------- |
diff --git a/src/zh/UserGuide/latest/IoTDB-Introduction/Scenario.md b/src/zh/UserGuide/latest/IoTDB-Introduction/Scenario.md
index 5a7798089..16ee26f3f 100644
--- a/src/zh/UserGuide/latest/IoTDB-Introduction/Scenario.md
+++ b/src/zh/UserGuide/latest/IoTDB-Introduction/Scenario.md
@@ -21,65 +21,65 @@
# 应用场景
-## 应用1——能源电力
+## 1 应用1——能源电力
-### 背景:
+### 1.1 背景:
通过对电力生产、传输、存储和消费过程中的海量时序数据进行采集、存储、分析以及对电力系统的实时监控、精准预测和智能调度,企业可以有效提升能源利用效率,降低运营成本,确保能源生产的安全性和可持续性,保障电网的安全稳定运行。
-### 架构
+### 1.2 架构
IoTDB 凭借集群高可用、低流量数据同步、跨网闸支持和优异的性能为企业提供国产化自主可控的时序数据管理解决方案,支撑企业应对大规模时序数据管理挑战,推动传统能源和可再生能源的高效管理与整合。

-## 应用2——航空航天
+## 2 应用2——航空航天
-### 背景
+### 2.1 背景
近年来,随着科技的不断进步,航空航天领域正进一步加快数字化与智能化建设。先进的数据采集和处理技术逐渐成为提升飞行安全、优化系统性能的重要手段。通过对飞机、火箭、卫星等设备在设计、制造、试飞、运行等全流程中产生的海量时序数据进行高效管理,企业能实现对飞行任务中关键系统的精准监测与分析,通过遥测数据实时回传、试飞数据快速导入,实现航空信息的监测和设计改进,确保飞行任务的安全可靠执行。
-### 架构
+### 2.2 架构
IoTDB 凭借其国产自研的高效低流量数据同步、离线数据迁移、丰富的部署选择和低资源占用等特点,为行业的数据管理和业务扩展提供了数据基础,为航空航天领域的技术创新和持续发展提供有力支撑。

-## 应用3——交通运输
+## 3 应用3——交通运输
-### 背景
+### 3.1 背景
交通运输行业的快速发展带来了对多样化交通数据管理的需求,尤其在铁路、地铁等关键枢纽中,数据的实时性、可靠性和精准性至关重要。通过对列车、地铁、船舶、汽车等设备的运行、状态、位置信息等多维数据进行实时采集、存储与分析,企业可实现智能调度、故障预警、线路优化和高效运维。企业不仅可以提升交通系统的运转效率,还降低了运营管理成本。
-### 架构
+### 3.2 架构
IoTDB 凭借其高效的时序数据管理和低延迟查询能力,有效应对交通运输行业中的数据爆发式增长,实现多源异构数据高效流转和管理,为铁路、船舶等构建起稳定可靠的智能交通系统管理基础,为行业向智能化和自动化方向发展提供了重要支撑。

-## 应用4——钢铁冶炼
+## 4 应用4——钢铁冶炼
-### 背景
+### 4.1 背景
作为传统制造业的典型代表,钢铁冶炼行业近年来逐步推进数字化转型和智能化改造,以应对日益增长的市场竞争和环保、安全等要求。特别是工业物联网平台的部署,已成为钢铁冶炼企业在生产环节中提升产能、优化产品质量、降低能耗的关键手段。通过工业物联网平台,企业能够对冶炼设备和生产线进行实时数据采集、存储和分析,从而实现对核心生产环节的智能监测、精准控制与高效管理。
-### 架构
+### 4.2 架构
IoTDB 通过其强大的数据存储与计算能力,为钢铁冶炼场景提供跨平台支持、低资源占用的灵活部署方案,丰富的外部接口也使其可以与其他系统高效集成,助力钢铁冶炼行业构建智慧工厂,进一步支撑传统工业加快形成新质生产力。

-## 应用5——物联网
+## 5 应用5——物联网
-### 背景
+### 5.1 背景
物联网(IoT)正在从根本上改变各个行业的运行方式,通过连接海量设备和深度数据分析实现智能化管理。随着物联网设备接入规模的不断扩大,对数据管理系统的处理、存储和分析能力提出了更高要求。企业需要高效管理来自边缘设备和云端的数据流,保证系统的实时性、稳定性和可扩展性,以支持设备状态监测、故障诊断、预测性维护等核心业务应用。
-### 架构
+### 5.2 架构
作为物联网原生的高性能时序数据库,IoTDB 支持从边缘设备到云端的全链路数据同步和存储分析,具备高并发处理能力,能够满足大规模设备接入的需求。IoTDB为企业提供灵活的数据解决方案,助力发掘设备运行数据中的深层次价值,提升运营效率,推动企业物联网业务的全面发展。
diff --git a/src/zh/UserGuide/latest/QuickStart/QuickStart_apache.md b/src/zh/UserGuide/latest/QuickStart/QuickStart_apache.md
index 8fa2a80d6..b8aceb03e 100644
--- a/src/zh/UserGuide/latest/QuickStart/QuickStart_apache.md
+++ b/src/zh/UserGuide/latest/QuickStart/QuickStart_apache.md
@@ -23,7 +23,7 @@
本篇文档将帮助您了解快速入门 IoTDB 的方法。
-## 如何安装部署?
+## 1 如何安装部署?
本篇文档将帮助您快速安装部署 IoTDB,您可以通过以下文档的链接快速定位到所需要查看的内容:
@@ -41,7 +41,7 @@
> ❗️注意:目前我们仍然推荐直接在物理机/虚拟机上安装部署,如需要 docker 部署,可参考:[Docker 部署](../Deployment-and-Maintenance/Docker-Deployment_apache.md)
-## 如何使用?
+## 2 如何使用?
1. 数据库建模设计:数据库建模是创建数据库系统的重要步骤,它涉及到设计数据的结构和关系,以确保数据的组织方式能够满足特定应用的需求,下面的文档将会帮助您快速了解 IoTDB 的建模设计:
@@ -65,7 +65,7 @@
5. 应用编程接口: IoTDB 提供了多种应用编程接口(API),以便于开发者在应用程序中与 IoTDB 进行交互,目前支持 [Java](../API/Programming-Java-Native-API.md)、[Python](../API/Programming-Python-Native-API.md)、[C++](../API/Programming-Cpp-Native-API.md)等,更多编程接口可参见官网【应用编程接口】其他章节
-## 还有哪些便捷的周边工具?
+## 3 还有哪些便捷的周边工具?
IoTDB 除了自身拥有丰富的功能外,其周边的工具体系包含的种类十分齐全。本篇文档将帮助您快速使用周边工具体系:
@@ -76,7 +76,7 @@ IoTDB 除了自身拥有丰富的功能外,其周边的工具体系包含的
- 数据导出脚本:针对于不同场景,IoTDB 为用户提供多种批量导出数据的操作方式,具体使用介绍请查看:[数据导出](../Tools-System/Data-Export-Tool.md)
-## 想了解更多技术细节?
+## 4 想了解更多技术细节?
如果您想了解 IoTDB 的更多技术内幕,可以移步至下面的文档:
@@ -86,6 +86,6 @@ IoTDB 除了自身拥有丰富的功能外,其周边的工具体系包含的
- 数据分区和负载均衡:IoTDB 基于时序数据特性,精心设计了数据分区策略和负载均衡算法,提升了集群的可用性和性能,想了解更多请查看 [数据分区和负载均衡](../Technical-Insider/Cluster-data-partitioning.md)
-## 使用过程中遇到问题?
+## 5 使用过程中遇到问题?
如果您在安装或使用过程中遇到困难,可以移步至 [常见问题](../FAQ/Frequently-asked-questions.md) 中进行查看
\ No newline at end of file
diff --git a/src/zh/UserGuide/latest/QuickStart/QuickStart_timecho.md b/src/zh/UserGuide/latest/QuickStart/QuickStart_timecho.md
index 683be6b91..7ab8e85a6 100644
--- a/src/zh/UserGuide/latest/QuickStart/QuickStart_timecho.md
+++ b/src/zh/UserGuide/latest/QuickStart/QuickStart_timecho.md
@@ -23,7 +23,7 @@
本篇文档将帮助您了解快速入门 IoTDB 的方法。
-## 如何安装部署?
+## 1 如何安装部署?
本篇文档将帮助您快速安装部署 IoTDB,您可以通过以下文档的链接快速定位到所需要查看的内容:
@@ -49,7 +49,7 @@
- 可视化控制台:是 IoTDB 的可视化界面,支持通过界面交互的形式提供元数据管理、数据查询、数据可视化等功能的操作,帮助用户简单、高效的使用数据库,安装步骤可查看 [可视化控制台部署](../Deployment-and-Maintenance/workbench-deployment_timecho.md)
-## 如何使用?
+## 2 如何使用?
1. 数据库建模设计:数据库建模是创建数据库系统的重要步骤,它涉及到设计数据的结构和关系,以确保数据的组织方式能够满足特定应用的需求,下面的文档将会帮助您快速了解 IoTDB 的建模设计:
@@ -77,7 +77,7 @@
5. 应用编程接口: IoTDB 提供了多种应用编程接口(API),以便于开发者在应用程序中与 IoTDB 进行交互,目前支持[ Java 原生接口](../API/Programming-Java-Native-API.md)、[Python 原生接口](../API/Programming-Python-Native-API.md)、[C++原生接口](../API/Programming-Cpp-Native-API.md)、[Go 原生接口](../API/Programming-Go-Native-API.md)等,更多编程接口可参见官网【应用编程接口】其他章节
-## 还有哪些便捷的周边工具?
+## 3 还有哪些便捷的周边工具?
IoTDB 除了自身拥有丰富的功能外,其周边的工具体系包含的种类十分齐全。本篇文档将帮助您快速使用周边工具体系:
@@ -93,7 +93,7 @@ IoTDB 除了自身拥有丰富的功能外,其周边的工具体系包含的
- 数据导出脚本:针对于不同场景,IoTDB 为用户提供多种批量导出数据的操作方式,具体使用介绍请查看:[数据导出](../Tools-System/Data-Export-Tool.md)
-## 想了解更多技术细节?
+## 4 想了解更多技术细节?
如果您想了解 IoTDB 的更多技术内幕,可以移步至下面的文档:
@@ -104,6 +104,6 @@ IoTDB 除了自身拥有丰富的功能外,其周边的工具体系包含的
- 数据分区和负载均衡:IoTDB 基于时序数据特性,精心设计了数据分区策略和负载均衡算法,提升了集群的可用性和性能,想了解更多请查看 [数据分区和负载均衡](../Technical-Insider/Cluster-data-partitioning.md)
-## 使用过程中遇到问题?
+## 5 使用过程中遇到问题?
如果您在安装或使用过程中遇到困难,可以移步至 [常见问题](../FAQ/Frequently-asked-questions.md) 中进行查看
\ No newline at end of file
diff --git a/src/zh/UserGuide/latest/User-Manual/AINode_apache.md b/src/zh/UserGuide/latest/User-Manual/AINode_apache.md
index 6ff0a959f..8f4b1274d 100644
--- a/src/zh/UserGuide/latest/User-Manual/AINode_apache.md
+++ b/src/zh/UserGuide/latest/User-Manual/AINode_apache.md
@@ -33,7 +33,7 @@ AINode 是 IoTDB 在ConfigNode、DataNode后提供的第三种内生节点,该
- **DataNode**:负责接收并解析用户的 SQL请求;负责存储时间序列数据;负责数据的预处理计算。
- **AINode**:负责模型文件的导入创建以及模型推理。
-## 优势特点
+## 1 优势特点
与单独构建机器学习服务相比,具有以下优势:
@@ -49,7 +49,7 @@ AINode 是 IoTDB 在ConfigNode、DataNode后提供的第三种内生节点,该
- **时间序列标注(Time Series Annotation)**:为每个数据点或特定时间段添加额外的信息或标记,例如事件发生、异常点、趋势变化等,以便更好地理解和分析数据。
-## 基本概念
+## 2 基本概念
- **模型(Model)**:机器学习模型,以时序数据作为输入,输出分析任务的结果或决策。模型是AINode 的基本管理单元,支持模型的增(注册)、删、查、用(推理)。
- **创建(Create)**: 将外部设计或训练好的模型文件或算法加载到MLNode中,由IoTDB统一管理与使用。
@@ -60,15 +60,15 @@ AINode 是 IoTDB 在ConfigNode、DataNode后提供的第三种内生节点,该
:::
-## 安装部署
+## 3 安装部署
AINode 的部署可参考文档 [部署指导](../Deployment-and-Maintenance/AINode_Deployment_apache.md#ainode-部署) 章节。
-## 使用指导
+## 4 使用指导
AINode 对时序数据相关的深度学习模型提供了模型创建及删除的流程,内置模型无需创建及删除,可直接使用,并且在完成推理后创建的内置模型实例将自动销毁。
-### 注册模型
+### 4.1 注册模型
通过指定模型输入输出的向量维度,可以注册训练好的深度学习模型,从而用于模型推理。
@@ -154,7 +154,7 @@ SQL执行后会异步进行注册的流程,可以通过模型展示查看模
模型注册完成后,就可以通过使用正常查询的方式调用具体函数,进行模型推理。
-### 查看模型
+### 4.2 查看模型
注册成功的模型可以通过show models指令查询模型的具体信息。其SQL定义如下:
@@ -202,7 +202,7 @@ IoTDB> show models
我们前面已经注册了对应的模型,可以通过对应的指定查看模型状态,active表明模型注册成功,可用于推理。
-### 删除模型
+### 4.3 删除模型
对于注册成功的模型,用户可以通过SQL进行删除。该操作除了删除configNode上的元信息外,还会删除所有AINode下的相关模型文件。其SQL如下:
@@ -212,7 +212,7 @@ drop model
需要指定已经成功注册的模型model_name来删除对应的模型。由于模型删除涉及多个节点上的数据删除,操作不会立即完成,此时模型的状态为DROPPING,该状态的模型不能用于模型推理。
-### 使用内置模型推理
+### 4.4 使用内置模型推理
SQL语法如下:
@@ -281,7 +281,7 @@ IoTDB> call inference(_Stray, "select s0 from root.eg.airline", k=2)
Total line number = 144
```
-### 使用深度学习模型推理
+### 4.5 使用深度学习模型推理
SQL语法如下:
@@ -441,7 +441,7 @@ Total line number = 4
其中结果集中每行的标签对应每24行数据为一组,输入该异常检测模型后的输出。
-## 权限管理
+## 5 权限管理
使用AINode相关的功能时,可以使用IoTDB本身的鉴权去做一个权限管理,用户只有在具备 USE_MODEL 权限时,才可以使用模型管理的相关功能。当使用推理功能时,用户需要有访问输入模型的SQL对应的源序列的权限。
@@ -450,9 +450,9 @@ Total line number = 4
| USE_MODEL | create model / show models / drop model | √ | √ | x |
| READ_DATA | call inference | √ | √ | √ |
-## 实际案例
+## 6 实际案例
-### 电力负载预测
+### 6.1 电力负载预测
在部分工业场景下,会存在预测电力负载的需求,预测结果可用于优化电力供应、节约能源和资源、支持规划和扩展以及增强电力系统的可靠性。
@@ -523,7 +523,7 @@ Total line number = 48
可以看到,我们使用了过去96个小时(4天)的六个负载信息和对应时间油温的关系,基于之前学习到的序列间相互关系对未来48个小时(2天)的油温这一数据的可能变化进行了建模,可以看到可视化后预测曲线与实际结果在趋势上保持了较高程度的一致性。
-### 功率预测
+### 6.2 功率预测
变电站需要对电流、电压、功率等数据进行电力监控,用于检测潜在的电网问题、识别电力系统中的故障、有效管理电网负载以及分析电力系统的性能和趋势等。
@@ -588,7 +588,7 @@ Total line number = 48
可以看到,我们使用了过去10分钟的电压的数据,基于之前学习到的序列间相互关系对未来5分钟的C相电压这一数据的可能变化进行了建模,可以看到可视化后预测曲线与实际结果在趋势上保持了一定的同步性。
-### 异常检测
+### 6.3 异常检测
在民航交通运输业,存在着对乘机旅客数量进行异常检测的需求。异常检测的结果可用于指导调整航班的调度,以使得企业获得更大效益。
diff --git a/src/zh/UserGuide/latest/User-Manual/AINode_timecho.md b/src/zh/UserGuide/latest/User-Manual/AINode_timecho.md
index 594236294..3f4aa77e0 100644
--- a/src/zh/UserGuide/latest/User-Manual/AINode_timecho.md
+++ b/src/zh/UserGuide/latest/User-Manual/AINode_timecho.md
@@ -33,7 +33,7 @@ AINode 是 IoTDB 在ConfigNode、DataNode后提供的第三种内生节点,该
- **DataNode**:负责接收并解析用户的 SQL请求;负责存储时间序列数据;负责数据的预处理计算。
- **AINode**:负责模型文件的导入创建以及模型推理。
-## 优势特点
+## 1 优势特点
与单独构建机器学习服务相比,具有以下优势:
@@ -49,7 +49,7 @@ AINode 是 IoTDB 在ConfigNode、DataNode后提供的第三种内生节点,该
- **时间序列标注(Time Series Annotation)**:为每个数据点或特定时间段添加额外的信息或标记,例如事件发生、异常点、趋势变化等,以便更好地理解和分析数据。
-## 基本概念
+## 2 基本概念
- **模型(Model)**:机器学习模型,以时序数据作为输入,输出分析任务的结果或决策。模型是AINode 的基本管理单元,支持模型的增(注册)、删、查、用(推理)。
- **创建(Create)**: 将外部设计或训练好的模型文件或算法加载到MLNode中,由IoTDB统一管理与使用。
@@ -60,15 +60,15 @@ AINode 是 IoTDB 在ConfigNode、DataNode后提供的第三种内生节点,该
:::
-## 安装部署
+## 3 安装部署
AINode 的部署可参考文档 [部署指导](../Deployment-and-Maintenance/AINode_Deployment_timecho.md#AINode-部署) 章节。
-## 使用指导
+## 4 使用指导
AINode 对时序数据相关的深度学习模型提供了模型创建及删除的流程,内置模型无需创建及删除,可直接使用,并且在完成推理后创建的内置模型实例将自动销毁。
-### 注册模型
+### 4.1 注册模型
通过指定模型输入输出的向量维度,可以注册训练好的深度学习模型,从而用于模型推理。
@@ -154,7 +154,7 @@ SQL执行后会异步进行注册的流程,可以通过模型展示查看模
模型注册完成后,就可以通过使用正常查询的方式调用具体函数,进行模型推理。
-### 查看模型
+### 4.2 查看模型
注册成功的模型可以通过show models指令查询模型的具体信息。其SQL定义如下:
@@ -202,7 +202,7 @@ IoTDB> show models
我们前面已经注册了对应的模型,可以通过对应的指定查看模型状态,active表明模型注册成功,可用于推理。
-### 删除模型
+### 4.3 删除模型
对于注册成功的模型,用户可以通过SQL进行删除。该操作除了删除configNode上的元信息外,还会删除所有AINode下的相关模型文件。其SQL如下:
@@ -212,7 +212,7 @@ drop model
需要指定已经成功注册的模型model_name来删除对应的模型。由于模型删除涉及多个节点上的数据删除,操作不会立即完成,此时模型的状态为DROPPING,该状态的模型不能用于模型推理。
-### 使用内置模型推理
+### 4.4 使用内置模型推理
SQL语法如下:
@@ -281,7 +281,7 @@ IoTDB> call inference(_Stray, "select s0 from root.eg.airline", k=2)
Total line number = 144
```
-### 使用深度学习模型推理
+### 4.5 使用深度学习模型推理
SQL语法如下:
@@ -441,7 +441,7 @@ Total line number = 4
其中结果集中每行的标签对应每24行数据为一组,输入该异常检测模型后的输出。
-## 权限管理
+## 5 权限管理
使用AINode相关的功能时,可以使用IoTDB本身的鉴权去做一个权限管理,用户只有在具备 USE_MODEL 权限时,才可以使用模型管理的相关功能。当使用推理功能时,用户需要有访问输入模型的SQL对应的源序列的权限。
@@ -450,9 +450,9 @@ Total line number = 4
| USE_MODEL | create model / show models / drop model | √ | √ | x |
| READ_DATA | call inference | √ | √ | √ |
-## 实际案例
+## 6 实际案例
-### 电力负载预测
+### 6.1 电力负载预测
在部分工业场景下,会存在预测电力负载的需求,预测结果可用于优化电力供应、节约能源和资源、支持规划和扩展以及增强电力系统的可靠性。
@@ -523,7 +523,7 @@ Total line number = 48
可以看到,我们使用了过去96个小时(4天)的六个负载信息和对应时间油温的关系,基于之前学习到的序列间相互关系对未来48个小时(2天)的油温这一数据的可能变化进行了建模,可以看到可视化后预测曲线与实际结果在趋势上保持了较高程度的一致性。
-### 功率预测
+### 6.2 功率预测
变电站需要对电流、电压、功率等数据进行电力监控,用于检测潜在的电网问题、识别电力系统中的故障、有效管理电网负载以及分析电力系统的性能和趋势等。
@@ -588,7 +588,7 @@ Total line number = 48
可以看到,我们使用了过去10分钟的电压的数据,基于之前学习到的序列间相互关系对未来5分钟的C相电压这一数据的可能变化进行了建模,可以看到可视化后预测曲线与实际结果在趋势上保持了一定的同步性。
-### 异常检测
+### 6.3 异常检测
在民航交通运输业,存在着对乘机旅客数量进行异常检测的需求。异常检测的结果可用于指导调整航班的调度,以使得企业获得更大效益。
diff --git a/src/zh/UserGuide/latest/User-Manual/Audit-Log_timecho.md b/src/zh/UserGuide/latest/User-Manual/Audit-Log_timecho.md
index b4609b543..2aacd8444 100644
--- a/src/zh/UserGuide/latest/User-Manual/Audit-Log_timecho.md
+++ b/src/zh/UserGuide/latest/User-Manual/Audit-Log_timecho.md
@@ -22,7 +22,7 @@
# 审计日志
-## 功能背景
+## 1 功能背景
审计日志是数据库的记录凭证,通过审计日志功能可以查询到用户在数据库中增删改查等各项操作,以保证信息安全。关于IoTDB的审计日志功能可以实现以下场景的需求:
@@ -31,7 +31,7 @@
-### 场景说明
+### 1.1 场景说明
@@ -56,7 +56,7 @@
-## 功能定义
+## 2 功能定义
@@ -72,7 +72,7 @@
2. 数据和元数据的查询操作
3. 元数据类的新增、修改、删除操作
-### 配置项
+### 2.1 配置项
在iotdb-system.properties中修改以下几项配置
diff --git a/src/zh/UserGuide/latest/User-Manual/Authority-Management.md b/src/zh/UserGuide/latest/User-Manual/Authority-Management.md
index 12a207857..7abacc09f 100644
--- a/src/zh/UserGuide/latest/User-Manual/Authority-Management.md
+++ b/src/zh/UserGuide/latest/User-Manual/Authority-Management.md
@@ -24,51 +24,51 @@
IoTDB 为用户提供了权限管理操作,为用户提供对数据与集群系统的权限管理功能,保障数据与系统安全。
本篇介绍IoTDB 中权限模块的基本概念、用户定义、权限管理、鉴权逻辑与功能用例。在 JAVA 编程环境中,您可以使用 [JDBC API](../API/Programming-JDBC.md) 单条或批量执行权限管理类语句。
-## 基本概念
+## 1 基本概念
-### 用户
+### 1.1 用户
用户即数据库的合法使用者。一个用户与一个唯一的用户名相对应,并且拥有密码作为身份验证的手段。一个人在使用数据库之前,必须先提供合法的(即存于数据库中的)用户名与密码,作为用户成功登录。
-### 权限
+### 1.2 权限
数据库提供多种操作,但并非所有的用户都能执行所有操作。如果一个用户可以执行某项操作,则称该用户有执行该操作的权限。权限通常需要一个路径来限定其生效范围,可以使用[路径模式](../Background-knowledge/Data-Model-and-Terminology.md)灵活管理权限。
-### 角色
+### 1.3 角色
角色是若干权限的集合,并且有一个唯一的角色名作为标识符。角色通常和一个现实身份相对应(例如交通调度员),而一个现实身份可能对应着多个用户。这些具有相同现实身份的用户往往具有相同的一些权限,角色就是为了能对这样的权限进行统一的管理的抽象。
-### 默认用户与角色
+### 1.4 默认用户与角色
安装初始化后的 IoTDB 中有一个默认用户:root,默认密码为 root。该用户为管理员用户,固定拥有所有权限,无法被赋予、撤销权限,也无法被删除,数据库内仅有一个管理员用户。
一个新创建的用户或角色不具备任何权限。
-## 用户定义
+## 2 用户定义
拥有 MANAGE_USER、MANAGE_ROLE 的用户或者管理员可以创建用户或者角色,需要满足以下约束:
-### 用户名限制
+### 2.1 用户名限制
4~32个字符,支持使用英文大小写字母、数字、特殊字符(`!@#$%^&*()_+-=`)
用户无法创建和管理员用户同名的用户。
-### 密码限制
+### 2.2 密码限制
4~32个字符,可使用大写小写字母、数字、特殊字符(`!@#$%^&*()_+-=`),密码默认采用 MD5 进行加密。
-### 角色名限制
+### 2.3 角色名限制
4~32个字符,支持使用英文大小写字母、数字、特殊字符(`!@#$%^&*()_+-=`)
用户无法创建和管理员用户同名的角色。
-## 权限管理
+## 3 权限管理
IoTDB 主要有两类权限:序列权限、全局权限。
-### 序列权限
+### 3.1 序列权限
序列权限约束了用户访问数据的范围与方式,支持对绝对路径与前缀匹配路径授权,可对timeseries 粒度生效。
@@ -81,7 +81,7 @@ IoTDB 主要有两类权限:序列权限、全局权限。
| READ_SCHEMA | 允许获取授权路径下元数据树的详细信息:
包括:路径下的数据库、子路径、子节点、设备、序列、模版、视图等。 |
| WRITE_SCHEMA | 允许获取授权路径下元数据树的详细信息。
允许在授权路径下对序列、模版、视图等进行创建、删除、修改操作。
在创建或修改 view 的时候,会检查 view 路径的 WRITE_SCHEMA 权限、数据源的 READ_SCHEMA 权限。
在对 view 进行查询、插入时,会检查 view 路径的 READ_DATA 权限、WRITE_DATA 权限。
允许在授权路径下设置、取消、查看TTL。
允许在授权路径下挂载或者接触挂载模板。 |
-### 全局权限
+### 3.2 全局权限
全局权限约束了用户使用的数据库功能、限制了用户执行改变系统状态与任务状态的命令,用户获得全局授权后,可对数据库进行管理。
@@ -108,7 +108,7 @@ IoTDB 主要有两类权限:序列权限、全局权限。
4. 解除模板,需要拥有挂载模板路径的 WRITE_SCHEMA 权限。
5. 查询使用了某个元数据模板的路径,需要有路径的 READ_SCHEMA 权限,否则将返回为空。
-### 权限授予与取消
+### 3.3 权限授予与取消
在 IoTDB 中,用户可以由三种途径获得权限:
@@ -128,7 +128,7 @@ IoTDB 主要有两类权限:序列权限、全局权限。
-## 鉴权
+## 4 鉴权
用户权限主要由三部分组成:权限生效范围(路径), 权限类型, with grant option 标记:
@@ -151,7 +151,7 @@ userTest1 :
-## 功能语法与示例
+## 5 功能语法与示例
IoTDB 提供了组合权限,方便用户授权:
@@ -165,7 +165,7 @@ IoTDB 提供了组合权限,方便用户授权:
下面将通过一系列具体的用例展示权限语句的用法,非管理员执行下列语句需要提前获取权限,所需的权限标记在操作描述后。
-### 用户与角色相关
+### 5.1 用户与角色相关
- 创建用户(需 MANAGE_USER 权限)
@@ -270,7 +270,7 @@ ALTER USER SET PASSWORD ;
eg: ALTER USER tempuser SET PASSWORD 'newpwd';
```
-### 授权与取消授权
+### 5.2 授权与取消授权
用户使用授权语句对赋予其他用户权限,语法如下:
@@ -331,11 +331,11 @@ eg: REVOKE ALL ON ROOT.** FROM USER user1;
root.t1*.t2.t3
```
-## 示例
+## 6 示例
根据本文中描述的 [样例数据](https://github.com/thulab/iotdb/files/4438687/OtherMaterial-Sample.Data.txt) 内容,IoTDB 的样例数据可能同时属于 ln, sgcc 等不同发电集团,不同的发电集团不希望其他发电集团获取自己的数据库数据,因此我们需要将不同的数据在集团层进行权限隔离。
-### 创建用户
+### 6.1 创建用户
使用 `CREATE USER ` 创建用户。例如,我们可以使用具有所有权限的root用户为 ln 和 sgcc 集团创建两个用户角色,名为 ln_write_user, sgcc_write_user,密码均为 write_pwd。建议使用反引号(`)包裹用户名。SQL 语句为:
@@ -368,7 +368,7 @@ Total line number = 3
It costs 0.012s
```
-### 赋予用户权限
+### 6.2 赋予用户权限
此时,虽然两个用户已经创建,但是他们不具有任何权限,因此他们并不能对数据库进行操作,例如我们使用 ln_write_user 用户对数据库中的数据进行写入,SQL 语句为:
@@ -407,7 +407,7 @@ IoTDB> INSERT INTO root.ln.wf01.wt01(timestamp, status) values(1509465600000, tr
Msg: The statement is executed successfully.
```
-### 撤销用户权限
+### 6.3 撤销用户权限
授予用户权限后,我们可以使用 `REVOKE ON FROM USER `来撤销已经授予用户的权限。例如,用root用户撤销ln_write_user和sgcc_write_user的权限:
``` SQL
@@ -430,7 +430,7 @@ IoTDB> INSERT INTO root.ln.wf01.wt01(timestamp, status) values(1509465600000, tr
Msg: 803: No permissions for this operation, please add privilege WRITE_DATA on [root.ln.wf01.wt01.status]
```
-## 其他说明
+## 7 其他说明
角色是权限的集合,而权限和角色都是用户的一种属性。即一个角色可以拥有若干权限。一个用户可以拥有若干角色与权限(称为用户自身权限)。
@@ -440,7 +440,7 @@ Msg: 803: No permissions for this operation, please add privilege WRITE_DATA on
同时,对角色的修改会立即反映到所有拥有该角色的用户上,例如对角色增加某种权限将立即使所有拥有该角色的用户都拥有对应权限,删除某种权限也将使对应用户失去该权限(除非用户本身有该权限)。
-## 升级说明
+## 8 升级说明
在 1.3 版本前,权限类型较多,在这一版实现中,权限类型做了精简,并且添加了对权限路径的约束。
diff --git a/src/zh/UserGuide/latest/User-Manual/Data-Recovery.md b/src/zh/UserGuide/latest/User-Manual/Data-Recovery.md
index c02f04f3b..95902c846 100644
--- a/src/zh/UserGuide/latest/User-Manual/Data-Recovery.md
+++ b/src/zh/UserGuide/latest/User-Manual/Data-Recovery.md
@@ -19,11 +19,11 @@
-->
-## 数据修复
+# 数据修复
用于修复数据中存在的问题,如顺序空间内的数据未按时间递增顺序排列。
-### START REPAIR DATA
+## 1 START REPAIR DATA
启动一个数据修复任务,扫描创建修复任务的时间之前产生的 tsfile 文件并修复有乱序错误的文件。
@@ -33,7 +33,7 @@ IoTDB> START REPAIR DATA ON LOCAL
IoTDB> START REPAIR DATA ON CLUSTER
```
-### STOP REPAIR DATA
+## 2 STOP REPAIR DATA
停止一个进行中的修复任务。如果需要再次恢复一个已停止的数据修复任务的进度,可以重新执行 `START REPAIR DATA`.
diff --git a/src/zh/UserGuide/latest/User-Manual/Data-Sync_apache.md b/src/zh/UserGuide/latest/User-Manual/Data-Sync_apache.md
index 21a7eb8e4..8acb21db6 100644
--- a/src/zh/UserGuide/latest/User-Manual/Data-Sync_apache.md
+++ b/src/zh/UserGuide/latest/User-Manual/Data-Sync_apache.md
@@ -22,9 +22,9 @@
# 数据同步
数据同步是工业物联网的典型需求,通过数据同步机制,可实现 IoTDB 之间的数据共享,搭建完整的数据链路来满足内网外网数据互通、端边云同步、数据迁移、数据备份等需求。
-## 功能概述
+## 1 功能概述
-### 数据同步
+### 1.1 数据同步
一个数据同步任务包含 3 个阶段:
@@ -76,7 +76,7 @@
-### 功能限制及说明
+### 1.2 功能限制及说明
元数据(schema)、权限(auth)同步功能存在如下限制:
@@ -88,7 +88,7 @@
- 在进行数据同步任务时,请避免执行任何删除操作,防止两端状态不一致。
-## 使用说明
+## 2 使用说明
数据同步任务有三种状态:RUNNING、STOPPED 和 DROPPED。任务状态转换如下图所示:
@@ -98,7 +98,7 @@
提供以下 SQL 语句对同步任务进行状态管理。
-### 创建任务
+### 2.1 创建任务
使用 `CREATE PIPE` 语句来创建一条数据同步任务,下列属性中`PipeId`和`sink`必填,`source`和`processor`为选填项,输入 SQL 时注意 `SOURCE`与 `SINK` 插件顺序不能替换。
@@ -122,7 +122,7 @@ WITH SINK (
**IF NOT EXISTS 语义**:用于创建操作中,确保当指定 Pipe 不存在时,执行创建命令,防止因尝试创建已存在的 Pipe 而导致报错。
-### 开始任务
+### 2.2 开始任务
开始处理数据:
@@ -130,7 +130,7 @@ WITH SINK (
START PIPE
```
-### 停止任务
+### 2.3 停止任务
停止处理数据:
@@ -138,7 +138,7 @@ START PIPE
STOP PIPE
```
-### 删除任务
+### 2.4 删除任务
删除指定任务:
@@ -150,7 +150,7 @@ DROP PIPE [IF EXISTS]
删除任务不需要先停止同步任务。
-### 查看任务
+### 2.5 查看任务
查看全部任务:
@@ -187,7 +187,7 @@ SHOW PIPE
- **RemainingEventCount(统计存在延迟)**:剩余 event 数,当前数据同步任务中的所有 event 总数,包括数据和元数据同步的 event,以及系统和用户自定义的 event。
- **EstimatedRemainingSeconds(统计存在延迟)**:剩余时间,基于当前 event 个数和 pipe 处速率,预估完成传输的剩余时间。
-### 同步插件
+### 2.6 同步插件
为了使得整体架构更加灵活以匹配不同的同步场景需求,我们支持在同步任务框架中进行插件组装。系统为您预置了一些常用插件可直接使用,同时您也可以自定义 processor 插件 和 Sink 插件,并加载至 IoTDB 系统进行使用。查看系统中的插件(含自定义与内置插件)可以用以下语句:
@@ -257,9 +257,9 @@ IoTDB> SHOW PIPEPLUGINS
导入自定义插件可参考[流处理框架](./Streaming_apache.md#自定义流处理插件管理)章节。
-## 使用示例
+## 3 使用示例
-### 全量数据同步
+### 3.1 全量数据同步
本例子用来演示将一个 IoTDB 的所有数据同步至另一个 IoTDB,数据链路如下图所示:
@@ -275,7 +275,7 @@ with sink (
)
```
-### 部分数据同步
+### 3.2 部分数据同步
本例子用来演示同步某个历史时间范围( 2023 年 8 月 23 日 8 点到 2023 年 10 月 23 日 8 点)的数据至另一个 IoTDB,数据链路如下图所示:
@@ -299,7 +299,7 @@ with SINK (
)
```
-### 边云数据传输
+### 3.3 边云数据传输
本例子用来演示多个 IoTDB 之间边云传输数据的场景,数据由 B 、C、D 集群分别都同步至 A 集群,数据链路如下图所示:
@@ -349,7 +349,7 @@ with sink (
)
```
-### 级联数据传输
+### 3.4 级联数据传输
本例子用来演示多个 IoTDB 之间级联传输数据的场景,数据由 A 集群同步至 B 集群,再同步至 C 集群,数据链路如下图所示:
@@ -380,7 +380,7 @@ with sink (
)
```
-### 压缩同步
+### 3.5 压缩同步
IoTDB 支持在同步过程中指定数据压缩方式。可通过配置 `compressor` 参数,实现数据的实时压缩和传输。`compressor`目前支持 snappy / gzip / lz4 / zstd / lzma2 5 种可选算法,且可以选择多种压缩算法组合,按配置的顺序进行压缩。`rate-limit-bytes-per-second`(V1.3.3 及以后版本支持)每秒最大允许传输的byte数,计算压缩后的byte,若小于0则不限制。
@@ -394,7 +394,7 @@ with sink (
)
```
-### 加密同步
+### 3.6 加密同步
IoTDB 支持在同步过程中使用 SSL 加密,从而在不同的 IoTDB 实例之间安全地传输数据。通过配置 SSL 相关的参数,如证书地址和密码(`ssl.trust-store-path`)、(`ssl.trust-store-pwd`)可以确保数据在同步过程中被 SSL 加密所保护。
@@ -410,7 +410,7 @@ with sink (
)
```
-## 参考:注意事项
+## 4 参考:注意事项
可通过修改 IoTDB 配置文件(`iotdb-system.properties`)以调整数据同步的参数,如同步数据存储目录等。完整配置如下::
@@ -474,9 +474,9 @@ pipe_sink_max_client_number=16
pipe_all_sinks_rate_limit_bytes_per_second=-1
```
-## 参考:参数说明
+## 5 参考:参数说明
-### source 参数(V1.3.3)
+### 5.1 source 参数(V1.3.3)
| 参数 | 描述 | value 取值范围 | 是否必填 | 默认取值 |
| ------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -------- | -------------- |
@@ -500,7 +500,7 @@ pipe_all_sinks_rate_limit_bytes_per_second=-1
> - **batch**:该模式下,任务将对数据进行批量(按底层数据文件)处理、发送,其特点是低时效、高吞吐
-### sink 参数
+### 5.2 sink 参数
> 在 1.3.3 及以上的版本中,只包含sink的情况下,不再需要额外增加with sink 前缀
diff --git a/src/zh/UserGuide/latest/User-Manual/Data-Sync_timecho.md b/src/zh/UserGuide/latest/User-Manual/Data-Sync_timecho.md
index 7d9b059a5..beda99c85 100644
--- a/src/zh/UserGuide/latest/User-Manual/Data-Sync_timecho.md
+++ b/src/zh/UserGuide/latest/User-Manual/Data-Sync_timecho.md
@@ -22,9 +22,9 @@
# 数据同步
数据同步是工业物联网的典型需求,通过数据同步机制,可实现 IoTDB 之间的数据共享,搭建完整的数据链路来满足内网外网数据互通、端边云同步、数据迁移、数据备份等需求。
-## 功能概述
+## 1 功能概述
-### 数据同步
+### 1.1 数据同步
一个数据同步任务包含 3 个阶段:
@@ -76,7 +76,7 @@
-### 功能限制及说明
+### 1.2 功能限制及说明
元数据(schema)、权限(auth)同步功能存在如下限制:
@@ -90,7 +90,7 @@
- 在进行数据同步任务时,请避免执行任何删除操作,防止两端状态不一致。
-## 使用说明
+## 2 使用说明
数据同步任务有三种状态:RUNNING、STOPPED 和 DROPPED。任务状态转换如下图所示:
@@ -100,7 +100,7 @@
提供以下 SQL 语句对同步任务进行状态管理。
-### 创建任务
+### 2.1 创建任务
使用 `CREATE PIPE` 语句来创建一条数据同步任务,下列属性中`PipeId`和`sink`必填,`source`和`processor`为选填项,输入 SQL 时注意 `SOURCE`与 `SINK` 插件顺序不能替换。
@@ -124,7 +124,7 @@ WITH SINK (
**IF NOT EXISTS 语义**:用于创建操作中,确保当指定 Pipe 不存在时,执行创建命令,防止因尝试创建已存在的 Pipe 而导致报错。
-### 开始任务
+### 2.2 开始任务
开始处理数据:
@@ -132,7 +132,7 @@ WITH SINK (
START PIPE
```
-### 停止任务
+### 2.3 停止任务
停止处理数据:
@@ -140,7 +140,7 @@ START PIPE
STOP PIPE
```
-### 删除任务
+### 2.4 删除任务
删除指定任务:
@@ -152,7 +152,7 @@ DROP PIPE [IF EXISTS]
删除任务不需要先停止同步任务。
-### 查看任务
+### 2.5 查看任务
查看全部任务:
@@ -188,7 +188,7 @@ SHOW PIPE
- **RemainingEventCount(统计存在延迟)**:剩余 event 数,当前数据同步任务中的所有 event 总数,包括数据和元数据同步的 event,以及系统和用户自定义的 event。
- **EstimatedRemainingSeconds(统计存在延迟)**:剩余时间,基于当前 event 个数和 pipe 处速率,预估完成传输的剩余时间。
-### 同步插件
+### 2.6 同步插件
为了使得整体架构更加灵活以匹配不同的同步场景需求,我们支持在同步任务框架中进行插件组装。系统为您预置了一些常用插件可直接使用,同时您也可以自定义 processor 插件 和 Sink 插件,并加载至 IoTDB 系统进行使用。查看系统中的插件(含自定义与内置插件)可以用以下语句:
@@ -265,9 +265,9 @@ IoTDB> SHOW PIPEPLUGINS
导入自定义插件可参考[流处理框架](./Streaming_timecho.md#自定义流处理插件管理)章节。
-## 使用示例
+## 3 使用示例
-### 全量数据同步
+### 3.1 全量数据同步
本例子用来演示将一个 IoTDB 的所有数据同步至另一个 IoTDB,数据链路如下图所示:
@@ -283,7 +283,7 @@ with sink (
)
```
-### 部分数据同步
+### 3.2 部分数据同步
本例子用来演示同步某个历史时间范围( 2023 年 8 月 23 日 8 点到 2023 年 10 月 23 日 8 点)的数据至另一个 IoTDB,数据链路如下图所示:
@@ -307,7 +307,7 @@ with SINK (
)
```
-### 双向数据传输
+### 3.3 双向数据传输
本例子用来演示两个 IoTDB 之间互为双活的场景,数据链路如下图所示:
@@ -344,7 +344,7 @@ with sink (
'node-urls' = '127.0.0.1:6667', -- 目标端 IoTDB 中 DataNode 节点的数据服务端口的 url
)
```
-### 边云数据传输
+### 3.4 边云数据传输
本例子用来演示多个 IoTDB 之间边云传输数据的场景,数据由 B 、C、D 集群分别都同步至 A 集群,数据链路如下图所示:
@@ -394,7 +394,7 @@ with sink (
)
```
-### 级联数据传输
+### 3.5 级联数据传输
本例子用来演示多个 IoTDB 之间级联传输数据的场景,数据由 A 集群同步至 B 集群,再同步至 C 集群,数据链路如下图所示:
@@ -425,7 +425,7 @@ with sink (
)
```
-### 跨网闸数据传输
+### 3.6 跨网闸数据传输
本例子用来演示将一个 IoTDB 的数据,经过单向网闸,同步至另一个 IoTDB 的场景,数据链路如下图所示:
@@ -452,7 +452,7 @@ with sink (
| 未标记正反向 | 迪普科技ISG5000 | 无限制 | 无限制 |
| 未标记正反向 | 熙羚安全隔离与信息交换系统XL—GAP | 无限制 | 无限制 |
-### 压缩同步
+### 3.7 压缩同步
IoTDB 支持在同步过程中指定数据压缩方式。可通过配置 `compressor` 参数,实现数据的实时压缩和传输。`compressor`目前支持 snappy / gzip / lz4 / zstd / lzma2 5 种可选算法,且可以选择多种压缩算法组合,按配置的顺序进行压缩。`rate-limit-bytes-per-second`(V1.3.3 及以后版本支持)每秒最大允许传输的byte数,计算压缩后的byte,若小于0则不限制。
@@ -467,7 +467,7 @@ with sink (
)
```
-### 加密同步
+### 3.8 加密同步
IoTDB 支持在同步过程中使用 SSL 加密,从而在不同的 IoTDB 实例之间安全地传输数据。通过配置 SSL 相关的参数,如证书地址和密码(`ssl.trust-store-path`)、(`ssl.trust-store-pwd`)可以确保数据在同步过程中被 SSL 加密所保护。
@@ -483,7 +483,7 @@ with sink (
)
```
-## 参考:注意事项
+## 4 参考:注意事项
可通过修改 IoTDB 配置文件(`iotdb-system.properties`)以调整数据同步的参数,如同步数据存储目录等。完整配置如下::
@@ -558,9 +558,9 @@ pipe_air_gap_receiver_port=9780
pipe_all_sinks_rate_limit_bytes_per_second=-1
```
-## 参考:参数说明
+## 5 参考:参数说明
-### source 参数(V1.3.3)
+### 5.1 source 参数(V1.3.3)
| 参数 | 描述 | value 取值范围 | 是否必填 | 默认取值 |
| ------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -------- | -------------- |
@@ -585,7 +585,7 @@ pipe_all_sinks_rate_limit_bytes_per_second=-1
> - **batch**:该模式下,任务将对数据进行批量(按底层数据文件)处理、发送,其特点是低时效、高吞吐
-## sink **参数**
+### 5.2 sink **参数**
> 在 1.3.3 及以上的版本中,只包含sink的情况下,不再需要额外增加with sink 前缀
diff --git a/src/zh/UserGuide/latest/User-Manual/Data-subscription.md b/src/zh/UserGuide/latest/User-Manual/Data-subscription.md
index cb46617a5..e77b9b74e 100644
--- a/src/zh/UserGuide/latest/User-Manual/Data-subscription.md
+++ b/src/zh/UserGuide/latest/User-Manual/Data-subscription.md
@@ -1,6 +1,6 @@
# 数据订阅
-## 1. 功能介绍
+## 1 功能介绍
IoTDB 数据订阅模块(又称 IoTDB 订阅客户端)是IoTDB V1.3.3 版本后支持的功能,它为用户提供了一种区别于数据查询的流式数据消费方式。它参考了 Kafka 等消息队列产品的基本概念和逻辑,**提供数据订阅和消费接口**,但并不是为了完全替代这些消费队列的产品,更多的是在简单流式获取数据的场景为用户提供更加便捷的数据订阅服务。
@@ -9,7 +9,7 @@ IoTDB 数据订阅模块(又称 IoTDB 订阅客户端)是IoTDB V1.3.3 版本
1. **持续获取最新数据**:使用订阅的方式,比定时查询更实时、应用编程更简单、系统负担更小;
2. **简化数据推送至第三方系统**:无需在 IoTDB 内部开发不同系统的数据推送组件,可以在第三方系统内实现数据的流式获取,更方便将数据发送至 Flink、Kafka、DataX、Camel、MySQL、PG 等系统。
-## 2. 主要概念
+## 2 主要概念
IoTDB 订阅客户端包含 3 个核心概念:Topic、Consumer、Consumer Group,具体关系如下图
@@ -29,7 +29,7 @@ IoTDB 订阅客户端包含 3 个核心概念:Topic、Consumer、Consumer Grou
- 一个 topic 不需要被一个 consumer group 中的所有 consumer 订阅
- 当同一个 Consumer Group 中不同的 Consumers 订阅了相同的 Topic 时,该 Topic 下的每条数据只会被组内的一个 Consumer 处理,确保数据不会被重复处理
-## 3. SQL 语句
+## 3 SQL 语句
### 3.1 Topic 管理
@@ -125,11 +125,11 @@ SHOW SUBSCRIPTIONS ON
- ConsumerGroupName:用户代码中指定的消费者组 ID
- SubscribedConsumers:该消费者组中订阅了该主题的所有客户端 ID
-## 4. API 接口
+## 4 API 接口
除 SQL 语句外,IoTDB 还支持通过 Java 原生接口使用数据订阅功能。详细语法参见页面:Java 原生接口([链接](../API/Programming-Java-Native-API.md))。
-## 5. 常见问题
+## 5 常见问题
### 5.1 IoTDB 数据订阅与 Kafka 的区别是什么?
diff --git a/src/zh/UserGuide/latest/User-Manual/Database-Programming.md b/src/zh/UserGuide/latest/User-Manual/Database-Programming.md
index 6cec2fea9..4c994ee39 100644
--- a/src/zh/UserGuide/latest/User-Manual/Database-Programming.md
+++ b/src/zh/UserGuide/latest/User-Manual/Database-Programming.md
@@ -21,12 +21,12 @@
# 连续查询
-## 简介
+## 1 简介
连续查询(Continuous queries, aka CQ) 是对实时数据周期性地自动执行的查询,并将查询结果写入指定的时间序列中。
用户可以通过连续查询实现滑动窗口流式计算,如计算某个序列每小时平均温度,并写入一个新序列中。用户可以自定义 `RESAMPLE` 子句去创建不同的滑动窗口,可以实现对于乱序数据一定程度的容忍。
-## 语法
+## 2 语法
```sql
CREATE (CONTINUOUS QUERY | CQ)
@@ -54,7 +54,7 @@ END
> 2. GROUP BY TIME CLAUSE在连续查询中的语法稍有不同,它不能包含原来的第一个参数,即 [start_time, end_time),IoTDB会自动填充这个缺失的参数。如果指定,IoTDB将会抛出异常。
> 3. 如果连续查询中既没有GROUP BY TIME子句,也没有指定EVERY子句,IoTDB将会抛出异常。
-### 连续查询语法中参数含义的描述
+### 2.1 连续查询语法中参数含义的描述
- `` 为连续查询指定一个全局唯一的标识。
- `` 指定了连续查询周期性执行的间隔。现在支持的时间单位有:ns, us, ms, s, m, h, d, w, 并且它的值不能小于用户在`iotdb-system.properties`配置文件中指定的`continuous_query_min_every_interval`。这是一个可选参数,默认等于group by子句中的`group_by_interval`。
@@ -97,7 +97,7 @@ END
- `DISCARD`意味着如果前一个时间窗口还未执行完,我们会直接丢弃下一个窗口的执行时间。如果使用`DISCARD`策略,可能会有部分时间窗口得不到执行。但是一旦前一个查询执行完后,它将会使用最新的时间窗口,所以它的执行结果总能赶上最新的时间窗口范围,当然是以部分时间窗口得不到执行为代价。
-## 连续查询的用例
+## 3 连续查询的用例
下面是用例数据,这是一个实时的数据流,我们假设数据都按时到达。
@@ -117,7 +117,7 @@ END
+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+
````
-### 配置连续查询执行的周期性间隔
+### 3.1 配置连续查询执行的周期性间隔
在`RESAMPLE`子句中使用`EVERY`参数指定连续查询的执行间隔,如果没有指定,默认等于`group_by_interval`。
@@ -175,7 +175,7 @@ At **2021-05-11T22:19:00.000+08:00**, `cq1` executes a query within the time ran
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
````
-### 配置连续查询的时间窗口大小
+### 3.2 配置连续查询的时间窗口大小
使用`RANGE`子句中的`start_time_offset`参数指定连续查询每次执行的时间窗口的开始时间偏移,如果没有指定,默认值等于`EVERY`参数。
@@ -250,7 +250,7 @@ At **2021-05-11T22:19:00.000+08:00**, `cq2` executes a query within the time ran
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
````
-### 同时配置连续查询执行的周期性间隔和时间窗口大小
+### 3.3 同时配置连续查询执行的周期性间隔和时间窗口大小
使用`RESAMPLE`子句中的`EVERY`参数和`RANGE`参数分别指定连续查询的执行间隔和窗口大小。并且使用`fill()`来填充没有值的时间区间。
@@ -315,7 +315,7 @@ At **2021-05-11T22:19:00.000+08:00**, `cq3` executes a query within the time ran
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
````
-### 配置连续查询每次查询执行时间窗口的结束时间
+### 3.4 配置连续查询每次查询执行时间窗口的结束时间
使用`RESAMPLE`子句中的`EVERY`参数和`RANGE`参数分别指定连续查询的执行间隔和窗口大小。并且使用`fill()`来填充没有值的时间区间。
@@ -374,7 +374,7 @@ At **2021-05-11T22:19:00.000+08:00**, `cq4` executes a query within the time ran
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
````
-### 没有GROUP BY TIME子句的连续查询
+### 3.5 没有GROUP BY TIME子句的连续查询
不使用`GROUP BY TIME`子句,并在`RESAMPLE`子句中显式使用`EVERY`参数指定连续查询的执行间隔。
@@ -480,9 +480,9 @@ At **2021-05-11T22:19:00.000+08:00**, `cq5` executes a query within the time ran
+-----------------------------+-------------------------------+-----------+
````
-## 连续查询的管理
+## 4 连续查询的管理
-### 查询系统已有的连续查询
+### 4.1 查询系统已有的连续查询
展示集群中所有的已注册的连续查询
@@ -505,7 +505,7 @@ SHOW CONTINUOUS QUERIES;
| s1_count_cq | CREATE CQ s1_count_cq
BEGIN
SELECT count(s1)
INTO root.sg_count.d.count_s1
FROM root.sg.d
GROUP BY(30m)
END | active |
-### 删除已有的连续查询
+### 4.2 删除已有的连续查询
删除指定的名为cq_id的连续查询:
@@ -523,24 +523,24 @@ DROP CQ并不会返回任何结果集。
DROP CONTINUOUS QUERY s1_count_cq;
```
-### 修改已有的连续查询
+### 4.3 修改已有的连续查询
目前连续查询一旦被创建就不能再被修改。如果想要修改某个连续查询,只能先用`DROP`命令删除它,然后再用`CREATE`命令重新创建。
-## 连续查询的使用场景
+## 5 连续查询的使用场景
-### 对数据进行降采样并对降采样后的数据使用不同的保留策略
+### 5.1 对数据进行降采样并对降采样后的数据使用不同的保留策略
可以使用连续查询,定期将高频率采样的原始数据(如每秒1000个点),降采样(如每秒仅保留一个点)后保存到另一个 database 的同名序列中。高精度的原始数据所在 database 的`TTL`可能设置的比较短,比如一天,而低精度的降采样后的数据所在的 database `TTL`可以设置的比较长,比如一个月,从而达到快速释放磁盘空间的目的。
-### 预计算代价昂贵的查询
+### 5.2 预计算代价昂贵的查询
我们可以通过连续查询对一些重复的查询进行预计算,并将查询结果保存在某些目标序列中,这样真实查询并不需要真的再次去做计算,而是直接查询目标序列的结果,从而缩短了查询的时间。
> 预计算查询结果尤其对一些可视化工具渲染时序图和工作台时有很大的加速作用。
-### 作为子查询的替代品
+### 5.3 作为子查询的替代品
IoTDB现在不支持子查询,但是我们可以通过创建连续查询得到相似的功能。我们可以将子查询注册为一个连续查询,并将子查询的结果物化到目标序列中,外层查询再直接查询哪个目标序列。
@@ -579,7 +579,7 @@ SELECT avg(count_s1) from root.sg_count.d;
```
-## 连续查询相关的配置参数
+## 6 连续查询相关的配置参数
| 参数名 | 描述 | 类型 | 默认值 |
| :---------------------------------- |----------------------|----------|---------------|
| `continuous_query_submit_thread_count` | 用于周期性提交连续查询执行任务的线程数 | int32 | 2 |
diff --git a/src/zh/UserGuide/latest/User-Manual/IoTDB-View_timecho.md b/src/zh/UserGuide/latest/User-Manual/IoTDB-View_timecho.md
index 482317b37..091b2064c 100644
--- a/src/zh/UserGuide/latest/User-Manual/IoTDB-View_timecho.md
+++ b/src/zh/UserGuide/latest/User-Manual/IoTDB-View_timecho.md
@@ -21,9 +21,9 @@
# 视图
-## 序列视图应用背景
+## 1 序列视图应用背景
-### 应用场景1 时间序列重命名(PI资产管理)
+### 1.1 应用场景1 时间序列重命名(PI资产管理)
实际应用中,采集数据的设备可能使用人类难以理解的标识号来命名,这给业务层带来了查询上的困难。
@@ -33,19 +33,19 @@
对于用户来说,它是难以理解的。但此时,用户能够使用序列视图功能对它重命名,将它映射到一个序列视图中去,使用`root.view.device001.temperature`来访问采集到的数据。
-### 应用场景2 简化业务层查询逻辑
+### 1.2 应用场景2 简化业务层查询逻辑
有时用户有大量设备,管理着大量时间序列。在进行某项业务时,用户希望仅处理其中的部分序列,此时就可以通过序列视图功能挑选出关注重点,方便反复查询、写入。
**例如**:用户管理一条产品流水线,各环节的设备有大量时间序列。温度检测员仅需要关注设备温度,就可以抽取温度相关的序列,组成序列视图。
-### 应用场景3 辅助权限管理
+### 1.3 应用场景3 辅助权限管理
生产过程中,不同业务负责的范围一般不同,出于安全考虑往往需要通过权限管理来限制业务员的访问范围。
**例如**:安全管理部门现在仅需要监控某生产线上各设备的温度,但这些数据与其他机密数据存放在同一数据库。此时,就可以创建若干新的视图,视图中仅含有生产线上与温度有关的时间序列,接着,向安全员只赋予这些序列视图的权限,从而达到权限限制的目的。
-### 设计序列视图功能的动机
+### 1.4 设计序列视图功能的动机
结合上述两类使用场景,设计序列视图功能的动机,主要有:
@@ -53,13 +53,13 @@
2. 简化业务层查询逻辑。
3. 辅助权限管理,通过视图向特定用户开放数据。
-## 序列视图概念
+## 2 序列视图概念
-### 术语概念
+### 2.1 术语概念
约定:若无特殊说明,本文档所指定的视图均是**序列视图**,未来可能引入设备视图等新功能。
-### 序列视图
+### 2.2 序列视图
序列视图是一种组织管理时间序列的方式。
@@ -69,7 +69,7 @@
用户可以使用复杂的SQL查询创建视图,此时序列视图就像一条被存储的查询语句,当从视图中读取数据时,就把被存储的查询语句作为数据来源,放在FROM子句中。
-### 别名序列
+### 2.3 别名序列
在序列视图中,有一类特殊的存在,他们满足如下所有条件:
@@ -81,13 +81,13 @@
**所有序列视图包括别名序列目前均不支持触发器功能(Trigger)。**
-### 嵌套视图
+### 2.4 嵌套视图
用户可能想从一个现有的序列视图中选出若干序列,组成一个新的序列视图,就称之为嵌套视图。
**当前版本不支持嵌套视图功能**。
-### IoTDB中对序列视图的一些约束
+### 2.5 IoTDB中对序列视图的一些约束
#### 限制1 序列视图必须依赖于一个或者若干个时间序列
@@ -130,9 +130,9 @@
这是因为进行业务查询时,面向视图的用户关心的是当前视图的结构,而如果使用group by tag等方式做查询,显然希望是得到视图下含有对应tag的分组效果,而非时间序列的tag的分组效果(用户甚至对那些时间序列毫无感知)。
-## 序列视图功能介绍
+## 3 序列视图功能介绍
-### 创建视图
+### 3.1 创建视图
创建一个序列视图与创建一条时间序列类似,区别在于需要通过AS关键字指定数据来源,即原始序列。
@@ -340,7 +340,7 @@ AS
简单来说,`AS`后只能使用`SELECT ... FROM ... `的结构,且该查询语句的结果必须能构成一条时间序列。
-### 视图数据查询
+### 3.2 视图数据查询
对于可以支持的数据查询功能,在执行时序数据查询时,序列视图与时间序列可以无差别使用,行为完全一致。
@@ -362,7 +362,7 @@ WHERE temperature01 < temperature02
此外,对于别名序列,如果用户想要得到时间序列的tag、attributes等信息,则需要先查询视图列的映射,找到对应的时间序列,再向时间序列查询tag、attributes等信息。查询视图列的映射的方法将会在3.5部分说明。
-### 视图修改
+### 3.3 视图修改
视图支持的修改操作包括:修改计算逻辑,修改标签/属性,以及删除。
@@ -432,7 +432,7 @@ ALTER view root.turbine.d1.s1 UPSERT TAGS(tag2=newV2, tag3=v3) ATTRIBUTES(attr3=
DELETE VIEW root.view.device.avg_temperatue
```
-### 视图同步
+### 3.4 视图同步
#### 如果依赖的原序列被删除了
@@ -452,7 +452,7 @@ DELETE VIEW root.view.device.avg_temperatue
详情请参考前文2.1.6 限制5
-### 视图元数据查询
+### 3.5 视图元数据查询
视图元数据查询,特指查询视图本身的元数据(例如视图有多少列),以及数据库内视图的信息(例如有哪些视图)。
@@ -518,7 +518,7 @@ IoTDB>
上述两种查询都涉及视图的数据类型。视图的数据类型是根据定义视图的查询语句或别名序列的原始时间序列类型推断出来的。这个数据类型是根据当前系统的状态实时计算出来的,因此在不同时刻查询到的数据类型可能是改变的。
-## FAQ
+## 4 FAQ
#### Q1:我想让视图实现类型转换的功能。例如,原有一个int32类型的时间序列,和其他int64类型的序列被放在了同一个视图中。我现在希望通过视图查询到的数据,都能自动转换为int64类型。
diff --git a/src/zh/UserGuide/latest/User-Manual/Load-Balance.md b/src/zh/UserGuide/latest/User-Manual/Load-Balance.md
index 90c90d156..72e52cecd 100644
--- a/src/zh/UserGuide/latest/User-Manual/Load-Balance.md
+++ b/src/zh/UserGuide/latest/User-Manual/Load-Balance.md
@@ -19,11 +19,11 @@
-->
-## 负载均衡
+# 负载均衡
Region 迁移属于高级运维功能,具有一定操作成本,建议完整阅读后再使用该功能。如有疑问请联系 IoTDB 团队寻求技术支持。
-### 功能介绍
+## 1 功能介绍
IoTDB 是一个分布式数据库,数据的均衡分布对集群的磁盘空间、写入压力的负载均衡有着重要作用,region 是数据在 IoTDB 集群中进行分布式存储的基本单元,具体概念可见[region](../Background-knowledge/Cluster-Concept.md)。
@@ -34,14 +34,14 @@ IoTDB 是一个分布式数据库,数据的均衡分布对集群的磁盘空

-### 注意事项
+## 2 注意事项
1. 推荐仅在 IoTDB 1.3.3 以及更高版本使用 Region 迁移功能。
2. 仅在共识协议为 IoTConsensus、Ratis 时支持 Region 迁移(iotdb-system.properties中的`schema_region_consensus_protocol_class` 和 `data_region_consensus_protocol_class`)。
3. Region 迁移会占用硬盘和网络带宽等系统资源,推荐在低业务负载时进行。
4. 在理想情况下,Region 迁移不影响用户侧读写。特殊情况下,Region 迁移可能阻塞写入,这种情况的具体鉴别与处理方式见使用说明。
-### 使用说明
+## 3 使用说明
- **语法定义**:
diff --git a/src/zh/UserGuide/latest/User-Manual/Query-Performance-Analysis.md b/src/zh/UserGuide/latest/User-Manual/Query-Performance-Analysis.md
index bd89214ef..998682ed1 100644
--- a/src/zh/UserGuide/latest/User-Manual/Query-Performance-Analysis.md
+++ b/src/zh/UserGuide/latest/User-Manual/Query-Performance-Analysis.md
@@ -20,7 +20,7 @@
-->
# 运维语句
-## 查询性能分析
+## 1 查询性能分析
查询分析的意义在于帮助用户理解查询的执行机制和性能瓶颈,从而实现查询优化和性能提升。这不仅关乎到查询的执行效率,也直接影响到应用的用户体验和资源的有效利用。为了进行有效的查询分析,**IoTDB** **V1.3.2及以上版本**提供了查询分析语句:Explain 和 Explain Analyze。
@@ -33,7 +33,7 @@
| 监控面板 | 中。需要安装IoTDB监控面板工具(企业版工具),并开启IoTDB监控服务 | 中。IoTDB监控服务记录指标会带来额外耗时 | 支持分布式,仅支持对数据库整体查询负载和耗时进行分析 |
| Arthas抽样 | 中。需要安装Java Arthas工具(部分内网无法直接安装Arthas,且安装后,有时需要重启应用) | 高。CPU 抽样可能会影响线上业务的响应速度 | 不支持分布式,仅支持对数据库整体查询负载和耗时进行分析 |
-### Explain 语句
+### 1.1 Explain 语句
#### 语法
@@ -75,7 +75,7 @@ explain select * from root.explain.data
+-----------------------------------------------------------------------+
```
-### Explain Analyze 语句
+### 1.2 Explain Analyze 语句
#### 语法
@@ -255,7 +255,7 @@ FRAGMENT-INSTANCE[Id: 20240311_041502_00001_1.3.0][IP: 192.168.130.9][DataRegion
......
```
-### 常见问题
+### 1.3 常见问题
#### WALL TIME(墙上时间)和 CPU TIME(CPU时间)的区别?
@@ -296,7 +296,7 @@ TimeSeriesMetadata 的加载分别统计了顺序和乱序文件,但 Chunk 的
升级时,只替换了 lib 包,没有替换 conf/logback-datanode.xml,需要替换一下 conf/logback-datanode.xml,然后不需要重启(该文件内容可以被热加载),大约等待 1 分钟后,重新执行 explain analyze verbose。
-### 实战案例
+### 1.4 实战案例
#### 案例一:查询涉及文件数量过多,磁盘IO成为瓶颈,导致查询速度变慢
diff --git a/src/zh/UserGuide/latest/User-Manual/Streaming_apache.md b/src/zh/UserGuide/latest/User-Manual/Streaming_apache.md
index 839e036e3..c2ee7495f 100644
--- a/src/zh/UserGuide/latest/User-Manual/Streaming_apache.md
+++ b/src/zh/UserGuide/latest/User-Manual/Streaming_apache.md
@@ -42,9 +42,9 @@ Pipe Source 用于抽取数据,Pipe Processor 用于处理数据,Pipe Sink
利用流处理框架,可以搭建完整的数据链路来满足端*边云同步、异地灾备、读写负载分库*等需求。
-## 自定义流处理插件开发
+## 1 自定义流处理插件开发
-### 编程开发依赖
+### 1.1 编程开发依赖
推荐采用 maven 构建项目,在`pom.xml`中添加以下依赖。请注意选择和 IoTDB 服务器版本相同的依赖版本。
@@ -57,7 +57,7 @@ Pipe Source 用于抽取数据,Pipe Processor 用于处理数据,Pipe Sink
```
-### 事件驱动编程模型
+### 1.2 事件驱动编程模型
流处理插件的用户编程接口设计,参考了事件驱动编程模型的通用设计理念。事件(Event)是用户编程接口中的数据抽象,而编程接口与具体的执行方式解耦,只需要专注于描述事件(数据)到达系统后,系统期望的处理方式即可。
@@ -127,7 +127,7 @@ public interface TsFileInsertionEvent extends Event {
}
```
-### 自定义流处理插件编程接口定义
+### 1.3 自定义流处理插件编程接口定义
基于自定义流处理插件编程接口,用户可以轻松编写数据抽取插件、数据处理插件和数据发送插件,从而使得流处理功能灵活适配各种工业场景。
@@ -438,12 +438,12 @@ public interface PipeSink extends PipePlugin {
}
```
-## 自定义流处理插件管理
+## 2 自定义流处理插件管理
为了保证用户自定义插件在实际生产中的灵活性和易用性,系统还需要提供对插件进行动态统一管理的能力。
本章节介绍的流处理插件管理语句提供了对插件进行动态统一管理的入口。
-### 加载插件语句
+### 2.1 加载插件语句
在 IoTDB 中,若要在系统中动态载入一个用户自定义插件,则首先需要基于 PipeSource、 PipeProcessor 或者 PipeSink 实现一个具体的插件类,
然后需要将插件类编译打包成 jar 可执行文件,最后使用加载插件的管理语句将插件载入 IoTDB。
@@ -468,7 +468,7 @@ AS 'edu.tsinghua.iotdb.pipe.ExampleProcessor'
USING URI
```
-### 删除插件语句
+### 2.2 删除插件语句
当用户不再想使用一个插件,需要将插件从系统中卸载时,可以使用如图所示的删除插件语句。
@@ -478,7 +478,7 @@ DROP PIPEPLUGIN [IF EXISTS] <别名>
**IF EXISTS 语义**:用于删除操作中,确保当指定 Pipe Plugin 存在时,执行删除命令,防止因尝试删除不存在的 Pipe Plugin 而导致报错。
-### 查看插件语句
+### 2.3 查看插件语句
用户也可以按需查看系统中的插件。查看插件的语句如图所示。
@@ -486,9 +486,9 @@ DROP PIPEPLUGIN [IF EXISTS] <别名>
SHOW PIPEPLUGINS
```
-## 系统预置的流处理插件
+## 3 系统预置的流处理插件
-### 预置 source 插件
+### 3.1 预置 source 插件
#### iotdb-source
@@ -539,7 +539,7 @@ SHOW PIPEPLUGINS
>
> 历史数据传输阶段和实时数据传输阶段,**两阶段串行执行,只有当历史数据传输阶段完成后,才执行实时数据传输阶段。**
-### 预置 processor 插件
+### 3.2 预置 processor 插件
#### do-nothing-processor
@@ -550,7 +550,7 @@ SHOW PIPEPLUGINS
|-----------|----------------------|------------------------------|-----------------------------------|
| processor | do-nothing-processor | String: do-nothing-processor | required |
-### 预置 sink 插件
+### 3.3 预置 sink 插件
#### do-nothing-sink
@@ -561,9 +561,9 @@ SHOW PIPEPLUGINS
|------|-----------------|-------------------------|-----------------------------------|
| sink | do-nothing-sink | String: do-nothing-sink | required |
-## 流处理任务管理
+## 4 流处理任务管理
-### 创建流处理任务
+### 4.1 创建流处理任务
使用 `CREATE PIPE` 语句来创建流处理任务。以数据同步流处理任务的创建为例,示例 SQL 语句如下:
@@ -651,7 +651,7 @@ WITH SINK (
- IoTDB A -> IoTDB B -> IoTDB A
- IoTDB A -> IoTDB A
-### 启动流处理任务
+### 4.2 启动流处理任务
CREATE PIPE 语句成功执行后,流处理任务相关实例会被创建,但整个流处理任务的运行状态会被置为 STOPPED(V1.3.0),即流处理任务不会立刻处理数据。在 1.3.1 及以上的版本,流处理任务的运行状态在创建后将被立即置为 RUNNING。
@@ -661,7 +661,7 @@ CREATE PIPE 语句成功执行后,流处理任务相关实例会被创建,
START PIPE
```
-### 停止流处理任务
+### 4.3 停止流处理任务
使用 STOP PIPE 语句使流处理任务停止处理数据:
@@ -669,7 +669,7 @@ START PIPE
STOP PIPE
```
-### 删除流处理任务
+### 4.4 删除流处理任务
使用 DROP PIPE 语句使流处理任务停止处理数据(当流处理任务状态为 RUNNING 时),然后删除整个流处理任务流处理任务:
@@ -679,7 +679,7 @@ DROP PIPE
用户在删除流处理任务前,不需要执行 STOP 操作。
-### 展示流处理任务
+### 4.5 展示流处理任务
使用 SHOW PIPES 语句查看所有流处理任务:
@@ -712,7 +712,7 @@ SHOW PIPES
WHERE SINK USED BY
```
-### 流处理任务运行状态迁移
+### 4.6 流处理任务运行状态迁移
一个流处理 pipe 在其生命周期中会经过多种状态:
@@ -728,9 +728,9 @@ WHERE SINK USED BY

-## 权限管理
+## 5 权限管理
-### 流处理任务
+### 5.1 流处理任务
| 权限名称 | 描述 |
@@ -741,7 +741,7 @@ WHERE SINK USED BY
| USE_PIPE | 卸载流处理任务。路径无关。 |
| USE_PIPE | 查询流处理任务。路径无关。 |
-### 流处理任务插件
+### 5.2 流处理任务插件
| 权限名称 | 描述 |
@@ -750,7 +750,7 @@ WHERE SINK USED BY
| USE_PIPE | 卸载流处理任务插件。路径无关。 |
| USE_PIPE | 查询流处理任务插件。路径无关。 |
-## 配置参数
+## 6 配置参数
在 iotdb-system.properties 中:
diff --git a/src/zh/UserGuide/latest/User-Manual/Streaming_timecho.md b/src/zh/UserGuide/latest/User-Manual/Streaming_timecho.md
index 64245aece..1f707da61 100644
--- a/src/zh/UserGuide/latest/User-Manual/Streaming_timecho.md
+++ b/src/zh/UserGuide/latest/User-Manual/Streaming_timecho.md
@@ -42,9 +42,9 @@ Pipe Source 用于抽取数据,Pipe Processor 用于处理数据,Pipe Sink
利用流处理框架,可以搭建完整的数据链路来满足端*边云同步、异地灾备、读写负载分库*等需求。
-## 自定义流处理插件开发
+## 1 自定义流处理插件开发
-### 编程开发依赖
+### 1.1 编程开发依赖
推荐采用 maven 构建项目,在`pom.xml`中添加以下依赖。请注意选择和 IoTDB 服务器版本相同的依赖版本。
@@ -57,7 +57,7 @@ Pipe Source 用于抽取数据,Pipe Processor 用于处理数据,Pipe Sink
```
-### 事件驱动编程模型
+### 1.2 事件驱动编程模型
流处理插件的用户编程接口设计,参考了事件驱动编程模型的通用设计理念。事件(Event)是用户编程接口中的数据抽象,而编程接口与具体的执行方式解耦,只需要专注于描述事件(数据)到达系统后,系统期望的处理方式即可。
@@ -127,7 +127,7 @@ public interface TsFileInsertionEvent extends Event {
}
```
-### 自定义流处理插件编程接口定义
+### 1.3 自定义流处理插件编程接口定义
基于自定义流处理插件编程接口,用户可以轻松编写数据抽取插件、数据处理插件和数据发送插件,从而使得流处理功能灵活适配各种工业场景。
@@ -438,12 +438,12 @@ public interface PipeSink extends PipePlugin {
}
```
-## 自定义流处理插件管理
+## 2 自定义流处理插件管理
为了保证用户自定义插件在实际生产中的灵活性和易用性,系统还需要提供对插件进行动态统一管理的能力。
本章节介绍的流处理插件管理语句提供了对插件进行动态统一管理的入口。
-### 加载插件语句
+### 2.1 加载插件语句
在 IoTDB 中,若要在系统中动态载入一个用户自定义插件,则首先需要基于 PipeSource、 PipeProcessor 或者 PipeSink 实现一个具体的插件类,
然后需要将插件类编译打包成 jar 可执行文件,最后使用加载插件的管理语句将插件载入 IoTDB。
@@ -484,7 +484,7 @@ AS 'edu.tsinghua.iotdb.pipe.ExampleProcessor'
USING URI
```
-### 删除插件语句
+### 2.2 删除插件语句
当用户不再想使用一个插件,需要将插件从系统中卸载时,可以使用如图所示的删除插件语句。
@@ -494,7 +494,7 @@ DROP PIPEPLUGIN [IF EXISTS] <别名>
**IF EXISTS 语义**:用于删除操作中,确保当指定 Pipe Plugin 存在时,执行删除命令,防止因尝试删除不存在的 Pipe Plugin 而导致报错。
-### 查看插件语句
+### 2.3 查看插件语句
用户也可以按需查看系统中的插件。查看插件的语句如图所示。
@@ -502,9 +502,9 @@ DROP PIPEPLUGIN [IF EXISTS] <别名>
SHOW PIPEPLUGINS
```
-## 系统预置的流处理插件
+## 3 系统预置的流处理插件
-### 预置 source 插件
+### 3.1 预置 source 插件
#### iotdb-source
@@ -568,7 +568,7 @@ SHOW PIPEPLUGINS
> * 如果要使用 pipe 构建 A -> B -> C 的数据同步,那么 B -> C 的 pipe 需要将该参数为 true 后,A -> B 中 A 通过 pipe 写入 B 的数据才能被正确转发到 C
> * 如果要使用 pipe 构建 A \<-> B 的双向数据同步(双活),那么 A -> B 和 B -> A 的 pipe 都需要将该参数设置为 false,否则将会造成数据无休止的集群间循环转发
-### 预置 processor 插件
+### 3.2 预置 processor 插件
#### do-nothing-processor
@@ -579,7 +579,7 @@ SHOW PIPEPLUGINS
|-----------|----------------------|------------------------------|-----------------------------------|
| processor | do-nothing-processor | String: do-nothing-processor | required |
-### 预置 sink 插件
+### 3.3 预置 sink 插件
#### do-nothing-sink
@@ -590,9 +590,9 @@ SHOW PIPEPLUGINS
|------|-----------------|-------------------------|-----------------------------------|
| sink | do-nothing-sink | String: do-nothing-sink | required |
-## 流处理任务管理
+## 4 流处理任务管理
-### 创建流处理任务
+### 4.1 创建流处理任务
使用 `CREATE PIPE` 语句来创建流处理任务。以数据同步流处理任务的创建为例,示例 SQL 语句如下:
@@ -686,7 +686,7 @@ WITH SINK (
- IoTDB A -> IoTDB B -> IoTDB A
- IoTDB A -> IoTDB A
-### 启动流处理任务
+### 4.2 启动流处理任务
CREATE PIPE 语句成功执行后,流处理任务相关实例会被创建,但整个流处理任务的运行状态会被置为 STOPPED,即流处理任务不会立刻处理数据(V1.3.0)。在 1.3.1 及以上的版本,流处理任务的运行状态在创建后将被立即置为 RUNNING。
@@ -696,7 +696,7 @@ CREATE PIPE 语句成功执行后,流处理任务相关实例会被创建,
START PIPE
```
-### 停止流处理任务
+### 4.3 停止流处理任务
使用 STOP PIPE 语句使流处理任务停止处理数据:
@@ -704,7 +704,7 @@ START PIPE
STOP PIPE
```
-### 删除流处理任务
+### 4.4 删除流处理任务
使用 DROP PIPE 语句使流处理任务停止处理数据(当流处理任务状态为 RUNNING 时),然后删除整个流处理任务流处理任务:
@@ -714,7 +714,7 @@ DROP PIPE
用户在删除流处理任务前,不需要执行 STOP 操作。
-### 展示流处理任务
+### 4.5 展示流处理任务
使用 SHOW PIPES 语句查看所有流处理任务:
@@ -747,7 +747,7 @@ SHOW PIPES
WHERE SINK USED BY
```
-### 流处理任务运行状态迁移
+### 4.6 流处理任务运行状态迁移
一个流处理 pipe 在其的生命周期中会经过多种状态:
@@ -763,9 +763,9 @@ WHERE SINK USED BY

-## 权限管理
+## 5 权限管理
-### 流处理任务
+### 5.1 流处理任务
| 权限名称 | 描述 |
@@ -776,7 +776,7 @@ WHERE SINK USED BY
| USE_PIPE | 卸载流处理任务。路径无关。 |
| USE_PIPE | 查询流处理任务。路径无关。 |
-### 流处理任务插件
+### 5.2 流处理任务插件
| 权限名称 | 描述 |
@@ -785,7 +785,7 @@ WHERE SINK USED BY
| USE_PIPE | 卸载流处理任务插件。路径无关。 |
| USE_PIPE | 查询流处理任务插件。路径无关。 |
-## 配置参数
+## 6 配置参数
在 iotdb-system.properties 中:
diff --git a/src/zh/UserGuide/latest/User-Manual/Tiered-Storage_timecho.md b/src/zh/UserGuide/latest/User-Manual/Tiered-Storage_timecho.md
index 501a3966f..7e3d3bfce 100644
--- a/src/zh/UserGuide/latest/User-Manual/Tiered-Storage_timecho.md
+++ b/src/zh/UserGuide/latest/User-Manual/Tiered-Storage_timecho.md
@@ -20,11 +20,11 @@
-->
# 多级存储
-## 概述
+## 1 概述
多级存储功能向用户提供多种存储介质管理的能力,用户可以使用多级存储功能为 IoTDB 配置不同类型的存储介质,并为存储介质进行分级。具体的,在 IoTDB 中,多级存储的配置体现为多目录的管理。用户可以将多个存储目录归为同一类,作为一个“层级”向 IoTDB 中配置,这种“层级”我们称之为 storage tier;同时,用户可以根据数据的冷热进行分类,并将不同类别的数据存储到指定的“层级”中。当前 IoTDB 支持通过数据的 TTL 进行冷热数据的分类,当一个层级中的数据不满足当前层级定义的 TTL 规则时,该数据会被自动迁移至下一层级中。
-## 参数定义
+## 2 参数定义
在 IoTDB 中开启多级存储,需要进行以下几个方面的配置:
@@ -49,7 +49,7 @@
| remote_tsfile_cache_max_disk_usage_in_mb | 51200 | 云端存储本地缓存的最大磁盘占用大小 | 如果未使用远端存储,无需配置 |
-## 本地多级存储配置示例
+## 3 本地多级存储配置示例
以下以本地两级存储的配置示例。
@@ -67,7 +67,7 @@ dn_default_space_usage_thresholds=0.2;0.1
| 层级一 | 目录一:/data1/data | 最近 1 天的数据 | 20% |
| 层级二 | 目录一:/data2/data目录二:/data3/data | 1 天以前的数据 | 10% |
-## 远端多级存储配置示例
+## 4 远端多级存储配置示例
以下以三级存储为例:
diff --git a/src/zh/UserGuide/latest/User-Manual/Trigger.md b/src/zh/UserGuide/latest/User-Manual/Trigger.md
index 0e5f54d20..c03613913 100644
--- a/src/zh/UserGuide/latest/User-Manual/Trigger.md
+++ b/src/zh/UserGuide/latest/User-Manual/Trigger.md
@@ -21,33 +21,33 @@
# 触发器
-## 使用说明
+## 1 使用说明
触发器提供了一种侦听序列数据变动的机制。配合用户自定义逻辑,可完成告警、数据转发等功能。
触发器基于 Java 反射机制实现。用户通过简单实现 Java 接口,即可实现数据侦听。IoTDB 允许用户动态注册、卸载触发器,在注册、卸载期间,无需启停服务器。
-### 侦听模式
+### 1.1 侦听模式
IoTDB 的单个触发器可用于侦听符合特定模式的时间序列的数据变动,如时间序列 root.sg.a 上的数据变动,或者符合路径模式 root.**.a 的时间序列上的数据变动。您在注册触发器时可以通过 SQL 语句指定触发器侦听的路径模式。
-### 触发器类型
+### 1.2 触发器类型
目前触发器分为两类,您在注册触发器时可以通过 SQL 语句指定类型:
- 有状态的触发器。该类触发器的执行逻辑可能依赖前后的多条数据,框架会将不同节点写入的数据汇总到同一个触发器实例进行计算,来保留上下文信息,通常用于采样或者统计一段时间的数据聚合信息。集群中只有一个节点持有有状态触发器的实例。
- 无状态的触发器。触发器的执行逻辑只和当前输入的数据有关,框架无需将不同节点的数据汇总到同一个触发器实例中,通常用于单行数据的计算和异常检测等。集群中每个节点均持有无状态触发器的实例。
-### 触发时机
+### 1.3 触发时机
触发器的触发时机目前有两种,后续会拓展其它触发时机。您在注册触发器时可以通过 SQL 语句指定触发时机:
- BEFORE INSERT,即在数据持久化之前触发。请注意,目前触发器并不支持数据清洗,不会对要持久化的数据本身进行变动。
- AFTER INSERT,即在数据持久化之后触发。
-## 编写触发器
+## 2 编写触发器
-### 触发器依赖
+### 2.1 触发器依赖
触发器的逻辑需要您编写 Java 类进行实现。
在编写触发器逻辑时,需要使用到下面展示的依赖。如果您使用 [Maven](http://search.maven.org/),则可以直接从 [Maven 库](http://search.maven.org/)中搜索到它们。请注意选择和目标服务器版本相同的依赖版本。
@@ -61,7 +61,7 @@ IoTDB 的单个触发器可用于侦听符合特定模式的时间序列的数
```
-### 接口说明
+### 2.2 接口说明
编写一个触发器需要实现 `org.apache.iotdb.trigger.api.Trigger` 类。
@@ -212,7 +212,7 @@ insert into root.sg(time, a, b) values (1, 1, 1);
-### 示例
+### 2.3 示例
如果您使用 [Maven](http://search.maven.org/),可以参考我们编写的示例项目 trigger-example。您可以在 [这里](https://github.com/apache/iotdb/tree/master/example/trigger) 找到它。后续我们会加入更多的示例项目供您参考。
@@ -319,13 +319,13 @@ public class ClusterAlertingExample implements Trigger {
}
}
```
-## 管理触发器
+## 3 管理触发器
您可以通过 SQL 语句注册和卸载一个触发器实例,您也可以通过 SQL 语句查询到所有已经注册的触发器。
**我们建议您在注册触发器时停止写入。**
-### 注册触发器
+### 3.1 注册触发器
触发器可以注册在任意路径模式上。被注册有触发器的序列将会被触发器侦听,当序列上有数据变动时,触发器中对应的触发方法将会被调用。
@@ -401,7 +401,7 @@ WITH (
- JAR 包的 URI 为 http://jar/ClusterAlertingExample.jar
- 创建该触发器实例时会传入 name 和 limit 两个参数。
-### 卸载触发器
+### 3.2 卸载触发器
可以通过指定触发器 ID 的方式卸载触发器,卸载触发器的过程中会且仅会调用一次触发器的 `onDrop` 接口。
@@ -422,7 +422,7 @@ DROP TRIGGER triggerTest1
上述语句将会卸载 ID 为 triggerTest1 的触发器。
-### 查询触发器
+### 3.3 查询触发器
可以通过 SQL 语句查询集群中存在的触发器的信息。SQL 语法如下:
@@ -437,7 +437,7 @@ SHOW TRIGGERS
| triggerTest1 | BEFORE_INSERT / AFTER_INSERT | STATELESS / STATEFUL | INACTIVE / ACTIVE / DROPPING / TRANSFFERING | root.** | org.apache.iotdb.trigger.TriggerExample | ALL(STATELESS) / DATA_NODE_ID(STATEFUL) |
-### 触发器状态说明
+### 3.4 触发器状态说明
在集群中注册以及卸载触发器的过程中,我们维护了触发器的状态,下面是对这些状态的说明:
@@ -448,7 +448,7 @@ SHOW TRIGGERS
| DROPPING | 执行 `DROP TRIGGER` 的中间状态,集群正处在卸载该触发器的过程中 | 否 |
| TRANSFERRING | 集群正在进行该触发器实例位置的迁移 | 否 |
-## 重要注意事项
+## 4 重要注意事项
- 触发器从注册时开始生效,不对已有的历史数据进行处理。**即只有成功注册触发器之后发生的写入请求才会被触发器侦听到。**
- 触发器目前采用**同步触发**,所以编写时需要保证触发器效率,否则可能会大幅影响写入性能。**您需要自己保证触发器内部的并发安全性**。
@@ -459,7 +459,7 @@ SHOW TRIGGERS
- 触发器 JAR 包有大小限制,必须小于 min(`config_node_ratis_log_appender_buffer_size_max`, 2G),其中 `config_node_ratis_log_appender_buffer_size_max` 是一个配置项,具体含义可以参考 IOTDB 配置项说明。
- **不同的 JAR 包中最好不要有全类名相同但功能实现不一样的类**。例如:触发器 trigger1、trigger2 分别对应资源 trigger1.jar、trigger2.jar。如果两个 JAR 包里都包含一个 `org.apache.iotdb.trigger.example.AlertListener` 类,当 `CREATE TRIGGER` 使用到这个类时,系统会随机加载其中一个 JAR 包中的类,最终导致触发器执行行为不一致以及其他的问题。
-## 配置参数
+## 5 配置参数
| 配置项 | 含义 |
| ------------------------------------------------- | ---------------------------------------------- |
diff --git a/src/zh/UserGuide/latest/User-Manual/UDF-development.md b/src/zh/UserGuide/latest/User-Manual/UDF-development.md
index 24e0366ad..fc252335c 100644
--- a/src/zh/UserGuide/latest/User-Manual/UDF-development.md
+++ b/src/zh/UserGuide/latest/User-Manual/UDF-development.md
@@ -1,6 +1,6 @@
# UDF 开发
-## 1. UDF 开发
+## 1 UDF 开发
### 1.1 UDF 依赖
@@ -675,7 +675,7 @@ UDAF 的结束方法,您可以在此方法中进行一些资源释放等的操
如果您使用 [Maven](http://search.maven.org/),可以参考我们编写的示例项目**udf-example**。您可以在 [这里](https://github.com/apache/iotdb/tree/master/example/udf) 找到它。
-## 2. 为iotdb贡献通用的内置UDF函数
+## 2 为iotdb贡献通用的内置UDF函数
该部分主要讲述了外部用户如何将自己编写的 UDF 贡献给 IoTDB 社区。
diff --git a/src/zh/UserGuide/latest/User-Manual/User-defined-function_apache.md b/src/zh/UserGuide/latest/User-Manual/User-defined-function_apache.md
index b375a8911..6d49a6eca 100644
--- a/src/zh/UserGuide/latest/User-Manual/User-defined-function_apache.md
+++ b/src/zh/UserGuide/latest/User-Manual/User-defined-function_apache.md
@@ -1,6 +1,6 @@
# 用户自定义函数
-## 1. UDF 介绍
+## 1 UDF 介绍
UDF(User Defined Function)即用户自定义函数,IoTDB 提供多种内建的面向时序处理的函数,也支持扩展自定义函数来满足更多的计算需求。
@@ -78,11 +78,11 @@ SELECT s1, s2, s1 + example(s1, s2), s1 - example(s1 + example(s1, s2) / s2) FRO
```
-## 2. UDF 开发
+## 2 UDF 开发
可以参考 UDF函数开发:[开发指导](./UDF-development.md)
-## 3. UDF 管理
+## 3 UDF 管理
### 3.1 UDF 注册
@@ -191,13 +191,13 @@ udf_reader_transformer_collector_memory_proportion=1:1:1
更多用户权限相关的内容,请参考 [权限管理语句](../User-Manual/Authority-Management.md##权限管理)。
-## 4. UDF 函数库
+## 4 UDF 函数库
基于用户自定义函数能力,IoTDB 提供了一系列关于时序数据处理的函数,包括数据质量、数据画像、异常检测、 频域分析、数据匹配、数据修复、序列发现、机器学习等,能够满足工业领域对时序数据处理的需求。
可以参考 [UDF 函数库](../SQL-Manual/UDF-Libraries_apache.md)文档,查找安装步骤及每个函数对应的注册语句,以确保正确注册所有需要的函数。
-## 5. 常见问题:
+## 5 常见问题
1. 如何修改已经注册的 UDF?
diff --git a/src/zh/UserGuide/latest/User-Manual/User-defined-function_timecho.md b/src/zh/UserGuide/latest/User-Manual/User-defined-function_timecho.md
index 0cc6c55a3..3e5325a94 100644
--- a/src/zh/UserGuide/latest/User-Manual/User-defined-function_timecho.md
+++ b/src/zh/UserGuide/latest/User-Manual/User-defined-function_timecho.md
@@ -1,6 +1,6 @@
# 用户自定义函数
-## 1. UDF 介绍
+## 1 UDF 介绍
UDF(User Defined Function)即用户自定义函数,IoTDB 提供多种内建的面向时序处理的函数,也支持扩展自定义函数来满足更多的计算需求。
@@ -78,11 +78,11 @@ SELECT s1, s2, s1 + example(s1, s2), s1 - example(s1 + example(s1, s2) / s2) FRO
```
-## 2. UDF 开发
+## 2 UDF 开发
可以参考 UDF函数开发:[开发指导](./UDF-development.md)
-## 3. UDF 管理
+## 3 UDF 管理
### 3.1 UDF 注册
@@ -191,13 +191,13 @@ udf_reader_transformer_collector_memory_proportion=1:1:1
更多用户权限相关的内容,请参考 [权限管理语句](../User-Manual/Authority-Management.md##权限管理)。
-## 4. UDF 函数库
+## 4 UDF 函数库
基于用户自定义函数能力,IoTDB 提供了一系列关于时序数据处理的函数,包括数据质量、数据画像、异常检测、 频域分析、数据匹配、数据修复、序列发现、机器学习等,能够满足工业领域对时序数据处理的需求。
可以参考 [UDF 函数库](../SQL-Manual/UDF-Libraries_timecho.md)文档,查找安装步骤及每个函数对应的注册语句,以确保正确注册所有需要的函数。
-## 5. 常见问题:
+## 5 常见问题
1. 如何修改已经注册的 UDF?
diff --git a/src/zh/UserGuide/latest/User-Manual/White-List_timecho.md b/src/zh/UserGuide/latest/User-Manual/White-List_timecho.md
index d69a563fc..0db9d1d9d 100644
--- a/src/zh/UserGuide/latest/User-Manual/White-List_timecho.md
+++ b/src/zh/UserGuide/latest/User-Manual/White-List_timecho.md
@@ -22,17 +22,17 @@
# 白名单
-**功能描述**
+## 1 功能描述
允许哪些客户端地址能连接 IoTDB
-**配置文件**
+## 2 配置文件
conf/iotdb-system.properties
conf/white.list
-**配置项**
+## 3 配置项
iotdb-system.properties: