diff --git a/src/zh/UserGuide/Master/Tree/API/Programming-CSharp-Native-API.md b/src/zh/UserGuide/Master/Tree/API/Programming-CSharp-Native-API.md index addbce6c7..fd785a524 100644 --- a/src/zh/UserGuide/Master/Tree/API/Programming-CSharp-Native-API.md +++ b/src/zh/UserGuide/Master/Tree/API/Programming-CSharp-Native-API.md @@ -21,13 +21,13 @@ # C# 原生接口 -## 依赖 +## 1 依赖 - .NET SDK >= 5.0 或 .NET Framework 4.x - Thrift >= 0.14.1 - NLog >= 4.7.9 -## 安装 +## 2 安装 您可以使用 NuGet Package Manager, .NET CLI等工具来安装,以 .NET CLI为例 @@ -50,7 +50,7 @@ dotnet add package Apache.IoTDB.framework dotnet add package Apache.IoTDB --version 0.12.1.2 ``` -## 基本接口说明 +## 3 基本接口说明 Session接口在语义上和其他语言客户端相同 @@ -88,7 +88,7 @@ await session_pool.InsertTabletAsync(tablet); await session_pool.Close(); ``` -## **Row Record** +## 4 **Row Record** - 对**IoTDB**中的`record`数据进行封装和抽象。 - 示例: @@ -104,7 +104,7 @@ var rowRecord = new RowRecord(long timestamps, List values, List measurements); ``` -### **Tablet** +### 4.1 **Tablet** - 一种类似于表格的数据结构,包含一个设备的若干行非空数据块。 - 示例: @@ -124,9 +124,9 @@ var tablet = -## **API** +## 5 **API** -### **基础接口** +### 5.1 **基础接口** | api name | parameters | notes | use example | | -------------- | ------------------------- | ------------------------ | ----------------------------- | @@ -138,7 +138,7 @@ var tablet = | SetTimeZone | string | set time zone | session_pool.GetTimeZone() | | GetTimeZone | null | get time zone | session_pool.GetTimeZone() | -### **Record相关接口** +### 5.2 **Record相关接口** | api name | parameters | notes | use example | | ----------------------------------- | ----------------------------- | ----------------------------------- | ------------------------------------------------------------ | @@ -149,7 +149,7 @@ var tablet = | TestInsertRecordAsync | string, RowRecord | test insert record | session_pool.TestInsertRecordAsync("root.97209_TEST_CSHARP_CLIENT_GROUP.TEST_CSHARP_CLIENT_DEVICE", rowRecord) | | TestInsertRecordsAsync | List\, List\ | test insert record | session_pool.TestInsertRecordsAsync(device_id, rowRecords) | -### **Tablet相关接口** +### 5.3 **Tablet相关接口** | api name | parameters | notes | use example | | ---------------------- | ------------ | -------------------- | -------------------------------------------- | @@ -158,14 +158,14 @@ var tablet = | TestInsertTabletAsync | Tablet | test insert tablet | session_pool.TestInsertTabletAsync(tablet) | | TestInsertTabletsAsync | List\ | test insert tablets | session_pool.TestInsertTabletsAsync(tablets) | -### **SQL语句接口** +### 5.4 **SQL语句接口** | api name | parameters | notes | use example | | ----------------------------- | ---------- | ------------------------------ | ------------------------------------------------------------ | | ExecuteQueryStatementAsync | string | execute sql query statement | session_pool.ExecuteQueryStatementAsync("select * from root.97209_TEST_CSHARP_CLIENT_GROUP.TEST_CSHARP_CLIENT_DEVICE where time<15"); | | ExecuteNonQueryStatementAsync | string | execute sql nonquery statement | session_pool.ExecuteNonQueryStatementAsync( "create timeseries root.97209_TEST_CSHARP_CLIENT_GROUP.TEST_CSHARP_CLIENT_DEVICE.status with datatype=BOOLEAN,encoding=PLAIN") | -### 数据表接口 +### 5.5 数据表接口 | api name | parameters | notes | use example | | -------------------------- | ------------------------------------------------------------ | --------------------------- | ------------------------------------------------------------ | @@ -178,7 +178,7 @@ var tablet = | DeleteTimeSeriesAsync | string | delete time series | | | DeleteDataAsync | List\, long, long | delete data | session_pool.DeleteDataAsync(ts_path_lst, 2, 3) | -### **辅助接口** +### 5.6 **辅助接口** | api name | parameters | notes | use example | | -------------------------- | ---------- | --------------------------- | ---------------------------------------------------- | @@ -188,7 +188,7 @@ var tablet = 用法可以参考[用户示例](https://github.com/apache/iotdb-client-csharp/tree/main/samples/Apache.IoTDB.Samples) -## 连接池 +## 6 连接池 为了实现并发客户端请求,我们提供了针对原生接口的连接池(`SessionPool`),由于`SessionPool`本身为`Session`的超集,当`SessionPool`的`pool_size`参数设置为1时,退化为原来的`Session` @@ -198,19 +198,19 @@ var tablet = 当一个连接被用完后,他会自动返回池中等待下次被使用 -## ByteBuffer +## 7 ByteBuffer 在传入RPC接口参数时,需要对Record和Tablet两种数据结构进行序列化,我们主要通过封装的ByteBuffer类实现 在封装字节序列的基础上,我们进行了内存预申请与内存倍增的优化,减少了序列化过程中内存的申请和释放,在一个拥有20000行的Tablet上进行序列化测试时,速度比起原生的数组动态增长具有**35倍的性能加速** -### 实现介绍 +### 7.1 实现介绍 在进行`RowRecords`以及`Tablet`的插入时,我们需要对多行RowRecord和Tablet进行序列化以进行发送。客户端中的序列化实现主要依赖于ByteBuffer完成。接下来我们介绍ByteBuffer的实现细节。本文包含如下几点内容: - 序列化的协议 - C#与Java的大小端的差异 - ByteBuffer内存倍增算法 -### 序列化协议 +### 7.2 序列化协议 客户端向IoTDB服务器发送的序列化数据总体应该包含两个信息。 - 数据类型 - 数据本身 @@ -246,10 +246,10 @@ public enum TSDataType{BOOLEAN, INT32, INT64, FLOAT, DOUBLE, TEXT, NONE}; 限制:Tablet中数据不能有空值 由于向 `IoTDB`服务器发送`Tablet`数据插入请求时会携带`行数`, `列数`, `列数据类型`,所以`Tabelt`序列化时我们不需要加入数据类型信息。`Tablet`是`按照列进行序列化`,这是因为后端可以通过行数得知出当前列的元素个数,同时根据列类型来对数据进行解析。 -### CSharp与Java序列化数据时的大小端差异 +### 7.3 CSharp与Java序列化数据时的大小端差异 由于Java序列化默认大端协议,而CSharp序列化默认得到小端序列。所以我们在CSharp中序列化数据之后,需要对数据进行反转这样后端才可以正常解析。同时当我们从后端获取到序列化的结果时(如`SessionDataset`),我们也需要对获得的数据进行反转以解析内容。这其中特例便是字符串的序列化,CSharp中对字符串的序列化结果为大端序,所以序列化字符串或者接收到字符串序列化结果时,不需要反转序列结果。 -### ByteBuffer内存倍增法 +### 7.4 ByteBuffer内存倍增法 拥有数万行的Tablet的序列化结果可能有上百兆,为了能够高效的实现大`Tablet`的序列化,我们对ByteBuffer使用`内存倍增法`的策略来减少序列化过程中对于内存的申请和释放。即当当前的buffer的长度不足以放下序列化结果时,我们将当前buffer的内存`至少`扩增2倍。这极大的减少了内存的申请释放次数,加速了大Tablet的序列化速度。 ```csharp private void extend_buffer(int space_need){ @@ -266,7 +266,7 @@ private void extend_buffer(int space_need){ 通过上述的策略,我们在一个有`20000`行的Tablet上进行测试时,序列化速度相比Naive数组长度动态生长实现算法具有约35倍的性能加速。 -## 异常重连 +## 8 异常重连 当服务端发生异常或者宕机重启时,客户端中原来通过`Open()`产生的的session会失效,抛出`TException`异常 diff --git a/src/zh/UserGuide/Master/Tree/API/Programming-Cpp-Native-API.md b/src/zh/UserGuide/Master/Tree/API/Programming-Cpp-Native-API.md index 5f02f2e65..76dff7c84 100644 --- a/src/zh/UserGuide/Master/Tree/API/Programming-Cpp-Native-API.md +++ b/src/zh/UserGuide/Master/Tree/API/Programming-Cpp-Native-API.md @@ -21,7 +21,7 @@ # C++ 原生接口 -## 依赖 +## 1 依赖 - Java 8+ - Flex @@ -31,9 +31,9 @@ - GCC 5.5.0+ -## 安装 +## 2 安装 -### 安装相关依赖 +### 2.1 安装相关依赖 - **MAC** 1. 安装 Bison : @@ -94,7 +94,7 @@ - 添加 OpenSSL 下的 include 目录到 PATH 环境变量中 -### 执行编译 +### 2.2 执行编译 从 git 克隆源代码: ```shell @@ -136,7 +136,7 @@ git checkout rc/1.3.2 编译成功后,打包好的库文件位于 `iotdb-client/client-cpp/target` 中,同时可以在 `example/client-cpp-example/target` 下找到编译好的示例程序。 -### 编译 Q&A +### 2.3 编译 Q&A Q:Linux 上的环境有哪些要求呢? @@ -163,11 +163,11 @@ A: - 执行 `.\mvnw.cmd clean install` - 回到 iotdb 代码目录执行 `.\mvnw.cmd clean package -pl example/client-cpp-example -am -DskipTests -P with-cpp -Dcmake.generator="Visual Studio 15 2017"` -## 基本接口说明 +## 3 基本接口说明 下面将给出 Session 接口的简要介绍和原型定义: -### 初始化 +### 3.1 初始化 - 开启 Session ```cpp @@ -185,7 +185,7 @@ void open(bool enableRPCCompression); void close(); ``` -### 数据定义接口(DDL) +### 3.2 数据定义接口(DDL) #### Database 管理 @@ -309,7 +309,7 @@ std::vector showMeasurementsInTemplate(const std::string &template_ ``` -### 数据操作接口(DML) +### 3.3 数据操作接口(DML) #### 数据写入 @@ -391,7 +391,7 @@ void deleteData(const std::vector &paths, int64_t endTime); void deleteData(const std::vector &paths, int64_t startTime, int64_t endTime); ``` -### IoTDB-SQL 接口 +### 3.4 IoTDB-SQL 接口 - 执行查询语句 ```cpp @@ -404,7 +404,7 @@ void executeNonQueryStatement(const std::string &sql); ``` -## 示例代码 +## 4 示例代码 示例工程源代码: @@ -413,9 +413,9 @@ void executeNonQueryStatement(const std::string &sql); 编译成功后,示例代码工程位于 `example/client-cpp-example/target` -## FAQ +## 5 FAQ -### Thrift 编译相关问题 +### 5.1 Thrift 编译相关问题 1. MAC:本地 Maven 编译 Thrift 时如出现以下链接的问题,可以尝试将 xcode-commandline 版本从 12 降低到 11.5 https://stackoverflow.com/questions/63592445/ld-unsupported-tapi-file-type-tapi-tbd-in-yaml-file/65518087#65518087 diff --git a/src/zh/UserGuide/Master/Tree/API/Programming-Data-Subscription.md b/src/zh/UserGuide/Master/Tree/API/Programming-Data-Subscription.md index fe8896cd4..ee74d8368 100644 --- a/src/zh/UserGuide/Master/Tree/API/Programming-Data-Subscription.md +++ b/src/zh/UserGuide/Master/Tree/API/Programming-Data-Subscription.md @@ -180,13 +180,13 @@ public class DataConsumerExample { -## 2 全量接口说明 +## 3 全量接口说明 -### 2.1 参数列表 +### 3.1 参数列表 可通过Properties参数对象设置消费者相关参数,具体参数如下。 -#### 2.1.1 SubscriptionConsumer +#### 3.1.1 SubscriptionConsumer | 参数 | 是否必填(默认值) | 参数含义 | @@ -220,9 +220,9 @@ public class DataConsumerExample { | autoCommitInterval | optional: 5000 (min: 500) | Long: 自动提交消费进度的时间间隔,单位为**毫秒**仅当 autoCommit 参数为 true 的时候才会生效 | -### 函数列表 +### 3.2 函数列表 -#### 数据订阅 +#### 3.2.1 数据订阅 ##### SubscriptionPullConsumer diff --git a/src/zh/UserGuide/Master/Tree/API/Programming-Go-Native-API.md b/src/zh/UserGuide/Master/Tree/API/Programming-Go-Native-API.md index 303e791e2..5c12e8489 100644 --- a/src/zh/UserGuide/Master/Tree/API/Programming-Go-Native-API.md +++ b/src/zh/UserGuide/Master/Tree/API/Programming-Go-Native-API.md @@ -21,7 +21,7 @@ # Go 原生接口 -## 依赖 +## 1 依赖 * golang >= 1.13 * make >= 3.0 @@ -30,7 +30,7 @@ * Linux、Macos 或其他类 unix 系统 * Windows+bash (下载 IoTDB Go client 需要 git ,通过 WSL、cygwin、Git Bash 任意一种方式均可) -## 安装方法 +## 2 安装方法 * 通过 go mod diff --git a/src/zh/UserGuide/Master/Tree/API/Programming-JDBC.md b/src/zh/UserGuide/Master/Tree/API/Programming-JDBC.md index fc726d6c5..7056fda4c 100644 --- a/src/zh/UserGuide/Master/Tree/API/Programming-JDBC.md +++ b/src/zh/UserGuide/Master/Tree/API/Programming-JDBC.md @@ -24,19 +24,19 @@ *注意: 目前的JDBC实现仅是为与第三方工具连接使用的。使用JDBC(执行插入语句时)无法提供高性能写入。 对于Java应用,我们推荐使用[Java 原生接口](./Programming-Java-Native-API.md)* -## 依赖 +## 1 依赖 * JDK >= 1.8 * Maven >= 3.6 -## 安装方法 +## 2 安装方法 在根目录下执行下面的命令: ```shell mvn clean install -pl iotdb-client/jdbc -am -DskipTests ``` -### 在 MAVEN 中使用 IoTDB JDBC +### 2.1 在 MAVEN 中使用 IoTDB JDBC ```xml @@ -48,7 +48,7 @@ mvn clean install -pl iotdb-client/jdbc -am -DskipTests ``` -### 示例代码 +### 2.2 示例代码 本章提供了如何建立数据库连接、执行 SQL 和显示查询结果的示例。 diff --git a/src/zh/UserGuide/Master/Tree/API/Programming-Java-Native-API.md b/src/zh/UserGuide/Master/Tree/API/Programming-Java-Native-API.md index 25269e46b..8b291730d 100644 --- a/src/zh/UserGuide/Master/Tree/API/Programming-Java-Native-API.md +++ b/src/zh/UserGuide/Master/Tree/API/Programming-Java-Native-API.md @@ -341,9 +341,9 @@ public class SessionPoolExample { } ``` -### 3 全量接口说明 +## 3 全量接口说明 -#### 3.1 参数列表 +### 3.1 参数列表 Session具有如下的字段,可以通过构造函数或Session.Builder方式设置如下参数 @@ -379,9 +379,9 @@ Session具有如下的字段,可以通过构造函数或Session.Builder方式 -#### 3.2 接口列表 +### 3.2 接口列表 -##### 3.2.1 元数据管理 +#### 3.2.1 元数据管理 | 方法名 | 功能描述 | 参数解释 | | ------------------------------------------------------------ | ------------------------ | ------------------------------------------------------------ | @@ -410,7 +410,7 @@ Session具有如下的字段,可以通过构造函数或Session.Builder方式 | `unsetSchemaTemplate(String prefixPath, String templateName)` | 取消路径的模板设置 | `prefixPath`: 路径,`templateName`: 模板名称 | -##### 3.2.2 数据写入 +#### 3.2.2 数据写入 | 方法名 | 功能描述 | 参数解释 | | ------------------------------------------------------------ | ---------------------------------- | ------------------------------------------------------------ | @@ -439,7 +439,7 @@ Session具有如下的字段,可以通过构造函数或Session.Builder方式 | `insertAlignedTablets(Map tablets)` | 批量插入多个对齐Tablet数据 | `tablets`: 设备ID到Tablet的映射表 | | `insertAlignedTablets(Map tablets, boolean sorted)` | 批量插入排序的多个对齐Tablet数据 | 同上,增加 `sorted`: 数据是否已排序 | -##### 3.2.3 数据删除 +#### 3.2.3 数据删除 | 方法名 | 功能描述 | 参数解释 | | ------------------------------------------------------------ | ---------------------------- | ---------------------------------------- | @@ -450,7 +450,7 @@ Session具有如下的字段,可以通过构造函数或Session.Builder方式 | `deleteData(List paths, long startTime, long endTime)` | 删除路径时间范围内的历史数据 | 同上,增加 `startTime`: 起始时间戳 | -##### 3.2.4 数据查询 +#### 3.2.4 数据查询 | 方法名 | 功能描述 | 参数解释 | | ------------------------------------------------------------ | -------------------------------- | ------------------------------------------------------------ | @@ -468,7 +468,7 @@ Session具有如下的字段,可以通过构造函数或Session.Builder方式 | `executeAggregationQuery(List paths, List aggregations, long startTime, long endTime, long interval, long slidingStep)` | 执行滑动窗口聚合查询 | 同上,增加 `slidingStep`: 滑动步长 | | `fetchAllConnections()` | 获取所有活动连接信息 | 无参数 | -##### 3.2.5 系统状态与备份 +#### 3.2.5 系统状态与备份 | 方法名 | 功能描述 | 参数解释 | | -------------------------- | ---------------------- | -------------------------------------- | diff --git a/src/zh/UserGuide/Master/Tree/API/Programming-Kafka.md b/src/zh/UserGuide/Master/Tree/API/Programming-Kafka.md index 61bfaab06..ba95ff07f 100644 --- a/src/zh/UserGuide/Master/Tree/API/Programming-Kafka.md +++ b/src/zh/UserGuide/Master/Tree/API/Programming-Kafka.md @@ -23,9 +23,9 @@ [Apache Kafka](https://kafka.apache.org/) 是一个开源的分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。 -## 示例代码 +## 1 示例代码 -### kafka 生产者生产数据 Java 代码示例 +### 1.1 kafka 生产者生产数据 Java 代码示例 ```java Properties props = new Properties(); @@ -39,7 +39,7 @@ producer.close(); ``` -### kafka 消费者接收数据 Java 代码示例 +### 1.2 kafka 消费者接收数据 Java 代码示例 ```java Properties props = new Properties(); @@ -53,7 +53,7 @@ ConsumerRecords records = kafkaConsumer.poll(Duration.ofSeconds(1)); ``` -### 存入 IoTDB 服务器的 Java 代码示例 +### 1.3 存入 IoTDB 服务器的 Java 代码示例 ```java SessionPool pool = diff --git a/src/zh/UserGuide/Master/Tree/API/Programming-MQTT.md b/src/zh/UserGuide/Master/Tree/API/Programming-MQTT.md index 4a113cd13..3863e07d3 100644 --- a/src/zh/UserGuide/Master/Tree/API/Programming-MQTT.md +++ b/src/zh/UserGuide/Master/Tree/API/Programming-MQTT.md @@ -32,7 +32,7 @@ IoTDB 服务器包括内置的 MQTT 服务,该服务允许远程设备将消 -## 内置 MQTT 服务 +## 1 内置 MQTT 服务 内置的 MQTT 服务提供了通过 MQTT 直接连接到 IoTDB 的能力。 它侦听来自 MQTT 客户端的发布消息,然后立即将数据写入存储。 MQTT 主题与 IoTDB 时间序列相对应。 消息有效载荷可以由 Java SPI 加载的`PayloadFormatter`格式化为事件,默认实现为`JSONPayloadFormatter` @@ -59,7 +59,7 @@ MQTT 主题与 IoTDB 时间序列相对应。 -## MQTT 配置 +## 2 MQTT 配置 默认情况下,IoTDB MQTT 服务从`${IOTDB_HOME}/${IOTDB_CONF}/iotdb-system.properties`加载配置。 配置如下: @@ -101,7 +101,7 @@ connection.disconnect(); ``` -## 自定义 MQTT 消息格式 +## 3 自定义 MQTT 消息格式 事实上可以通过简单编程来实现 MQTT 消息的格式自定义。 可以在源码的 `example/mqtt-customize` 项目中找到一个简单示例。 diff --git a/src/zh/UserGuide/Master/Tree/API/Programming-NodeJS-Native-API.md b/src/zh/UserGuide/Master/Tree/API/Programming-NodeJS-Native-API.md index 3bd4e132e..381fd7fb2 100644 --- a/src/zh/UserGuide/Master/Tree/API/Programming-NodeJS-Native-API.md +++ b/src/zh/UserGuide/Master/Tree/API/Programming-NodeJS-Native-API.md @@ -25,7 +25,7 @@ IoTDB 使用 Thrift 作为跨语言的 RPC 框架,因此可以通过 Thrift 提供的接口来实现对 IoTDB 的访问。本文档将介绍如何生成可访问 IoTDB 的原生 Node.js 接口。 -## 依赖 +## 1 依赖 * JDK >= 1.8 * Node.js >= 16.0.0 @@ -40,7 +40,7 @@ http://thrift.apache.org/docs/install/ ``` -## 编译 thrift 库,生成 Node.js 原生接口 +## 2 编译 thrift 库,生成 Node.js 原生接口 1. 在 IoTDB 源代码文件夹的根目录中找到 pom.xml 文件。 2. 打开 pom.xml 文件,找到以下内容: @@ -86,12 +86,12 @@ http://thrift.apache.org/docs/install/ **注意**不要将`iotdb/iotdb-protocol/thrift/target` 和 `iotdb/iotdb-protocol/thrift-commons/target`上传到 git 仓库中 ! -## 使用 Node.js 原生接口 +## 3 使用 Node.js 原生接口 将 `iotdb/iotdb-protocol/thrift/target/generated-sources-nodejs/` 和 `iotdb/iotdb-protocol/thrift-commons/target/generated-sources-nodejs/` 中的文件复制到您的项目中,即可使用。 -## 支持的 rpc 接口 +## 4 支持的 rpc 接口 ``` // 打开一个 session diff --git a/src/zh/UserGuide/Master/Tree/API/Programming-ODBC.md b/src/zh/UserGuide/Master/Tree/API/Programming-ODBC.md index 08a7fc6b8..d1971f2c3 100644 --- a/src/zh/UserGuide/Master/Tree/API/Programming-ODBC.md +++ b/src/zh/UserGuide/Master/Tree/API/Programming-ODBC.md @@ -22,19 +22,19 @@ # ODBC 在 JDBC 插件的基础上,IoTDB 可以通过 ODBC-JDBC 桥来支持通过 ODBC 对数据库的操作。 -## 依赖 +## 1 依赖 * 带依赖打包的 IoTDB JDBC 插件包 * ODBC-JDBC 桥(如 Zappy-Sys) -## 部署方法 -### 准备 JDBC 插件包 +## 2 部署方法 +### 2.1 准备 JDBC 插件包 下载 IoTDB 源码,在根目录下执行下面的命令: ```shell mvn clean package -pl iotdb-client/jdbc -am -DskipTests -P get-jar-with-dependencies ``` 之后,就可以在`iotdb-client/jdbc/target`目录下看到`iotdb-jdbc-1.3.2-SNAPSHOT-jar-with-dependencies.jar`文件。 -### 准备 ODBC-JDBC 桥 +### 2.2 准备 ODBC-JDBC 桥 *注意: 这里给出的仅仅是一种 ODBC-JDBC 桥,仅作示例。读者可以自行寻找其他的 ODBC-JDBC 桥来对接 IoTDB 的 JDBC 插件。* 1. **下载 Zappy-Sys ODBC-JDBC 桥插件**: 进入 https://zappysys.com/products/odbc-powerpack/odbc-jdbc-bridge-driver/ 网站,点击下载按钮并直接安装。 diff --git a/src/zh/UserGuide/Master/Tree/API/Programming-OPC-UA_timecho.md b/src/zh/UserGuide/Master/Tree/API/Programming-OPC-UA_timecho.md index 47e31ea4e..36e21af68 100644 --- a/src/zh/UserGuide/Master/Tree/API/Programming-OPC-UA_timecho.md +++ b/src/zh/UserGuide/Master/Tree/API/Programming-OPC-UA_timecho.md @@ -21,11 +21,11 @@ # OPC UA 协议 -## OPC UA +## 1 OPC UA OPC UA 是一种在自动化领域用于不同设备和系统之间进行通信的技术规范,用于实现跨平台、跨语言和跨网络的操作,为工业物联网提供一个可靠和安全的数据交换基础。IoTDB 中支持 OPC UA协议, IoTDB OPC Server 支持 Client/Server 和 Pub/Sub 两种通信模式。 -### OPC UA Client/Server 模式 +### 1.1 PC UA Client/Server 模式 - **Client/Server 模式**:在这种模式下,IoTDB 的流处理引擎通过 OPC UA Sink 与 OPC UA 服务器(Server)建立连接。OPC UA 服务器在其地址空间(Address Space) 中维护数据,IoTDB可以请求并获取这些数据。同时,其他OPC UA客户端(Client)也能访问服务器上的数据。 @@ -39,7 +39,7 @@ OPC UA 是一种在自动化领域用于不同设备和系统之间进行通信 - OPC UA 将从 Sink 收到的设备信息,按照树形模型整理到 Objects folder 下的文件夹中。 - 每个测点都被记录为一个变量节点,并记录当前数据库中的最新值。 -### OPC UA Pub/Sub 模式 +### 1.2 OPC UA Pub/Sub 模式 - **Pub/Sub 模式**:在这种模式下,IoTDB的流处理引擎通过 OPC UA Sink 向OPC UA 服务器(Server)发送数据变更事件。这些事件被发布到服务器的消息队列中,并通过事件节点 (Event Node) 进行管理。其他OPC UA客户端(Client)可以订阅这些事件节点,以便在数据变更时接收通知。 @@ -62,9 +62,9 @@ OPC UA 是一种在自动化领域用于不同设备和系统之间进行通信 - Event 仅会发送给所有已经监听的客户端,客户端未连接则会忽略该 Event。 -## IoTDB OPC Server 启动方式 +## 2 IoTDB OPC Server 启动方式 -### 语法 +### 2.1 语法 创建该 Sink 的语法如下: @@ -81,7 +81,7 @@ create pipe p1 ) ``` -### 参数 +### 2.2 参数 | **参数** | **描述** | **取值范围** | **是否必填** | **默认值** | | ---------------------------------- | ------------------------------ | -------------------------------- | ------------ | ------------------------------------------------------------ | @@ -94,7 +94,7 @@ create pipe p1 | sink.user | 用户,这里指 OPC UA 的允许用户 | String | 选填 | root | | sink.password | 密码,这里指 OPC UA 的允许密码 | String | 选填 | root | -### 示例 +### 2.3 示例 ```Bash create pipe p1 @@ -104,7 +104,7 @@ create pipe p1 start pipe p1; ``` -### 使用限制 +### 2.4 使用限制 1. **必须存在 DataRegion**:在 IoTDB 有 dataRegion 时,OPC UA 的服务器才会启动。因此,对于一个空的 IoTDB,需要写入一条数据,OPC UA 的服务器才有效。 2. **需连接才有数据**:每一个订阅该服务器的客户端,不会收到 OPC Server 在连接之前写入IoTDB的数据。 @@ -117,9 +117,9 @@ start pipe p1; 4. **不支持删除数据和修改测点类型:**在Client Server模式下,OPC UA无法删除数据或者改变数据类型的设置。而在Pub Sub模式下,如果数据被删除了,信息是无法推送给客户端的。 -## IoTDB OPC Server 示例 +## 3 IoTDB OPC Server 示例 -### Client / Server 模式 +### 3.1 Client / Server 模式 #### 准备工作 @@ -169,7 +169,7 @@ insert into root.test.db(time, s2) values(now(), 2) -### Pub / Sub 模式 +### 3.2 Pub / Sub 模式 #### 准备工作 @@ -182,7 +182,7 @@ insert into root.test.db(time, s2) values(now(), 2) - Client 的配置及启动逻辑(ClientExampleRunner) - ClientTest 的父类(ClientExample) -### 快速开始 +### 3.3 快速开始 使用步骤为: @@ -247,7 +247,7 @@ start pipe p1; -### 注意事项 +### 3.4 注意事项 1. **单机与集群**:建议使用1C1D单机版,如果集群中有多个 DataNode,可能数据会分散发送在各个 DataNode 上,无法收听到全量数据。 diff --git a/src/zh/UserGuide/Master/Tree/API/Programming-Python-Native-API.md b/src/zh/UserGuide/Master/Tree/API/Programming-Python-Native-API.md index e59455a00..d800caa4a 100644 --- a/src/zh/UserGuide/Master/Tree/API/Programming-Python-Native-API.md +++ b/src/zh/UserGuide/Master/Tree/API/Programming-Python-Native-API.md @@ -21,17 +21,17 @@ # Python 原生接口 -## 依赖 +## 1 依赖 在使用 Python 原生接口包前,您需要安装 thrift (>=0.13) 依赖。 -## 如何使用 (示例) +## 2 如何使用 (示例) 首先下载包:`pip3 install apache-iotdb` -您可以从这里得到一个使用该包进行数据读写的例子:[Session Example](https://github.com/apache/iotdb/blob/master/iotdb-client/client-py/session_example.py) +您可以从这里得到一个使用该包进行数据读写的例子:[Session Example](https://github.com/apache/iotdb/blob/rc/2.0.1/iotdb-client/client-py/session_example.py) -关于对齐时间序列读写的例子:[Aligned Timeseries Session Example](https://github.com/apache/iotdb/blob/master/iotdb-client/client-py/session_aligned_timeseries_example.py) +关于对齐时间序列读写的例子:[Aligned Timeseries Session Example](https://github.com/apache/iotdb/blob/rc/2.0.1/iotdb-client/client-py/session_aligned_timeseries_example.py) (您需要在文件的头部添加`import iotdb`) @@ -49,11 +49,11 @@ session.open(False) zone = session.get_time_zone() session.close() ``` -## 基本接口说明 +## 3 基本接口说明 下面将给出 Session 对应的接口的简要介绍和对应参数: -### 初始化 +### 3.1 初始化 * 初始化 Session @@ -95,7 +95,7 @@ session.open(enable_rpc_compression=False) ```python session.close() ``` -### 通过SessionPool管理session连接 +### 3.2 通过SessionPool管理session连接 利用SessionPool管理session,不需要再考虑如何重用session。当session连接到达pool的最大值时,获取session的请求会被阻塞,可以通过参数设置阻塞等待时间。每次session使用完需要使用putBack方法将session归还到SessionPool中管理。 @@ -134,9 +134,9 @@ session_pool.put_back(session) session_pool.close() ``` -## 数据定义接口 DDL +## 4 数据定义接口 DDL -### Database 管理 +### 4.1 Database 管理 * 设置 database @@ -150,7 +150,7 @@ session.set_storage_group(group_name) session.delete_storage_group(group_name) session.delete_storage_groups(group_name_lst) ``` -### 时间序列管理 +### 4.2 时间序列管理 * 创建单个或多个时间序列 @@ -186,9 +186,9 @@ session.delete_time_series(paths_list) session.check_time_series_exists(path) ``` -## 数据操作接口 DML +## 5 数据操作接口 DML -### 数据写入 +### 5.1 数据写入 推荐使用 insert_tablet 帮助提高写入效率 @@ -308,7 +308,7 @@ session.insert_records( session.insert_records_of_one_device(device_id, time_list, measurements_list, data_types_list, values_list) ``` -### 带有类型推断的写入 +### 5.2 带有类型推断的写入 当数据均是 String 类型时,我们可以使用如下接口,根据 value 的值进行类型推断。例如:value 为 "true" ,就可以自动推断为布尔类型。value 为 "3.2" ,就可以自动推断为数值类型。服务器需要做类型推断,可能会有额外耗时,速度较无需类型推断的写入慢 @@ -316,7 +316,7 @@ session.insert_records_of_one_device(device_id, time_list, measurements_list, da session.insert_str_record(device_id, timestamp, measurements, string_values) ``` -### 对齐时间序列的写入 +### 5.3 对齐时间序列的写入 对齐时间序列的写入使用 insert_aligned_xxx 接口,其余与上述接口类似: @@ -327,7 +327,7 @@ session.insert_str_record(device_id, timestamp, measurements, string_values) * insert_aligned_tablets -## IoTDB-SQL 接口 +## 6 IoTDB-SQL 接口 * 执行查询语句 @@ -348,8 +348,8 @@ session.execute_statement(sql) ``` -## 元数据模版接口 -### 构建元数据模版 +## 7 元数据模版接口 +### 7.1 构建元数据模版 1. 首先构建 Template 类 2. 添加子节点 MeasurementNode 3. 调用创建元数据模版接口 @@ -367,7 +367,7 @@ template.add_template(m_node_z) session.create_schema_template(template) ``` -### 修改模版节点信息 +### 7.2 改模版节点信息 修改模版节点,其中修改的模版必须已经被创建。以下函数能够在已经存在的模版中增加或者删除物理量 * 在模版中增加实体 ```python @@ -379,17 +379,17 @@ session.add_measurements_in_template(template_name, measurements_path, data_type session.delete_node_in_template(template_name, path) ``` -### 挂载元数据模板 +### 7.3 挂载元数据模板 ```python session.set_schema_template(template_name, prefix_path) ``` -### 卸载元数据模版 +### 7.4 卸载元数据模版 ```python session.unset_schema_template(template_name, prefix_path) ``` -### 查看元数据模版 +### 7.5 查看元数据模版 * 查看所有的元数据模版 ```python session.show_all_templates() @@ -424,14 +424,14 @@ session.show_paths_template_set_on(template_name) session.show_paths_template_using_on(template_name) ``` -### 删除元数据模版 +### 7.6 删除元数据模版 删除已经存在的元数据模版,不支持删除已经挂载的模版 ```python session.drop_schema_template("template_python") ``` -## 对 Pandas 的支持 +## 8 对 Pandas 的支持 我们支持将查询结果轻松地转换为 [Pandas Dataframe](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html)。 @@ -459,7 +459,7 @@ session.close() df = ... ``` -## IoTDB Testcontainer +## 9 IoTDB Testcontainer Python 客户端对测试的支持是基于`testcontainers`库 (https://testcontainers-python.readthedocs.io/en/latest/index.html) 的,如果您想使用该特性,就需要将其安装到您的项目中。 @@ -479,11 +479,11 @@ class MyTestCase(unittest.TestCase): 默认情况下,它会拉取最新的 IoTDB 镜像 `apache/iotdb:latest`进行测试,如果您想指定待测 IoTDB 的版本,您只需要将版本信息像这样声明:`IoTDBContainer("apache/iotdb:0.12.0")`,此时,您就会得到一个`0.12.0`版本的 IoTDB 实例。 -## IoTDB DBAPI +## 10 IoTDB DBAPI IoTDB DBAPI 遵循 Python DB API 2.0 规范 (https://peps.python.org/pep-0249/),实现了通过Python语言访问数据库的通用接口。 -### 例子 +### 10.1 例子 + 初始化 初始化的参数与Session部分保持一致(sqlalchemy_mode参数除外,该参数仅在SQLAlchemy方言中使用) @@ -532,9 +532,9 @@ cursor.close() conn.close() ``` -## IoTDB SQLAlchemy Dialect(实验性) +## 11 IoTDB SQLAlchemy Dialect(实验性) IoTDB的SQLAlchemy方言主要是为了适配Apache superset而编写的,该部分仍在完善中,请勿在生产环境中使用! -### 元数据模型映射 +### 11.1 元数据模型映射 SQLAlchemy 所使用的数据模型为关系数据模型,这种数据模型通过表格来描述不同实体之间的关系。 而 IoTDB 的数据模型为层次数据模型,通过树状结构来对数据进行组织。 为了使 IoTDB 能够适配 SQLAlchemy 的方言,需要对 IoTDB 中原有的数据模型进行重新组织, @@ -564,7 +564,7 @@ SQLAlchemy 中的元数据有: ![sqlalchemy-to-iotdb](/img/UserGuide/API/IoTDB-SQLAlchemy/sqlalchemy-to-iotdb.png?raw=true) -### 数据类型映射 +### 11.2 数据类型映射 | IoTDB 中的数据类型 | SQLAlchemy 中的数据类型 | |--------------|-------------------| | BOOLEAN | Boolean | @@ -574,7 +574,7 @@ SQLAlchemy 中的元数据有: | DOUBLE | Float | | TEXT | Text | | LONG | BigInteger | -### Example +### 11.3 Example + 执行语句 @@ -619,13 +619,13 @@ for row in res: print(row) ``` -## 给开发人员 +## 12 给开发人员 -### 介绍 +### 12.1 介绍 这是一个使用 thrift rpc 接口连接到 IoTDB 的示例。在 Windows 和 Linux 上操作几乎是一样的,但要注意路径分隔符等不同之处。 -### 依赖 +### 12.2 依赖 首选 Python3.7 或更高版本。 @@ -640,7 +640,7 @@ http://thrift.apache.org/docs/install/ pip install -r requirements_dev.txt ``` -### 编译 thrift 库并调试 +### 12.3 编译 thrift 库并调试 在 IoTDB 源代码文件夹的根目录下,运行`mvn clean generate-sources -pl iotdb-client/client-py -am`, @@ -650,7 +650,7 @@ pip install -r requirements_dev.txt **注意**不要将`iotdb/thrift`上传到 git 仓库中 ! -### Session 客户端 & 使用示例 +### 12.4 Session 客户端 & 使用示例 我们将 thrift 接口打包到`client-py/src/iotdb/session.py `中(与 Java 版本类似),还提供了一个示例文件`client-py/src/SessionExample.py`来说明如何使用 Session 模块。请仔细阅读。 @@ -669,7 +669,7 @@ zone = session.get_time_zone() session.close() ``` -### 测试 +### 12.5 测试 请在`tests`文件夹中添加自定义测试。 @@ -677,12 +677,12 @@ session.close() **注意**一些测试需要在您的系统上使用 docker,因为测试的 IoTDB 实例是使用 [testcontainers](https://testcontainers-python.readthedocs.io/en/latest/index.html) 在 docker 容器中启动的。 -### 其他工具 +### 12.6 其他工具 [black](https://pypi.org/project/black/) 和 [flake8](https://pypi.org/project/flake8/) 分别用于自动格式化和 linting。 它们可以通过 `black .` 或 `flake8 .` 分别运行。 -## 发版 +## 13 发版 要进行发版, @@ -694,11 +694,11 @@ session.close() 最后,您就可以将包发布到 pypi 了。 -### 准备您的环境 +### 13.1 准备您的环境 首先,通过`pip install -r requirements_dev.txt`安装所有必要的开发依赖。 -### 发版 +### 13.2 发版 有一个脚本`release.sh`可以用来执行发版的所有步骤。 diff --git a/src/zh/UserGuide/Master/Tree/API/Programming-Rust-Native-API.md b/src/zh/UserGuide/Master/Tree/API/Programming-Rust-Native-API.md index d75710501..c74976b3c 100644 --- a/src/zh/UserGuide/Master/Tree/API/Programming-Rust-Native-API.md +++ b/src/zh/UserGuide/Master/Tree/API/Programming-Rust-Native-API.md @@ -25,7 +25,7 @@ IoTDB 使用 Thrift 作为跨语言的 RPC 框架,因此可以通过 Thrift 提供的接口来实现对 IoTDB 的访问。本文档将介绍如何生成可访问 IoTDB 的原生 Rust 接口。 -## 依赖 +## 1 依赖 * JDK >= 1.8 * Rust >= 1.0.0 @@ -40,7 +40,7 @@ http://thrift.apache.org/docs/install/ ``` -## 编译 thrift 库,生成 Rust 原生接口 +## 2 编译 thrift 库,生成 Rust 原生接口 1. 在 IoTDB 源代码文件夹的根目录中找到 pom.xml 文件。 2. 打开 pom.xml 文件,找到以下内容: @@ -86,11 +86,11 @@ http://thrift.apache.org/docs/install/ **注意**不要将`iotdb/iotdb-protocol/thrift/target` 和 `iotdb/iotdb-protocol/thrift-commons/target`上传到 git 仓库中 ! -## 使用 Rust 原生接口 +## 3 使用 Rust 原生接口 将 `iotdb/iotdb-protocol/thrift/target/generated-sources-rust/` 和 `iotdb/iotdb-protocol/thrift-commons/target/generated-sources-rust/` 中的文件复制到您的项目中,即可使用。 -## 支持的 rpc 接口 +## 4 支持的 rpc 接口 ``` // 打开一个 session diff --git a/src/zh/UserGuide/Master/Tree/API/RestServiceV1.md b/src/zh/UserGuide/Master/Tree/API/RestServiceV1.md index c1d12587b..dac1de90d 100644 --- a/src/zh/UserGuide/Master/Tree/API/RestServiceV1.md +++ b/src/zh/UserGuide/Master/Tree/API/RestServiceV1.md @@ -22,7 +22,7 @@ # RESTful API V1(不推荐) IoTDB 的 RESTful 服务可用于查询、写入和管理操作,它使用 OpenAPI 标准来定义接口并生成框架。 -## 开启RESTful 服务 +## 1 开启RESTful 服务 RESTful 服务默认情况是关闭的 找到IoTDB安装目录下面的`conf/iotdb-system.properties`文件,将 `enable_rest_service` 设置为 `true` 以启用该模块。 @@ -31,7 +31,7 @@ RESTful 服务默认情况是关闭的 enable_rest_service=true ``` -## 鉴权 +## 2 鉴权 除了检活接口 `/ping`,RESTful 服务使用了基础(basic)鉴权,每次 URL 请求都需要在 header 中携带 `'Authorization': 'Basic ' + base64.encode(username + ':' + password)`。 示例中使用的用户名为:`root`,密码为:`root`,对应的 Basic 鉴权 Header 格式为 @@ -64,9 +64,9 @@ Authorization: Basic cm9vdDpyb290 } ``` -## 接口 +## 3 接口 -### ping +### 3.1 ping ping 接口可以用于线上服务检活。 @@ -114,7 +114,7 @@ $ curl http://127.0.0.1:18080/ping > `/ping` 接口访问不需要鉴权。 -### query +### 3.2 query query 接口可以用于处理数据查询和元数据查询。 @@ -777,7 +777,7 @@ curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X } ``` -### nonQuery +### 3.3 nonQuery 请求方式:`POST` @@ -813,7 +813,7 @@ curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X -### insertTablet +### 3.4 insertTablet 请求方式:`POST` @@ -853,7 +853,7 @@ curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X ``` -## 配置 +## 4 配置 配置位于 `iotdb-system.properties` 中。 diff --git a/src/zh/UserGuide/Master/Tree/API/RestServiceV2.md b/src/zh/UserGuide/Master/Tree/API/RestServiceV2.md index b572379d3..b88b8c199 100644 --- a/src/zh/UserGuide/Master/Tree/API/RestServiceV2.md +++ b/src/zh/UserGuide/Master/Tree/API/RestServiceV2.md @@ -22,7 +22,7 @@ # RESTful API V2 IoTDB 的 RESTful 服务可用于查询、写入和管理操作,它使用 OpenAPI 标准来定义接口并生成框架。 -## 开启RESTful 服务 +## 1 开启RESTful 服务 RESTful 服务默认情况是关闭的 找到IoTDB安装目录下面的`conf/iotdb-system.properties`文件,将 `enable_rest_service` 设置为 `true` 以启用该模块。 @@ -31,7 +31,7 @@ RESTful 服务默认情况是关闭的 enable_rest_service=true ``` -## 鉴权 +## 2 鉴权 除了检活接口 `/ping`,RESTful 服务使用了基础(basic)鉴权,每次 URL 请求都需要在 header 中携带 `'Authorization': 'Basic ' + base64.encode(username + ':' + password)`。 示例中使用的用户名为:`root`,密码为:`root`,对应的 Basic 鉴权 Header 格式为 @@ -64,9 +64,9 @@ Authorization: Basic cm9vdDpyb290 } ``` -## 接口 +## 3 接口 -### ping +### 3.1 ping ping 接口可以用于线上服务检活。 @@ -114,7 +114,7 @@ $ curl http://127.0.0.1:18080/ping > `/ping` 接口访问不需要鉴权。 -### query +### 3.2 query query 接口可以用于处理数据查询和元数据查询。 @@ -777,7 +777,7 @@ curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X } ``` -### nonQuery +### 3.3 nonQuery 请求方式:`POST` @@ -813,7 +813,7 @@ curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X -### insertTablet +### 3.4 insertTablet 请求方式:`POST` @@ -852,7 +852,7 @@ curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X } ``` -### insertRecords +### 3.5 insertRecords 请求方式:`POST` @@ -892,7 +892,7 @@ curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X ``` -## 配置 +## 4 配置 配置位于 `iotdb-system.properties` 中。 diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/DBeaver.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/DBeaver.md index 4b0dfcfc2..4e71c0488 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/DBeaver.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/DBeaver.md @@ -23,11 +23,11 @@ DBeaver 是一个 SQL 客户端和数据库管理工具。DBeaver 可以使用 IoTDB 的 JDBC 驱动与 IoTDB 进行交互。 -## DBeaver 安装 +## 1 DBeaver 安装 * DBeaver 下载地址:https://dbeaver.io/download/ -## IoTDB 安装 +## 2 IoTDB 安装 * 下载 IoTDB 二进制版本 * IoTDB 下载地址:https://iotdb.apache.org/Download/ @@ -35,7 +35,7 @@ DBeaver 是一个 SQL 客户端和数据库管理工具。DBeaver 可以使用 I * 或者从源代码中编译 * 参考 https://github.com/apache/iotdb -## 连接 IoTDB 与 DBeaver +## 3 连接 IoTDB 与 DBeaver 1. 启动 IoTDB 服务 diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/DataEase.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/DataEase.md index d3be92a31..41e2596e1 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/DataEase.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/DataEase.md @@ -20,7 +20,7 @@ --> # DataEase -## 产品概述 +## 1 产品概述 1. DataEase 简介 @@ -38,7 +38,7 @@ -## 安装要求 +## 2 安装要求 | **准备内容** | **版本要求** | | :-------------------- | :----------------------------------------------------------- | @@ -47,7 +47,7 @@ | DataEase | 要求 v1 系列 v1.18 版本,安装请参考 DataEase 官网[安装指导](https://dataease.io/docs/v2/installation/offline_INSTL_and_UPG/)(暂不支持 v2.x,其他版本适配请联系天谋商务) | | DataEase-IoTDB 连接器 | 请联系天谋商务获取 | -## 安装步骤 +## 3 安装步骤 步骤一:请联系商务获取压缩包,解压缩安装包( iotdb-api-source-1.0.0.zip ) @@ -89,16 +89,16 @@ iotdb.password=root lsof -i:8097 // config 里启动 IoTDB API Source 监听的端口 ``` -## 使用说明 +## 4 使用说明 -### 登录 DataEase +### 4.1 登录 DataEase 1. 登录 DataEase,访问地址 : `http://目标服务器IP地址:80`
-### 配置数据源 +### 4.2 配置数据源 1. 在导航条中跳转【数据源】界面
@@ -154,7 +154,7 @@ iotdb.password=root
-### 配置数据集 +### 4.3 配置数据集 1. 创建 API 数据集:在导航条中跳转至数据集页面,点击页面左上角的 【 + 】 符号,选择【API 数据集】类型,选择此数据集所在的目录,即可进入新建 API 数据集页面。
@@ -190,7 +190,7 @@ iotdb.password=root
-### 配置仪表板 +### 4.4 配置仪表板 1. 在导航条中跳转至仪表板页面,可以点击【 + 】符号新建目录,并且在对应目录,点击【 + 】符号,然后从弹出的菜单中选择【新建仪表板】
diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Flink-IoTDB.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Flink-IoTDB.md index 6d2e61dec..a261c1927 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Flink-IoTDB.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Flink-IoTDB.md @@ -23,11 +23,11 @@ IoTDB 与 [Apache Flink](https://flink.apache.org/) 的集成。此模块包含了 iotdb sink,允许 flink job 将时序数据写入 IoTDB。 -## IoTDBSink +## 1 IoTDBSink 使用 `IoTDBSink` ,您需要定义一个 `IoTDBOptions` 和一个 `IoTSerializationSchema` 实例。 `IoTDBSink` 默认每次发送一个数据,可以通过调用 `withBatchSize(int)` 进行调整。 -## 示例 +## 2 示例 该示例演示了如下从一个 Flink job 中发送数据到 IoTDB server 的场景: @@ -115,7 +115,7 @@ IoTDB 与 [Apache Flink](https://flink.apache.org/) 的集成。此模块包含 -## 运行方法 +## 3 运行方法 * 启动 IoTDB server * 运行 `org.apache.iotdb.flink.FlinkIoTDBSink.java` 将 Flink job 运行在本地的集群上。 diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Flink-TsFile.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Flink-TsFile.md index 17a3975e6..7954fd6dd 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Flink-TsFile.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Flink-TsFile.md @@ -21,7 +21,7 @@ # Apache Flink(TsFile) -## 关于 TsFile-Flink 连接器 +## 1 关于 TsFile-Flink 连接器 TsFile-Flink-Connector 对 Tsfile 类型的外部数据源实现 Flink 的支持。 这使用户可以通过 Flink DataStream/DataSet 进行读取,写入和查询。 @@ -30,9 +30,9 @@ TsFile-Flink-Connector 对 Tsfile 类型的外部数据源实现 Flink 的支持 * 从本地文件系统或 hdfs 加载单个或多个 TsFile (只支持以 DataSet 的形式)到 Flink 。 * 将本地文件系统或 hdfs 中特定目录中的所有文件加载到 Flink 中。 -## 快速开始 +## 2 快速开始 -### TsFileInputFormat 示例 +### 2.1 TsFileInputFormat 示例 1. 使用默认的 RowRowRecordParser 创建 TsFileInputFormat 。 @@ -92,7 +92,7 @@ for (String s : result) { } ``` -### TSRecordOutputFormat 示例 +### 2.2 TSRecordOutputFormat 示例 1. 使用默认的 RowTSRecordConverter 创建 TSRecordOutputFormat 。 diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Connector.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Connector.md index 3e44550ad..82c353321 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Connector.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Connector.md @@ -23,14 +23,14 @@ Grafana 是开源的指标量监测和可视化工具,可用于展示时序数据和应用程序运行分析。Grafana 支持 Graphite,InfluxDB 等国际主流时序数据库作为数据源。在 IoTDB 项目中,我们开发了 Grafana 展现 IoTDB 中时序数据的连接器 IoTDB-Grafana-Connector,为您提供使用 Grafana 展示 IoTDB 数据库中的时序数据的可视化方法。 -## Grafana 的安装与部署 +## 1 Grafana 的安装与部署 -### 安装 +### 1.1 安装 * Grafana 组件下载地址:https://grafana.com/grafana/download * 版本 >= 4.4.1 -### simple-json-datasource 数据源插件安装 +### 1.2 simple-json-datasource 数据源插件安装 * 插件名称: simple-json-datasource @@ -68,7 +68,7 @@ The following plugins are disabled and not shown in the list below: allow_loading_unsigned_plugins = "grafana-simple-json-datasource" ``` -### 启动 Grafana +### 1.3 启动 Grafana 进入 Grafana 的安装目录,使用以下命令启动 Grafana: * Windows 系统: @@ -85,17 +85,17 @@ Shell > grafana-server --config=/usr/local/etc/grafana/grafana.ini --homepath /u ``` 更多安装详情,请点 [这里](https://grafana.com/docs/grafana/latest/installation/) -## IoTDB 安装 +## 2 IoTDB 安装 参见 [https://github.com/apache/iotdb](https://github.com/apache/iotdb) -## Grafana-IoTDB-Connector 连接器安装 +## 3 Grafana-IoTDB-Connector 连接器安装 ```shell git clone https://github.com/apache/iotdb.git ``` -## 启动 Grafana-IoTDB-Connector +## 4 启动 Grafana-IoTDB-Connector * 方案一(适合开发者) @@ -120,7 +120,7 @@ java -jar iotdb-grafana-connector-{version}.war 如果您需要配置属性,将`grafana/src/main/resources/application.properties`移动到 war 包同级目录下(`grafana/target`) -## 使用 Grafana +## 5 使用 Grafana Grafana 以网页的 dashboard 形式为您展示数据,在使用时请您打开浏览器,访问 http://\:\ @@ -128,7 +128,7 @@ Grafana 以网页的 dashboard 形式为您展示数据,在使用时请您打 注:IP 为您的 Grafana 所在的服务器 IP,Port 为 Grafana 的运行端口(默认 3000)。默认登录的用户名和密码都是“admin”。 -### 添加 IoTDB 数据源 +### 5.1 添加 IoTDB 数据源 点击左上角的“Grafana”图标,选择`Data Source`选项,然后再点击`Add data source`。 @@ -136,13 +136,13 @@ Grafana 以网页的 dashboard 形式为您展示数据,在使用时请您打 在编辑数据源的时候,`Type`一栏选择`Simplejson`,`URL`一栏填写 http://\:\,IP 为您的 IoTDB-Grafana-Connector 连接器所在的服务器 IP,Port 为运行端口(默认 8888)。之后确保 IoTDB 已经启动,点击“Save & Test”,出现“Data Source is working”提示表示配置成功。 -### 操作 Grafana +### 5.2 操作 Grafana 进入 Grafana 可视化页面后,可以选择添加时间序列,如下图。您也可以按照 Grafana 官方文档进行相应的操作,详情可参看 Grafana 官方文档:http://docs.grafana.org/guides/getting_started/。 -## 配置 grafana +## 6 配置 grafana ``` # IoTDB 的 IP 和端口 diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Plugin.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Plugin.md index f7f3297f7..0a68347aa 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Plugin.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Plugin.md @@ -25,22 +25,22 @@ Grafana 是开源的指标量监测和可视化工具,可用于展示时序数 在 IoTDB 项目中,我们开发了 Grafana 插件,该插件通过调用 IoTDB REST 服务来展现 IoTDB 中时序数据 ,提供了众多时序数据的可视化方法。Grafana 插件相较于 IoTDB-Grafana-Connector 连接器执行效率更高、支持的查询种类更多。只要在您部署环境允许的情况下,*我们都推荐直接使用 Grafana 插件而不使用 IoTDB-Grafana-Connector 连接器*。 -## 部署 Grafana 插件 +## 1 部署 Grafana 插件 -### 安装 Grafana +### 1.1 安装 Grafana * Grafana 组件下载地址:https://grafana.com/grafana/download * 版本 >= 9.3.0 -### grafana-plugin 获取 +### 1.2 grafana-plugin 获取 #### Grafana官方下载 apache-iotdb-datasource 二进制文件下载地址:https://grafana.com/api/plugins/apache-iotdb-datasource/versions/1.0.0/download -### grafana-plugin 插件安装 +### 1.3 grafana-plugin 插件安装 -### 方式一 使用 grafana-cli 工具安装(推荐) +#### 方式一 使用 grafana-cli 工具安装(推荐) * 使用 grafana-cli 工具从命令行安装 apache-iotdb-datasource,命令内容如下: @@ -48,11 +48,11 @@ Grafana 是开源的指标量监测和可视化工具,可用于展示时序数 grafana-cli plugins install apache-iotdb-datasource ``` -### 方式二 使用Grafana 界面安装(推荐) +#### 方式二 使用Grafana 界面安装(推荐) 从本地 Grafana 点击 Configuration -> Plugins -> 搜索 IoTDB 进行插件安装 -### 方式三 手动安装grafana-plugin 插件(不推荐) +#### 方式三 手动安装grafana-plugin 插件(不推荐) * 拷贝上述生成的前端工程目标文件夹到 Grafana 的插件目录中 `${Grafana文件目录}\data\plugins\`。如果没有此目录可以手动建或者启动grafana会自动建立,当然也可以修改plugins的位置,具体请查看下面的修改Grafana 的插件目录位置说明。 @@ -60,7 +60,7 @@ grafana-cli plugins install apache-iotdb-datasource 更多有关Grafana详情,请点 [这里](https://grafana.com/docs/grafana/latest/plugins/installation/) -### 启动 Grafana +### 1.4 启动 Grafana 进入 Grafana 的安装目录,使用以下命令启动 Grafana: * Windows 系统: @@ -81,7 +81,7 @@ brew services start grafana 更多详情,请点 [这里](https://grafana.com/docs/grafana/latest/installation/) -### 配置 IoTDB REST 服务 +### 1.5 配置 IoTDB REST 服务 进入 `{iotdb 目录}/conf`,打开 `iotdb-system.properties` 文件,并作如下修改: @@ -97,9 +97,9 @@ rest_service_port=18080 -## 使用 Grafana 插件 +## 2 使用 Grafana 插件 -### 访问 Grafana dashboard +### 2.1 访问 Grafana dashboard Grafana 以网页的 dashboard 形式为您展示数据,在使用时请您打开浏览器,访问 `http://:`。 @@ -111,7 +111,7 @@ Grafana 以网页的 dashboard 形式为您展示数据,在使用时请您打 -### 添加 IoTDB 数据源 +### 2.2 添加 IoTDB 数据源 点击左侧的 `设置` 图标,选择 `Data Source` 选项,然后再点击 `Add data source`。 @@ -129,7 +129,7 @@ Ip 为您的 IoTDB 服务器所在的宿主机 IP,port 为 REST 服务的运 -### 创建一个新的 Panel +### 2.3 创建一个新的 Panel 点击左侧的 `Dashboards` 图标,选择 `Manage`,如下图所示: @@ -184,7 +184,7 @@ CONTROL 输入框为非必须填写项目,填写内容应当是控制查询类 -### 变量与模板功能的支持 +### 2.4 变量与模板功能的支持 SQL: Full Customized和SQL: Drop-down List两种输入方式都支持 Grafana 的变量与模板功能,下面示例中使用SQL: Full Customized输入方式,SQL: Drop-down List与之类似。 @@ -232,7 +232,7 @@ Type下拉中有Query、Custom、Text box、Constant、DataSource、Interval、A * 提示:如果查询的字段中有布尔类型的数据,会将true转化成1,false转化成0结果值进行显示。 -### 告警功能 +### 2.5 告警功能 本插件支持 Grafana alert功能。在Grafana 9告警界面一共有6个Tab,分别是Alert rules、Contact points、Notification policies、Silences、Alert groups、Admin * `Alert rules` 告警规则列表,用于展示和配置告警规则 @@ -282,7 +282,7 @@ Type下拉中有Query、Custom、Text box、Constant、DataSource、Interval、A 想了解alert更多详细的操作可以查看官方文档https://grafana.com/docs/grafana/latest/alerting/ -## 更多 +## 6 更多 更多关于 Grafana 操作详情可参看 Grafana 官方文档:http://docs.grafana.org/guides/getting_started/。 diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Hive-TsFile.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Hive-TsFile.md index 126a023f6..c15e251b7 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Hive-TsFile.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Hive-TsFile.md @@ -21,7 +21,7 @@ # Apache Hive(TsFile) -## 什么是 TsFile 的 Hive 连接器 +## 1 什么是 TsFile 的 Hive 连接器 TsFile 的 Hive 连接器实现了对 Hive 读取外部 Tsfile 类型的文件格式的支持, 使用户能够通过 Hive 操作 Tsfile。 @@ -32,13 +32,13 @@ TsFile 的 Hive 连接器实现了对 Hive 读取外部 Tsfile 类型的文件 * 使用 HQL 查询 tsfile * 到现在为止,写操作在 hive-connector 中还没有被支持。所以,HQL 中的 insert 操作是不被允许的 -## 系统环境要求 +## 2 系统环境要求 |Hadoop Version |Hive Version | Java Version | TsFile | |------------- |------------ | ------------ |------------ | | `2.7.3` or `3.2.1` | `2.3.6` or `3.1.2` | `1.8` | `1.0.0+`| -## 数据类型对应关系 +## 3 数据类型对应关系 | TsFile 数据类型 | Hive 数据类型 | | ---------------- | --------------- | @@ -49,7 +49,7 @@ TsFile 的 Hive 连接器实现了对 Hive 读取外部 Tsfile 类型的文件 | DOUBLE | Double | | TEXT | STRING | -## 为 Hive 添加依赖 jar 包 +## 4 为 Hive 添加依赖 jar 包 为了在 Hive 中使用 Tsfile 的 hive 连接器,我们需要把 hive 连接器的 jar 导入进 hive。 @@ -64,7 +64,7 @@ Added [/Users/hive/iotdb/hive-connector/target/hive-connector-1.0.0-jar-with-dep Added resources: [/Users/hive/iotdb/hive-connector/target/hive-connector-1.0.0-jar-with-dependencies.jar] ``` -## 创建 Tsfile-backed 的 Hive 表 +## 5 创建 Tsfile-backed 的 Hive 表 为了创建一个 Tsfile-backed 的表,需要将`serde`指定为`org.apache.iotdb.hive.TsFileSerDe`, 将`inputformat`指定为`org.apache.iotdb.hive.TSFHiveInputFormat`, @@ -108,7 +108,7 @@ Time taken: 0.053 seconds, Fetched: 2 row(s) 到目前为止,Tsfile-backed 的表已经可以像 hive 中其他表一样被操作了。 -## 从 Tsfile-backed 的 Hive 表中查询 +## 6 从 Tsfile-backed 的 Hive 表中查询 在做任何查询之前,我们需要通过如下命令,在 hive 中设置`hive.input.format`: @@ -121,7 +121,7 @@ hive> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; 例如: -### 选择查询语句示例 +### 6.1 选择查询语句示例 ``` hive> select * from only_sensor_1 limit 10; @@ -139,7 +139,7 @@ OK Time taken: 1.464 seconds, Fetched: 10 row(s) ``` -### 聚合查询语句示例 +### 6.2 聚合查询语句示例 ``` hive> select count(*) from only_sensor_1; diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md index ff570158b..1b8cfe518 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md @@ -20,7 +20,7 @@ --> # Ignition -## 产品概述 +## 1 产品概述 1. Ignition简介 @@ -37,7 +37,7 @@ Ignition 是一个基于WEB的监控和数据采集工具(SCADA)- 一个开 ![](/img/Ignition.png) -## 安装要求 +## 2 安装要求 | **准备内容** | **版本要求** | | :------------------------: | :------------------------------------------------------------: | @@ -46,15 +46,15 @@ Ignition 是一个基于WEB的监控和数据采集工具(SCADA)- 一个开 | Ignition-IoTDB连接器模块 | 请联系商务获取 | | Ignition-IoTDB With JDBC模块 | 下载地址:https://repo1.maven.org/maven2/org/apache/iotdb/iotdb-jdbc/ | -## Ignition-IoTDB连接器使用说明 +## 3 Ignition-IoTDB连接器使用说明 -### 简介 +### 3.1 简介 Ignition-IoTDB连接器模块可以将数据存入与历史数据库提供程序关联的数据库连接中。数据根据其数据类型直接存储到 SQL 数据库中的表中,以及毫秒时间戳。根据每个标签上的值模式和死区设置,仅在更改时存储数据,从而避免重复和不必要的数据存储。 Ignition-IoTDB连接器提供了将 Ignition 采集到的数据存入 IoTDB 的能力。 -### 安装步骤 +### 3.2 安装步骤 步骤一:进入 `Config` - `System`- `Modules` 模块,点击最下方的`Install or Upgrade a Module...` @@ -155,7 +155,7 @@ Ignition-IoTDB连接器提供了将 Ignition 采集到的数据存入 IoTDB 的 -### 使用说明 +### 3.3 使用说明 #### 配置历史数据存储 @@ -232,13 +232,13 @@ Ignition-IoTDB连接器提供了将 Ignition 采集到的数据存入 IoTDB 的 system.iotdb.query("IoTDB", "select * from root.db.Sine where time > 1709563427247") ``` -## Ignition-IoTDB With JDBC +## 4 Ignition-IoTDB With JDBC -### 简介 +### 4.1 简介 Ignition-IoTDB With JDBC提供了一个 JDBC 驱动,允许用户使用标准的JDBC API 连接和查询 lgnition-loTDB 数据库 -### 安装步骤 +### 4.2 安装步骤 步骤一:进入 `Config` - `Databases` -`Drivers` 模块,创建 `Translator` @@ -252,7 +252,7 @@ system.iotdb.query("IoTDB", "select * from root.db.Sine where time > 17095634272 ![](/img/Ignition-IoTDBWithJDBC-3.png) -### 使用说明 +### 4.3 使用说明 #### 数据写入 diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Kubernetes_apache.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Kubernetes_apache.md index a21e6df28..41a17214f 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Kubernetes_apache.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Kubernetes_apache.md @@ -21,7 +21,7 @@ # Kubernetes -## 1. 环境准备 +## 1 环境准备 ### 1.1 准备 Kubernetes 集群 @@ -31,7 +31,7 @@ Kubernetes 版本要求:建议版本为 Kubernetes 1.24及以上 IoTDB版本要求:不能低于v1.3.3.2 -## 2. 创建命名空间 +## 2 创建命名空间 ### 2.1 创建命名空间 @@ -47,7 +47,7 @@ kubectl create ns iotdb-ns kubectl get ns ``` -## 3. 创建 PersistentVolume (PV) +## 3 创建 PersistentVolume (PV) ### 3.1 创建 PV 配置文件 @@ -116,11 +116,11 @@ mkdir -p /data/k8s-data/iotdb-pv-02 ... ``` -## 4. 安装 Helm +## 4 安装 Helm 安装Helm步骤请参考[Helm官网](https://helm.sh/zh/docs/intro/install/) -## 5. 配置IoTDB的Helm Chart +## 5 配置IoTDB的Helm Chart ### 5.1 克隆 IoTDB Kubernetes 部署代码 @@ -184,7 +184,7 @@ confignode: dataRegionConsensusProtocolClass: org.apache.iotdb.consensus.iot.IoTConsensus ``` -## 6. 配置私库信息或预先使用ctr拉取镜像 +## 6 配置私库信息或预先使用ctr拉取镜像 在k8s上配置私有仓库的信息,为下一步helm install的前置步骤。 @@ -258,7 +258,7 @@ ctr -n k8s.io images import iotdb-enterprise:1.3.3.2-standalone.tar ctr --namespace k8s.io images list | grep 1.3.3.2 ``` -## 7. 安装 IoTDB +## 7 安装 IoTDB ### 7.1 安装 IoTDB @@ -301,7 +301,7 @@ kubectl describe pod datanode-0 -n iotdb-ns kubectl logs -n iotdb-ns confignode-0 -f ``` -## 8. 激活 IoTDB +## 8 激活 IoTDB ### 8.1 方案1:直接在 Pod 中激活(最快捷) @@ -357,7 +357,7 @@ kubectl describe pv iotdb-pv-04 | grep "Path:" 4. 从对应节点的对应目录下找到 system-info 文件,使用该 system-info 作为机器码生成激活码,并在同级目录新建文件 license,将激活码写入到该文件。 -## 9. 验证 IoTDB +## 9 验证 IoTDB ### 9.1 查看命名空间内的 Pods 状态 @@ -400,7 +400,7 @@ start-cli.sh -h 172.20.31.88 -p 31895 -## 10. 扩容 +## 10 扩容 ### 10.1 新增pv diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Kubernetes_timecho.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Kubernetes_timecho.md index 2a6847ff9..4925667d9 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Kubernetes_timecho.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Kubernetes_timecho.md @@ -21,7 +21,7 @@ # Kubernetes -## 1. 环境准备 +## 1 环境准备 ### 1.1 准备 Kubernetes 集群 @@ -31,7 +31,7 @@ Kubernetes 版本要求:建议版本为 Kubernetes 1.24及以上 IoTDB版本要求:不能低于v1.3.3 -## 2. 创建命名空间 +## 2 创建命名空间 ### 2.1 创建命名空间 @@ -47,7 +47,7 @@ kubectl create ns iotdb-ns kubectl get ns ``` -## 3. 创建 PersistentVolume (PV) +## 3 创建 PersistentVolume (PV) ### 3.1 创建 PV 配置文件 @@ -116,11 +116,11 @@ mkdir -p /data/k8s-data/iotdb-pv-02 ... ``` -## 4. 安装 Helm +## 4 安装 Helm 安装Helm步骤请参考[Helm官网](https://helm.sh/zh/docs/intro/install/) -## 5. 配置IoTDB的Helm Chart +## 5 配置IoTDB的Helm Chart ### 5.1 克隆 IoTDB Kubernetes 部署代码 @@ -184,7 +184,7 @@ confignode: dataRegionConsensusProtocolClass: org.apache.iotdb.consensus.iot.IoTConsensus ``` -## 6. 配置私库信息或预先使用ctr拉取镜像 +## 6 配置私库信息或预先使用ctr拉取镜像 在k8s上配置私有仓库的信息,为下一步helm install的前置步骤。 @@ -258,7 +258,7 @@ ctr -n k8s.io images import iotdb-enterprise:1.3.3.2-standalone.tar ctr --namespace k8s.io images list | grep 1.3.3.2 ``` -## 7. 安装 IoTDB +## 7 安装 IoTDB ### 7.1 安装 IoTDB @@ -301,7 +301,7 @@ kubectl describe pod datanode-0 -n iotdb-ns kubectl logs -n iotdb-ns confignode-0 -f ``` -## 8. 激活 IoTDB +## 8 激活 IoTDB ### 8.1 方案1:直接在 Pod 中激活(最快捷) @@ -357,7 +357,7 @@ kubectl describe pv iotdb-pv-04 | grep "Path:" 4. 从对应节点的对应目录下找到 system-info 文件,使用该 system-info 作为机器码生成激活码,并在同级目录新建文件 license,将激活码写入到该文件。 -## 9. 验证 IoTDB +## 9 验证 IoTDB ### 9.1 查看命名空间内的 Pods 状态 @@ -400,7 +400,7 @@ start-cli.sh -h 172.20.31.88 -p 31895 -## 10. 扩容 +## 10 扩容 ### 10.1 新增pv diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/NiFi-IoTDB.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/NiFi-IoTDB.md index 62aec3970..353e472f0 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/NiFi-IoTDB.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/NiFi-IoTDB.md @@ -20,7 +20,7 @@ --> # Apache NiFi -## Apache NiFi简介 +## 1 Apache NiFi简介 Apache NiFi 是一个易用的、功能强大的、可靠的数据处理和分发系统。 @@ -46,11 +46,11 @@ Apache NiFi 包含以下功能: * 多租户授权和策略管理 * 包括TLS和SSH的加密通信的标准协议 -## PutIoTDBRecord +## 2 PutIoTDBRecord 这是一个用于数据写入的处理器。它使用配置的 Record Reader 将传入 FlowFile 的内容读取为单独的记录,并使用本机接口将它们写入 Apache IoTDB。 -### PutIoTDBRecord的配置项 +### 2.1 PutIoTDBRecord的配置项 | 配置项 | 描述 | 默认值 | 是否必填 | | ------------- |---------------------------------------------------------------------------------------------------------------------------------------------------------------| ------ | -------- | @@ -65,7 +65,7 @@ Apache NiFi 包含以下功能: | Aligned | 是否使用 aligned 接口?
这个配置可以通过 Attributes 的表达式来更新。 | false | false | | MaxRowNumber | 指定 tablet 的最大行数。
这个配置可以通过 Attributes 的表达式来更新。 | 1024 | false | -### Flowfile 的推断数据类型 +### 2.2 Flowfile 的推断数据类型 如果要使用推断类型,需要注意以下几点: @@ -75,7 +75,7 @@ Apache NiFi 包含以下功能: 4. 除`Time` 以外的列必须以 `root.` 开头。 5. 支持的数据类型有: `INT`,`LONG`, `FLOAT`, `DOUBLE`, `BOOLEAN`, `TEXT`。 -### 通过配置项自定义 schema +### 2.3 通过配置项自定义 schema 如上所述,通过配置项来自定义 schema 比起推断的 schema来说,是一种更加灵活和强大的方式。 @@ -108,18 +108,18 @@ Apache NiFi 包含以下功能: 6. 支持的 `encoding` 有: `PLAIN`, `DICTIONARY`, `RLE`, `DIFF`, `TS_2DIFF`, `BITMAP`, `GORILLA_V1`, `REGULAR`, `GORILLA`,`ZIGZAG`,`CHIMP`, `SPRINTZ`, `RLBE`。 7. 支持的 `compressionType` 有: `UNCOMPRESSED`, `SNAPPY`, `GZIP`, `LZO`, `SDT`, `PAA`, `PLA`, `LZ4`, `ZSTD`, `LZMA2`。 -## Relationships +## 3 Relationships | relationship | 描述 | | ------------ | ----------------------- | | success | 数据能被正确的写入。 | | failure | schema 或者数据有异常。 | -## QueryIoTDBRecord +## 4 QueryIoTDBRecord 这是一个用于数据读取的处理器。它通过读取 FlowFile 的内容中的SQL 查询来对IoTDB的原生接口进行访问,并将查询结果用Record Writer写入 flowfile。 -### QueryIoTDBRecord的配置项 +### 4.1 QueryIoTDBRecord的配置项 | 配置项 | 描述 | 默认值 | 是否必填 | | ------------- |--------------------------------------------------------------------------------| ------ | -------- | @@ -132,7 +132,7 @@ Apache NiFi 包含以下功能: | iotdb-query-chunk-size | 返回的结果可以进行分块,数据流中会返回一批按设置大小切分的数据,而不是一个单一的响应. 分块查询可以返回无限量的行。 注意: 数据分块只有在设置不为0时启用 | 0 | false | -## Relationships +## 5 Relationships | relationship | 描述 | | ------------ | ----------------------- | diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Spark-IoTDB.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Spark-IoTDB.md index 0376fb1f2..96d79dac2 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Spark-IoTDB.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Spark-IoTDB.md @@ -21,7 +21,7 @@ # Apache Spark(IoTDB) -## 版本支持 +## 1 版本支持 支持的 Spark 与 Scala 版本如下: @@ -29,16 +29,16 @@ |----------------|--------------| | `2.4.0-latest` | `2.11, 2.12` | -## 注意事项 +## 2 注意事项 1. 当前版本的 `spark-iotdb-connector` 支持 `2.11` 与 `2.12` 两个版本的 Scala,暂不支持 `2.13` 版本。 2. `spark-iotdb-connector` 支持在 Java、Scala 版本的 Spark 与 PySpark 中使用。 -## 部署 +## 3 部署 `spark-iotdb-connector` 总共有两个使用场景,分别为 IDE 开发与 spark-shell 调试。 -### IDE 开发 +### 3.1 IDE 开发 在 IDE 开发时,只需要在 `pom.xml` 文件中添加以下依赖即可: @@ -51,7 +51,7 @@ ``` -### `spark-shell` 调试 +### 3.2 `spark-shell` 调试 如果需要在 `spark-shell` 中使用 `spark-iotdb-connetcor`,需要先在官网下载 `with-dependencies` 版本的 jar 包。然后再将 Jar 包拷贝到 `${SPARK_HOME}/jars` 目录中即可。 执行以下命令即可: @@ -80,9 +80,9 @@ $IoTDB_HOME/iotdb-client/jdbc/target/iotdb-jdbc-{version}-SNAPSHOT-jar-with-depe cp iotdb-jdbc-{version}-SNAPSHOT-jar-with-dependencies.jar $SPARK_HOME/jars/ ``` -## 使用 +## 4 使用 -### 参数 +### 4.1 参数 | 参数 | 描述 | 默认值 | 使用范围 | 能否为空 | |--------------|------------------------------------------------|------|------------|-------| @@ -94,7 +94,7 @@ cp iotdb-jdbc-{version}-SNAPSHOT-jar-with-dependencies.jar $SPARK_HOME/jars/ | lowerBound | 查询的起始时间戳(包含) | 0 | read | true | | upperBound | 查询的结束时间戳(包含) | 0 | read | true | -### 从 IoTDB 读取数据 +### 4.2 从 IoTDB 读取数据 以下是一个示例,演示如何从 IoTDB 中读取数据成为 DataFrame。 @@ -116,7 +116,7 @@ df.printSchema() df.show() ``` -### 将数据写入 IoTDB +### 4.3 将数据写入 IoTDB 以下是一个示例,演示如何将数据写入 IoTDB。 @@ -162,7 +162,7 @@ dfWithColumn.write.format("org.apache.iotdb.spark.db") .save ``` -### 宽表与窄表转换 +### 4.4 宽表与窄表转换 以下是如何转换宽表与窄表的示例: @@ -183,7 +183,7 @@ import org.apache.iotdb.spark.db._ val wide_df = Transformer.toWideForm(spark, narrow_df) ``` -## 宽表与窄表 +## 5 宽表与窄表 以下 TsFile 结构为例:TsFile 模式中有三个度量:状态,温度和硬件。 这三种测量的基本信息如下: diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Spark-TsFile.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Spark-TsFile.md index 0bcc8ce91..f7aa71b7f 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Spark-TsFile.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Spark-TsFile.md @@ -21,7 +21,7 @@ # Apache Spark(TsFile) -## About TsFile-Spark-Connector +## 1 About TsFile-Spark-Connector TsFile-Spark-Connector 对 Tsfile 类型的外部数据源实现 Spark 的支持。 这使用户可以通过 Spark 读取,写入和查询 Tsfile。 @@ -31,7 +31,7 @@ TsFile-Spark-Connector 对 Tsfile 类型的外部数据源实现 Spark 的支持 - 将本地文件系统或 hdfs 中特定目录中的所有文件加载到 Spark 中 - 将数据从 Spark 写入 TsFile -## System Requirements +## 2 System Requirements | Spark Version | Scala Version | Java Version | TsFile | | ------------- | ------------- | ------------ | -------- | @@ -40,9 +40,9 @@ TsFile-Spark-Connector 对 Tsfile 类型的外部数据源实现 Spark 的支持 > 注意:有关如何下载和使用 TsFile 的更多信息,请参见以下链接:https://github.com/apache/iotdb/tree/master/tsfile > 注意:spark 版本目前仅支持 2.4.3, 其他版本可能存在不适配的问题,目前已知 2.4.7 的版本存在不适配的问题 -## 快速开始 +## 3 快速开始 -### 本地模式 +### 3.1 本地模式 在本地模式下使用 TsFile-Spark-Connector 启动 Spark: @@ -55,7 +55,7 @@ TsFile-Spark-Connector 对 Tsfile 类型的外部数据源实现 Spark 的支持 - 有关如何获取 TsFile 的信息,请参见 https://github.com/apache/iotdb/tree/master/tsfile。 - 获取到 dependency 包:```mvn clean package -DskipTests -P get-jar-with-dependencies``` -### 分布式模式 +### 3.2 分布式模式 在分布式模式下使用 TsFile-Spark-Connector 启动 Spark(即,Spark 集群通过 spark-shell 连接): @@ -69,7 +69,7 @@ TsFile-Spark-Connector 对 Tsfile 类型的外部数据源实现 Spark 的支持 - 多个 jar 包用逗号分隔,没有任何空格。 - 有关如何获取 TsFile 的信息,请参见 https://github.com/apache/iotdb/tree/master/tsfile。 -## 数据类型对应 +## 4 数据类型对应 | TsFile 数据类型 | SparkSQL 数据类型 | | -------------- | ---------------- | @@ -80,7 +80,7 @@ TsFile-Spark-Connector 对 Tsfile 类型的外部数据源实现 Spark 的支持 | DOUBLE | DoubleType | | TEXT | StringType | -## 模式推断 +## 5 模式推断 显示 TsFile 的方式取决于架构。 以以下 TsFile 结构为例:TsFile 模式中有三个度量:状态,温度和硬件。 这三种测量的基本信息如下: @@ -125,7 +125,7 @@ TsFile 中的现有数据如下: | 5 | root.ln.wf02.wt01 | false | null | null | | 6 | root.ln.wf02.wt02 | null | ccc | null | -## Scala API +## 6 Scala API 注意:请记住预先分配必要的读写权限。 diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Telegraf.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Telegraf.md index a4b194800..1c4bebee2 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Telegraf.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Telegraf.md @@ -20,7 +20,7 @@ --> # Telegraf -## 1、产品概述 +## 1 产品概述 ### 1.1 Telegraf @@ -40,17 +40,17 @@ Telegraf-IoTDB 插件可以将保存在 Telegraf 中的监控信息输出存储 ![](/img/Telegraf.png) -## 2、安装要求 +## 2 安装要求 Telegraf支持多种操作系统,包括Linux、Windows、macOS,Telegraf 的安装推荐使用`root`管理员权限才能成功完成,具体安装要求请查看 [安装要求](https://docs.influxdata.com/telegraf/v1/install/) -## 3、安装步骤 +## 3 安装步骤 具体安装步骤请查看 [安装步骤](https://docs.influxdata.com/telegraf/v1/install/) - 注:此插件为Telegraf内置插件,无需进行二次安装 -## 4、使用说明 +## 4 使用说明 ### 4.1 设置输入源 @@ -62,7 +62,7 @@ Telegraf支持多种操作系统,包括Linux、Windows、macOS,Telegraf 的 | interval | 收集此指标的频率。普通插件使用单个全局间隔,但如果某个特定输入的运行频率应更低或更高,您可以在此处进行配置。`interval`可以增加间隔以减少数据输入速率限制。 | | | precision | 覆盖`precision`代理的设置。收集的指标四舍五入到指定的精度`interval`。当在服务输入上设置此值(例如`statsd`:)时,输出数据库可能会合并在同一时间戳发生的多个事件。 | | | collection_jitter | 覆盖`collection_jitter`代理的设置。Collection jitter 用于通过随机的`interval` | | -| name_override | 输出到 IoTDB 时使用的自定义时间序列路径名 | 输出的路径名称需满足“[语法要求](../Reference/Syntax-Rule.md)”要求 | +| name_override | 输出到 IoTDB 时使用的自定义时间序列路径名 | 输出的路径名称需满足“[语法要求](../SQL-Manual/Syntax-Rule.md)”要求 | | name_prefix | 指定附加到测量名称的前缀 | | | name_suffix | 指定附加到测量名称的后缀 | | @@ -89,7 +89,7 @@ Telegraf支持多种操作系统,包括Linux、Windows、macOS,Telegraf 的 telegraf -config /path/to/telegraf.conf ``` -## 5、使用示例 +## 5 使用示例 以下是一个使用 Telegraf 收集 CPU 数据并使用 Telegraf-IoTDB 输出到 IoTDB 的示例。使用 telegraf 命令生成配置文件 diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Thingsboard.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Thingsboard.md index 2b92a4dd3..f7f5e5a36 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Thingsboard.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Thingsboard.md @@ -20,7 +20,7 @@ --> # ThingsBoard -## 产品概述 +## 1 产品概述 1. ThingsBoard 简介 @@ -32,11 +32,11 @@ ThingsBoard-IoTDB 提供了将 ThingsBoard 中的数据存储到 IoTDB 的能力,也支持在 ThingsBoard 中读取 root.thingsboard 数据库下的数据信息。详细架构图如下图黄色标识所示。 -### 关系示意图 +### 1.1 关系示意图 ![](/img/Thingsboard-2.png) -## 安装要求 +## 2 安装要求 | 准备内容 | 版本要求 | | :-------------------------- | :----------------------------------------------------------- | @@ -44,7 +44,7 @@ | IoTDB | 要求已安装 V1.3.0 及以上版本,具体安装过程请参考[ 部署指导](https://www.timecho.com/docs/zh/UserGuide/latest/Deployment-and-Maintenance/IoTDB-Package_timecho.html) | | ThingsBoard(IoTDB 适配版) | 安装包请联系商务获取,具体安装步骤参见下文 | -## 安装步骤 +## 3 安装步骤 具体安装步骤请参考 [ThingsBoard 官网](https://thingsboard.io/docs/user-guide/install/ubuntu/)。其中: @@ -73,7 +73,7 @@ export IoTDB_MAX_SIZE=200 ##sessionpool内的最大数量,推荐设置为 export IoTDB_DATABASE=root.thingsboard ##thingsboard数据写入iotdb所存储的数据库,支持自定义 ``` -## 使用说明 +## 4 使用说明 1. 创建设备并接入数据:在 Thingsboard 的实体-设备中创建设备并通过工业网关将数据发送到 ThingsBoard 指定设备中 diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Zeppelin-IoTDB_apache.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Zeppelin-IoTDB_apache.md index b02f8c91d..4ef0a9f85 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Zeppelin-IoTDB_apache.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Zeppelin-IoTDB_apache.md @@ -21,15 +21,15 @@ # Apache Zeppelin -## Zeppelin 简介 +## 1 Zeppelin 简介 Apache Zeppelin 是一个基于网页的交互式数据分析系统。用户可以通过 Zeppelin 连接数据源并使用 SQL、Scala 等进行交互式操作。操作可以保存为文档(类似于 Jupyter)。Zeppelin 支持多种数据源,包括 Spark、ElasticSearch、Cassandra 和 InfluxDB 等等。现在,IoTDB 已经支持使用 Zeppelin 进行操作。样例如下: ![iotdb-note-snapshot](/img/github/102752947-520a3e80-43a5-11eb-8fb1-8fac471c8c7e.png) -## Zeppelin-IoTDB 解释器 +## 2 Zeppelin-IoTDB 解释器 -### 系统环境需求 +### 2.1 系统环境需求 | IoTDB 版本 | Java 版本 | Zeppelin 版本 | | :--------: | :-----------: | :-----------: | @@ -44,7 +44,7 @@ Apache Zeppelin 是一个基于网页的交互式数据分析系统。用户可 假设 Zeppelin 安装在 `$Zeppelin_HOME`. -### 编译解释器 +### 2.2 编译解释器 运行如下命令编译 IoTDB Zeppelin 解释器。 @@ -59,7 +59,7 @@ cd $IoTDB_HOME $IoTDB_HOME/zeppelin-interpreter/target/zeppelin-{version}-SNAPSHOT-jar-with-dependencies.jar ``` -### 安装解释器 +### 2.3 安装解释器 当你编译好了解释器,在 Zeppelin 的解释器目录下创建一个新的文件夹`iotdb`,并将 IoTDB 解释器放入其中。 @@ -69,7 +69,7 @@ mkdir -p $Zeppelin_HOME/interpreter/iotdb cp $IoTDB_HOME/zeppelin-interpreter/target/zeppelin-{version}-SNAPSHOT-jar-with-dependencies.jar $Zeppelin_HOME/interpreter/iotdb ``` -### 修改 Zeppelin 配置 +### 2.4 修改 Zeppelin 配置 进入 `$Zeppelin_HOME/conf`,使用 template 创建 Zeppelin 配置文件: @@ -79,7 +79,7 @@ cp zeppelin-site.xml.template zeppelin-site.xml 打开 zeppelin-site.xml 文件,将 `zeppelin.server.addr` 项修改为 `0.0.0.0` -### 启动 Zeppelin 和 IoTDB +### 2.5 启动 Zeppelin 和 IoTDB 进入 `$Zeppelin_HOME` 并运行 Zeppelin: @@ -103,7 +103,7 @@ or > sbin\start-server.bat -c -rpc_port ``` -## 使用 Zeppelin-IoTDB 解释器 +## 3 使用 Zeppelin-IoTDB 解释器 当 Zeppelin 启动后,访问 [http://127.0.0.1:8080/](http://127.0.0.1:8080/) @@ -154,7 +154,7 @@ WHERE time >= 1 以上样例放置于 `$IoTDB_HOME/zeppelin-interpreter/Zeppelin-IoTDB-Demo.zpln` -## 解释器配置项 +## 4 解释器配置项 进入页面 [http://127.0.0.1:8080/#/interpreter](http://127.0.0.1:8080/#/interpreter) 并配置 IoTDB 的连接参数: diff --git a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Zeppelin-IoTDB_timecho.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Zeppelin-IoTDB_timecho.md index 39ea4384b..a11490e8c 100644 --- a/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Zeppelin-IoTDB_timecho.md +++ b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Zeppelin-IoTDB_timecho.md @@ -21,15 +21,15 @@ # Apache Zeppelin -## Zeppelin 简介 +## 1 Zeppelin 简介 Apache Zeppelin 是一个基于网页的交互式数据分析系统。用户可以通过 Zeppelin 连接数据源并使用 SQL、Scala 等进行交互式操作。操作可以保存为文档(类似于 Jupyter)。Zeppelin 支持多种数据源,包括 Spark、ElasticSearch、Cassandra 和 InfluxDB 等等。现在,IoTDB 已经支持使用 Zeppelin 进行操作。样例如下: ![iotdb-note-snapshot](/img/github/102752947-520a3e80-43a5-11eb-8fb1-8fac471c8c7e.png) -## Zeppelin-IoTDB 解释器 +## 2 Zeppelin-IoTDB 解释器 -### 系统环境需求 +### 2.1 系统环境需求 | IoTDB 版本 | Java 版本 | Zeppelin 版本 | | :--------: | :-----------: | :-----------: | @@ -44,7 +44,7 @@ Apache Zeppelin 是一个基于网页的交互式数据分析系统。用户可 假设 Zeppelin 安装在 `$Zeppelin_HOME`. -### 编译解释器 +### 2.2 编译解释器 运行如下命令编译 IoTDB Zeppelin 解释器。 @@ -59,7 +59,7 @@ cd $IoTDB_HOME $IoTDB_HOME/zeppelin-interpreter/target/zeppelin-{version}-SNAPSHOT-jar-with-dependencies.jar ``` -### 安装解释器 +### 2.3 安装解释器 当你编译好了解释器,在 Zeppelin 的解释器目录下创建一个新的文件夹`iotdb`,并将 IoTDB 解释器放入其中。 @@ -69,7 +69,7 @@ mkdir -p $Zeppelin_HOME/interpreter/iotdb cp $IoTDB_HOME/zeppelin-interpreter/target/zeppelin-{version}-SNAPSHOT-jar-with-dependencies.jar $Zeppelin_HOME/interpreter/iotdb ``` -### 修改 Zeppelin 配置 +### 2.4 修改 Zeppelin 配置 进入 `$Zeppelin_HOME/conf`,使用 template 创建 Zeppelin 配置文件: @@ -79,7 +79,7 @@ cp zeppelin-site.xml.template zeppelin-site.xml 打开 zeppelin-site.xml 文件,将 `zeppelin.server.addr` 项修改为 `0.0.0.0` -### 启动 Zeppelin 和 IoTDB +### 2.5 启动 Zeppelin 和 IoTDB 进入 `$Zeppelin_HOME` 并运行 Zeppelin: @@ -103,7 +103,7 @@ or > sbin\start-server.bat -c -rpc_port ``` -## 使用 Zeppelin-IoTDB 解释器 +## 6 使用 Zeppelin-IoTDB 解释器 当 Zeppelin 启动后,访问 [http://127.0.0.1:8080/](http://127.0.0.1:8080/) @@ -154,7 +154,7 @@ WHERE time >= 1 以上样例放置于 `$IoTDB_HOME/zeppelin-interpreter/Zeppelin-IoTDB-Demo.zpln` -## 解释器配置项 +## 7 解释器配置项 进入页面 [http://127.0.0.1:8080/#/interpreter](http://127.0.0.1:8080/#/interpreter) 并配置 IoTDB 的连接参数: diff --git a/src/zh/UserGuide/Master/Tree/FAQ/Frequently-asked-questions.md b/src/zh/UserGuide/Master/Tree/FAQ/Frequently-asked-questions.md index 4d859ab51..e69de29bb 100644 --- a/src/zh/UserGuide/Master/Tree/FAQ/Frequently-asked-questions.md +++ b/src/zh/UserGuide/Master/Tree/FAQ/Frequently-asked-questions.md @@ -1,261 +0,0 @@ - - - - -# 常见问题 - -## 一般问题 - -### 如何查询我的IoTDB版本? - -有几种方法可以识别您使用的 IoTDB 版本: - -* 启动 IoTDB 的命令行界面: - -``` -> ./start-cli.sh -p 6667 -pw root -u root -h localhost - _____ _________ ______ ______ -|_ _| | _ _ ||_ _ `.|_ _ \ - | | .--.|_/ | | \_| | | `. \ | |_) | - | | / .'`\ \ | | | | | | | __'. - _| |_| \__. | _| |_ _| |_.' /_| |__) | -|_____|'.__.' |_____| |______.'|_______/ version x.x.x -``` - -* 检查 pom.xml 文件: - -``` -x.x.x -``` - -* 使用 JDBC API: - -``` -String iotdbVersion = tsfileDatabaseMetadata.getDatabaseProductVersion(); -``` - -* 使用命令行接口: - -``` -IoTDB> show version -show version -+---------------+ -|version | -+---------------+ -|x.x.x | -+---------------+ -Total line number = 1 -It costs 0.241s -``` - -### 在哪里可以找到IoTDB的日志? - -假设您的根目录是: - -```shell -$ pwd -/workspace/iotdb - -$ ls -l -server/ -cli/ -pom.xml -Readme.md -... -``` - -假如 `$IOTDB_HOME = /workspace/iotdb/server/target/iotdb-server-{project.version}` - -假如 `$IOTDB_CLI_HOME = /workspace/iotdb/cli/target/iotdb-cli-{project.version}` - -在默认的设置里,logs 文件夹会被存储在```IOTDB_HOME/logs```。您可以在```IOTDB_HOME/conf```目录下的```logback.xml```文件中修改日志的级别和日志的存储路径。 - -### 在哪里可以找到IoTDB的数据文件? - -在默认的设置里,数据文件(包含 TsFile,metadata,WAL)被存储在```IOTDB_HOME/data/datanode```文件夹。 - -### 如何知道IoTDB中存储了多少时间序列? - -使用 IoTDB 的命令行接口: - -``` -IoTDB> show timeseries -``` - -在返回的结果里,会展示`Total timeseries number`,这个数据就是 IoTDB 中 timeseries 的数量。 - -在当前版本中,IoTDB 支持直接使用命令行接口查询时间序列的数量: - -``` -IoTDB> count timeseries -``` - -如果您使用的是 Linux 操作系统,您可以使用以下的 Shell 命令: - -``` -> grep "0,root" $IOTDB_HOME/data/system/schema/mlog.txt | wc -l -> 6 -``` - -### 可以使用Hadoop和Spark读取IoTDB中的TsFile吗? - -是的。IoTDB 与开源生态紧密结合。IoTDB 支持 [Hadoop](https://github.com/apache/iotdb-extras/tree/master/connectors/iotdb-connector/hadoop), [Spark](https://github.com/apache/iotdb-extras/tree/master/connectors/spark-iotdb-connector) 和 [Grafana](https://github.com/apache/iotdb-extras/tree/master/connectors/grafana-connector) 可视化工具。 - -### IoTDB如何处理重复的数据点? - -一个数据点是由一个完整的时间序列路径(例如:```root.vehicle.d0.s0```) 和时间戳唯一标识的。如果您使用与现有点相同的路径和时间戳提交一个新点,那么 IoTDB 将更新这个点的值,而不是插入一个新点。 - -### 我如何知道具体的timeseries的类型? - -在 IoTDB 的命令行接口中使用 SQL ```SHOW TIMESERIES ```: - -例如:如果您想知道所有 timeseries 的类型 \ 应该为 `root.**`。上面的 SQL 应该修改为: - -``` -IoTDB> show timeseries root.** -``` - -如果您想查询一个指定的时间序列,您可以修改 \ 为时间序列的完整路径。比如: - -``` -IoTDB> show timeseries root.fit.d1.s1 -``` - -您还可以在 timeseries 路径中使用通配符: - -``` -IoTDB> show timeseries root.fit.d1.* -``` - -### 如何更改IoTDB的客户端时间显示格式? - -IoTDB 客户端默认显示的时间是人类可读的(比如:```1970-01-01T08:00:00.001```),如果您想显示是时间戳或者其他可读格式,请在启动命令上添加参数```-disableISO8601```: - -``` -> $IOTDB_CLI_HOME/sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root -disableISO8601 -``` - -### 怎么处理来自`org.apache.ratis.grpc.server.GrpcLogAppender`的`IndexOutOfBoundsException`? - -这是我们的依赖Ratis 2.4.1的一个内部错误日志,不会对数据写入和读取造成任何影响。 -已经报告给Ratis社区,并会在未来的版本中修复。 - -### 预估内存不足报错如何处理? - -报错信息: -``` -301: There is not enough memory to execute current fragment instance, current remaining free memory is 86762854, estimated memory usage for current fragment instance is 270139392 -``` -报错分析: -datanode_memory_proportion参数控制分给查询的内存,chunk_timeseriesmeta_free_memory_proportion参数控制查询执行可用的内存。 -默认情况下分给查询的内存为堆内存*30%,查询执行可用的内存为查询内存的20%。 -报错显示当前剩余查询执行可用内存为86762854B=82.74MB,该查询预估使用执行内存270139392B=257.6MB。 - -一些可能的改进项: - -- 在不改变默认参数的前提下,调大IoTDB的堆内存大于 4.2G(4.2G * 1024MB=4300MB),4300M*30%*20%=258M>257.6M,可以满足要求。 -- 更改 datanode_memory_proportion 等参数,使查询执行可用内存>257.6MB。 -- 减少导出的时间序列数量。 -- 给查询语句添加 slimit 限制,也是减少查询时间序列的一种方案。 -- 添加 align by device,会按照device顺序进行输出,内存占用会降低至单device级别。 - - -## 分布式部署 FAQ - -### 集群启停 - -#### ConfigNode初次启动失败,如何排查原因? - -- ConfigNode初次启动时确保已清空data/confignode目录 -- 确保该ConfigNode使用到的没有被占用,没有与已启动的ConfigNode使用到的冲突 -- 确保该ConfigNode的cn_seed_config_node(指向存活的ConfigNode;如果该ConfigNode是启动的第一个ConfigNode,该值指向自身)配置正确 -- 确保该ConfigNode的配置项(共识协议、副本数等)等与cn_seed_config_node对应的ConfigNode集群一致 - -#### ConfigNode初次启动成功,show cluster的结果里为何没有该节点? - -- 检查cn_seed_config_node是否正确指向了正确的地址; 如果cn_seed_config_node指向了自身,则会启动一个新的ConfigNode集群 - -#### DataNode初次启动失败,如何排查原因? - -- DataNode初次启动时确保已清空data/datanode目录。 如果启动结果为“Reject DataNode restart.”则表示启动时可能没有清空data/datanode目录 -- 确保该DataNode使用到的没有被占用,没有与已启动的DataNode使用到的冲突 -- 确保该DataNode的dn_seed_config_node指向存活的ConfigNode - -#### 移除DataNode执行失败,如何排查? - -- 检查remove-datanode脚本的参数是否正确,是否传入了正确的ip:port或正确的dataNodeId -- 只有集群可用节点数量 > max(元数据副本数量, 数据副本数量)时,移除操作才允许被执行 -- 执行移除DataNode的过程会将该DataNode上的数据迁移到其他存活的DataNode,数据迁移以Region为粒度,如果某个Region迁移失败,则被移除的DataNode会一直处于Removing状态 -- 补充:处于Removing状态的节点,其节点上的Region也是Removing或Unknown状态,即不可用状态。 该Remvoing状态的节点也不会接受客户端的请求。如果要使Removing状态的节点变为可用,用户可以使用set system status to running 命令将该节点设置为Running状态;如果要使迁移失败的Region处于可用状态,可以使用migrate region from datanodeId1 to datanodeId2 命令将该不可用的Region迁移到其他存活的节点。另外IoTDB后续也会提供 `remove-datanode.sh -f` 命令,来强制移除节点(迁移失败的Region会直接丢弃) - -#### 挂掉的DataNode是否支持移除? - -- 当前集群副本数量大于1时可以移除。 如果集群副本数量等于1,则不支持移除。 在下个版本会推出强制移除的命令 - -#### 从0.13升级到1.0需要注意什么? - -- 0.13版本与1.0版本的文件目录结构是不同的,不能将0.13的data目录直接拷贝到1.0集群使用。如果需要将0.13的数据导入至1.0,可以使用LOAD功能 -- 0.13版本的默认RPC地址是0.0.0.0,1.0版本的默认RPC地址是127.0.0.1 - - -### 集群重启 - -#### 如何重启集群中的某个ConfigNode? - -- 第一步:通过`stop-confignode.sh`或kill进程方式关闭ConfigNode进程 -- 第二步:通过执行`start-confignode.sh`启动ConfigNode进程实现重启 -- 下个版本IoTDB会提供一键重启的操作 - -#### 如何重启集群中的某个DataNode? - -- 第一步:通过`stop-datanode.sh`或kill进程方式关闭DataNode进程 -- 第二步:通过执行`start-datanode.sh`启动DataNode进程实现重启 -- 下个版本IoTDB会提供一键重启的操作 - -#### 将某个ConfigNode移除后(remove-confignode),能否再利用该ConfigNode的data目录重启? - -- 不能。会报错:Reject ConfigNode restart. Because there are no corresponding ConfigNode(whose nodeId=xx) in the cluster. - -#### 将某个DataNode移除后(remove-datanode),能否再利用该DataNode的data目录重启? - -- 不能正常重启,启动结果为“Reject DataNode restart. Because there are no corresponding DataNode(whose nodeId=xx) in the cluster. Possible solutions are as follows:...” - -#### 用户看到某个ConfigNode/DataNode变成了Unknown状态,在没有kill对应进程的情况下,直接删除掉ConfigNode/DataNode对应的data目录,然后执行`start-confignode.sh`/`start-datanode.sh`,这种情况下能成功吗? - -- 无法启动成功,会报错端口已被占用 - -### 集群运维 - -#### Show cluster执行失败,显示“please check server status”,如何排查? - -- 确保ConfigNode集群一半以上的节点处于存活状态 -- 确保客户端连接的DataNode处于存活状态 - -#### 某一DataNode节点的磁盘文件损坏,如何修复这个节点? - -- 当前只能通过remove-datanode的方式进行实现。remove-datanode执行的过程中会将该DataNode上的数据迁移至其他存活的DataNode节点(前提是集群设置的副本数大于1) -- 下个版本IoTDB会提供一键修复节点的功能 - -#### 如何降低ConfigNode、DataNode使用的内存? - -- 在conf/confignode-env.sh、conf/datanode-env.sh文件可通过调整ON_HEAP_MEMORY、OFF_HEAP_MEMORY等选项可以调整ConfigNode、DataNode使用的最大堆内、堆外内存 - diff --git a/src/zh/UserGuide/Master/Tree/Reference/Common-Config-Manual.md b/src/zh/UserGuide/Master/Tree/Reference/Common-Config-Manual.md index 090b5ec61..49f4b0128 100644 --- a/src/zh/UserGuide/Master/Tree/Reference/Common-Config-Manual.md +++ b/src/zh/UserGuide/Master/Tree/Reference/Common-Config-Manual.md @@ -21,20 +21,20 @@ # 配置参数 -## 公共配置参数 +## 1 公共配置参数 IoTDB ConfigNode 和 DataNode 的公共配置参数位于 `conf` 目录下。 * `iotdb-system.properties`:IoTDB 集群的公共配置。 -### 改后生效方式 +### 1.1 改后生效方式 不同的配置参数有不同的生效方式,分为以下三种: + **仅允许在第一次启动服务前修改:** 在第一次启动 ConfigNode/DataNode 后即禁止修改,修改会导致 ConfigNode/DataNode 无法启动。 + **重启服务生效:** ConfigNode/DataNode 启动后仍可修改,但需要重启 ConfigNode/DataNode 后才生效。 + **热加载:** 可在 ConfigNode/DataNode 运行时修改,修改后通过 Session 或 Cli 发送 ```load configuration``` 或 `set configuration` 命令(SQL)至 IoTDB 使配置生效。 -### 系统配置项 +### 1.2 系统配置项 #### 副本配置 diff --git a/src/zh/UserGuide/Master/Tree/Reference/ConfigNode-Config-Manual.md b/src/zh/UserGuide/Master/Tree/Reference/ConfigNode-Config-Manual.md index 4e08f9e01..ca71cb86d 100644 --- a/src/zh/UserGuide/Master/Tree/Reference/ConfigNode-Config-Manual.md +++ b/src/zh/UserGuide/Master/Tree/Reference/ConfigNode-Config-Manual.md @@ -27,7 +27,7 @@ IoTDB ConfigNode 配置文件均位于 IoTDB 安装目录:`conf`文件夹下 * `iotdb-system.properties`:IoTDB 的配置文件。 -## 环境配置项(confignode-env.sh/bat) +## 1 环境配置项(confignode-env.sh/bat) 环境配置项主要用于对 ConfigNode 运行的 Java 环境相关参数进行配置,如 JVM 相关配置。ConfigNode 启动时,此部分配置会被传给 JVM,详细配置项说明如下: @@ -58,11 +58,11 @@ IoTDB ConfigNode 配置文件均位于 IoTDB 安装目录:`conf`文件夹下 |默认值|取决于MEMORY\_SIZE的配置。| |改后生效方式|重启服务生效| -## 系统配置项(iotdb-system.properties) +## 2 系统配置项(iotdb-system.properties) IoTDB 集群的全局配置通过 ConfigNode 配置。 -### Config Node RPC 配置 +### 2.1 Config Node RPC 配置 * cn\_internal\_address @@ -82,7 +82,7 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。 | 默认值 | 10710 | | 改后生效方式 | 仅允许在第一次启动服务前修改 | -### 共识协议 +### 2.2 共识协议 * cn\_consensus\_port @@ -93,7 +93,7 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。 | 默认值 | 10720 | | 改后生效方式 | 仅允许在第一次启动服务前修改 | -### SeedConfigNode 配置 +### 2.3 SeedConfigNode 配置 * cn\_seed\_config\_node @@ -104,7 +104,7 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。 | 默认值 | 127.0.0.1:10710 | | 改后生效方式 | 仅允许在第一次启动服务前修改 | -### 数据目录 +### 2.4 数据目录 * cn\_system\_dir @@ -124,7 +124,7 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。 |默认值| data/confignode/consensus(Windows:data\\configndoe\\consensus) | |改后生效方式| 重启服务生效 | -### Thrift RPC 配置 +### 2.5 Thrift RPC 配置 * cn\_rpc\_thrift\_compression\_enable @@ -207,4 +207,4 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。 | 默认值 | 300 | | 改后生效方式 | 重启服务生效 | -### Metric 监控配置 \ No newline at end of file +### 2.6 Metric 监控配置 \ No newline at end of file diff --git a/src/zh/UserGuide/Master/Tree/Reference/DataNode-Config-Manual_apache.md b/src/zh/UserGuide/Master/Tree/Reference/DataNode-Config-Manual_apache.md index d19056bec..e428f16a3 100644 --- a/src/zh/UserGuide/Master/Tree/Reference/DataNode-Config-Manual_apache.md +++ b/src/zh/UserGuide/Master/Tree/Reference/DataNode-Config-Manual_apache.md @@ -27,14 +27,14 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB * `iotdb-system.properties`:IoTDB 的配置文件。 -## 热修改配置项 +## 1 热修改配置项 为方便用户使用,IoTDB 为用户提供了热修改功能,即在系统运行过程中修改 `iotdb-system.properties` 中部分配置参数并即时应用到系统中。下面介绍的参数中,改后 生效方式为`热加载` 的均为支持热修改的配置参数。 通过 Session 或 Cli 发送 ```load configuration``` 或 `set configuration` 命令(SQL)至 IoTDB 可触发配置热加载。 -## 环境配置项(datanode-env.sh/bat) +## 2 环境配置项(datanode-env.sh/bat) 环境配置项主要用于对 DataNode 运行的 Java 环境相关参数进行配置,如 JVM 相关配置。DataNode/Standalone 启动时,此部分配置会被传给 JVM,详细配置项说明如下: @@ -83,11 +83,11 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |默认值|31999| |改后生效方式|重启服务生效| -## 系统配置项(iotdb-system.properties) +## 3 系统配置项(iotdb-system.properties) 系统配置项是 IoTDB DataNode/Standalone 运行的核心配置,它主要用于设置 DataNode/Standalone 数据库引擎的参数。 -### Data Node RPC 服务配置 +### 3.1 Data Node RPC 服务配置 * dn\_rpc\_address @@ -162,7 +162,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |改后生效方式| 重启服务生效 | -### SSL 配置 +### 3.2 SSL 配置 * enable\_thrift\_ssl @@ -201,7 +201,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |改后生效方式| 重启服务生效 | -### SeedConfigNode 配置 +### 3.3 SeedConfigNode 配置 * dn\_seed\_config\_node @@ -212,7 +212,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |默认值| 127.0.0.1:10710 | |改后生效方式| 仅允许在第一次启动服务前修改 | -### 连接配置 +### 3.4 连接配置 * dn\_session\_timeout\_threshold @@ -314,7 +314,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB | 默认值 | 300 | | 改后生效方式 | 重启服务生效 | -### 目录配置 +### 3.5 目录配置 * dn\_system\_dir @@ -379,9 +379,9 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB | 默认值 | data/datanode/sync | | 改后生效方式 | 重启服务生效 | -### Metric 配置 +### 3.6 Metric 配置 -## 开启 GC 日志 +## 4 开启 GC 日志 GC 日志默认是关闭的。为了性能调优,用户可能会需要收集 GC 信息。 若要打开 GC 日志,则需要在启动 IoTDB Server 的时候加上"printgc"参数: diff --git a/src/zh/UserGuide/Master/Tree/Reference/DataNode-Config-Manual_timecho.md b/src/zh/UserGuide/Master/Tree/Reference/DataNode-Config-Manual_timecho.md index c88848432..dcc415359 100644 --- a/src/zh/UserGuide/Master/Tree/Reference/DataNode-Config-Manual_timecho.md +++ b/src/zh/UserGuide/Master/Tree/Reference/DataNode-Config-Manual_timecho.md @@ -27,14 +27,14 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB * `iotdb-system.properties`:IoTDB 的配置文件。 -## 热修改配置项 +## 1 热修改配置项 为方便用户使用,IoTDB 为用户提供了热修改功能,即在系统运行过程中修改 `iotdb-system.properties` 中部分配置参数并即时应用到系统中。下面介绍的参数中,改后 生效方式为`热加载` 的均为支持热修改的配置参数。 通过 Session 或 Cli 发送 ```load configuration``` 或 `set configuration` 命令(SQL)至 IoTDB 可触发配置热加载。 -## 环境配置项(datanode-env.sh/bat) +## 2 环境配置项(datanode-env.sh/bat) 环境配置项主要用于对 DataNode 运行的 Java 环境相关参数进行配置,如 JVM 相关配置。DataNode/Standalone 启动时,此部分配置会被传给 JVM,详细配置项说明如下: @@ -83,11 +83,11 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |默认值|31999| |改后生效方式|重启服务生效| -## 系统配置项(iotdb-system.properties) +## 3 系统配置项(iotdb-system.properties) 系统配置项是 IoTDB DataNode/Standalone 运行的核心配置,它主要用于设置 DataNode/Standalone 数据库引擎的参数。 -### Data Node RPC 服务配置 +### 3.1 Data Node RPC 服务配置 * dn\_rpc\_address @@ -162,7 +162,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |改后生效方式| 重启服务生效 | -### SSL 配置 +### 3.2 SSL 配置 * enable\_thrift\_ssl @@ -201,7 +201,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |改后生效方式| 重启服务生效 | -### SeedConfigNode 配置 +### 3.3 SeedConfigNode 配置 * dn\_seed\_config\_node @@ -212,7 +212,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |默认值| 127.0.0.1:10710 | |改后生效方式| 仅允许在第一次启动服务前修改 | -### 连接配置 +### 3.4 连接配置 * dn\_session\_timeout\_threshold @@ -314,7 +314,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB | 默认值 | 300 | | 改后生效方式 | 重启服务生效 | -### 目录配置 +### 3.5 目录配置 * dn\_system\_dir @@ -379,9 +379,9 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB | 默认值 | data/datanode/sync | | 改后生效方式 | 重启服务生效 | -### Metric 配置 +### 3.6 Metric 配置 -## 开启 GC 日志 +## 4 开启 GC 日志 GC 日志默认是关闭的。为了性能调优,用户可能会需要收集 GC 信息。 若要打开 GC 日志,则需要在启动 IoTDB Server 的时候加上"printgc"参数: diff --git a/src/zh/UserGuide/Master/Tree/Reference/UDF-Libraries_apache.md b/src/zh/UserGuide/Master/Tree/Reference/UDF-Libraries_apache.md index b35e35e1a..03f2831c0 100644 --- a/src/zh/UserGuide/Master/Tree/Reference/UDF-Libraries_apache.md +++ b/src/zh/UserGuide/Master/Tree/Reference/UDF-Libraries_apache.md @@ -24,7 +24,7 @@ > 注意:当前UDF函数库中的函数仅支持毫秒级的时间戳精度。 -## 安装步骤 +## 1 安装步骤 1. 请获取与 IoTDB 版本兼容的 UDF 函数库 JAR 包的压缩包。 | UDF 安装包 | 支持的 IoTDB 版本 | 下载链接 | @@ -42,9 +42,9 @@ - SQL汇总语句 - 打开压缩包中的SQl文件,复制全部 SQL 语句,在 IoTDB 的 SQL 命令行终端(CLI)的 SQL 操作界面中,执行全部 SQl 语句批量注册 UDF -## 数据质量 +## 2 数据质量 -### Completeness +### 2.1 Completeness #### 注册语句 @@ -176,7 +176,7 @@ select completeness(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 +-----------------------------+--------------------------------------------+ ``` -### Consistency +### 2.2 Consistency #### 注册语句 @@ -307,7 +307,7 @@ select consistency(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 +-----------------------------+-------------------------------------------+ ``` -### Timeliness +### 2.3 Timeliness #### 注册语句 @@ -438,7 +438,7 @@ select timeliness(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 0 +-----------------------------+------------------------------------------+ ``` -### Validity +### 2.4 Validity #### 注册语句 @@ -592,9 +592,9 @@ select validity(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 00: --> -## 数据画像 +## 3 数据画像 -### ACF +### 3.1 ACF #### 注册语句 @@ -657,7 +657,7 @@ select acf(s1) from root.test.d1 where time <= 2020-01-01 00:00:05 +-----------------------------+--------------------+ ``` -### Distinct +### 3.2 Distinct #### 注册语句 @@ -716,7 +716,7 @@ select distinct(s2) from root.test.d2 +-----------------------------+-------------------------+ ``` -### Histogram +### 3.3 Histogram #### 注册语句 @@ -802,7 +802,7 @@ select histogram(s1,"min"="1","max"="20","count"="10") from root.test.d1 +-----------------------------+---------------------------------------------------------------+ ``` -### Integral +### 3.4 Integral #### 注册语句 @@ -899,7 +899,7 @@ select integral(s1, "unit"="1m") from root.test.d1 where time <= 2020-01-01 00:0 其计算公式为: $$\frac{1}{2\times 60}[(1+2) \times 1 + (2+3) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] = 0.958$$ -### IntegralAvg +### 3.5 IntegralAvg #### 注册语句 @@ -965,7 +965,7 @@ select integralavg(s1) from root.test.d1 where time <= 2020-01-01 00:00:10 其计算公式为: $$\frac{1}{2}[(1+2)\times 1 + (2+5) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] / 10 = 5.75$$ -### Mad +### 3.6 Mad #### 注册语句 @@ -1065,7 +1065,7 @@ select mad(s1, "error"="0.01") from root.test +-----------------------------+---------------------------------+ ``` -### Median +### 3.7 Median #### 注册语句 @@ -1135,7 +1135,7 @@ select median(s1, "error"="0.01") from root.test +-----------------------------+------------------------------------+ ``` -### MinMax +### 3.8 MinMax #### 注册语句 @@ -1229,7 +1229,7 @@ select minmax(s1) from root.test -### MvAvg +### 3.9 MvAvg #### 注册语句 @@ -1317,7 +1317,7 @@ select mvavg(s1, "window"="3") from root.test +-----------------------------+---------------------------------+ ``` -### PACF +### 3.10 PACF #### 注册语句 @@ -1377,7 +1377,7 @@ select pacf(s1, "lag"="5") from root.test.d1 +-----------------------------+--------------------------------+ ``` -### Percentile +### 3.11 Percentile #### 注册语句 @@ -1502,7 +1502,7 @@ select percentile(s1, "rank"="0.2", "error"="0.01") from root.test ``` -### Quantile +### 3.12 Quantile #### 注册语句 @@ -1565,7 +1565,7 @@ select quantile(s1, "rank"="0.2", "K"="800") from root.test1 +-----------------------------+------------------------------------------------+ ``` -### Period +### 3.13 Period #### 注册语句 @@ -1619,7 +1619,7 @@ select period(s1) from root.test.d3 +-----------------------------+-----------------------+ ``` -### QLB +### 3.14 QLB #### 注册语句 @@ -1710,7 +1710,7 @@ select QLB(s1) from root.test.d1 +-----------------------------+--------------------+ ``` -### Resample +### 3.15 Resample #### 注册语句 @@ -1834,7 +1834,7 @@ select resample(s1,'every'='30m','start'='2021-03-06 15:00:00') from root.test.d +-----------------------------+-----------------------------------------------------------------------+ ``` -### Sample +### 3.16 Sample #### 注册语句 @@ -1931,7 +1931,7 @@ select sample(s1,'method'='isometric','k'='5') from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### Segment +### 3.17 Segment #### 注册语句 @@ -2029,7 +2029,7 @@ select segment(s1,"error"="0.1") from root.test +-----------------------------+------------------------------------+ ``` -### Skew +### 3.18 Skew #### 注册语句 @@ -2096,7 +2096,7 @@ select skew(s1) from root.test.d1 +-----------------------------+-----------------------+ ``` -### Spline +### 3.19 Spline #### 注册语句 @@ -2309,7 +2309,7 @@ select spline(s1, "points"="151") from root.test +-----------------------------+------------------------------------+ ``` -### Spread +### 3.20 Spread #### 注册语句 @@ -2373,7 +2373,7 @@ select spread(s1) from root.test.d1 where time <= 2020-01-01 00:00:30 -### ZScore +### 3.21 ZScore #### 注册语句 @@ -2486,9 +2486,9 @@ select zscore(s1) from root.test --> -## 异常检测 +## 4 异常检测 -### IQR +### 4.1 IQR #### 注册语句 @@ -2563,7 +2563,7 @@ select iqr(s1) from root.test +-----------------------------+-----------------+ ``` -### KSigma +### 4.2 KSigma #### 注册语句 @@ -2636,7 +2636,7 @@ select ksigma(s1,"k"="1.0") from root.test.d1 where time <= 2020-01-01 00:00:30 +-----------------------------+---------------------------------+ ``` -### LOF +### 4.3 LOF #### 注册语句 @@ -2771,7 +2771,7 @@ select lof(s1, "method"="series") from root.test.d1 where time<1000 +-----------------------------+--------------------+ ``` -### MissDetect +### 4.4 MissDetect #### 注册语句 @@ -2864,7 +2864,7 @@ select missdetect(s2,'minlen'='10') from root.test.d2 +-----------------------------+------------------------------------------+ ``` -### Range +### 4.5 Range #### 注册语句 @@ -2936,7 +2936,7 @@ select range(s1,"lower_bound"="101.0","upper_bound"="125.0") from root.test.d1 w +-----------------------------+------------------------------------------------------------------+ ``` -### TwoSidedFilter +### 4.6 TwoSidedFilter #### 注册语句 @@ -3034,7 +3034,7 @@ select TwoSidedFilter(s0, 'len'='5', 'threshold'='0.3') from root.test +-----------------------------+------------+ ``` -### Outlier +### 4.7 Outlier #### 注册语句 @@ -3110,7 +3110,7 @@ select outlier(s1,"r"="5.0","k"="4","w"="10","s"="5") from root.test +-----------------------------+--------------------------------------------------------+ ``` -### MasterTrain +### 4.8 MasterTrain #### 函数简介 @@ -3195,7 +3195,7 @@ select MasterTrain(lo,la,m_lo,m_la,'p'='3','eta'='1.0') from root.test ``` -### MasterDetect +### 4.9 MasterDetect #### 函数简介 @@ -3366,9 +3366,9 @@ select MasterDetect(lo,la,m_lo,m_la,model,'output_type'='anomaly','p'='3','k'='3 --> -## 频域分析 +## 5 频域分析 -### Conv +### 5.1 Conv #### 注册语句 @@ -3422,7 +3422,7 @@ select conv(s1,s2) from root.test.d2 +-----------------------------+--------------------------------------+ ``` -### Deconv +### 5.2 Deconv #### 注册语句 @@ -3505,7 +3505,7 @@ select deconv(s3,s2,'result'='remainder') from root.test.d2 +-----------------------------+--------------------------------------------------------------+ ``` -### DWT +### 5.3 DWT #### 注册语句 @@ -3592,7 +3592,7 @@ select dwt(s1,"method"="haar") from root.test.d1 +-----------------------------+-------------------------------------+ ``` -### FFT +### 5.4 FFT #### 注册语句 @@ -3718,7 +3718,7 @@ select fft(s1, 'result'='real', 'compress'='0.99'), fft(s1, 'result'='imag','com 注:基于傅里叶变换结果的共轭性质,压缩结果只保留前一半;根据给定的压缩参数,从低频到高频保留数据点,直到保留的能量比例超过该值;保留最后一个数据点以表示序列长度。 -### HighPass +### 5.5 HighPass #### 注册语句 @@ -3812,7 +3812,7 @@ select highpass(s1,'wpass'='0.45') from root.test.d1 注:输入序列服从$y=sin(2\pi t/4)+2sin(2\pi t/5)$,长度为20,因此高通滤波之后的输出序列服从$y=sin(2\pi t/4)$。 -### IFFT +### 5.6 IFFT #### 注册语句 @@ -3893,7 +3893,7 @@ select ifft(re, im, 'interval'='1m', 'start'='2021-01-01 00:00:00') from root.te +-----------------------------+-------------------------------------------------------+ ``` -### LowPass +### 5.7 LowPass #### 注册语句 @@ -3983,9 +3983,9 @@ select lowpass(s1,'wpass'='0.45') from root.test.d1 |1970-01-01T08:00:19.000+08:00| -2.664535259100376E-16| +-----------------------------+----------------------------------------+ ``` -## Envelope +### 5.8 Envelope -### 函数简介 +#### 函数简介 本函数通过输入一维浮点数数组和用户指定的调制频率,实现对信号的解调和包络提取。解调的目标是从复杂的信号中提取感兴趣的部分,使其更易理解。比如通过解调可以找到信号的包络,即振幅的变化趋势。 @@ -4005,7 +4005,7 @@ select lowpass(s1,'wpass'='0.45') from root.test.d1 **提示:** 当解调的原始序列的值不连续时,本函数会视为连续处理,建议被分析的时间序列是一段值完整的时间序列。同时建议指定开始时间与结束时间。 -### 使用示例 +#### 使用示例 输入序列: @@ -4073,9 +4073,9 @@ select envelope(s1),envelope(s1,'frequency'='1000'),envelope(s1,'amplification'= --> -## 数据匹配 +## 6 数据匹配 -### Cov +### 6.1 Cov #### 注册语句 @@ -4142,7 +4142,7 @@ select cov(s1,s2) from root.test.d2 +-----------------------------+-------------------------------------+ ``` -### Dtw +### 6.2 Dtw #### 注册语句 @@ -4213,7 +4213,7 @@ select dtw(s1,s2) from root.test.d2 +-----------------------------+-------------------------------------+ ``` -### Pearson +### 6.3 Pearson #### 注册语句 @@ -4279,7 +4279,7 @@ select pearson(s1,s2) from root.test.d2 +-----------------------------+-----------------------------------------+ ``` -### PtnSym +### 6.4 PtnSym #### 注册语句 @@ -4343,7 +4343,7 @@ select ptnsym(s4, 'window'='5', 'threshold'='0') from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### XCorr +### 6.5 XCorr #### 注册语句 @@ -4437,9 +4437,9 @@ select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05 --> -## 数据修复 +## 7 数据修复 -### TimestampRepair +### 7.1 TimestampRepair #### 注册语句 @@ -4447,7 +4447,7 @@ select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05 create function timestamprepair as 'org.apache.iotdb.library.drepair.UDTFTimestampRepair' ``` -### 函数简介 +### 7.2 函数简介 本函数用于时间戳修复。根据给定的标准时间间隔,采用最小化修复代价的方法,通过对数据时间戳的微调,将原本时间戳间隔不稳定的数据修复为严格等间隔的数据。在未给定标准时间间隔的情况下,本函数将使用时间间隔的中位数 (median)、众数 (mode) 或聚类中心 (cluster) 来推算标准时间间隔。 @@ -4463,7 +4463,7 @@ create function timestamprepair as 'org.apache.iotdb.library.drepair.UDTFTimesta **输出序列:** 输出单个序列,类型与输入序列相同。该序列是修复后的输入序列。 -### 使用示例 +### 7.3 使用示例 #### 指定标准时间间隔 @@ -4542,7 +4542,7 @@ select timestamprepair(s1) from root.test.d2 +-----------------------------+--------------------------------+ ``` -### ValueFill +### 7.4 ValueFill #### 注册语句 @@ -4659,7 +4659,7 @@ select valuefill(s1,"method"="previous") from root.test.d2 +-----------------------------+-------------------------------------------+ ``` -### ValueRepair +### 7.5 ValueRepair #### 注册语句 @@ -4781,7 +4781,7 @@ select valuerepair(s1,'method'='LsGreedy') from root.test.d2 +-----------------------------+-------------------------------------------------+ ``` -### MasterRepair +### 7.6 MasterRepair #### 函数简介 @@ -4843,7 +4843,7 @@ select MasterRepair(t1,t2,t3,m1,m2,m3) from root.test +-----------------------------+-------------------------------------------------------------------------------------------+ ``` -### SeasonalRepair +### 7.7 SeasonalRepair #### 函数简介 本函数用于对周期性时间序列的数值进行基于分解的修复。目前,本函数支持两种方法:**Classical**使用经典分解方法得到的残差项检测数值的异常波动,并使用滑动平均修复序列;**Improved**使用改进的分解方法得到的残差项检测数值的异常波动,并使用滑动中值修复序列。 @@ -4966,9 +4966,9 @@ select seasonalrepair(s1,'method'='improved','period'=3) from root.test.d2 --> -## 序列发现 +## 8 序列发现 -### ConsecutiveSequences +### 8.1 ConsecutiveSequences #### 注册语句 @@ -5062,7 +5062,7 @@ select consecutivesequences(s1,s2) from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### ConsecutiveWindows +### 8.2 ConsecutiveWindows #### 注册语句 @@ -5152,9 +5152,9 @@ select consecutivewindows(s1,s2,'length'='10m') from root.test.d1 --> -## 机器学习 +## 9 机器学习 -### AR +### 9.1 AR #### 注册语句 @@ -5221,7 +5221,7 @@ select ar(s0,"p"="2") from root.test.d0 +-----------------------------+---------------------------+ ``` -### Representation +### 9.2 Representation #### 函数简介 @@ -5285,7 +5285,7 @@ select representation(s0,"tb"="3","vb"="2") from root.test.d0 +-----------------------------+-------------------------------------------------+ ``` -### RM +### 9.3 RM #### 函数简介 diff --git a/src/zh/UserGuide/Master/Tree/SQL-Manual/Function-and-Expression.md b/src/zh/UserGuide/Master/Tree/SQL-Manual/Function-and-Expression.md index 560d208b4..a55c164fe 100644 --- a/src/zh/UserGuide/Master/Tree/SQL-Manual/Function-and-Expression.md +++ b/src/zh/UserGuide/Master/Tree/SQL-Manual/Function-and-Expression.md @@ -21,7 +21,7 @@ # 内置函数与表达式 -## 聚合函数 +## 1 聚合函数 聚合函数是多对一函数。它们对一组值进行聚合计算,得到单个聚合结果。 @@ -55,7 +55,7 @@ IoTDB 支持的聚合函数如下: | MIN_BY | MIN_BY(x, y) 求二元输入 x 和 y 在 y 最小时对应的 x 的值。MIN_BY(time, x) 返回 x 取最小值时对应的时间戳。 | 第一个输入 x 可以是任意类型,第二个输入 y 只能是 INT32 INT64 FLOAT DOUBLE | 无 | 与第一个输入 x 的数据类型一致 | -### COUNT_IF +### 1.1 COUNT_IF #### 语法 ```sql @@ -120,7 +120,7 @@ select count_if(s1=0 & s2=0, 3, 'ignoreNull'='false'), count_if(s1=1 & s2=0, 3, +------------------------------------------------------------------------+------------------------------------------------------------------------+ ``` -### TIME_DURATION +### 1.2 TIME_DURATION #### 语法 ```sql time_duration(Path) @@ -174,7 +174,7 @@ select time_duration(s1) from root.db.d1 ``` > 注:若数据点只有一个,则返回0,若数据点为null,则返回null。 -### COUNT_TIME +### 1.3 COUNT_TIME #### 语法 ```sql count_time(*) @@ -286,7 +286,7 @@ select count_time(*) from root.db.** group by([0, 10), 2ms) align by device -### MAX_BY +### 1.4 MAX_BY #### 功能定义 max_by(x, y): 返回 y 最大时对应时间戳下的 x 值。 @@ -502,9 +502,9 @@ IoTDB> select min_by(b, a) from root.test group by ([0,7),4ms) order by time des --> -## 算数运算符和函数 +## 2 算数运算符和函数 -### 算数运算符 +### 2.1 算数运算符 #### 一元算数运算符 @@ -548,7 +548,7 @@ Total line number = 5 It costs 0.014s ``` -### 数学函数 +### 2.2 数学函数 目前 IoTDB 支持下列数学函数,这些数学函数的行为与这些函数在 Java Math 标准库中对应实现的行为一致。 @@ -639,9 +639,9 @@ It costs 0.059s --> -## 比较运算符和函数 +## 3 比较运算符和函数 -### 基本比较运算符 +### 3.1 基本比较运算符 - 输入数据类型: `INT32`, `INT64`, `FLOAT`, `DOUBLE`。 - 注意:会将所有数据转换为`DOUBLE`类型后进行比较。`==`和`!=`可以直接比较两个`BOOLEAN`。 @@ -677,7 +677,7 @@ IoTDB> select a, b, a > 10, a <= b, !(a <= b), a > 10 && a > b from root.test; +-----------------------------+-----------+-----------+----------------+--------------------------+---------------------------+------------------------------------------------+ ``` -### `BETWEEN ... AND ...` 运算符 +### 3.2 `BETWEEN ... AND ...` 运算符 |运算符 |含义| |----------------------------|-----------| @@ -694,7 +694,7 @@ select temperature from root.sg1.d1 where temperature between 36.5 and 40; select temperature from root.sg1.d1 where temperature not between 36.5 and 40; ``` -### 模糊匹配运算符 +### 3.3 模糊匹配运算符 对于 TEXT 类型的数据,支持使用 `Like` 和 `Regexp` 运算符对数据进行模糊匹配 @@ -800,7 +800,7 @@ select b, b like '1%', b regexp '[0-2]' from root.test; +-----------------------------+-----------+-------------------------+--------------------------+ ``` -### `IS NULL` 运算符 +### 3.4 `IS NULL` 运算符 |运算符 |含义| |----------------------------|-----------| @@ -819,7 +819,7 @@ select code from root.sg1.d1 where temperature is null; select code from root.sg1.d1 where temperature is not null; ``` -### `IN` 运算符 +### 3.5 `IN` 运算符 |运算符 |含义| |----------------------------|-----------| @@ -865,7 +865,7 @@ select a, a in (1, 2) from root.test; +-----------------------------+-----------+--------------------+ ``` -### 条件函数 +### 3.6 条件函数 条件函数针对每个数据点进行条件判断,返回布尔值。 @@ -949,16 +949,16 @@ IoTDB> select ts, in_range(ts, 'lower'='2', 'upper'='3.1') from root.test; --> -## 逻辑运算符 +## 4 逻辑运算符 -### 一元逻辑运算符 +### 4.1 一元逻辑运算符 - 支持运算符:`!` - 输入数据类型:`BOOLEAN`。 - 输出数据类型:`BOOLEAN`。 - 注意:`!`的优先级很高,记得使用括号调整优先级。 -### 二元逻辑运算符 +### 4.2 二元逻辑运算符 - 支持运算符 - AND:`and`,`&`, `&&` @@ -1012,9 +1012,9 @@ IoTDB> select a, b, a > 10, a <= b, !(a <= b), a > 10 && a > b from root.test; --> -## 字符串处理 +## 5 字符串处理 -### STRING_CONTAINS +### 5.1 STRING_CONTAINS #### 函数简介 @@ -1049,7 +1049,7 @@ Total line number = 3 It costs 0.007s ``` -### STRING_MATCHES +### 5.2 STRING_MATCHES #### 函数简介 @@ -1084,7 +1084,7 @@ Total line number = 3 It costs 0.007s ``` -### Length +### 5.3 Length #### 函数简介 @@ -1128,7 +1128,7 @@ select s1, length(s1) from root.sg1.d1 +-----------------------------+--------------+----------------------+ ``` -### Locate +### 5.4 Locate #### 函数简介 @@ -1194,7 +1194,7 @@ select s1, locate(s1, "target"="1", "reverse"="true") from root.sg1.d1 +-----------------------------+--------------+------------------------------------------------------+ ``` -### StartsWith +### 5.5 StartsWith #### 函数简介 @@ -1241,7 +1241,7 @@ select s1, startswith(s1, "target"="1") from root.sg1.d1 +-----------------------------+--------------+----------------------------------------+ ``` -### EndsWith +### 5.6 EndsWith #### 函数简介 @@ -1288,7 +1288,7 @@ select s1, endswith(s1, "target"="1") from root.sg1.d1 +-----------------------------+--------------+--------------------------------------+ ``` -### Concat +### 5.7 Concat #### 函数简介 @@ -1356,7 +1356,7 @@ select s1, s2, concat(s1, s2, "target1"="IoT", "target2"="DB", "series_behind"=" +-----------------------------+--------------+--------------+-----------------------------------------------------------------------------------------------+ ``` -### Substring +### 5.8 Substring #### 函数简介 提取字符串的子字符串,从指定的第一个字符开始,并在指定的字符数之后停止。下标从1开始。from 和 for的范围是 INT32 类型取值范围。 @@ -1404,7 +1404,7 @@ select s1, substring(s1 from 1 for 2) from root.sg1.d1 +-----------------------------+--------------+--------------------------------------+ ``` -### Replace +### 5.9 Replace #### 函数简介 将输入序列中的子串替换成目标子串。 @@ -1452,7 +1452,7 @@ select s1, replace(s1, 'es', 'tt') from root.sg1.d1 +-----------------------------+--------------+-----------------------------------+ ``` -### Upper +### 5.10 Upper #### 函数简介 @@ -1496,7 +1496,7 @@ select s1, upper(s1) from root.sg1.d1 +-----------------------------+--------------+---------------------+ ``` -### Lower +### 5.11 Lower #### 函数简介 @@ -1540,7 +1540,7 @@ select s1, lower(s1) from root.sg1.d1 +-----------------------------+--------------+---------------------+ ``` -### Trim +### 5.12 Trim #### 函数简介 @@ -1584,7 +1584,7 @@ select s3, trim(s3) from root.sg1.d1 +-----------------------------+--------------+--------------------+ ``` -### StrCmp +### 5.13 StrCmp #### 函数简介 @@ -1628,7 +1628,7 @@ select s1, s2, strcmp(s1, s2) from root.sg1.d1 +-----------------------------+--------------+--------------+--------------------------------------+ ``` -### StrReplace +### 5.14 StrReplace #### 函数简介 @@ -1706,7 +1706,7 @@ select strreplace(s1, "target"=",", "replace"="/", "limit"="1", "offset"="1", "r +-----------------------------+-----------------------------------------------------+ ``` -### RegexMatch +### 5.15 RegexMatch #### 函数简介 @@ -1763,7 +1763,7 @@ select regexmatch(s1, "regex"="\d+\.\d+\.\d+\.\d+", "group"="0") from root.test. +-----------------------------+----------------------------------------------------------------------+ ``` -### RegexReplace +### 5.16 RegexReplace ##### 函数简介 @@ -1917,9 +1917,9 @@ select regexsplit(s1, "regex"=",", "index"="3") from root.test.d1 --> -## 数据类型转换 +## 6 数据类型转换 -### CAST +### 6.1 CAST #### 函数简介 @@ -2020,7 +2020,7 @@ IoTDB> select cast(s6 as BOOLEAN) from root.sg.d1 where time >= 2 --> -## 常序列生成函数 +## 7 常序列生成函数 常序列生成函数用于生成所有数据点的值都相同的时间序列。 @@ -2078,7 +2078,7 @@ It costs 0.005s --> -## 选择函数 +## 8 选择函数 目前 IoTDB 支持如下选择函数: @@ -2130,9 +2130,9 @@ It costs 0.006s --> -## 区间查询函数 +## 9 区间查询函数 -### 连续满足区间函数 +### 9.1 连续满足区间函数 连续满足条件区间函数用来查询所有满足指定条件的连续区间。 @@ -2206,7 +2206,7 @@ select s1, zero_count(s1), non_zero_count(s2), zero_duration(s3), non_zero_durat --> -## 趋势计算函数 +## 10 趋势计算函数 目前 IoTDB 支持如下趋势计算函数: @@ -2241,7 +2241,7 @@ Total line number = 5 It costs 0.014s ``` -### 使用示例 +### 10.1 使用示例 #### 原始数据 @@ -2321,9 +2321,9 @@ SELECT DIFF(s1, 'ignoreNull'='false'), DIFF(s2, 'ignoreNull'='false') from root. --> -## 采样函数 +## 11 采样函数 -### 等数量分桶降采样函数 +### 11.1 等数量分桶降采样函数 本函数对输入序列进行等数量分桶采样,即根据用户给定的降采样比例和降采样方法将输入序列按固定点数等分为若干桶。在每个桶内通过给定的采样方法进行采样。 @@ -2550,7 +2550,7 @@ Total line number = 10 It costs 0.041s ``` -### M4函数 +### 11.2 M4函数 #### 函数简介 @@ -2724,9 +2724,9 @@ select M4(s1,'timeInterval'='$__interval_ms') from root.sg1.d1 --> -## 时间序列处理 +## 12 时间序列处理 -### CHANGE_POINTS +### 12.1 CHANGE_POINTS #### 函数简介 @@ -2794,9 +2794,9 @@ select change_points(s1), change_points(s2), change_points(s3), change_points(s4 --> -## Lambda 表达式 +## 13 Lambda 表达式 -### JEXL 自定义函数 +### 13.1 JEXL 自定义函数 #### 函数简介 @@ -2877,9 +2877,9 @@ It costs 0.118s --> -## 条件表达式 +## 14 条件表达式 -### CASE +### 14.1 CASE CASE表达式是一种条件表达式,可用于根据特定条件返回不同的值,功能类似于其它语言中的if-else。 CASE表达式由以下部分组成: diff --git a/src/zh/UserGuide/Master/Tree/SQL-Manual/Keywords.md b/src/zh/UserGuide/Master/Tree/SQL-Manual/Keywords.md index 0d681ffbb..f42175a45 100644 --- a/src/zh/UserGuide/Master/Tree/SQL-Manual/Keywords.md +++ b/src/zh/UserGuide/Master/Tree/SQL-Manual/Keywords.md @@ -21,13 +21,13 @@ # 关键字 -保留字(不能用于作为标识符): +## 1 保留字(不能用于作为标识符): - ROOT - TIME - TIMESTAMP -一般关键字: +## 2 一般关键字: - ADD - AFTER diff --git a/src/zh/UserGuide/Master/Tree/SQL-Manual/Operator-and-Expression.md b/src/zh/UserGuide/Master/Tree/SQL-Manual/Operator-and-Expression.md index df99144bf..13ee7f6f2 100644 --- a/src/zh/UserGuide/Master/Tree/SQL-Manual/Operator-and-Expression.md +++ b/src/zh/UserGuide/Master/Tree/SQL-Manual/Operator-and-Expression.md @@ -21,8 +21,8 @@ # 函数与运算符 -## 运算符 -### 算数运算符 +## 1 运算符 +### 1.1 算数运算符 |运算符 |含义| |----------------------------|-----------| |`+` |取正(单目)| @@ -35,7 +35,7 @@ 详细说明及示例见文档 [算数运算符和函数](../SQL-Manual/Function-and-Expression.md#算数运算符)。 -### 比较运算符 +### 1.2 比较运算符 |运算符 |含义| |----------------------------|-----------| |`>` |大于| @@ -57,7 +57,7 @@ 详细说明及示例见文档 [比较运算符和函数](../SQL-Manual/Function-and-Expression.md#比较运算符和函数)。 -### 逻辑运算符 +### 1.3 逻辑运算符 |运算符 |含义| |----------------------------|-----------| |`NOT` / `!` |取非(单目)| @@ -66,7 +66,7 @@ 详细说明及示例见文档 [逻辑运算符](../SQL-Manual/Function-and-Expression.md#逻辑运算符)。 -### 运算符优先级 +### 1.4 运算符优先级 运算符的优先级从高到低排列如下,同一行的运算符优先级相同。 @@ -83,11 +83,11 @@ AND, &, && OR, |, || ``` -## 内置函数 +## 2 内置函数 列表中的函数无须注册即可在 IoTDB 中使用,数据函数质量库中的函数需要参考注册步骤进行注册后才能使用。 -### 聚合函数 +### 2.1 聚合函数 | 函数名 | 功能描述 | 允许的输入类型 | 输出类型 | | ----------- | ------------------------------------------------------------ |------------------------------------------------------| -------------- | @@ -112,7 +112,7 @@ OR, |, || 详细说明及示例见文档 [聚合函数](../SQL-Manual/Function-and-Expression.md#聚合函数)。 -### 数学函数 +### 2.2 数学函数 | 函数名 | 输入序列类型 | 输出序列类型 | 必要属性参数 | Java 标准库中的对应实现 | | ------- | ------------------------------ | ------------------------ |----------------------------------------------|-------------------------------------------------------------------| @@ -140,7 +140,7 @@ OR, |, || 详细说明及示例见文档 [数学函数](../SQL-Manual/Function-and-Expression.md#数学函数)。 -### 比较函数 +### 2.3 比较函数 | 函数名 | 可接收的输入序列类型 | 必要的属性参数 | 输出序列类型 | 功能类型 | |----------|--------------------------------|---------------------------------------|------------|--------------------------------------------------| @@ -149,7 +149,7 @@ OR, |, || 详细说明及示例见文档 [比较运算符和函数](../SQL-Manual/Function-and-Expression.md#比较运算符和函数)。 -### 字符串函数 +### 2.4 字符串函数 | 函数名 | 输入序列类型 | 必要的属性参数 | 输出序列类型 | 功能描述 | |-----------------|-------------|-----------------------------------------------------------------------------------------------------------| ------------ |-------------------------------------------------------------------------| @@ -169,7 +169,7 @@ OR, |, || 详细说明及示例见文档 [字符串处理函数](../SQL-Manual/Function-and-Expression.md#字符串处理)。 -### 数据类型转换函数 +### 2.5 数据类型转换函数 | 函数名 | 必要的属性参数 | 输出序列类型 | 功能类型 | | ------ | ------------------------------------------------------------ | ------------------------ | ---------------------------------- | @@ -177,7 +177,7 @@ OR, |, || 详细说明及示例见文档 [数据类型转换](../SQL-Manual/Function-and-Expression.md#数据类型转换)。 -### 常序列生成函数 +### 2.6 常序列生成函数 | 函数名 | 必要的属性参数 | 输出序列类型 | 功能描述 | | ------ | ------------------------------------------------------------ | -------------------------- | ------------------------------------------------------------ | @@ -187,7 +187,7 @@ OR, |, || 详细说明及示例见文档 [常序列生成函数](../SQL-Manual/Function-and-Expression.md#常序列生成函数)。 -### 选择函数 +### 2.7 选择函数 | 函数名 | 输入序列类型 | 必要的属性参数 | 输出序列类型 | 功能描述 | | -------- |-------------------------------------------------------------------| ------------------------------------------------- | ------------------------ | ------------------------------------------------------------ | @@ -196,7 +196,7 @@ OR, |, || 详细说明及示例见文档 [选择函数](../SQL-Manual/Function-and-Expression.md#选择函数)。 -### 区间查询函数 +### 2.8 区间查询函数 | 函数名 | 输入序列类型 | 属性参数 | 输出序列类型 | 功能描述 | |-------------------|--------------------------------------|------------------------------------------------|-------|------------------------------------------------------------------| @@ -207,7 +207,7 @@ OR, |, || 详细说明及示例见文档 [区间查询函数](../SQL-Manual/Function-and-Expression.md#区间查询函数)。 -### 趋势计算函数 +### 2.9 趋势计算函数 | 函数名 | 输入序列类型 | 输出序列类型 | 功能描述 | | ----------------------- | ----------------------------------------------- | ------------------------ | ------------------------------------------------------------ | @@ -224,7 +224,7 @@ OR, |, || 详细说明及示例见文档 [趋势计算函数](../SQL-Manual/Function-and-Expression.md#趋势计算函数)。 -### 采样函数 +### 2.10 采样函数 | 函数名 | 可接收的输入序列类型 | 必要的属性参数 | 输出序列类型 | 功能类型 | |----------|--------------------------------|---------------------------------------|------------|--------------------------------------------------| @@ -234,8 +234,8 @@ OR, |, || | EQUAL_SIZE_BUCKET_OUTLIER_SAMPLE | INT32 / INT64 / FLOAT / DOUBLE | `proportion`取值范围为`(0, 1]`,默认为`0.1`
`type`取值为`avg`或`stendis`或`cos`或`prenextdis`,默认为`avg`
`number`取值应大于0,默认`3`| INT32 / INT64 / FLOAT / DOUBLE | 返回符合采样比例和桶内采样个数的等分桶离群值采样 | | M4 | INT32 / INT64 / FLOAT / DOUBLE | 包含固定点数的窗口和滑动时间窗口使用不同的属性参数。包含固定点数的窗口使用属性`windowSize`和`slidingStep`。滑动时间窗口使用属性`timeInterval`、`slidingStep`、`displayWindowBegin`和`displayWindowEnd`。更多细节见下文。 | INT32 / INT64 / FLOAT / DOUBLE | 返回每个窗口内的第一个点(`first`)、最后一个点(`last`)、最小值点(`bottom`)、最大值点(`top`)。在一个窗口内的聚合点输出之前,M4会将它们按照时间戳递增排序并且去重。 | -详细说明及示例见文档 [采样函数](./Function-and-Expression.md#采样函数)。 -### 时间序列处理函数 +详细说明及示例见文档 [采样函数](../SQL-Manual/Function-and-Expression.md#采样函数)。 +### 2.11 时间序列处理函数 | 函数名 | 输入序列类型 | 参数 | 输出序列类型 | 功能描述 | | ------------- | ------------------------------ | ---- | ------------------------ | -------------------------- | @@ -244,7 +244,7 @@ OR, |, || 详细说明及示例见文档 [时间序列处理](../SQL-Manual/Function-and-Expression.md#时间序列处理)。 -## Lambda 表达式 +## 3 Lambda 表达式 | 函数名 | 可接收的输入序列类型 | 必要的属性参数 | 输出序列类型 | 功能类型 | | ------ | ----------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------- | ---------------------------------------------- | @@ -252,7 +252,7 @@ OR, |, || 详细说明及示例见文档 [Lambda 表达式](../SQL-Manual/Function-and-Expression.md#Lambda表达式) -## 条件表达式 +## 4 条件表达式 | 表达式名称 | 含义 | |---------------------------|-----------| @@ -260,7 +260,7 @@ OR, |, || 详细说明及示例见文档 [条件表达式](../SQL-Manual/Function-and-Expression.md#条件表达式) -## SELECT 表达式 +## 5 SELECT 表达式 `SELECT` 子句指定查询的输出,由若干个 `selectExpr` 组成。 每个 `selectExpr` 定义了查询结果中的一列或多列。 diff --git a/src/zh/UserGuide/Master/Tree/SQL-Manual/SQL-Manual.md b/src/zh/UserGuide/Master/Tree/SQL-Manual/SQL-Manual.md index 279c3d1c9..fcc4ccff2 100644 --- a/src/zh/UserGuide/Master/Tree/SQL-Manual/SQL-Manual.md +++ b/src/zh/UserGuide/Master/Tree/SQL-Manual/SQL-Manual.md @@ -1,8 +1,8 @@ # SQL手册 -## 元数据操作 +## 1 元数据操作 -### 数据库管理 +### 1.1 数据库管理 #### 创建数据库 @@ -35,7 +35,7 @@ count databases root.sgcc.* count databases root.sgcc ``` -### 时间序列管理 +### 1.2 时间序列管理 #### 创建时间序列 @@ -197,7 +197,7 @@ create aligned timeseries root.sg1.d1(s1 INT32 tags(tag1=v1, tag2=v2) attributes show timeseries where TAGS(tag1)='v1' ``` -### 时间序列路径管理 +### 1.3 时间序列路径管理 #### 查看路径的所有子路径 @@ -251,7 +251,7 @@ IoTDB> count devices root.ln.** IoTDB> count devices where time>=2017-01-01T00:00:00 and time<=2017-11-01T16:26:00; ``` -### 设备模板管理 +### 1.4 设备模板管理 ![img](/img/%E6%A8%A1%E6%9D%BF.png) @@ -327,7 +327,7 @@ IoTDB> unset device template t1 from root.sg1.d1 ```sql IoTDB> drop device template t1 ``` -### 数据存活时间管理 +### 1.5 数据存活时间管理 #### 设置 TTL ```sql @@ -360,27 +360,27 @@ IoTDB> SHOW TTL ON pathPattern ```sql IoTDB> show DEVICES ``` -## 写入数据 +## 2 写入数据 -### 写入单列数据 +### 2.1 写入单列数据 ```sql IoTDB > insert into root.ln.wf02.wt02(timestamp,status) values(1,true) ``` ```sql IoTDB > insert into root.ln.wf02.wt02(timestamp,hardware) values(1, 'v1'),(2, 'v1') ``` -### 写入多列数据 +### 2.2 写入多列数据 ```sql IoTDB > insert into root.ln.wf02.wt02(timestamp, status, hardware) values (2, false, 'v2') ``` ```sql IoTDB > insert into root.ln.wf02.wt02(timestamp, status, hardware) VALUES (3, false, 'v3'),(4, true, 'v4') ``` -### 使用服务器时间戳 +### 2.3 使用服务器时间戳 ```sql IoTDB > insert into root.ln.wf02.wt02(status, hardware) values (false, 'v2') ``` -### 写入对齐时间序列数据 +### 2.4 写入对齐时间序列数据 ```sql IoTDB > create aligned timeseries root.sg1.d1(s1 INT32, s2 DOUBLE) ``` @@ -393,7 +393,7 @@ IoTDB > insert into root.sg1.d1(timestamp, s1, s2) aligned values(2, 2, 2), (3, ```sql IoTDB > select * from root.sg1.d1 ``` -### 加载 TsFile 文件数据 +### 2.5 加载 TsFile 文件数据 load '' [sglevel=int][onSuccess=delete/none] @@ -412,9 +412,9 @@ load '' [sglevel=int][onSuccess=delete/none] - `load '/Users/Desktop/data' onSuccess=delete` - `load '/Users/Desktop/data' sglevel=1 onSuccess=delete` -## 删除数据 +## 3 删除数据 -### 删除单列数据 +### 3.1 删除单列数据 ```sql delete from root.ln.wf02.wt02.status where time<=2017-11-01T16:26:00; ``` @@ -455,7 +455,7 @@ expressions like : time > XXX, time <= XXX, or two atomic expressions connected ```sql delete from root.ln.wf02.wt02.status ``` -### 删除多列数据 +### 3.2 删除多列数据 ```sql delete from root.ln.wf02.wt02.* where time <= 2017-11-01T16:26:00; ``` @@ -465,9 +465,9 @@ IoTDB> delete from root.ln.wf03.wt02.status where time < now() Msg: The statement is executed successfully. ``` -## 数据查询 +## 4 数据查询 -### 基础查询 +### 4.1 基础查询 #### 时间过滤查询 ```sql @@ -489,7 +489,7 @@ select wf01.wt01.status, wf02.wt02.hardware from root.ln where (time > 2017-11-0 ```sql select * from root.ln.** where time > 1 order by time desc limit 10; ``` -### 选择表达式 +### 4.2 选择表达式 #### 使用别名 ```sql @@ -595,7 +595,7 @@ IoTDB> select last status, temperature from root.ln.wf01.wt01 where time >= 2017 ```sql IoTDB> select last * from root.ln.wf01.wt01 order by timeseries desc; ``` -### 查询过滤条件 +### 4.3 查询过滤条件 #### 时间过滤条件 @@ -664,7 +664,7 @@ IoTDB> select * from root.sg.d1 where value regexp '^[A-Za-z]+$' IoTDB> select * from root.sg.d1 where value regexp '^[a-z]+$' and time > 100 ``` -### 分段分组聚合 +### 4.4 分段分组聚合 #### 未指定滑动步长的时间区间分组聚合查询 ```sql @@ -786,7 +786,7 @@ select count(charging_stauts), first_value(soc) from root.sg group by count(char ```sql select count(charging_stauts), first_value(soc) from root.sg group by count(charging_status,5,ignoreNull=false) ``` -### 聚合结果过滤 +### 4.5 聚合结果过滤 不正确的: ```sql @@ -804,7 +804,7 @@ SQL 示例: select count(s1), count(s2) from root.** group by ([1,11),2ms) having count(s2) > 1 align by device; ``` -### 结果集补空值 +### 4.6 结果集补空值 ```sql FILL '(' PREVIOUS | LINEAR | constant (, interval=DURATION_LITERAL)? ')' ``` @@ -828,7 +828,7 @@ select temperature, status from root.sgcc.wf03.wt01 where time >= 2017-11-01T16: ```sql select temperature, status from root.sgcc.wf03.wt01 where time >= 2017-11-01T16:37:00.000 and time <= 2017-11-01T16:40:00.000 fill(true); ``` -### 查询结果分页 +### 4.7 查询结果分页 #### 按行分页 @@ -866,7 +866,7 @@ select max_value(*) from root.ln.wf01.wt01 group by ([2017-11-01T00:00:00, 2017- ```sql select * from root.ln.wf01.wt01 limit 10 offset 100 slimit 2 soffset 0 ``` -### 排序 +### 4.8 排序 时间对齐模式下的排序 ```sql @@ -888,13 +888,13 @@ select * from root.ln.** where time <= 2017-11-01T00:01:00 align by device; ```sql select count(*) from root.ln.** group by ((2017-11-01T00:00:00.000+08:00,2017-11-01T00:03:00.000+08:00],1m) order by device asc,time asc align by device ``` -### 查询对齐模式 +### 4.9 查询对齐模式 #### 按设备对齐 ```sql select * from root.ln.** where time <= 2017-11-01T00:01:00 align by device; ``` -### 查询写回(SELECT INTO) +### 4.10 查询写回(SELECT INTO) #### 整体描述 ```sql @@ -1021,7 +1021,7 @@ select * into ::(backup_${4}) from root.sg.** align by device; select s1, s2 into root.sg_copy.d1(t1, t2), aligned root.sg_copy.d2(t1, t2) from root.sg.d1, root.sg.d2 align by device; ``` -## 运维语句 +## 5 运维语句 生成对应的查询计划 ``` explain select s1,s2 from root.sg.d1 @@ -1030,11 +1030,11 @@ explain select s1,s2 from root.sg.d1 ``` explain analyze select s1,s2 from root.sg.d1 order by s1 ``` -## 运算符 +## 6 运算符 更多见文档[Operator-and-Expression](./Operator-and-Expression.md) -### 算数运算符 +### 6.1 算数运算符 更多见文档 [Arithmetic Operators and Functions](./Operator-and-Expression.md#算数运算符) @@ -1042,7 +1042,7 @@ explain analyze select s1,s2 from root.sg.d1 order by s1 select s1, - s1, s2, + s2, s1 + s2, s1 - s2, s1 * s2, s1 / s2, s1 % s2 from root.sg.d1 ``` -### 比较运算符 +### 6.2 比较运算符 更多见文档[Comparison Operators and Functions](./Operator-and-Expression.md#比较运算符) @@ -1073,7 +1073,7 @@ select code from root.sg1.d1 where code not in ('200', '300', '400', '500'); select a, a in (1, 2) from root.test; ``` -### 逻辑运算符 +### 6.3 逻辑运算符 更多见文档[Logical Operators](./Operator-and-Expression.md#逻辑运算符) @@ -1081,11 +1081,11 @@ select a, a in (1, 2) from root.test; select a, b, a > 10, a <= b, !(a <= b), a > 10 && a > b from root.test; ``` -## 内置函数 +## 7 内置函数 更多见文档[Operator-and-Expression](./Operator-and-Expression.md#聚合函数) -### Aggregate Functions +### 7.1 Aggregate Functions 更多见文档[Aggregate Functions](./Operator-and-Expression.md#聚合函数) @@ -1098,7 +1098,7 @@ select count_if(s1=0 & s2=0, 3, 'ignoreNull'='false'), count_if(s1=1 & s2=0, 3, select time_duration(s1) from root.db.d1; ``` -### 算数函数 +### 7.2 算数函数 更多见文档[Arithmetic Operators and Functions](./Operator-and-Expression.md#数学函数) @@ -1107,7 +1107,7 @@ select s1, sin(s1), cos(s1), tan(s1) from root.sg1.d1 limit 5 offset 1000; select s4,round(s4),round(s4,2),round(s4,-1) from root.sg1.d1; ``` -### 比较函数 +### 7.3 比较函数 更多见文档[Comparison Operators and Functions](./Operator-and-Expression.md#比较函数) @@ -1116,7 +1116,7 @@ select ts, on_off(ts, 'threshold'='2') from root.test; select ts, in_range(ts, 'lower'='2', 'upper'='3.1') from root.test; ``` -### 字符串处理函数 +### 7.4 字符串处理函数 更多见文档[String Processing](./Operator-and-Expression.md#字符串函数) @@ -1144,7 +1144,7 @@ select regexsplit(s1, "regex"=",", "index"="-1") from root.test.d1 select regexsplit(s1, "regex"=",", "index"="3") from root.test.d1 ``` -### 数据类型转换函数 +### 7.5 数据类型转换函数 更多见文档[Data Type Conversion Function](./Operator-and-Expression.md#数据类型转换函数) @@ -1152,7 +1152,7 @@ select regexsplit(s1, "regex"=",", "index"="3") from root.test.d1 SELECT cast(s1 as INT32) from root.sg ``` -### 常序列生成函数 +### 7.6 常序列生成函数 更多见文档[Constant Timeseries Generating Functions](./Operator-and-Expression.md#常序列生成函数) @@ -1160,7 +1160,7 @@ SELECT cast(s1 as INT32) from root.sg select s1, s2, const(s1, 'value'='1024', 'type'='INT64'), pi(s2), e(s1, s2) from root.sg1.d1; ``` -### 选择函数 +### 7.7 选择函数 更多见文档[Selector Functions](./Operator-and-Expression.md#选择函数) @@ -1168,7 +1168,7 @@ select s1, s2, const(s1, 'value'='1024', 'type'='INT64'), pi(s2), e(s1, s2) from select s1, top_k(s1, 'k'='2'), bottom_k(s1, 'k'='2') from root.sg1.d2 where time > 2020-12-10T20:36:15.530+08:00; ``` -### 区间查询函数 +### 7.8 区间查询函数 更多见文档[Continuous Interval Functions](./Operator-and-Expression.md#区间查询函数) @@ -1176,7 +1176,7 @@ select s1, top_k(s1, 'k'='2'), bottom_k(s1, 'k'='2') from root.sg1.d2 where time select s1, zero_count(s1), non_zero_count(s2), zero_duration(s3), non_zero_duration(s4) from root.sg.d2; ``` -### 趋势计算函数 +### 7.9 趋势计算函数 更多见文档[Variation Trend Calculation Functions](./Operator-and-Expression.md#趋势计算函数) @@ -1187,10 +1187,10 @@ SELECT DIFF(s1), DIFF(s2) from root.test; SELECT DIFF(s1, 'ignoreNull'='false'), DIFF(s2, 'ignoreNull'='false') from root.test; ``` -### 采样函数 +### 7.10 采样函数 更多见文档[Sample Functions](./Operator-and-Expression.md#采样函数)。 -### 时间序列处理函数 +### 7.11 时间序列处理函数 更多见文档[Sample Functions](./Operator-and-Expression.md#时间序列处理函数)。 @@ -1204,7 +1204,7 @@ select M4(s1,'timeInterval'='25','displayWindowBegin'='0','displayWindowEnd'='10 select M4(s1,'windowSize'='10') from root.vehicle.d1 ``` -### 时间序列处理函数 +### 7.12 时间序列处理函数 更多见文档[Time-Series](./Operator-and-Expression.md#时间序列处理函数) @@ -1212,11 +1212,11 @@ select M4(s1,'windowSize'='10') from root.vehicle.d1 select change_points(s1), change_points(s2), change_points(s3), change_points(s4), change_points(s5), change_points(s6) from root.testChangePoints.d1 ``` -## 数据质量函数库 +## 8 数据质量函数库 更多见文档[UDF-Libraries](../SQL-Manual/UDF-Libraries.md) -### 数据质量 +### 8.1 数据质量 更多见文档[Data-Quality](../SQL-Manual/UDF-Libraries.md#数据质量) @@ -1241,7 +1241,7 @@ select Validity(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 00: select Accuracy(t1,t2,t3,m1,m2,m3) from root.test ``` -### 数据画像 +### 8.2 数据画像 更多见文档[Data-Profiling](../SQL-Manual/UDF-Libraries.md#数据画像) @@ -1321,7 +1321,7 @@ select stddev(s1) from root.test.d1 select zscore(s1) from root.test ``` -### 异常检测 +### 8.3 异常检测 更多见文档[Anomaly-Detection](../SQL-Manual/UDF-Libraries.md#异常检测) @@ -1356,7 +1356,7 @@ select MasterDetect(lo,la,m_lo,m_la,model,'output_type'='repair','p'='3','k'='3' select MasterDetect(lo,la,m_lo,m_la,model,'output_type'='anomaly','p'='3','k'='3','eta'='1.0') from root.test ``` -### 频域分析 +### 8.4 频域分析 更多见文档[Frequency-Domain](../SQL-Manual/UDF-Libraries.md#频域分析) @@ -1388,7 +1388,7 @@ select lowpass(s1,'wpass'='0.45') from root.test.d1 select envelope(s1) from root.test.d1 ``` -### 数据匹配 +### 8.5 数据匹配 更多见文档[Data-Matching](../SQL-Manual/UDF-Libraries.md#数据匹配) @@ -1409,7 +1409,7 @@ select ptnsym(s4, 'window'='5', 'threshold'='0') from root.test.d1 select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05 ``` -### 数据修复 +### 8.6 数据修复 更多见文档[Data-Repairing](../SQL-Manual/UDF-Libraries.md#数据修复) @@ -1434,7 +1434,7 @@ select seasonalrepair(s1,'period'=3,'k'=2) from root.test.d2 select seasonalrepair(s1,'method'='improved','period'=3) from root.test.d2 ``` -### 序列发现 +### 8.7 序列发现 更多见文档[Series-Discovery](../SQL-Manual/UDF-Libraries.md#序列发现) @@ -1447,7 +1447,7 @@ select consecutivesequences(s1,s2) from root.test.d1 select consecutivewindows(s1,s2,'length'='10m') from root.test.d1 ``` -### 机器学习 +### 8.8 机器学习 更多见文档[Machine-Learning](../SQL-Manual/UDF-Libraries.md#机器学习) @@ -1462,7 +1462,7 @@ select representation(s0,"tb"="3","vb"="2") from root.test.d0 select rm(s0, s1,"tb"="3","vb"="2") from root.test.d0 ``` -## Lambda 表达式 +## 9 Lambda 表达式 更多见文档[Lambda](./Operator-and-Expression.md#lambda-表达式) @@ -1470,7 +1470,7 @@ select rm(s0, s1,"tb"="3","vb"="2") from root.test.d0 select jexl(temperature, 'expr'='x -> {x + x}') as jexl1, jexl(temperature, 'expr'='x -> {x * 3}') as jexl2, jexl(temperature, 'expr'='x -> {x * x}') as jexl3, jexl(temperature, 'expr'='x -> {multiply(x, 100)}') as jexl4, jexl(temperature, st, 'expr'='(x, y) -> {x + y}') as jexl5, jexl(temperature, st, str, 'expr'='(x, y, z) -> {x + y + z}') as jexl6 from root.ln.wf01.wt01;``` ``` -## 条件表达式 +## 10 条件表达式 更多见文档[Conditional Expressions](./Operator-and-Expression.md#条件表达式) @@ -1508,9 +1508,9 @@ end as `result` from root.test4 ``` -## 触发器 +## 11 触发器 -### 使用 SQL 语句注册该触发器 +### 11.1 使用 SQL 语句注册该触发器 ```sql // Create Trigger @@ -1588,7 +1588,7 @@ WITH ( ) ``` -### 卸载触发器 +### 11.2 卸载触发器 #### 卸载触发器的 SQL 语法如下: ```sql @@ -1604,13 +1604,13 @@ dropTrigger ```sql DROP TRIGGER triggerTest1 ``` -### 查询触发器 +### 11.3 查询触发器 ```sql SHOW TRIGGERS ``` -## 连续查询(Continuous Query, CQ) +## 12 连续查询(Continuous Query, CQ) -### 语法 +### 12.1 语法 ```Go CREATE (CONTINUOUS QUERY | CQ) @@ -1746,7 +1746,7 @@ END \> SELECT temperature from root.precalculated_sg.*.* align by device; ``` -### 连续查询的管理 +### 11.2 连续查询的管理 #### 查询系统已有的连续查询 @@ -1789,13 +1789,13 @@ END ```sql SELECT avg(count_s1) from root.sg_count.d; ``` -## 用户自定义函数 +## 12 用户自定义函数 -### UDFParameters +### 12.1 UDFParameters ```sql SELECT UDF(s1, s2, 'key1'='iotdb', 'key2'='123.45') FROM root.sg.d; ``` -### UDF 注册 +### 12.2 UDF 注册 ```sql CREATE FUNCTION AS (USING URI URI-STRING)? @@ -1809,7 +1809,7 @@ CREATE FUNCTION example AS 'org.apache.iotdb.udf.UDTFExample' ```sql CREATE FUNCTION example AS 'org.apache.iotdb.udf.UDTFExample' USING URI 'http://jar/example.jar' ``` -### UDF 卸载 +### 12.3 UDF 卸载 ```sql DROP FUNCTION @@ -1817,7 +1817,7 @@ DROP FUNCTION ```sql DROP FUNCTION example ``` -### UDF 查询 +### 12.4 UDF 查询 #### 带自定义输入参数的查询 ```sql @@ -1836,13 +1836,13 @@ SELECT s1 * example(* / s1 + s2) FROM root.sg.d1; SELECT s1, s2, s1 + example(s1, s2), s1 - example(s1 + example(s1, s2) / s2) FROM root.sg.d1; ``` -### 查看所有注册的 UDF +### 12.5 查看所有注册的 UDF ```sql SHOW FUNCTIONS ``` -## 权限管理 +## 13 权限管理 -### 用户与角色相关 +### 13.1 用户与角色相关 - 创建用户(需 MANAGE_USER 权限) @@ -1947,7 +1947,7 @@ ALTER USER SET PASSWORD ; eg: ALTER USER tempuser SET PASSWORD 'newpwd'; ``` -### 授权与取消授权 +### 13.2 授权与取消授权 用户使用授权语句对赋予其他用户权限,语法如下: diff --git a/src/zh/UserGuide/Master/Tree/SQL-Manual/Syntax-Rule.md b/src/zh/UserGuide/Master/Tree/SQL-Manual/Syntax-Rule.md index 6faaa277c..45e2976d2 100644 --- a/src/zh/UserGuide/Master/Tree/SQL-Manual/Syntax-Rule.md +++ b/src/zh/UserGuide/Master/Tree/SQL-Manual/Syntax-Rule.md @@ -20,11 +20,11 @@ --> # 标识符 -## 字面值常量 +## 1 字面值常量 该部分对 IoTDB 中支持的字面值常量进行说明,包括字符串常量、数值型常量、时间戳常量、布尔型常量和空值。 -### 字符串常量 +### 1.1 字符串常量 在 IoTDB 中,字符串是由**单引号(`'`)或双引号(`"`)字符括起来的字符序列**。示例如下: @@ -124,7 +124,7 @@ """string" // "string ``` -### 数值型常量 +### 1.2 数值型常量 数值型常量包括整型和浮点型。 @@ -136,27 +136,27 @@ 在浮点上下文中可以使用整数,它会被解释为等效的浮点数。 -### 时间戳常量 +### 1.3 时间戳常量 -时间戳是一个数据到来的时间点,在 IoTDB 中分为绝对时间戳和相对时间戳。详细信息可参考 [数据类型文档](../Basic-Concept/Data-Type.md)。 +时间戳是一个数据到来的时间点,在 IoTDB 中分为绝对时间戳和相对时间戳。详细信息可参考 [数据类型文档](../Background-knowledge/Data-Type.md)。 特别地,`NOW()`表示语句开始执行时的服务端系统时间戳。 -### 布尔型常量 +### 1.4 布尔型常量 布尔值常量 `TRUE` 和 `FALSE` 分别等价于 `1` 和 `0`,它们对大小写不敏感。 -### 空值 +### 1.5 空值 `NULL`值表示没有数据。`NULL`对大小写不敏感。 -## 标识符 +## 2 标识符 -### 使用场景 +### 2.1 使用场景 在 IoTDB 中,触发器名称、UDF函数名、元数据模板名称、用户与角色名、连续查询标识、Pipe、PipeSink、键值对中的键和值、别名等可以作为标识符。 -### 约束 +### 2.2 约束 请注意,此处约束是标识符的通用约束,具体标识符可能还附带其它约束条件,如用户名限制字符数大于等于4,更严格的约束请参考具体标识符相关的说明文档。 @@ -166,7 +166,7 @@ - [ 0-9 a-z A-Z _ ] (字母,数字,下划线) - ['\u2E80'..'\u9FFF'] (UNICODE 中文字符) -### 反引号 +### 2.3 反引号 **如果出现如下情况,标识符需要使用反引号进行引用:** diff --git a/src/zh/UserGuide/Master/Tree/SQL-Manual/UDF-Libraries_apache.md b/src/zh/UserGuide/Master/Tree/SQL-Manual/UDF-Libraries_apache.md index b35e35e1a..03f2831c0 100644 --- a/src/zh/UserGuide/Master/Tree/SQL-Manual/UDF-Libraries_apache.md +++ b/src/zh/UserGuide/Master/Tree/SQL-Manual/UDF-Libraries_apache.md @@ -24,7 +24,7 @@ > 注意:当前UDF函数库中的函数仅支持毫秒级的时间戳精度。 -## 安装步骤 +## 1 安装步骤 1. 请获取与 IoTDB 版本兼容的 UDF 函数库 JAR 包的压缩包。 | UDF 安装包 | 支持的 IoTDB 版本 | 下载链接 | @@ -42,9 +42,9 @@ - SQL汇总语句 - 打开压缩包中的SQl文件,复制全部 SQL 语句,在 IoTDB 的 SQL 命令行终端(CLI)的 SQL 操作界面中,执行全部 SQl 语句批量注册 UDF -## 数据质量 +## 2 数据质量 -### Completeness +### 2.1 Completeness #### 注册语句 @@ -176,7 +176,7 @@ select completeness(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 +-----------------------------+--------------------------------------------+ ``` -### Consistency +### 2.2 Consistency #### 注册语句 @@ -307,7 +307,7 @@ select consistency(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 +-----------------------------+-------------------------------------------+ ``` -### Timeliness +### 2.3 Timeliness #### 注册语句 @@ -438,7 +438,7 @@ select timeliness(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 0 +-----------------------------+------------------------------------------+ ``` -### Validity +### 2.4 Validity #### 注册语句 @@ -592,9 +592,9 @@ select validity(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 00: --> -## 数据画像 +## 3 数据画像 -### ACF +### 3.1 ACF #### 注册语句 @@ -657,7 +657,7 @@ select acf(s1) from root.test.d1 where time <= 2020-01-01 00:00:05 +-----------------------------+--------------------+ ``` -### Distinct +### 3.2 Distinct #### 注册语句 @@ -716,7 +716,7 @@ select distinct(s2) from root.test.d2 +-----------------------------+-------------------------+ ``` -### Histogram +### 3.3 Histogram #### 注册语句 @@ -802,7 +802,7 @@ select histogram(s1,"min"="1","max"="20","count"="10") from root.test.d1 +-----------------------------+---------------------------------------------------------------+ ``` -### Integral +### 3.4 Integral #### 注册语句 @@ -899,7 +899,7 @@ select integral(s1, "unit"="1m") from root.test.d1 where time <= 2020-01-01 00:0 其计算公式为: $$\frac{1}{2\times 60}[(1+2) \times 1 + (2+3) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] = 0.958$$ -### IntegralAvg +### 3.5 IntegralAvg #### 注册语句 @@ -965,7 +965,7 @@ select integralavg(s1) from root.test.d1 where time <= 2020-01-01 00:00:10 其计算公式为: $$\frac{1}{2}[(1+2)\times 1 + (2+5) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] / 10 = 5.75$$ -### Mad +### 3.6 Mad #### 注册语句 @@ -1065,7 +1065,7 @@ select mad(s1, "error"="0.01") from root.test +-----------------------------+---------------------------------+ ``` -### Median +### 3.7 Median #### 注册语句 @@ -1135,7 +1135,7 @@ select median(s1, "error"="0.01") from root.test +-----------------------------+------------------------------------+ ``` -### MinMax +### 3.8 MinMax #### 注册语句 @@ -1229,7 +1229,7 @@ select minmax(s1) from root.test -### MvAvg +### 3.9 MvAvg #### 注册语句 @@ -1317,7 +1317,7 @@ select mvavg(s1, "window"="3") from root.test +-----------------------------+---------------------------------+ ``` -### PACF +### 3.10 PACF #### 注册语句 @@ -1377,7 +1377,7 @@ select pacf(s1, "lag"="5") from root.test.d1 +-----------------------------+--------------------------------+ ``` -### Percentile +### 3.11 Percentile #### 注册语句 @@ -1502,7 +1502,7 @@ select percentile(s1, "rank"="0.2", "error"="0.01") from root.test ``` -### Quantile +### 3.12 Quantile #### 注册语句 @@ -1565,7 +1565,7 @@ select quantile(s1, "rank"="0.2", "K"="800") from root.test1 +-----------------------------+------------------------------------------------+ ``` -### Period +### 3.13 Period #### 注册语句 @@ -1619,7 +1619,7 @@ select period(s1) from root.test.d3 +-----------------------------+-----------------------+ ``` -### QLB +### 3.14 QLB #### 注册语句 @@ -1710,7 +1710,7 @@ select QLB(s1) from root.test.d1 +-----------------------------+--------------------+ ``` -### Resample +### 3.15 Resample #### 注册语句 @@ -1834,7 +1834,7 @@ select resample(s1,'every'='30m','start'='2021-03-06 15:00:00') from root.test.d +-----------------------------+-----------------------------------------------------------------------+ ``` -### Sample +### 3.16 Sample #### 注册语句 @@ -1931,7 +1931,7 @@ select sample(s1,'method'='isometric','k'='5') from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### Segment +### 3.17 Segment #### 注册语句 @@ -2029,7 +2029,7 @@ select segment(s1,"error"="0.1") from root.test +-----------------------------+------------------------------------+ ``` -### Skew +### 3.18 Skew #### 注册语句 @@ -2096,7 +2096,7 @@ select skew(s1) from root.test.d1 +-----------------------------+-----------------------+ ``` -### Spline +### 3.19 Spline #### 注册语句 @@ -2309,7 +2309,7 @@ select spline(s1, "points"="151") from root.test +-----------------------------+------------------------------------+ ``` -### Spread +### 3.20 Spread #### 注册语句 @@ -2373,7 +2373,7 @@ select spread(s1) from root.test.d1 where time <= 2020-01-01 00:00:30 -### ZScore +### 3.21 ZScore #### 注册语句 @@ -2486,9 +2486,9 @@ select zscore(s1) from root.test --> -## 异常检测 +## 4 异常检测 -### IQR +### 4.1 IQR #### 注册语句 @@ -2563,7 +2563,7 @@ select iqr(s1) from root.test +-----------------------------+-----------------+ ``` -### KSigma +### 4.2 KSigma #### 注册语句 @@ -2636,7 +2636,7 @@ select ksigma(s1,"k"="1.0") from root.test.d1 where time <= 2020-01-01 00:00:30 +-----------------------------+---------------------------------+ ``` -### LOF +### 4.3 LOF #### 注册语句 @@ -2771,7 +2771,7 @@ select lof(s1, "method"="series") from root.test.d1 where time<1000 +-----------------------------+--------------------+ ``` -### MissDetect +### 4.4 MissDetect #### 注册语句 @@ -2864,7 +2864,7 @@ select missdetect(s2,'minlen'='10') from root.test.d2 +-----------------------------+------------------------------------------+ ``` -### Range +### 4.5 Range #### 注册语句 @@ -2936,7 +2936,7 @@ select range(s1,"lower_bound"="101.0","upper_bound"="125.0") from root.test.d1 w +-----------------------------+------------------------------------------------------------------+ ``` -### TwoSidedFilter +### 4.6 TwoSidedFilter #### 注册语句 @@ -3034,7 +3034,7 @@ select TwoSidedFilter(s0, 'len'='5', 'threshold'='0.3') from root.test +-----------------------------+------------+ ``` -### Outlier +### 4.7 Outlier #### 注册语句 @@ -3110,7 +3110,7 @@ select outlier(s1,"r"="5.0","k"="4","w"="10","s"="5") from root.test +-----------------------------+--------------------------------------------------------+ ``` -### MasterTrain +### 4.8 MasterTrain #### 函数简介 @@ -3195,7 +3195,7 @@ select MasterTrain(lo,la,m_lo,m_la,'p'='3','eta'='1.0') from root.test ``` -### MasterDetect +### 4.9 MasterDetect #### 函数简介 @@ -3366,9 +3366,9 @@ select MasterDetect(lo,la,m_lo,m_la,model,'output_type'='anomaly','p'='3','k'='3 --> -## 频域分析 +## 5 频域分析 -### Conv +### 5.1 Conv #### 注册语句 @@ -3422,7 +3422,7 @@ select conv(s1,s2) from root.test.d2 +-----------------------------+--------------------------------------+ ``` -### Deconv +### 5.2 Deconv #### 注册语句 @@ -3505,7 +3505,7 @@ select deconv(s3,s2,'result'='remainder') from root.test.d2 +-----------------------------+--------------------------------------------------------------+ ``` -### DWT +### 5.3 DWT #### 注册语句 @@ -3592,7 +3592,7 @@ select dwt(s1,"method"="haar") from root.test.d1 +-----------------------------+-------------------------------------+ ``` -### FFT +### 5.4 FFT #### 注册语句 @@ -3718,7 +3718,7 @@ select fft(s1, 'result'='real', 'compress'='0.99'), fft(s1, 'result'='imag','com 注:基于傅里叶变换结果的共轭性质,压缩结果只保留前一半;根据给定的压缩参数,从低频到高频保留数据点,直到保留的能量比例超过该值;保留最后一个数据点以表示序列长度。 -### HighPass +### 5.5 HighPass #### 注册语句 @@ -3812,7 +3812,7 @@ select highpass(s1,'wpass'='0.45') from root.test.d1 注:输入序列服从$y=sin(2\pi t/4)+2sin(2\pi t/5)$,长度为20,因此高通滤波之后的输出序列服从$y=sin(2\pi t/4)$。 -### IFFT +### 5.6 IFFT #### 注册语句 @@ -3893,7 +3893,7 @@ select ifft(re, im, 'interval'='1m', 'start'='2021-01-01 00:00:00') from root.te +-----------------------------+-------------------------------------------------------+ ``` -### LowPass +### 5.7 LowPass #### 注册语句 @@ -3983,9 +3983,9 @@ select lowpass(s1,'wpass'='0.45') from root.test.d1 |1970-01-01T08:00:19.000+08:00| -2.664535259100376E-16| +-----------------------------+----------------------------------------+ ``` -## Envelope +### 5.8 Envelope -### 函数简介 +#### 函数简介 本函数通过输入一维浮点数数组和用户指定的调制频率,实现对信号的解调和包络提取。解调的目标是从复杂的信号中提取感兴趣的部分,使其更易理解。比如通过解调可以找到信号的包络,即振幅的变化趋势。 @@ -4005,7 +4005,7 @@ select lowpass(s1,'wpass'='0.45') from root.test.d1 **提示:** 当解调的原始序列的值不连续时,本函数会视为连续处理,建议被分析的时间序列是一段值完整的时间序列。同时建议指定开始时间与结束时间。 -### 使用示例 +#### 使用示例 输入序列: @@ -4073,9 +4073,9 @@ select envelope(s1),envelope(s1,'frequency'='1000'),envelope(s1,'amplification'= --> -## 数据匹配 +## 6 数据匹配 -### Cov +### 6.1 Cov #### 注册语句 @@ -4142,7 +4142,7 @@ select cov(s1,s2) from root.test.d2 +-----------------------------+-------------------------------------+ ``` -### Dtw +### 6.2 Dtw #### 注册语句 @@ -4213,7 +4213,7 @@ select dtw(s1,s2) from root.test.d2 +-----------------------------+-------------------------------------+ ``` -### Pearson +### 6.3 Pearson #### 注册语句 @@ -4279,7 +4279,7 @@ select pearson(s1,s2) from root.test.d2 +-----------------------------+-----------------------------------------+ ``` -### PtnSym +### 6.4 PtnSym #### 注册语句 @@ -4343,7 +4343,7 @@ select ptnsym(s4, 'window'='5', 'threshold'='0') from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### XCorr +### 6.5 XCorr #### 注册语句 @@ -4437,9 +4437,9 @@ select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05 --> -## 数据修复 +## 7 数据修复 -### TimestampRepair +### 7.1 TimestampRepair #### 注册语句 @@ -4447,7 +4447,7 @@ select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05 create function timestamprepair as 'org.apache.iotdb.library.drepair.UDTFTimestampRepair' ``` -### 函数简介 +### 7.2 函数简介 本函数用于时间戳修复。根据给定的标准时间间隔,采用最小化修复代价的方法,通过对数据时间戳的微调,将原本时间戳间隔不稳定的数据修复为严格等间隔的数据。在未给定标准时间间隔的情况下,本函数将使用时间间隔的中位数 (median)、众数 (mode) 或聚类中心 (cluster) 来推算标准时间间隔。 @@ -4463,7 +4463,7 @@ create function timestamprepair as 'org.apache.iotdb.library.drepair.UDTFTimesta **输出序列:** 输出单个序列,类型与输入序列相同。该序列是修复后的输入序列。 -### 使用示例 +### 7.3 使用示例 #### 指定标准时间间隔 @@ -4542,7 +4542,7 @@ select timestamprepair(s1) from root.test.d2 +-----------------------------+--------------------------------+ ``` -### ValueFill +### 7.4 ValueFill #### 注册语句 @@ -4659,7 +4659,7 @@ select valuefill(s1,"method"="previous") from root.test.d2 +-----------------------------+-------------------------------------------+ ``` -### ValueRepair +### 7.5 ValueRepair #### 注册语句 @@ -4781,7 +4781,7 @@ select valuerepair(s1,'method'='LsGreedy') from root.test.d2 +-----------------------------+-------------------------------------------------+ ``` -### MasterRepair +### 7.6 MasterRepair #### 函数简介 @@ -4843,7 +4843,7 @@ select MasterRepair(t1,t2,t3,m1,m2,m3) from root.test +-----------------------------+-------------------------------------------------------------------------------------------+ ``` -### SeasonalRepair +### 7.7 SeasonalRepair #### 函数简介 本函数用于对周期性时间序列的数值进行基于分解的修复。目前,本函数支持两种方法:**Classical**使用经典分解方法得到的残差项检测数值的异常波动,并使用滑动平均修复序列;**Improved**使用改进的分解方法得到的残差项检测数值的异常波动,并使用滑动中值修复序列。 @@ -4966,9 +4966,9 @@ select seasonalrepair(s1,'method'='improved','period'=3) from root.test.d2 --> -## 序列发现 +## 8 序列发现 -### ConsecutiveSequences +### 8.1 ConsecutiveSequences #### 注册语句 @@ -5062,7 +5062,7 @@ select consecutivesequences(s1,s2) from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### ConsecutiveWindows +### 8.2 ConsecutiveWindows #### 注册语句 @@ -5152,9 +5152,9 @@ select consecutivewindows(s1,s2,'length'='10m') from root.test.d1 --> -## 机器学习 +## 9 机器学习 -### AR +### 9.1 AR #### 注册语句 @@ -5221,7 +5221,7 @@ select ar(s0,"p"="2") from root.test.d0 +-----------------------------+---------------------------+ ``` -### Representation +### 9.2 Representation #### 函数简介 @@ -5285,7 +5285,7 @@ select representation(s0,"tb"="3","vb"="2") from root.test.d0 +-----------------------------+-------------------------------------------------+ ``` -### RM +### 9.3 RM #### 函数简介 diff --git a/src/zh/UserGuide/Master/Tree/SQL-Manual/UDF-Libraries_timecho.md b/src/zh/UserGuide/Master/Tree/SQL-Manual/UDF-Libraries_timecho.md index 0d45eecfa..5321bc23d 100644 --- a/src/zh/UserGuide/Master/Tree/SQL-Manual/UDF-Libraries_timecho.md +++ b/src/zh/UserGuide/Master/Tree/SQL-Manual/UDF-Libraries_timecho.md @@ -24,7 +24,7 @@ > 注意:当前UDF函数库中的函数仅支持毫秒级的时间戳精度。 -## 安装步骤 +## 1 安装步骤 1. 请获取与 IoTDB 版本兼容的 UDF 函数库 JAR 包的压缩包。 | UDF 安装包 | 支持的 IoTDB 版本 | 下载链接 | @@ -41,9 +41,10 @@ - SQL汇总语句 - 打开压缩包中的SQl文件,复制全部 SQL 语句,在 IoTDB 的 SQL 命令行终端(CLI)或可视化控制台(Workbench)的 SQL 操作界面中,执行全部 SQl 语句批量注册 UDF -## 数据质量 + +## 2 数据质量 -### Completeness +### 2.1 Completeness #### 注册语句 @@ -175,7 +176,7 @@ select completeness(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 +-----------------------------+--------------------------------------------+ ``` -### Consistency +### 2.2 Consistency #### 注册语句 @@ -306,7 +307,7 @@ select consistency(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 +-----------------------------+-------------------------------------------+ ``` -### Timeliness +### 2.3 Timeliness #### 注册语句 @@ -437,7 +438,7 @@ select timeliness(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 0 +-----------------------------+------------------------------------------+ ``` -### Validity +### 2.4 Validity #### 注册语句 @@ -591,9 +592,9 @@ select validity(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 00: --> -## 数据画像 +## 3 数据画像 -### ACF +### 3.1 ACF #### 注册语句 @@ -656,7 +657,7 @@ select acf(s1) from root.test.d1 where time <= 2020-01-01 00:00:05 +-----------------------------+--------------------+ ``` -### Distinct +### 3.2 Distinct #### 注册语句 @@ -715,7 +716,7 @@ select distinct(s2) from root.test.d2 +-----------------------------+-------------------------+ ``` -### Histogram +### 3.3 Histogram #### 注册语句 @@ -801,7 +802,7 @@ select histogram(s1,"min"="1","max"="20","count"="10") from root.test.d1 +-----------------------------+---------------------------------------------------------------+ ``` -### Integral +### 3.4 Integral #### 注册语句 @@ -898,7 +899,7 @@ select integral(s1, "unit"="1m") from root.test.d1 where time <= 2020-01-01 00:0 其计算公式为: $$\frac{1}{2\times 60}[(1+2) \times 1 + (2+3) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] = 0.958$$ -### IntegralAvg +### 3.5 IntegralAvg #### 注册语句 @@ -964,7 +965,7 @@ select integralavg(s1) from root.test.d1 where time <= 2020-01-01 00:00:10 其计算公式为: $$\frac{1}{2}[(1+2)\times 1 + (2+5) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] / 10 = 5.75$$ -### Mad +### 3.6 Mad #### 注册语句 @@ -1064,7 +1065,7 @@ select mad(s1, "error"="0.01") from root.test +-----------------------------+---------------------------------+ ``` -### Median +### 3.7 Median #### 注册语句 @@ -1134,7 +1135,7 @@ select median(s1, "error"="0.01") from root.test +-----------------------------+------------------------------------+ ``` -### MinMax +### 3.8 MinMax #### 注册语句 @@ -1228,7 +1229,7 @@ select minmax(s1) from root.test -### MvAvg +### 3.9 MvAvg #### 注册语句 @@ -1316,7 +1317,7 @@ select mvavg(s1, "window"="3") from root.test +-----------------------------+---------------------------------+ ``` -### PACF +### 3.10 PACF #### 注册语句 @@ -1376,7 +1377,7 @@ select pacf(s1, "lag"="5") from root.test.d1 +-----------------------------+--------------------------------+ ``` -### Percentile +### 3.11 Percentile #### 注册语句 @@ -1501,7 +1502,7 @@ select percentile(s1, "rank"="0.2", "error"="0.01") from root.test ``` -### Quantile +### 3.12 Quantile #### 注册语句 @@ -1564,7 +1565,7 @@ select quantile(s1, "rank"="0.2", "K"="800") from root.test1 +-----------------------------+------------------------------------------------+ ``` -### Period +### 3.13 Period #### 注册语句 @@ -1618,7 +1619,7 @@ select period(s1) from root.test.d3 +-----------------------------+-----------------------+ ``` -### QLB +### 3.14 QLB #### 注册语句 @@ -1709,7 +1710,7 @@ select QLB(s1) from root.test.d1 +-----------------------------+--------------------+ ``` -### Resample +### 3.15 Resample #### 注册语句 @@ -1833,7 +1834,7 @@ select resample(s1,'every'='30m','start'='2021-03-06 15:00:00') from root.test.d +-----------------------------+-----------------------------------------------------------------------+ ``` -### Sample +### 3.16 Sample #### 注册语句 @@ -1930,7 +1931,7 @@ select sample(s1,'method'='isometric','k'='5') from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### Segment +### 3.17 Segment #### 注册语句 @@ -2028,7 +2029,7 @@ select segment(s1,"error"="0.1") from root.test +-----------------------------+------------------------------------+ ``` -### Skew +### 3.18 Skew #### 注册语句 @@ -2095,7 +2096,7 @@ select skew(s1) from root.test.d1 +-----------------------------+-----------------------+ ``` -### Spline +### 3.19 Spline #### 注册语句 @@ -2308,7 +2309,7 @@ select spline(s1, "points"="151") from root.test +-----------------------------+------------------------------------+ ``` -### Spread +### 3.20 Spread #### 注册语句 @@ -2372,7 +2373,7 @@ select spread(s1) from root.test.d1 where time <= 2020-01-01 00:00:30 -### ZScore +### 3.21 ZScore #### 注册语句 @@ -2485,9 +2486,9 @@ select zscore(s1) from root.test --> -## 异常检测 +## 4 异常检测 -### IQR +### 4.1 IQR #### 注册语句 @@ -2562,7 +2563,7 @@ select iqr(s1) from root.test +-----------------------------+-----------------+ ``` -### KSigma +### 4.2 KSigma #### 注册语句 @@ -2635,7 +2636,7 @@ select ksigma(s1,"k"="1.0") from root.test.d1 where time <= 2020-01-01 00:00:30 +-----------------------------+---------------------------------+ ``` -### LOF +### 4.3 LOF #### 注册语句 @@ -2770,7 +2771,7 @@ select lof(s1, "method"="series") from root.test.d1 where time<1000 +-----------------------------+--------------------+ ``` -### MissDetect +### 4.4 MissDetect #### 注册语句 @@ -2863,7 +2864,7 @@ select missdetect(s2,'minlen'='10') from root.test.d2 +-----------------------------+------------------------------------------+ ``` -### Range +### 4.5 Range #### 注册语句 @@ -2935,7 +2936,7 @@ select range(s1,"lower_bound"="101.0","upper_bound"="125.0") from root.test.d1 w +-----------------------------+------------------------------------------------------------------+ ``` -### TwoSidedFilter +### 4.6 TwoSidedFilter #### 注册语句 @@ -3033,7 +3034,7 @@ select TwoSidedFilter(s0, 'len'='5', 'threshold'='0.3') from root.test +-----------------------------+------------+ ``` -### Outlier +### 4.7 Outlier #### 注册语句 @@ -3109,7 +3110,7 @@ select outlier(s1,"r"="5.0","k"="4","w"="10","s"="5") from root.test +-----------------------------+--------------------------------------------------------+ ``` -### MasterTrain +### 4.8 MasterTrain #### 函数简介 @@ -3194,7 +3195,7 @@ select MasterTrain(lo,la,m_lo,m_la,'p'='3','eta'='1.0') from root.test ``` -### MasterDetect +### 4.9 MasterDetect #### 函数简介 @@ -3365,9 +3366,9 @@ select MasterDetect(lo,la,m_lo,m_la,model,'output_type'='anomaly','p'='3','k'='3 --> -## 频域分析 +## 5 频域分析 -### Conv +### 5.1 Conv #### 注册语句 @@ -3421,7 +3422,7 @@ select conv(s1,s2) from root.test.d2 +-----------------------------+--------------------------------------+ ``` -### Deconv +### 5.2 Deconv #### 注册语句 @@ -3504,7 +3505,7 @@ select deconv(s3,s2,'result'='remainder') from root.test.d2 +-----------------------------+--------------------------------------------------------------+ ``` -### DWT +### 5.3 DWT #### 注册语句 @@ -3591,7 +3592,7 @@ select dwt(s1,"method"="haar") from root.test.d1 +-----------------------------+-------------------------------------+ ``` -### FFT +### 5.4 FFT #### 注册语句 @@ -3717,7 +3718,7 @@ select fft(s1, 'result'='real', 'compress'='0.99'), fft(s1, 'result'='imag','com 注:基于傅里叶变换结果的共轭性质,压缩结果只保留前一半;根据给定的压缩参数,从低频到高频保留数据点,直到保留的能量比例超过该值;保留最后一个数据点以表示序列长度。 -### HighPass +### 5.5 HighPass #### 注册语句 @@ -3811,7 +3812,7 @@ select highpass(s1,'wpass'='0.45') from root.test.d1 注:输入序列服从$y=sin(2\pi t/4)+2sin(2\pi t/5)$,长度为20,因此高通滤波之后的输出序列服从$y=sin(2\pi t/4)$。 -### IFFT +### 5.6 IFFT #### 注册语句 @@ -3892,7 +3893,7 @@ select ifft(re, im, 'interval'='1m', 'start'='2021-01-01 00:00:00') from root.te +-----------------------------+-------------------------------------------------------+ ``` -### LowPass +### 5.7 LowPass #### 注册语句 @@ -3986,7 +3987,7 @@ select lowpass(s1,'wpass'='0.45') from root.test.d1 注:输入序列服从$y=sin(2\pi t/4)+2sin(2\pi t/5)$,长度为20,因此低通滤波之后的输出序列服从$y=2sin(2\pi t/5)$。 -### Envelope +### 5.8 Envelope #### 注册语句 @@ -4059,9 +4060,9 @@ select envelope(s1),envelope(s1,'frequency'='1000'),envelope(s1,'amplification'= ``` -## 数据匹配 +## 6 数据匹配 -### Cov +### 6.1 Cov #### 注册语句 @@ -4128,7 +4129,7 @@ select cov(s1,s2) from root.test.d2 +-----------------------------+-------------------------------------+ ``` -### Dtw +### 6.2 Dtw #### 注册语句 @@ -4199,7 +4200,7 @@ select dtw(s1,s2) from root.test.d2 +-----------------------------+-------------------------------------+ ``` -### Pearson +### 6.3 Pearson #### 注册语句 @@ -4265,7 +4266,7 @@ select pearson(s1,s2) from root.test.d2 +-----------------------------+-----------------------------------------+ ``` -### PtnSym +### 6.4 PtnSym #### 注册语句 @@ -4329,7 +4330,7 @@ select ptnsym(s4, 'window'='5', 'threshold'='0') from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### XCorr +### 6.5 XCorr #### 注册语句 @@ -4423,9 +4424,9 @@ select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05 --> -## 数据修复 +## 7 数据修复 -### TimestampRepair +### 7.1 TimestampRepair #### 注册语句 @@ -4433,7 +4434,7 @@ select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05 create function timestamprepair as 'org.apache.iotdb.library.drepair.UDTFTimestampRepair' ``` -### 函数简介 +### 7.2 函数简介 本函数用于时间戳修复。根据给定的标准时间间隔,采用最小化修复代价的方法,通过对数据时间戳的微调,将原本时间戳间隔不稳定的数据修复为严格等间隔的数据。在未给定标准时间间隔的情况下,本函数将使用时间间隔的中位数 (median)、众数 (mode) 或聚类中心 (cluster) 来推算标准时间间隔。 @@ -4449,7 +4450,7 @@ create function timestamprepair as 'org.apache.iotdb.library.drepair.UDTFTimesta **输出序列:** 输出单个序列,类型与输入序列相同。该序列是修复后的输入序列。 -### 使用示例 +### 7.3 使用示例 #### 指定标准时间间隔 @@ -4528,7 +4529,7 @@ select timestamprepair(s1) from root.test.d2 +-----------------------------+--------------------------------+ ``` -### ValueFill +### 7.4 ValueFill #### 注册语句 @@ -4645,7 +4646,7 @@ select valuefill(s1,"method"="previous") from root.test.d2 +-----------------------------+-------------------------------------------+ ``` -### ValueRepair +### 7.5 ValueRepair #### 注册语句 @@ -4767,7 +4768,7 @@ select valuerepair(s1,'method'='LsGreedy') from root.test.d2 +-----------------------------+-------------------------------------------------+ ``` -### MasterRepair +### 7.6 MasterRepair #### 函数简介 @@ -4829,7 +4830,7 @@ select MasterRepair(t1,t2,t3,m1,m2,m3) from root.test +-----------------------------+-------------------------------------------------------------------------------------------+ ``` -### SeasonalRepair +### 7.7 SeasonalRepair #### 函数简介 本函数用于对周期性时间序列的数值进行基于分解的修复。目前,本函数支持两种方法:**Classical**使用经典分解方法得到的残差项检测数值的异常波动,并使用滑动平均修复序列;**Improved**使用改进的分解方法得到的残差项检测数值的异常波动,并使用滑动中值修复序列。 @@ -4952,9 +4953,9 @@ select seasonalrepair(s1,'method'='improved','period'=3) from root.test.d2 --> -## 序列发现 +## 8 序列发现 -### ConsecutiveSequences +### 8.1 ConsecutiveSequences #### 注册语句 @@ -5048,7 +5049,7 @@ select consecutivesequences(s1,s2) from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### ConsecutiveWindows +### 8.2 ConsecutiveWindows #### 注册语句 @@ -5138,9 +5139,9 @@ select consecutivewindows(s1,s2,'length'='10m') from root.test.d1 --> -## 机器学习 +## 9 机器学习 -### AR +### 9.1 AR #### 注册语句 @@ -5207,7 +5208,7 @@ select ar(s0,"p"="2") from root.test.d0 +-----------------------------+---------------------------+ ``` -### Representation +### 9.2 Representation #### 函数简介 @@ -5271,7 +5272,7 @@ select representation(s0,"tb"="3","vb"="2") from root.test.d0 +-----------------------------+-------------------------------------------------+ ``` -### RM +### 9.3 RM #### 函数简介 diff --git a/src/zh/UserGuide/Master/Tree/Technical-Insider/Cluster-data-partitioning.md b/src/zh/UserGuide/Master/Tree/Technical-Insider/Cluster-data-partitioning.md index 119e003a0..d8fb03381 100644 --- a/src/zh/UserGuide/Master/Tree/Technical-Insider/Cluster-data-partitioning.md +++ b/src/zh/UserGuide/Master/Tree/Technical-Insider/Cluster-data-partitioning.md @@ -22,10 +22,10 @@ # 负载均衡 本文档介绍 IoTDB 中的分区策略和负载均衡策略。根据时序数据的特性,IoTDB 按序列和时间维度对其进行分区。结合序列分区与时间分区创建一个分区,作为划分的基本单元。为了提高吞吐量并降低管理成本,这些分区被均匀分配到分片(Region)中,分片是复制的基本单元。分片的副本决定了数据的存储位置,主副本负责主要负载的管理。在此过程中,副本放置算法决定哪些节点将持有分片副本,而主副本选择算法则指定哪个副本将成为主副本。 -## 分区策略和分区分配 +## 1 分区策略和分区分配 IoTDB 为时间序列数据实现了量身定制的分区算法。在此基础上,缓存于配置节点和数据节点上的分区信息不仅易于管理,而且能够清晰区分冷热数据。随后,平衡的分区被均匀分配到集群的分片中,以实现存储均衡。 -### 分区策略 +### 1.1 分区策略 IoTDB 将生产环境中的每个传感器映射为一个时间序列。然后,使用序列分区算法对时间序列进行分区以管理其元数据,再结合时间分区算法来管理其数据。下图展示了 IoTDB 如何对时序数据进行分区。 @@ -53,7 +53,7 @@ $$\left\lfloor\frac{\text{Timestamp}-\text{StartTimestamp}}{\text{TimePartitionI #### 数据分区 结合序列分区与时间分区创建数据分区。由于序列分区算法对时间序列进行了均匀分区,特定时间分区内的数据分区负载保持均衡。这些数据分区随后被均匀分配到数据分片中,以实现数据的均衡分布。 -### 分区分配 +### 1.2 分区分配 IoTDB 使用分片来实现时间序列的弹性存储,集群中分片的数量由所有数据节点的总资源决定。由于分片的数量是动态的,IoTDB 可以轻松扩展。元数据分片和数据分片都遵循相同的分区分配算法,即均匀划分所有序列分区。下图展示了分区分配过程,其中动态扩展的分片匹配不断扩展的时间序列和集群。 @@ -70,10 +70,10 @@ $$\text{RegionGroupNumber}=\left\lfloor\frac{\sum_{i=1}^{DataNodeNumber}\text{Re 值得注意的是,IoTDB 有效利用了时序数据的特性。当配置了 TTL(生存时间)时,IoTDB 可实现无需迁移的时序数据弹性存储,该功能在集群扩展时最小化了对在线操作的影响。上图展示了该功能的一个实例:新生成的数据分区被均匀分配到每个数据分片,过期数据会自动归档。因此,集群的存储最终将保持平衡。 -## 均衡策略 +## 2 均衡策略 为了提高集群的可用性和性能,IoTDB 采用了精心设计的存储均衡和计算均衡算法。 -### 存储均衡 +### 2.1 存储均衡 数据节点持有的副本数量反映了它的存储负载。如果数据节点之间的副本数量差异较大,拥有更多副本的数据节点可能成为存储瓶颈。尽管简单的轮询(Round Robin)放置算法可以通过确保每个数据节点持有等量副本来实现存储均衡,但它会降低集群的容错能力,如下所示: @@ -88,7 +88,7 @@ $$\text{RegionGroupNumber}=\left\lfloor\frac{\sum_{i=1}^{DataNodeNumber}\text{Re 为了解决这个问题,IoTDB 采用了一种副本放置算法,该算法不仅将副本均匀放置到所有数据节点上,还确保每个 数据节点在发生故障时,能够将其负载转移到足够多的其他数据节点。因此,集群实现了存储分布的均衡,并具备较高的容错能力,从而确保其可用性。 -### 计算均衡 +### 2.2 计算均衡 数据节点持有的主副本数量反映了它的计算负载。如果数据节点之间持有主副本数量差异较大,拥有更多主副本的数据节点可能成为计算瓶颈。如果主副本选择过程使用直观的贪心算法,当副本以容错算法放置时,可能会导致主副本分布不均,如下所示: @@ -103,7 +103,7 @@ $$\text{RegionGroupNumber}=\left\lfloor\frac{\sum_{i=1}^{DataNodeNumber}\text{Re 为了解决这个问题,IoTDB 采用了一种主副本选择算法,能够持续平衡集群中的主副本分布。因此,集群实现了计算负载的均衡分布,确保了其性能。 -## Source Code +## 3 Source Code + [数据分区](https://github.com/apache/iotdb/tree/master/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition) + [分区分配](https://github.com/apache/iotdb/tree/master/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/partition) + [副本放置](https://github.com/apache/iotdb/tree/master/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/副本) diff --git a/src/zh/UserGuide/Master/Tree/Technical-Insider/Encoding-and-Compression.md b/src/zh/UserGuide/Master/Tree/Technical-Insider/Encoding-and-Compression.md index 00d0d803f..0fb8a3a29 100644 --- a/src/zh/UserGuide/Master/Tree/Technical-Insider/Encoding-and-Compression.md +++ b/src/zh/UserGuide/Master/Tree/Technical-Insider/Encoding-and-Compression.md @@ -21,9 +21,9 @@ # 编码和压缩 -## 编码方式 +## 1 编码方式 -### 基本编码方式 +### 1.1 基本编码方式 为了提高数据的存储效率,需要在数据写入的过程中对数据进行编码,从而减少磁盘空间的使用量。在写数据以及读数据的过程中都能够减少 I/O 操作的数据量从而提高性能。IoTDB 支持多种针对不同类型的数据的编码方法: @@ -73,7 +73,7 @@ RLBE编码是一种无损编码,将差分编码,位填充编码,游程长度,斐波那契编码和拼接等编码思想结合到一起。RLBE编码适合递增且递增值较小的时序数据,不适合波动较大的时序数据。 -### 数据类型与编码的对应关系 +### 1.2 数据类型与编码的对应关系 前文介绍的五种编码适用于不同的数据类型,若对应关系错误,则无法正确创建时间序列。数据类型与支持其编码的编码方式对应关系总结如下表所示。 @@ -97,11 +97,11 @@ IoTDB> create timeseries root.ln.wf02.wt02.status WITH DATATYPE=BOOLEAN, ENCODIN Msg: 507: encoding TS_2DIFF does not support BOOLEAN ``` -## 压缩方式 +## 2 压缩方式 当时间序列写入并按照指定的类型编码为二进制数据后,IoTDB 会使用压缩技术对该数据进行压缩,进一步提升空间存储效率。虽然编码和压缩都旨在提升存储效率,但编码技术通常只适合特定的数据类型(如二阶差分编码只适合与 INT32 或者 INT64 编码,存储浮点数需要先将他们乘以 10m 以转换为整数),然后将它们转换为二进制流。压缩方式(SNAPPY)针对二进制流进行压缩,因此压缩方式的使用不再受数据类型的限制。 -### 基本压缩方式 +### 2.1 基本压缩方式 IoTDB 允许在创建一个时间序列的时候指定该列的压缩方式。现阶段 IoTDB 支持以下几种压缩方式: @@ -114,7 +114,7 @@ IoTDB 允许在创建一个时间序列的时候指定该列的压缩方式。 压缩方式的指定语法详见本文[SQL 参考文档](../SQL-Manual/SQL-Manual.md)。 -### 压缩比统计信息 +### 2.2 压缩比统计信息 压缩比统计信息文件:data/datanode/system/compression_ratio diff --git a/src/zh/UserGuide/Master/Tree/Tools-System/Benchmark.md b/src/zh/UserGuide/Master/Tree/Tools-System/Benchmark.md index 46a2b0250..efafdaf7a 100644 --- a/src/zh/UserGuide/Master/Tree/Tools-System/Benchmark.md +++ b/src/zh/UserGuide/Master/Tree/Tools-System/Benchmark.md @@ -21,7 +21,7 @@ # 测试工具 -## 概述 +## 1 概述 IoT-benchmark 是基于 Java 和大数据环境开发的时序数据库基准测试工具,由清华大学软件学院研发并开源。它使用方便,支持多种写入以及查询方式,支持存储测试信息和结果以供进一步查询或分析,支持与 Tableau 集成以可视化测试结果。 @@ -54,7 +54,7 @@ IoT-benchmark 是基于 Java 和大数据环境开发的时序数据库基准测 表1-1大数据测试基准对比 -### 软件安装与环境搭建 +### 1.1 软件安装与环境搭建 #### IoT Benchmark 运行的前置条件 @@ -119,7 +119,7 @@ IoT-benchmark 是基于 Java 和大数据环境开发的时序数据库基准测 -### 主要参数介绍 +### 1.2 主要参数介绍 本节重点解释说明了主要参数的用途和配置方法。 @@ -205,7 +205,7 @@ IoT-benchmark目前支持通过配置参数“TEST_DATA_PERSISTENCE”将测试 如果我们设置“TEST_DATA_PERSISTENCE=CSV”,测试执行时和执行完毕后我们可以在IoT-benchmark根目录下看到新生成的data文件夹,其下包含csv文件夹记录测试过程;csvOutput文件夹记录测试结果。如果我们设置“TEST_DATA_PERSISTENCE=MySQL”,它会在测试开始前在指定的MySQL数据库中创建命名如“testWithDefaultPath_被测数据库名称_备注_测试启动时间”的数据表记录测试过程;会在名为“CONFIG”的数据表(如果不存在则创建该表),写入本次测试的配置信息;当测试完成时会在名为“FINAL_RESULT”的数据表(如果不存在则创建该表)中写入本次测试结果。 -## 实际案例 +## 2 实际案例 我们以中车青岛四方车辆研究所有限公司应用为例,参考《ApacheIoTDB在智能运维平台存储中的应用》中描述的场景进行实际操作说明。 @@ -234,7 +234,7 @@ IoT-benchmark目前支持通过配置参数“TEST_DATA_PERSISTENCE”将测试 | 172.21.4.4 | KaiosDB | | 172.21.4.5 | MySQL | -### 写入测试 +### 2.1 写入测试 场景描述:创建100个客户端来模拟100列车、每列车3000个传感器、数据类型为DOUBLE类型、数据时间间隔为500ms(2Hz)、顺序发送。参考以上需求我们需要修改IoT-benchmark配置参数如表2-3中所列。 @@ -305,7 +305,7 @@ IoT-benchmark目前支持通过配置参数“TEST_DATA_PERSISTENCE”将测试 -### 查询测试 +### 2.2 询测试 场景描述:在写入测试场景下模拟10个客户端对时序数据库Apache-IoTDB内存放的数据进行全类型查询任务。配置如下: @@ -330,7 +330,7 @@ IoT-benchmark目前支持通过配置参数“TEST_DATA_PERSISTENCE”将测试 图2-7查询测试结果 -### 其他参数说明 +### 2.3 其他参数说明 之前章节中针对Apache-IoTDB和KairosDB进行写入性能对比,但是用户如果要执行模拟真实写入速率测试该如何配置?测试时间过长该如何控制呢?生成的模拟数据有哪些规律吗?如果IoT-Benchmark服务器配置较低,可以使用多台机器模拟压力输出吗? diff --git a/src/zh/UserGuide/Master/Tree/Tools-System/CLI.md b/src/zh/UserGuide/Master/Tree/Tools-System/CLI.md index aaff80934..d37f9bc9e 100644 --- a/src/zh/UserGuide/Master/Tree/Tools-System/CLI.md +++ b/src/zh/UserGuide/Master/Tree/Tools-System/CLI.md @@ -24,7 +24,7 @@ IOTDB 为用户提供 cli/Shell 工具用于启动客户端和服务端程序。下面介绍每个 cli/Shell 工具的运行方式和相关参数。 > \$IOTDB\_HOME 表示 IoTDB 的安装目录所在路径。 -## 安装 +## 1 安装 如果使用源码版,可以在 iotdb 的根目录下执行 ```shell @@ -35,9 +35,9 @@ IOTDB 为用户提供 cli/Shell 工具用于启动客户端和服务端程序。 如果你下载的是二进制版,那么 Cli 可以在 sbin 文件夹下直接找到。 -## 运行 +## 2 运行 -### Cli 运行方式 +### 2.1 Cli 运行方式 安装后的 IoTDB 中有一个默认用户:`root`,默认密码为`root`。用户可以使用该用户尝试运行 IoTDB 客户端以测试服务器是否正常启动。客户端启动脚本为$IOTDB_HOME/sbin 文件夹下的`start-cli`脚本。启动脚本时需要指定运行 IP 和 RPC PORT。以下为服务器在本机启动,且用户未更改运行端口号的示例,默认端口为 6667。若用户尝试连接远程服务器或更改了服务器运行的端口号,请在-h 和-p 项处使用服务器的 IP 和 RPC PORT。
用户也可以在启动脚本的最前方设置自己的环境变量,如 JAVA_HOME 等 (对于 linux 用户,脚本路径为:"/sbin/start-cli.sh"; 对于 windows 用户,脚本路径为:"/sbin/start-cli.bat") @@ -65,7 +65,7 @@ Successfully login at 127.0.0.1:6667 ``` 输入`quit`或`exit`可退出 cli 结束本次会话,cli 输出`quit normally`表示退出成功。 -### Cli 运行参数 +### 2.2 Cli 运行参数 |参数名|参数类型|是否为必需参数| 说明| 例子 | |:---|:---|:---|:---|:---| @@ -92,7 +92,7 @@ Windows 系统启动命令如下: Shell > sbin\start-cli.bat -h 10.129.187.21 -p 6667 -u root -pw root -disableISO8601 -maxPRC 10 ``` -### CLI 特殊命令 +### 2.3 CLI 特殊命令 下面列举了一些CLI的特殊命令。 | 命令 | 描述 / 例子 | @@ -107,7 +107,7 @@ Shell > sbin\start-cli.bat -h 10.129.187.21 -p 6667 -u root -pw root -disableISO | `help` | 获取CLI特殊命令的提示 | | `exit/quit` | 退出CLI | -### 使用 OpenID 作为用户名认证登录 +### 2.4 使用 OpenID 作为用户名认证登录 OpenID Connect (OIDC) 使用 keycloack 作为 OIDC 服务权限认证服务。 @@ -207,7 +207,7 @@ curl -X POST "http://{your-keycloack-server}/realms/{your-realm}/protocol/openid {"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJxMS1XbTBvelE1TzBtUUg4LVNKYXAyWmNONE1tdWNXd25RV0tZeFpKNG93In0.eyJleHAiOjE1OTAzOTgwNzEsImlhdCI6MTU5MDM5Nzc3MSwianRpIjoiNjA0ZmYxMDctN2NiNy00NTRmLWIwYmQtY2M2ZDQwMjFiNGU4IiwiaXNzIjoiaHR0cDovL2F1dGguZGVtby5wcmFnbWF0aWNpbmR1c3RyaWVzLmRlL2F1dGgvcmVhbG1zL0lvVERCIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImJhMzJlNDcxLWM3NzItNGIzMy04ZGE2LTZmZThhY2RhMDA3MyIsInR5cCI6IkJlYXJlciIsImF6cCI6ImlvdGRiIiwic2Vzc2lvbl9zdGF0ZSI6IjA2MGQyODYyLTE0ZWQtNDJmZS1iYWY3LThkMWY3ODQ2NTdmMSIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsibG9jYWxob3N0OjgwODAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iLCJpb3RkYl9hZG1pbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ1c2VyIn0.nwbrJkWdCNjzFrTDwKNuV5h9dDMg5ytRKGOXmFIajpfsbOutJytjWTCB2WpA8E1YI3KM6gU6Jx7cd7u0oPo5syHhfCz119n_wBiDnyTZkFOAPsx0M2z20kvBLN9k36_VfuCMFUeddJjO31MeLTmxB0UKg2VkxdczmzMH3pnalhxqpnWWk3GnrRrhAf2sZog0foH4Ae3Ks0lYtYzaWK_Yo7E4Px42-gJpohy3JevOC44aJ4auzJR1RBj9LUbgcRinkBy0JLi6XXiYznSC2V485CSBHW3sseXn7pSXQADhnmGQrLfFGO5ZljmPO18eFJaimdjvgSChsrlSEmTDDsoo5Q","expires_in":300,"refresh_expires_in":1800,"refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhMzZlMGU0NC02MWNmLTQ5NmMtOGRlZi03NTkwNjQ5MzQzMjEifQ.eyJleHAiOjE1OTAzOTk1NzEsImlhdCI6MTU5MDM5Nzc3MSwianRpIjoiNmMxNTBiY2EtYmE5NC00NTgxLWEwODEtYjI2YzhhMmI5YmZmIiwiaXNzIjoiaHR0cDovL2F1dGguZGVtby5wcmFnbWF0aWNpbmR1c3RyaWVzLmRlL2F1dGgvcmVhbG1zL0lvVERCIiwiYXVkIjoiaHR0cDovL2F1dGguZGVtby5wcmFnbWF0aWNpbmR1c3RyaWVzLmRlL2F1dGgvcmVhbG1zL0lvVERCIiwic3ViIjoiYmEzMmU0NzEtYzc3Mi00YjMzLThkYTYtNmZlOGFjZGEwMDczIiwidHlwIjoiUmVmcmVzaCIsImF6cCI6ImlvdGRiIiwic2Vzc2lvbl9zdGF0ZSI6IjA2MGQyODYyLTE0ZWQtNDJmZS1iYWY3LThkMWY3ODQ2NTdmMSIsInNjb3BlIjoiZW1haWwgcHJvZmlsZSJ9.ayNpXdNX28qahodX1zowrMGiUCw2AodlHBQFqr8Ui7c","token_type":"bearer","not-before-policy":0,"session_state":"060d2862-14ed-42fe-baf7-8d1f784657f1","scope":"email profile"} ``` -### Cli 的批量操作 +### 2.5 Cli 的批量操作 当您想要通过脚本的方式通过 Cli / Shell 对 IoTDB 进行批量操作时,可以使用-e 参数。通过使用该参数,您可以在不进入客户端输入模式的情况下操作 IoTDB。 为了避免 SQL 语句和其他参数混淆,现在只支持-e 参数作为最后的参数使用。 diff --git a/src/zh/UserGuide/Master/Tree/Tools-System/Data-Export-Tool.md b/src/zh/UserGuide/Master/Tree/Tools-System/Data-Export-Tool.md index 361d5076e..c597aa464 100644 --- a/src/zh/UserGuide/Master/Tree/Tools-System/Data-Export-Tool.md +++ b/src/zh/UserGuide/Master/Tree/Tools-System/Data-Export-Tool.md @@ -1,10 +1,10 @@ # 数据导出 -## 1. 导出工具介绍 +## 1 导出工具介绍 导出工具可以将 SQL 查询的数据导出为指定的格式,包含用于导出 TsFile 文件的 `export-tsfile.sh/bat` 脚本和支持 CSV 和 SQL 格式的导出的 `export-data.sh/bat` 脚本。 -## 2. 支持的数据类型 +## 2 支持的数据类型 - CSV:纯文本格式,存储格式化数据,需按照下文指定 CSV 格式进行构造 @@ -12,7 +12,7 @@ - TsFile: IoTDB 中使用的时间序列的文件格式 -## 3. export-tsfile 脚本 +## 3 export-tsfile 脚本 支持 TsFile: IoTDB 中使用的时间序列的文件格式 @@ -68,7 +68,7 @@ tools/export-tsfile.bat -h 127.0.0.1 -p 6667 -u root -pw root -td ./ -s ./sql.tx tools/export-tsfile.sh -h 127.0.0.1 -p 6667 -u root -pw root -td ./ -s ./sql.txt -f myTsFile -t 10000 ``` -## 4. export-data 脚本 +## 4 export-data 脚本 支持 CSV:纯文本格式,存储格式化数据,需按照下文指定 CSV 格式进行构造 diff --git a/src/zh/UserGuide/Master/Tree/Tools-System/Data-Import-Tool.md b/src/zh/UserGuide/Master/Tree/Tools-System/Data-Import-Tool.md index 4c14acdf9..fd7021e13 100644 --- a/src/zh/UserGuide/Master/Tree/Tools-System/Data-Import-Tool.md +++ b/src/zh/UserGuide/Master/Tree/Tools-System/Data-Import-Tool.md @@ -1,6 +1,6 @@ # 数据导入 -## 1. IoTDB 数据导入 +## 1 IoTDB 数据导入 IoTDB 目前支持将 CSV、SQL、及TsFile(IoTDB底层开放式时间序列文件格式)格式的数据导入数据库。具体功能如下: @@ -32,7 +32,7 @@ IoTDB 目前支持将 CSV、SQL、及TsFile(IoTDB底层开放式时间序列 -## 2. import-data 脚本 +## 2 import-data 脚本 - 支持格式:CSV、SQL @@ -100,7 +100,7 @@ IoTDB 目前支持将 CSV、SQL、及TsFile(IoTDB底层开放式时间序列 >tools/import-data.bat -h 192.168.100.1 -p 6667 -u root -pw root -s ./data/dump0_0.csv -fd ./failed/ -aligned true -batch 100000 -tp ms -typeInfer boolean=text,float=double -lpf 1000 ``` -## 3. load-tsfile 脚本 +## 3 load-tsfile 脚本 - 支持格式:TsFile @@ -141,7 +141,7 @@ IoTDB 目前支持将 CSV、SQL、及TsFile(IoTDB底层开放式时间序列 > tools/load_data.bat -h 127.0.0.1 -p 6667 -u root -pw root -s /path/sql -os delete -of delete -tn 8 ``` -## 4. TsFile 主动监听&加载功能 +## 4 TsFile 主动监听&加载功能 TsFile 主动监听&加载功能能够主动监听指定目标路径(用户配置)下TsFile的文件变化,并将目标路径下的TsFile文件自动同步至指定接收路径(用户配置)。通过此功能,IoTDB 能自动检测并加载这些文件,无需手动执行任何额外的加载操作。这种自动化流程不仅简化了用户的操作步骤,还减少了操作过程中可能出现的错误,有效降低了用户在使用过程中的复杂性。 diff --git a/src/zh/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_apache.md b/src/zh/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_apache.md index 57b527ccb..9062be9fb 100644 --- a/src/zh/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_apache.md +++ b/src/zh/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_apache.md @@ -21,11 +21,11 @@ # 集群管理工具 -## 数据文件夹概览工具 +## 1 数据文件夹概览工具 IoTDB数据文件夹概览工具用于打印出数据文件夹的结构概览信息,工具位置为 tools/tsfile/print-iotdb-data-dir。 -### 用法 +### 1.1 用法 - Windows: @@ -41,7 +41,7 @@ IoTDB数据文件夹概览工具用于打印出数据文件夹的结构概览信 注意:如果没有设置输出结果的存储路径, 将使用相对路径"IoTDB_data_dir_overview.txt"作为默认值。 -### 示例 +### 1.2 示例 以Windows系统为例: @@ -82,11 +82,11 @@ data dir num:1 |============================================================== ````````````````````````` -## TsFile概览工具 +## 2 TsFile概览工具 TsFile概览工具用于以概要模式打印出一个TsFile的内容,工具位置为 tools/tsfile/print-tsfile。 -### 用法 +### 2.1 用法 - Windows: @@ -102,7 +102,7 @@ TsFile概览工具用于以概要模式打印出一个TsFile的内容,工具 注意:如果没有设置输出结果的存储路径, 将使用相对路径"TsFile_sketch_view.txt"作为默认值。 -### 示例 +### 2.2 示例 以Windows系统为例: @@ -170,11 +170,11 @@ file length: 2974 - "|||||||||||||||||||||"是为增强可读性而添加的导引信息,不是TsFile中实际存储的数据。 - 最后打印的"IndexOfTimerseriesIndex Tree"是对TsFile文件末尾的元数据索引树的重新整理打印,便于直观理解,不是TsFile中存储的实际数据。 -## TsFile Resource概览工具 +## 3 TsFile Resource概览工具 TsFile resource概览工具用于打印出TsFile resource文件的内容,工具位置为 tools/tsfile/print-tsfile-resource-files。 -### 用法 +### 3.1 用法 - Windows: @@ -188,7 +188,7 @@ TsFile resource概览工具用于打印出TsFile resource文件的内容,工 ./print-tsfile-resource-files.sh ``` -### 示例 +### 3.2 示例 以Windows系统为例: diff --git a/src/zh/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_timecho.md b/src/zh/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_timecho.md index 63d69149f..ebc8b6b7f 100644 --- a/src/zh/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_timecho.md +++ b/src/zh/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_timecho.md @@ -21,11 +21,11 @@ # 集群管理工具 -## 集群管理工具 +## 1 集群管理工具 IoTDB 集群管理工具是一款易用的运维工具(企业版工具)。旨在解决 IoTDB 分布式系统多节点的运维难题,主要包括集群部署、集群启停、弹性扩容、配置更新、数据导出等功能,从而实现对复杂数据库集群的一键式指令下发,极大降低管理难度。本文档将说明如何用集群管理工具远程部署、配置、启动和停止 IoTDB 集群实例。 -### 环境准备 +### 1.1 环境准备 本工具为 TimechoDB(基于IoTDB的企业版数据库)配套工具,您可以联系您的销售获取工具下载方式。 @@ -33,7 +33,7 @@ IoTDB 要部署的机器需要依赖jdk 8及以上版本、lsof、netstat、unzi 提示:IoTDB集群管理工具需要使用有root权限的账号 -### 部署方法 +### 1.2 部署方法 #### 下载安装 @@ -59,7 +59,7 @@ iotdbctl cluster check example /sbin/iotdbctl cluster check example ``` -### 系统结构 +### 1.3 系统结构 IoTDB集群管理工具主要由config、logs、doc、sbin目录组成。 @@ -69,7 +69,7 @@ IoTDB集群管理工具主要由config、logs、doc、sbin目录组成。 * `doc` 存放用户手册、开发手册和推荐部署手册。 -### 集群配置文件介绍 +### 1.4 集群配置文件介绍 * 在`iotdbctl/config` 目录下有集群配置的yaml文件,yaml文件名字就是集群名字yaml 文件可以有多个,为了方便用户配置yaml文件在iotd/config目录下面提供了`default_cluster.yaml`示例。 * yaml 文件配置由`global`、`confignode_servers`、`datanode_servers`、`grafana_server`、`prometheus_server`四大部分组成 @@ -176,7 +176,7 @@ IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS -XX:MaxGCPauseMillis=200" 注意:如何配置yaml key对应的值包含特殊字符如:等建议整个value使用双引号,对应的文件路径中不要使用包含空格的路径,防止出现识别出现异常问题。 -### 使用场景 +### 1.5 使用场景 #### 清理数据场景 @@ -269,7 +269,7 @@ iotdbctl cluster start default_cluster 更加详细参数请参考上方的 集群配置文件介绍 -### 命令格式 +### 1.6 命令格式 本工具的基本用法为: ```bash @@ -318,7 +318,7 @@ iotdbctl cluster deploy default_cluster | exportschema | 元数据导出 | 集群名字,-N,节点名称(必填) -param 参数 | -### 详细命令执行过程 +### 1.7 细命令执行过程 下面的命令都是以default_cluster.yaml 为示例执行的,用户可以修改成自己的集群文件来执行 @@ -701,7 +701,7 @@ iotdbctl cluster activate default_cluster -op license_path * 读取里面的机器码 * 等待输入激活码 -### 集群plugin分发 +### 1.8 集群plugin分发 ```bash #分发udf iotdbctl cluster dist-plugin default_cluster -type U -file /xxxx/udf.jar @@ -716,7 +716,7 @@ iotdbctl cluster dist-plugin default_cluster -type P -file /xxxx/pipe.jar 上传完成后需要手动执行创建udf/trigger/pipe命令 -### 集群滚动升级 +### 1.9 集群滚动升级 ```bash iotdbctl cluster upgrade default_cluster ``` @@ -727,7 +727,7 @@ iotdbctl cluster upgrade default_cluster -### 集群健康检查 +### 1.10 集群健康检查 ```bash iotdbctl cluster health_check default_cluster ``` @@ -742,7 +742,7 @@ iotdbctl cluster health_check default_cluster -N datanode_1 * datanode1 执行health_check.sh -### 集群停机备份 +### 1.11 集群停机备份 ```bash iotdbctl cluster backup default_cluster ``` @@ -758,7 +758,7 @@ iotdbctl cluster backup default_cluster -N datanode_1 说明:多个节点部署到单台机器,只支持 quick 模式 -### 集群元数据导入 +### 1.12 集群元数据导入 ```bash iotdbctl cluster importschema default_cluster -N datanode1 -param "-s ./dump0.csv -fd ./failed/ -lpf 10000" @@ -776,7 +776,7 @@ iotdbctl cluster importschema default_cluster -N datanode1 -param "-s ./dump0.cs -### 集群元数据导出 +### 1.13 集群元数据导出 ```bash iotdbctl cluster exportschema default_cluster -N datanode1 -param "-t ./ -pf ./pattern.txt -lpf 10 -t 10000" @@ -796,7 +796,7 @@ iotdbctl cluster exportschema default_cluster -N datanode1 -param "-t ./ -pf ./p -### 集群部署工具样例介绍 +### 1.14 集群部署工具样例介绍 在集群部署工具安装目录中config/example 下面有3个yaml样例,如果需要可以复制到config 中进行修改即可 | 名称 | 说明 | @@ -805,11 +805,11 @@ iotdbctl cluster exportschema default_cluster -N datanode1 -param "-t ./ -pf ./p | default\_3c3d.yaml | 3个confignode和3个datanode 配置样例 | | default\_3c3d\_grafa\_prome | 3个confignode和3个datanode、Grafana、Prometheus配置样例 | -## 数据文件夹概览工具 +## 2 数据文件夹概览工具 IoTDB数据文件夹概览工具用于打印出数据文件夹的结构概览信息,工具位置为 tools/tsfile/print-iotdb-data-dir。 -### 用法 +### 2.1 用法 - Windows: @@ -825,7 +825,7 @@ IoTDB数据文件夹概览工具用于打印出数据文件夹的结构概览信 注意:如果没有设置输出结果的存储路径, 将使用相对路径"IoTDB_data_dir_overview.txt"作为默认值。 -### 示例 +### 2.2 示例 以Windows系统为例: @@ -866,11 +866,11 @@ data dir num:1 |============================================================== ````````````````````````` -## TsFile概览工具 +## 3 TsFile概览工具 TsFile概览工具用于以概要模式打印出一个TsFile的内容,工具位置为 tools/tsfile/print-tsfile。 -### 用法 +### 3.1 用法 - Windows: @@ -886,7 +886,7 @@ TsFile概览工具用于以概要模式打印出一个TsFile的内容,工具 注意:如果没有设置输出结果的存储路径, 将使用相对路径"TsFile_sketch_view.txt"作为默认值。 -### 示例 +### 3.2 示例 以Windows系统为例: @@ -954,11 +954,11 @@ file length: 2974 - "|||||||||||||||||||||"是为增强可读性而添加的导引信息,不是TsFile中实际存储的数据。 - 最后打印的"IndexOfTimerseriesIndex Tree"是对TsFile文件末尾的元数据索引树的重新整理打印,便于直观理解,不是TsFile中存储的实际数据。 -## TsFile Resource概览工具 +## 4 TsFile Resource概览工具 TsFile resource概览工具用于打印出TsFile resource文件的内容,工具位置为 tools/tsfile/print-tsfile-resource-files。 -### 用法 +### 4.1 用法 - Windows: @@ -972,7 +972,7 @@ TsFile resource概览工具用于打印出TsFile resource文件的内容,工 ./print-tsfile-resource-files.sh ``` -### 示例 +### 4.2 示例 以Windows系统为例: diff --git a/src/zh/UserGuide/Master/Tree/Tools-System/Monitor-Tool_apache.md b/src/zh/UserGuide/Master/Tree/Tools-System/Monitor-Tool_apache.md index 3ef0730da..12eed8823 100644 --- a/src/zh/UserGuide/Master/Tree/Tools-System/Monitor-Tool_apache.md +++ b/src/zh/UserGuide/Master/Tree/Tools-System/Monitor-Tool_apache.md @@ -24,7 +24,7 @@ 监控工具的部署可参考文档 [监控面板部署](../Deployment-and-Maintenance/Monitoring-panel-deployment.md) 章节。 -## 监控指标的 Prometheus 映射关系 +## 1 监控指标的 Prometheus 映射关系 > 对于 Metric Name 为 name, Tags 为 K1=V1, ..., Kn=Vn 的监控指标有如下映射,其中 value 为具体值 @@ -36,7 +36,7 @@ | Rate | name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="m1"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="m5"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="m15"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="mean"} value | | Timer | name_seconds_max{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_seconds_sum{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_seconds_count{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_seconds{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", quantile="0.5"} value value
name_seconds{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", quantile="0.99"} value | -## 修改配置文件 +## 2 修改配置文件 1) 以 DataNode 为例,修改 iotdb-system.properties 配置文件如下: @@ -60,7 +60,7 @@ file_count{name="seq",} 2.0 ... ``` -## Prometheus + Grafana +## 3 Prometheus + Grafana 如上所示,IoTDB 对外暴露出标准的 Prometheus 格式的监控指标数据,可以使用 Prometheus 采集并存储监控指标,使用 Grafana 可视化监控指标。 @@ -102,7 +102,7 @@ static_configs: [Grafana从Prometheus查询数据并绘图的文档](https://prometheus.io/docs/visualization/grafana/#grafana-support-for-prometheus) -## Apache IoTDB Dashboard +## 4 Apache IoTDB Dashboard `Apache IoTDB Dashboard`是 IoTDB 企业版的配套产品,支持统一集中式运维管理,可通过一个监控面板监控多个集群。你可以联系商务获取到 Dashboard 的 Json文件。 @@ -112,7 +112,7 @@ static_configs: ![Apache IoTDB Dashboard](/img/%E7%9B%91%E6%8E%A7%20cluster2.png) -### 集群概览 +### 4.1 集群概览 可以监控包括但不限于: - 集群总CPU核数、总内存空间、总硬盘空间 @@ -124,7 +124,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E6%A6%82%E8%A7%88.png) -### 数据写入 +### 4.2 数据写入 可以监控包括但不限于: - 写入平均耗时、耗时中位数、99%分位耗时 @@ -133,7 +133,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E5%86%99%E5%85%A5.png) -### 数据查询 +### 4.3 数据查询 可以监控包括但不限于: - 节点查询加载时间序列元数据耗时 @@ -146,7 +146,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E6%9F%A5%E8%AF%A2.png) -### 存储引擎 +### 4.4 存储引擎 可以监控包括但不限于: - 分类型的文件数量、大小 @@ -155,7 +155,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E5%AD%98%E5%82%A8%E5%BC%95%E6%93%8E.png) -### 系统监控 +### 4.5 系统监控 可以监控包括但不限于: - 系统内存、交换内存、进程内存 diff --git a/src/zh/UserGuide/Master/Tree/Tools-System/Monitor-Tool_timecho.md b/src/zh/UserGuide/Master/Tree/Tools-System/Monitor-Tool_timecho.md index d3cc9dceb..c44210e51 100644 --- a/src/zh/UserGuide/Master/Tree/Tools-System/Monitor-Tool_timecho.md +++ b/src/zh/UserGuide/Master/Tree/Tools-System/Monitor-Tool_timecho.md @@ -24,7 +24,7 @@ 监控工具的部署可参考文档 [监控面板部署](../Deployment-and-Maintenance/Monitoring-panel-deployment.md) 章节。 -## 监控指标的 Prometheus 映射关系 +## 1 监控指标的 Prometheus 映射关系 > 对于 Metric Name 为 name, Tags 为 K1=V1, ..., Kn=Vn 的监控指标有如下映射,其中 value 为具体值 @@ -36,7 +36,7 @@ | Rate | name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="m1"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="m5"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="m15"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="mean"} value | | Timer | name_seconds_max{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_seconds_sum{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_seconds_count{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_seconds{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", quantile="0.5"} value value
name_seconds{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", quantile="0.99"} value | -## 修改配置文件 +## 2 修改配置文件 1) 以 DataNode 为例,修改 iotdb-system.properties 配置文件如下: @@ -60,7 +60,7 @@ file_count{name="seq",} 2.0 ... ``` -## Prometheus + Grafana +## 3 Prometheus + Grafana 如上所示,IoTDB 对外暴露出标准的 Prometheus 格式的监控指标数据,可以使用 Prometheus 采集并存储监控指标,使用 Grafana 可视化监控指标。 @@ -102,7 +102,7 @@ static_configs: [Grafana从Prometheus查询数据并绘图的文档](https://prometheus.io/docs/visualization/grafana/#grafana-support-for-prometheus) -## Apache IoTDB Dashboard +## 4 Apache IoTDB Dashboard 我们提供了Apache IoTDB Dashboard,支持统一集中式运维管理,可通过一个监控面板监控多个集群。 @@ -112,7 +112,7 @@ static_configs: 你可以在企业版中获取到 Dashboard 的 Json文件。 -### 集群概览 +### 4.1 集群概览 可以监控包括但不限于: - 集群总CPU核数、总内存空间、总硬盘空间 @@ -124,7 +124,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E6%A6%82%E8%A7%88.png) -### 数据写入 +### 4.2 数据写入 可以监控包括但不限于: - 写入平均耗时、耗时中位数、99%分位耗时 @@ -133,7 +133,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E5%86%99%E5%85%A5.png) -### 数据查询 +### 4.3 据查询 可以监控包括但不限于: - 节点查询加载时间序列元数据耗时 @@ -146,7 +146,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E6%9F%A5%E8%AF%A2.png) -### 存储引擎 +### 4.4 存储引擎 可以监控包括但不限于: - 分类型的文件数量、大小 @@ -155,7 +155,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E5%AD%98%E5%82%A8%E5%BC%95%E6%93%8E.png) -### 系统监控 +### 4.5 系统监控 可以监控包括但不限于: - 系统内存、交换内存、进程内存 diff --git a/src/zh/UserGuide/Master/Tree/Tools-System/Workbench_timecho.md b/src/zh/UserGuide/Master/Tree/Tools-System/Workbench_timecho.md index 2eb3f47b4..3ecf4934e 100644 --- a/src/zh/UserGuide/Master/Tree/Tools-System/Workbench_timecho.md +++ b/src/zh/UserGuide/Master/Tree/Tools-System/Workbench_timecho.md @@ -2,10 +2,10 @@ 可视化控制台的部署可参考文档 [可视化控制台部署](../Deployment-and-Maintenance/workbench-deployment_timecho.md) 章节。 -## 第1章 产品介绍 +## 1 产品介绍 IoTDB可视化控制台是在IoTDB企业版时序数据库基础上针对工业场景的实时数据收集、存储与分析一体化的数据管理场景开发的扩展组件,旨在为用户提供高效、可靠的实时数据存储和查询解决方案。它具有体量轻、性能高、易使用的特点,完美对接 Hadoop 与 Spark 生态,适用于工业物联网应用中海量时间序列数据高速写入和复杂分析查询的需求。 -## 第2章 使用说明 +## 2 使用说明 IoTDB的可视化控制台包含以下功能模块: | **功能模块** | **功能说明** | | ------------ | ------------------------------------------------------------ | diff --git a/src/zh/UserGuide/latest/API/Programming-CSharp-Native-API.md b/src/zh/UserGuide/latest/API/Programming-CSharp-Native-API.md index addbce6c7..fd785a524 100644 --- a/src/zh/UserGuide/latest/API/Programming-CSharp-Native-API.md +++ b/src/zh/UserGuide/latest/API/Programming-CSharp-Native-API.md @@ -21,13 +21,13 @@ # C# 原生接口 -## 依赖 +## 1 依赖 - .NET SDK >= 5.0 或 .NET Framework 4.x - Thrift >= 0.14.1 - NLog >= 4.7.9 -## 安装 +## 2 安装 您可以使用 NuGet Package Manager, .NET CLI等工具来安装,以 .NET CLI为例 @@ -50,7 +50,7 @@ dotnet add package Apache.IoTDB.framework dotnet add package Apache.IoTDB --version 0.12.1.2 ``` -## 基本接口说明 +## 3 基本接口说明 Session接口在语义上和其他语言客户端相同 @@ -88,7 +88,7 @@ await session_pool.InsertTabletAsync(tablet); await session_pool.Close(); ``` -## **Row Record** +## 4 **Row Record** - 对**IoTDB**中的`record`数据进行封装和抽象。 - 示例: @@ -104,7 +104,7 @@ var rowRecord = new RowRecord(long timestamps, List values, List measurements); ``` -### **Tablet** +### 4.1 **Tablet** - 一种类似于表格的数据结构,包含一个设备的若干行非空数据块。 - 示例: @@ -124,9 +124,9 @@ var tablet = -## **API** +## 5 **API** -### **基础接口** +### 5.1 **基础接口** | api name | parameters | notes | use example | | -------------- | ------------------------- | ------------------------ | ----------------------------- | @@ -138,7 +138,7 @@ var tablet = | SetTimeZone | string | set time zone | session_pool.GetTimeZone() | | GetTimeZone | null | get time zone | session_pool.GetTimeZone() | -### **Record相关接口** +### 5.2 **Record相关接口** | api name | parameters | notes | use example | | ----------------------------------- | ----------------------------- | ----------------------------------- | ------------------------------------------------------------ | @@ -149,7 +149,7 @@ var tablet = | TestInsertRecordAsync | string, RowRecord | test insert record | session_pool.TestInsertRecordAsync("root.97209_TEST_CSHARP_CLIENT_GROUP.TEST_CSHARP_CLIENT_DEVICE", rowRecord) | | TestInsertRecordsAsync | List\, List\ | test insert record | session_pool.TestInsertRecordsAsync(device_id, rowRecords) | -### **Tablet相关接口** +### 5.3 **Tablet相关接口** | api name | parameters | notes | use example | | ---------------------- | ------------ | -------------------- | -------------------------------------------- | @@ -158,14 +158,14 @@ var tablet = | TestInsertTabletAsync | Tablet | test insert tablet | session_pool.TestInsertTabletAsync(tablet) | | TestInsertTabletsAsync | List\ | test insert tablets | session_pool.TestInsertTabletsAsync(tablets) | -### **SQL语句接口** +### 5.4 **SQL语句接口** | api name | parameters | notes | use example | | ----------------------------- | ---------- | ------------------------------ | ------------------------------------------------------------ | | ExecuteQueryStatementAsync | string | execute sql query statement | session_pool.ExecuteQueryStatementAsync("select * from root.97209_TEST_CSHARP_CLIENT_GROUP.TEST_CSHARP_CLIENT_DEVICE where time<15"); | | ExecuteNonQueryStatementAsync | string | execute sql nonquery statement | session_pool.ExecuteNonQueryStatementAsync( "create timeseries root.97209_TEST_CSHARP_CLIENT_GROUP.TEST_CSHARP_CLIENT_DEVICE.status with datatype=BOOLEAN,encoding=PLAIN") | -### 数据表接口 +### 5.5 数据表接口 | api name | parameters | notes | use example | | -------------------------- | ------------------------------------------------------------ | --------------------------- | ------------------------------------------------------------ | @@ -178,7 +178,7 @@ var tablet = | DeleteTimeSeriesAsync | string | delete time series | | | DeleteDataAsync | List\, long, long | delete data | session_pool.DeleteDataAsync(ts_path_lst, 2, 3) | -### **辅助接口** +### 5.6 **辅助接口** | api name | parameters | notes | use example | | -------------------------- | ---------- | --------------------------- | ---------------------------------------------------- | @@ -188,7 +188,7 @@ var tablet = 用法可以参考[用户示例](https://github.com/apache/iotdb-client-csharp/tree/main/samples/Apache.IoTDB.Samples) -## 连接池 +## 6 连接池 为了实现并发客户端请求,我们提供了针对原生接口的连接池(`SessionPool`),由于`SessionPool`本身为`Session`的超集,当`SessionPool`的`pool_size`参数设置为1时,退化为原来的`Session` @@ -198,19 +198,19 @@ var tablet = 当一个连接被用完后,他会自动返回池中等待下次被使用 -## ByteBuffer +## 7 ByteBuffer 在传入RPC接口参数时,需要对Record和Tablet两种数据结构进行序列化,我们主要通过封装的ByteBuffer类实现 在封装字节序列的基础上,我们进行了内存预申请与内存倍增的优化,减少了序列化过程中内存的申请和释放,在一个拥有20000行的Tablet上进行序列化测试时,速度比起原生的数组动态增长具有**35倍的性能加速** -### 实现介绍 +### 7.1 实现介绍 在进行`RowRecords`以及`Tablet`的插入时,我们需要对多行RowRecord和Tablet进行序列化以进行发送。客户端中的序列化实现主要依赖于ByteBuffer完成。接下来我们介绍ByteBuffer的实现细节。本文包含如下几点内容: - 序列化的协议 - C#与Java的大小端的差异 - ByteBuffer内存倍增算法 -### 序列化协议 +### 7.2 序列化协议 客户端向IoTDB服务器发送的序列化数据总体应该包含两个信息。 - 数据类型 - 数据本身 @@ -246,10 +246,10 @@ public enum TSDataType{BOOLEAN, INT32, INT64, FLOAT, DOUBLE, TEXT, NONE}; 限制:Tablet中数据不能有空值 由于向 `IoTDB`服务器发送`Tablet`数据插入请求时会携带`行数`, `列数`, `列数据类型`,所以`Tabelt`序列化时我们不需要加入数据类型信息。`Tablet`是`按照列进行序列化`,这是因为后端可以通过行数得知出当前列的元素个数,同时根据列类型来对数据进行解析。 -### CSharp与Java序列化数据时的大小端差异 +### 7.3 CSharp与Java序列化数据时的大小端差异 由于Java序列化默认大端协议,而CSharp序列化默认得到小端序列。所以我们在CSharp中序列化数据之后,需要对数据进行反转这样后端才可以正常解析。同时当我们从后端获取到序列化的结果时(如`SessionDataset`),我们也需要对获得的数据进行反转以解析内容。这其中特例便是字符串的序列化,CSharp中对字符串的序列化结果为大端序,所以序列化字符串或者接收到字符串序列化结果时,不需要反转序列结果。 -### ByteBuffer内存倍增法 +### 7.4 ByteBuffer内存倍增法 拥有数万行的Tablet的序列化结果可能有上百兆,为了能够高效的实现大`Tablet`的序列化,我们对ByteBuffer使用`内存倍增法`的策略来减少序列化过程中对于内存的申请和释放。即当当前的buffer的长度不足以放下序列化结果时,我们将当前buffer的内存`至少`扩增2倍。这极大的减少了内存的申请释放次数,加速了大Tablet的序列化速度。 ```csharp private void extend_buffer(int space_need){ @@ -266,7 +266,7 @@ private void extend_buffer(int space_need){ 通过上述的策略,我们在一个有`20000`行的Tablet上进行测试时,序列化速度相比Naive数组长度动态生长实现算法具有约35倍的性能加速。 -## 异常重连 +## 8 异常重连 当服务端发生异常或者宕机重启时,客户端中原来通过`Open()`产生的的session会失效,抛出`TException`异常 diff --git a/src/zh/UserGuide/latest/API/Programming-Cpp-Native-API.md b/src/zh/UserGuide/latest/API/Programming-Cpp-Native-API.md index 5f02f2e65..76dff7c84 100644 --- a/src/zh/UserGuide/latest/API/Programming-Cpp-Native-API.md +++ b/src/zh/UserGuide/latest/API/Programming-Cpp-Native-API.md @@ -21,7 +21,7 @@ # C++ 原生接口 -## 依赖 +## 1 依赖 - Java 8+ - Flex @@ -31,9 +31,9 @@ - GCC 5.5.0+ -## 安装 +## 2 安装 -### 安装相关依赖 +### 2.1 安装相关依赖 - **MAC** 1. 安装 Bison : @@ -94,7 +94,7 @@ - 添加 OpenSSL 下的 include 目录到 PATH 环境变量中 -### 执行编译 +### 2.2 执行编译 从 git 克隆源代码: ```shell @@ -136,7 +136,7 @@ git checkout rc/1.3.2 编译成功后,打包好的库文件位于 `iotdb-client/client-cpp/target` 中,同时可以在 `example/client-cpp-example/target` 下找到编译好的示例程序。 -### 编译 Q&A +### 2.3 编译 Q&A Q:Linux 上的环境有哪些要求呢? @@ -163,11 +163,11 @@ A: - 执行 `.\mvnw.cmd clean install` - 回到 iotdb 代码目录执行 `.\mvnw.cmd clean package -pl example/client-cpp-example -am -DskipTests -P with-cpp -Dcmake.generator="Visual Studio 15 2017"` -## 基本接口说明 +## 3 基本接口说明 下面将给出 Session 接口的简要介绍和原型定义: -### 初始化 +### 3.1 初始化 - 开启 Session ```cpp @@ -185,7 +185,7 @@ void open(bool enableRPCCompression); void close(); ``` -### 数据定义接口(DDL) +### 3.2 数据定义接口(DDL) #### Database 管理 @@ -309,7 +309,7 @@ std::vector showMeasurementsInTemplate(const std::string &template_ ``` -### 数据操作接口(DML) +### 3.3 数据操作接口(DML) #### 数据写入 @@ -391,7 +391,7 @@ void deleteData(const std::vector &paths, int64_t endTime); void deleteData(const std::vector &paths, int64_t startTime, int64_t endTime); ``` -### IoTDB-SQL 接口 +### 3.4 IoTDB-SQL 接口 - 执行查询语句 ```cpp @@ -404,7 +404,7 @@ void executeNonQueryStatement(const std::string &sql); ``` -## 示例代码 +## 4 示例代码 示例工程源代码: @@ -413,9 +413,9 @@ void executeNonQueryStatement(const std::string &sql); 编译成功后,示例代码工程位于 `example/client-cpp-example/target` -## FAQ +## 5 FAQ -### Thrift 编译相关问题 +### 5.1 Thrift 编译相关问题 1. MAC:本地 Maven 编译 Thrift 时如出现以下链接的问题,可以尝试将 xcode-commandline 版本从 12 降低到 11.5 https://stackoverflow.com/questions/63592445/ld-unsupported-tapi-file-type-tapi-tbd-in-yaml-file/65518087#65518087 diff --git a/src/zh/UserGuide/latest/API/Programming-Data-Subscription.md b/src/zh/UserGuide/latest/API/Programming-Data-Subscription.md index fe8896cd4..ee74d8368 100644 --- a/src/zh/UserGuide/latest/API/Programming-Data-Subscription.md +++ b/src/zh/UserGuide/latest/API/Programming-Data-Subscription.md @@ -180,13 +180,13 @@ public class DataConsumerExample { -## 2 全量接口说明 +## 3 全量接口说明 -### 2.1 参数列表 +### 3.1 参数列表 可通过Properties参数对象设置消费者相关参数,具体参数如下。 -#### 2.1.1 SubscriptionConsumer +#### 3.1.1 SubscriptionConsumer | 参数 | 是否必填(默认值) | 参数含义 | @@ -220,9 +220,9 @@ public class DataConsumerExample { | autoCommitInterval | optional: 5000 (min: 500) | Long: 自动提交消费进度的时间间隔,单位为**毫秒**仅当 autoCommit 参数为 true 的时候才会生效 | -### 函数列表 +### 3.2 函数列表 -#### 数据订阅 +#### 3.2.1 数据订阅 ##### SubscriptionPullConsumer diff --git a/src/zh/UserGuide/latest/API/Programming-Go-Native-API.md b/src/zh/UserGuide/latest/API/Programming-Go-Native-API.md index 303e791e2..5c12e8489 100644 --- a/src/zh/UserGuide/latest/API/Programming-Go-Native-API.md +++ b/src/zh/UserGuide/latest/API/Programming-Go-Native-API.md @@ -21,7 +21,7 @@ # Go 原生接口 -## 依赖 +## 1 依赖 * golang >= 1.13 * make >= 3.0 @@ -30,7 +30,7 @@ * Linux、Macos 或其他类 unix 系统 * Windows+bash (下载 IoTDB Go client 需要 git ,通过 WSL、cygwin、Git Bash 任意一种方式均可) -## 安装方法 +## 2 安装方法 * 通过 go mod diff --git a/src/zh/UserGuide/latest/API/Programming-JDBC.md b/src/zh/UserGuide/latest/API/Programming-JDBC.md index fc726d6c5..7056fda4c 100644 --- a/src/zh/UserGuide/latest/API/Programming-JDBC.md +++ b/src/zh/UserGuide/latest/API/Programming-JDBC.md @@ -24,19 +24,19 @@ *注意: 目前的JDBC实现仅是为与第三方工具连接使用的。使用JDBC(执行插入语句时)无法提供高性能写入。 对于Java应用,我们推荐使用[Java 原生接口](./Programming-Java-Native-API.md)* -## 依赖 +## 1 依赖 * JDK >= 1.8 * Maven >= 3.6 -## 安装方法 +## 2 安装方法 在根目录下执行下面的命令: ```shell mvn clean install -pl iotdb-client/jdbc -am -DskipTests ``` -### 在 MAVEN 中使用 IoTDB JDBC +### 2.1 在 MAVEN 中使用 IoTDB JDBC ```xml @@ -48,7 +48,7 @@ mvn clean install -pl iotdb-client/jdbc -am -DskipTests ``` -### 示例代码 +### 2.2 示例代码 本章提供了如何建立数据库连接、执行 SQL 和显示查询结果的示例。 diff --git a/src/zh/UserGuide/latest/API/Programming-Java-Native-API.md b/src/zh/UserGuide/latest/API/Programming-Java-Native-API.md index 25269e46b..8b291730d 100644 --- a/src/zh/UserGuide/latest/API/Programming-Java-Native-API.md +++ b/src/zh/UserGuide/latest/API/Programming-Java-Native-API.md @@ -341,9 +341,9 @@ public class SessionPoolExample { } ``` -### 3 全量接口说明 +## 3 全量接口说明 -#### 3.1 参数列表 +### 3.1 参数列表 Session具有如下的字段,可以通过构造函数或Session.Builder方式设置如下参数 @@ -379,9 +379,9 @@ Session具有如下的字段,可以通过构造函数或Session.Builder方式 -#### 3.2 接口列表 +### 3.2 接口列表 -##### 3.2.1 元数据管理 +#### 3.2.1 元数据管理 | 方法名 | 功能描述 | 参数解释 | | ------------------------------------------------------------ | ------------------------ | ------------------------------------------------------------ | @@ -410,7 +410,7 @@ Session具有如下的字段,可以通过构造函数或Session.Builder方式 | `unsetSchemaTemplate(String prefixPath, String templateName)` | 取消路径的模板设置 | `prefixPath`: 路径,`templateName`: 模板名称 | -##### 3.2.2 数据写入 +#### 3.2.2 数据写入 | 方法名 | 功能描述 | 参数解释 | | ------------------------------------------------------------ | ---------------------------------- | ------------------------------------------------------------ | @@ -439,7 +439,7 @@ Session具有如下的字段,可以通过构造函数或Session.Builder方式 | `insertAlignedTablets(Map tablets)` | 批量插入多个对齐Tablet数据 | `tablets`: 设备ID到Tablet的映射表 | | `insertAlignedTablets(Map tablets, boolean sorted)` | 批量插入排序的多个对齐Tablet数据 | 同上,增加 `sorted`: 数据是否已排序 | -##### 3.2.3 数据删除 +#### 3.2.3 数据删除 | 方法名 | 功能描述 | 参数解释 | | ------------------------------------------------------------ | ---------------------------- | ---------------------------------------- | @@ -450,7 +450,7 @@ Session具有如下的字段,可以通过构造函数或Session.Builder方式 | `deleteData(List paths, long startTime, long endTime)` | 删除路径时间范围内的历史数据 | 同上,增加 `startTime`: 起始时间戳 | -##### 3.2.4 数据查询 +#### 3.2.4 数据查询 | 方法名 | 功能描述 | 参数解释 | | ------------------------------------------------------------ | -------------------------------- | ------------------------------------------------------------ | @@ -468,7 +468,7 @@ Session具有如下的字段,可以通过构造函数或Session.Builder方式 | `executeAggregationQuery(List paths, List aggregations, long startTime, long endTime, long interval, long slidingStep)` | 执行滑动窗口聚合查询 | 同上,增加 `slidingStep`: 滑动步长 | | `fetchAllConnections()` | 获取所有活动连接信息 | 无参数 | -##### 3.2.5 系统状态与备份 +#### 3.2.5 系统状态与备份 | 方法名 | 功能描述 | 参数解释 | | -------------------------- | ---------------------- | -------------------------------------- | diff --git a/src/zh/UserGuide/latest/API/Programming-Kafka.md b/src/zh/UserGuide/latest/API/Programming-Kafka.md index 61bfaab06..ba95ff07f 100644 --- a/src/zh/UserGuide/latest/API/Programming-Kafka.md +++ b/src/zh/UserGuide/latest/API/Programming-Kafka.md @@ -23,9 +23,9 @@ [Apache Kafka](https://kafka.apache.org/) 是一个开源的分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。 -## 示例代码 +## 1 示例代码 -### kafka 生产者生产数据 Java 代码示例 +### 1.1 kafka 生产者生产数据 Java 代码示例 ```java Properties props = new Properties(); @@ -39,7 +39,7 @@ producer.close(); ``` -### kafka 消费者接收数据 Java 代码示例 +### 1.2 kafka 消费者接收数据 Java 代码示例 ```java Properties props = new Properties(); @@ -53,7 +53,7 @@ ConsumerRecords records = kafkaConsumer.poll(Duration.ofSeconds(1)); ``` -### 存入 IoTDB 服务器的 Java 代码示例 +### 1.3 存入 IoTDB 服务器的 Java 代码示例 ```java SessionPool pool = diff --git a/src/zh/UserGuide/latest/API/Programming-MQTT.md b/src/zh/UserGuide/latest/API/Programming-MQTT.md index 4a113cd13..3863e07d3 100644 --- a/src/zh/UserGuide/latest/API/Programming-MQTT.md +++ b/src/zh/UserGuide/latest/API/Programming-MQTT.md @@ -32,7 +32,7 @@ IoTDB 服务器包括内置的 MQTT 服务,该服务允许远程设备将消 -## 内置 MQTT 服务 +## 1 内置 MQTT 服务 内置的 MQTT 服务提供了通过 MQTT 直接连接到 IoTDB 的能力。 它侦听来自 MQTT 客户端的发布消息,然后立即将数据写入存储。 MQTT 主题与 IoTDB 时间序列相对应。 消息有效载荷可以由 Java SPI 加载的`PayloadFormatter`格式化为事件,默认实现为`JSONPayloadFormatter` @@ -59,7 +59,7 @@ MQTT 主题与 IoTDB 时间序列相对应。 -## MQTT 配置 +## 2 MQTT 配置 默认情况下,IoTDB MQTT 服务从`${IOTDB_HOME}/${IOTDB_CONF}/iotdb-system.properties`加载配置。 配置如下: @@ -101,7 +101,7 @@ connection.disconnect(); ``` -## 自定义 MQTT 消息格式 +## 3 自定义 MQTT 消息格式 事实上可以通过简单编程来实现 MQTT 消息的格式自定义。 可以在源码的 `example/mqtt-customize` 项目中找到一个简单示例。 diff --git a/src/zh/UserGuide/latest/API/Programming-NodeJS-Native-API.md b/src/zh/UserGuide/latest/API/Programming-NodeJS-Native-API.md index 3bd4e132e..381fd7fb2 100644 --- a/src/zh/UserGuide/latest/API/Programming-NodeJS-Native-API.md +++ b/src/zh/UserGuide/latest/API/Programming-NodeJS-Native-API.md @@ -25,7 +25,7 @@ IoTDB 使用 Thrift 作为跨语言的 RPC 框架,因此可以通过 Thrift 提供的接口来实现对 IoTDB 的访问。本文档将介绍如何生成可访问 IoTDB 的原生 Node.js 接口。 -## 依赖 +## 1 依赖 * JDK >= 1.8 * Node.js >= 16.0.0 @@ -40,7 +40,7 @@ http://thrift.apache.org/docs/install/ ``` -## 编译 thrift 库,生成 Node.js 原生接口 +## 2 编译 thrift 库,生成 Node.js 原生接口 1. 在 IoTDB 源代码文件夹的根目录中找到 pom.xml 文件。 2. 打开 pom.xml 文件,找到以下内容: @@ -86,12 +86,12 @@ http://thrift.apache.org/docs/install/ **注意**不要将`iotdb/iotdb-protocol/thrift/target` 和 `iotdb/iotdb-protocol/thrift-commons/target`上传到 git 仓库中 ! -## 使用 Node.js 原生接口 +## 3 使用 Node.js 原生接口 将 `iotdb/iotdb-protocol/thrift/target/generated-sources-nodejs/` 和 `iotdb/iotdb-protocol/thrift-commons/target/generated-sources-nodejs/` 中的文件复制到您的项目中,即可使用。 -## 支持的 rpc 接口 +## 4 支持的 rpc 接口 ``` // 打开一个 session diff --git a/src/zh/UserGuide/latest/API/Programming-ODBC.md b/src/zh/UserGuide/latest/API/Programming-ODBC.md index 08a7fc6b8..d1971f2c3 100644 --- a/src/zh/UserGuide/latest/API/Programming-ODBC.md +++ b/src/zh/UserGuide/latest/API/Programming-ODBC.md @@ -22,19 +22,19 @@ # ODBC 在 JDBC 插件的基础上,IoTDB 可以通过 ODBC-JDBC 桥来支持通过 ODBC 对数据库的操作。 -## 依赖 +## 1 依赖 * 带依赖打包的 IoTDB JDBC 插件包 * ODBC-JDBC 桥(如 Zappy-Sys) -## 部署方法 -### 准备 JDBC 插件包 +## 2 部署方法 +### 2.1 准备 JDBC 插件包 下载 IoTDB 源码,在根目录下执行下面的命令: ```shell mvn clean package -pl iotdb-client/jdbc -am -DskipTests -P get-jar-with-dependencies ``` 之后,就可以在`iotdb-client/jdbc/target`目录下看到`iotdb-jdbc-1.3.2-SNAPSHOT-jar-with-dependencies.jar`文件。 -### 准备 ODBC-JDBC 桥 +### 2.2 准备 ODBC-JDBC 桥 *注意: 这里给出的仅仅是一种 ODBC-JDBC 桥,仅作示例。读者可以自行寻找其他的 ODBC-JDBC 桥来对接 IoTDB 的 JDBC 插件。* 1. **下载 Zappy-Sys ODBC-JDBC 桥插件**: 进入 https://zappysys.com/products/odbc-powerpack/odbc-jdbc-bridge-driver/ 网站,点击下载按钮并直接安装。 diff --git a/src/zh/UserGuide/latest/API/Programming-OPC-UA_timecho.md b/src/zh/UserGuide/latest/API/Programming-OPC-UA_timecho.md index 47e31ea4e..36e21af68 100644 --- a/src/zh/UserGuide/latest/API/Programming-OPC-UA_timecho.md +++ b/src/zh/UserGuide/latest/API/Programming-OPC-UA_timecho.md @@ -21,11 +21,11 @@ # OPC UA 协议 -## OPC UA +## 1 OPC UA OPC UA 是一种在自动化领域用于不同设备和系统之间进行通信的技术规范,用于实现跨平台、跨语言和跨网络的操作,为工业物联网提供一个可靠和安全的数据交换基础。IoTDB 中支持 OPC UA协议, IoTDB OPC Server 支持 Client/Server 和 Pub/Sub 两种通信模式。 -### OPC UA Client/Server 模式 +### 1.1 PC UA Client/Server 模式 - **Client/Server 模式**:在这种模式下,IoTDB 的流处理引擎通过 OPC UA Sink 与 OPC UA 服务器(Server)建立连接。OPC UA 服务器在其地址空间(Address Space) 中维护数据,IoTDB可以请求并获取这些数据。同时,其他OPC UA客户端(Client)也能访问服务器上的数据。 @@ -39,7 +39,7 @@ OPC UA 是一种在自动化领域用于不同设备和系统之间进行通信 - OPC UA 将从 Sink 收到的设备信息,按照树形模型整理到 Objects folder 下的文件夹中。 - 每个测点都被记录为一个变量节点,并记录当前数据库中的最新值。 -### OPC UA Pub/Sub 模式 +### 1.2 OPC UA Pub/Sub 模式 - **Pub/Sub 模式**:在这种模式下,IoTDB的流处理引擎通过 OPC UA Sink 向OPC UA 服务器(Server)发送数据变更事件。这些事件被发布到服务器的消息队列中,并通过事件节点 (Event Node) 进行管理。其他OPC UA客户端(Client)可以订阅这些事件节点,以便在数据变更时接收通知。 @@ -62,9 +62,9 @@ OPC UA 是一种在自动化领域用于不同设备和系统之间进行通信 - Event 仅会发送给所有已经监听的客户端,客户端未连接则会忽略该 Event。 -## IoTDB OPC Server 启动方式 +## 2 IoTDB OPC Server 启动方式 -### 语法 +### 2.1 语法 创建该 Sink 的语法如下: @@ -81,7 +81,7 @@ create pipe p1 ) ``` -### 参数 +### 2.2 参数 | **参数** | **描述** | **取值范围** | **是否必填** | **默认值** | | ---------------------------------- | ------------------------------ | -------------------------------- | ------------ | ------------------------------------------------------------ | @@ -94,7 +94,7 @@ create pipe p1 | sink.user | 用户,这里指 OPC UA 的允许用户 | String | 选填 | root | | sink.password | 密码,这里指 OPC UA 的允许密码 | String | 选填 | root | -### 示例 +### 2.3 示例 ```Bash create pipe p1 @@ -104,7 +104,7 @@ create pipe p1 start pipe p1; ``` -### 使用限制 +### 2.4 使用限制 1. **必须存在 DataRegion**:在 IoTDB 有 dataRegion 时,OPC UA 的服务器才会启动。因此,对于一个空的 IoTDB,需要写入一条数据,OPC UA 的服务器才有效。 2. **需连接才有数据**:每一个订阅该服务器的客户端,不会收到 OPC Server 在连接之前写入IoTDB的数据。 @@ -117,9 +117,9 @@ start pipe p1; 4. **不支持删除数据和修改测点类型:**在Client Server模式下,OPC UA无法删除数据或者改变数据类型的设置。而在Pub Sub模式下,如果数据被删除了,信息是无法推送给客户端的。 -## IoTDB OPC Server 示例 +## 3 IoTDB OPC Server 示例 -### Client / Server 模式 +### 3.1 Client / Server 模式 #### 准备工作 @@ -169,7 +169,7 @@ insert into root.test.db(time, s2) values(now(), 2) -### Pub / Sub 模式 +### 3.2 Pub / Sub 模式 #### 准备工作 @@ -182,7 +182,7 @@ insert into root.test.db(time, s2) values(now(), 2) - Client 的配置及启动逻辑(ClientExampleRunner) - ClientTest 的父类(ClientExample) -### 快速开始 +### 3.3 快速开始 使用步骤为: @@ -247,7 +247,7 @@ start pipe p1; -### 注意事项 +### 3.4 注意事项 1. **单机与集群**:建议使用1C1D单机版,如果集群中有多个 DataNode,可能数据会分散发送在各个 DataNode 上,无法收听到全量数据。 diff --git a/src/zh/UserGuide/latest/API/Programming-Python-Native-API.md b/src/zh/UserGuide/latest/API/Programming-Python-Native-API.md index e4c08ef34..d800caa4a 100644 --- a/src/zh/UserGuide/latest/API/Programming-Python-Native-API.md +++ b/src/zh/UserGuide/latest/API/Programming-Python-Native-API.md @@ -21,11 +21,11 @@ # Python 原生接口 -## 依赖 +## 1 依赖 在使用 Python 原生接口包前,您需要安装 thrift (>=0.13) 依赖。 -## 如何使用 (示例) +## 2 如何使用 (示例) 首先下载包:`pip3 install apache-iotdb` @@ -49,11 +49,11 @@ session.open(False) zone = session.get_time_zone() session.close() ``` -## 基本接口说明 +## 3 基本接口说明 下面将给出 Session 对应的接口的简要介绍和对应参数: -### 初始化 +### 3.1 初始化 * 初始化 Session @@ -95,7 +95,7 @@ session.open(enable_rpc_compression=False) ```python session.close() ``` -### 通过SessionPool管理session连接 +### 3.2 通过SessionPool管理session连接 利用SessionPool管理session,不需要再考虑如何重用session。当session连接到达pool的最大值时,获取session的请求会被阻塞,可以通过参数设置阻塞等待时间。每次session使用完需要使用putBack方法将session归还到SessionPool中管理。 @@ -134,9 +134,9 @@ session_pool.put_back(session) session_pool.close() ``` -## 数据定义接口 DDL +## 4 数据定义接口 DDL -### Database 管理 +### 4.1 Database 管理 * 设置 database @@ -150,7 +150,7 @@ session.set_storage_group(group_name) session.delete_storage_group(group_name) session.delete_storage_groups(group_name_lst) ``` -### 时间序列管理 +### 4.2 时间序列管理 * 创建单个或多个时间序列 @@ -186,9 +186,9 @@ session.delete_time_series(paths_list) session.check_time_series_exists(path) ``` -## 数据操作接口 DML +## 5 数据操作接口 DML -### 数据写入 +### 5.1 数据写入 推荐使用 insert_tablet 帮助提高写入效率 @@ -308,7 +308,7 @@ session.insert_records( session.insert_records_of_one_device(device_id, time_list, measurements_list, data_types_list, values_list) ``` -### 带有类型推断的写入 +### 5.2 带有类型推断的写入 当数据均是 String 类型时,我们可以使用如下接口,根据 value 的值进行类型推断。例如:value 为 "true" ,就可以自动推断为布尔类型。value 为 "3.2" ,就可以自动推断为数值类型。服务器需要做类型推断,可能会有额外耗时,速度较无需类型推断的写入慢 @@ -316,7 +316,7 @@ session.insert_records_of_one_device(device_id, time_list, measurements_list, da session.insert_str_record(device_id, timestamp, measurements, string_values) ``` -### 对齐时间序列的写入 +### 5.3 对齐时间序列的写入 对齐时间序列的写入使用 insert_aligned_xxx 接口,其余与上述接口类似: @@ -327,7 +327,7 @@ session.insert_str_record(device_id, timestamp, measurements, string_values) * insert_aligned_tablets -## IoTDB-SQL 接口 +## 6 IoTDB-SQL 接口 * 执行查询语句 @@ -348,8 +348,8 @@ session.execute_statement(sql) ``` -## 元数据模版接口 -### 构建元数据模版 +## 7 元数据模版接口 +### 7.1 构建元数据模版 1. 首先构建 Template 类 2. 添加子节点 MeasurementNode 3. 调用创建元数据模版接口 @@ -367,7 +367,7 @@ template.add_template(m_node_z) session.create_schema_template(template) ``` -### 修改模版节点信息 +### 7.2 改模版节点信息 修改模版节点,其中修改的模版必须已经被创建。以下函数能够在已经存在的模版中增加或者删除物理量 * 在模版中增加实体 ```python @@ -379,17 +379,17 @@ session.add_measurements_in_template(template_name, measurements_path, data_type session.delete_node_in_template(template_name, path) ``` -### 挂载元数据模板 +### 7.3 挂载元数据模板 ```python session.set_schema_template(template_name, prefix_path) ``` -### 卸载元数据模版 +### 7.4 卸载元数据模版 ```python session.unset_schema_template(template_name, prefix_path) ``` -### 查看元数据模版 +### 7.5 查看元数据模版 * 查看所有的元数据模版 ```python session.show_all_templates() @@ -424,14 +424,14 @@ session.show_paths_template_set_on(template_name) session.show_paths_template_using_on(template_name) ``` -### 删除元数据模版 +### 7.6 删除元数据模版 删除已经存在的元数据模版,不支持删除已经挂载的模版 ```python session.drop_schema_template("template_python") ``` -## 对 Pandas 的支持 +## 8 对 Pandas 的支持 我们支持将查询结果轻松地转换为 [Pandas Dataframe](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html)。 @@ -459,7 +459,7 @@ session.close() df = ... ``` -## IoTDB Testcontainer +## 9 IoTDB Testcontainer Python 客户端对测试的支持是基于`testcontainers`库 (https://testcontainers-python.readthedocs.io/en/latest/index.html) 的,如果您想使用该特性,就需要将其安装到您的项目中。 @@ -479,11 +479,11 @@ class MyTestCase(unittest.TestCase): 默认情况下,它会拉取最新的 IoTDB 镜像 `apache/iotdb:latest`进行测试,如果您想指定待测 IoTDB 的版本,您只需要将版本信息像这样声明:`IoTDBContainer("apache/iotdb:0.12.0")`,此时,您就会得到一个`0.12.0`版本的 IoTDB 实例。 -## IoTDB DBAPI +## 10 IoTDB DBAPI IoTDB DBAPI 遵循 Python DB API 2.0 规范 (https://peps.python.org/pep-0249/),实现了通过Python语言访问数据库的通用接口。 -### 例子 +### 10.1 例子 + 初始化 初始化的参数与Session部分保持一致(sqlalchemy_mode参数除外,该参数仅在SQLAlchemy方言中使用) @@ -532,9 +532,9 @@ cursor.close() conn.close() ``` -## IoTDB SQLAlchemy Dialect(实验性) +## 11 IoTDB SQLAlchemy Dialect(实验性) IoTDB的SQLAlchemy方言主要是为了适配Apache superset而编写的,该部分仍在完善中,请勿在生产环境中使用! -### 元数据模型映射 +### 11.1 元数据模型映射 SQLAlchemy 所使用的数据模型为关系数据模型,这种数据模型通过表格来描述不同实体之间的关系。 而 IoTDB 的数据模型为层次数据模型,通过树状结构来对数据进行组织。 为了使 IoTDB 能够适配 SQLAlchemy 的方言,需要对 IoTDB 中原有的数据模型进行重新组织, @@ -564,7 +564,7 @@ SQLAlchemy 中的元数据有: ![sqlalchemy-to-iotdb](/img/UserGuide/API/IoTDB-SQLAlchemy/sqlalchemy-to-iotdb.png?raw=true) -### 数据类型映射 +### 11.2 数据类型映射 | IoTDB 中的数据类型 | SQLAlchemy 中的数据类型 | |--------------|-------------------| | BOOLEAN | Boolean | @@ -574,7 +574,7 @@ SQLAlchemy 中的元数据有: | DOUBLE | Float | | TEXT | Text | | LONG | BigInteger | -### Example +### 11.3 Example + 执行语句 @@ -619,13 +619,13 @@ for row in res: print(row) ``` -## 给开发人员 +## 12 给开发人员 -### 介绍 +### 12.1 介绍 这是一个使用 thrift rpc 接口连接到 IoTDB 的示例。在 Windows 和 Linux 上操作几乎是一样的,但要注意路径分隔符等不同之处。 -### 依赖 +### 12.2 依赖 首选 Python3.7 或更高版本。 @@ -640,7 +640,7 @@ http://thrift.apache.org/docs/install/ pip install -r requirements_dev.txt ``` -### 编译 thrift 库并调试 +### 12.3 编译 thrift 库并调试 在 IoTDB 源代码文件夹的根目录下,运行`mvn clean generate-sources -pl iotdb-client/client-py -am`, @@ -650,7 +650,7 @@ pip install -r requirements_dev.txt **注意**不要将`iotdb/thrift`上传到 git 仓库中 ! -### Session 客户端 & 使用示例 +### 12.4 Session 客户端 & 使用示例 我们将 thrift 接口打包到`client-py/src/iotdb/session.py `中(与 Java 版本类似),还提供了一个示例文件`client-py/src/SessionExample.py`来说明如何使用 Session 模块。请仔细阅读。 @@ -669,7 +669,7 @@ zone = session.get_time_zone() session.close() ``` -### 测试 +### 12.5 测试 请在`tests`文件夹中添加自定义测试。 @@ -677,12 +677,12 @@ session.close() **注意**一些测试需要在您的系统上使用 docker,因为测试的 IoTDB 实例是使用 [testcontainers](https://testcontainers-python.readthedocs.io/en/latest/index.html) 在 docker 容器中启动的。 -### 其他工具 +### 12.6 其他工具 [black](https://pypi.org/project/black/) 和 [flake8](https://pypi.org/project/flake8/) 分别用于自动格式化和 linting。 它们可以通过 `black .` 或 `flake8 .` 分别运行。 -## 发版 +## 13 发版 要进行发版, @@ -694,11 +694,11 @@ session.close() 最后,您就可以将包发布到 pypi 了。 -### 准备您的环境 +### 13.1 准备您的环境 首先,通过`pip install -r requirements_dev.txt`安装所有必要的开发依赖。 -### 发版 +### 13.2 发版 有一个脚本`release.sh`可以用来执行发版的所有步骤。 diff --git a/src/zh/UserGuide/latest/API/Programming-Rust-Native-API.md b/src/zh/UserGuide/latest/API/Programming-Rust-Native-API.md index d75710501..c74976b3c 100644 --- a/src/zh/UserGuide/latest/API/Programming-Rust-Native-API.md +++ b/src/zh/UserGuide/latest/API/Programming-Rust-Native-API.md @@ -25,7 +25,7 @@ IoTDB 使用 Thrift 作为跨语言的 RPC 框架,因此可以通过 Thrift 提供的接口来实现对 IoTDB 的访问。本文档将介绍如何生成可访问 IoTDB 的原生 Rust 接口。 -## 依赖 +## 1 依赖 * JDK >= 1.8 * Rust >= 1.0.0 @@ -40,7 +40,7 @@ http://thrift.apache.org/docs/install/ ``` -## 编译 thrift 库,生成 Rust 原生接口 +## 2 编译 thrift 库,生成 Rust 原生接口 1. 在 IoTDB 源代码文件夹的根目录中找到 pom.xml 文件。 2. 打开 pom.xml 文件,找到以下内容: @@ -86,11 +86,11 @@ http://thrift.apache.org/docs/install/ **注意**不要将`iotdb/iotdb-protocol/thrift/target` 和 `iotdb/iotdb-protocol/thrift-commons/target`上传到 git 仓库中 ! -## 使用 Rust 原生接口 +## 3 使用 Rust 原生接口 将 `iotdb/iotdb-protocol/thrift/target/generated-sources-rust/` 和 `iotdb/iotdb-protocol/thrift-commons/target/generated-sources-rust/` 中的文件复制到您的项目中,即可使用。 -## 支持的 rpc 接口 +## 4 支持的 rpc 接口 ``` // 打开一个 session diff --git a/src/zh/UserGuide/latest/API/RestServiceV1.md b/src/zh/UserGuide/latest/API/RestServiceV1.md index c1d12587b..dac1de90d 100644 --- a/src/zh/UserGuide/latest/API/RestServiceV1.md +++ b/src/zh/UserGuide/latest/API/RestServiceV1.md @@ -22,7 +22,7 @@ # RESTful API V1(不推荐) IoTDB 的 RESTful 服务可用于查询、写入和管理操作,它使用 OpenAPI 标准来定义接口并生成框架。 -## 开启RESTful 服务 +## 1 开启RESTful 服务 RESTful 服务默认情况是关闭的 找到IoTDB安装目录下面的`conf/iotdb-system.properties`文件,将 `enable_rest_service` 设置为 `true` 以启用该模块。 @@ -31,7 +31,7 @@ RESTful 服务默认情况是关闭的 enable_rest_service=true ``` -## 鉴权 +## 2 鉴权 除了检活接口 `/ping`,RESTful 服务使用了基础(basic)鉴权,每次 URL 请求都需要在 header 中携带 `'Authorization': 'Basic ' + base64.encode(username + ':' + password)`。 示例中使用的用户名为:`root`,密码为:`root`,对应的 Basic 鉴权 Header 格式为 @@ -64,9 +64,9 @@ Authorization: Basic cm9vdDpyb290 } ``` -## 接口 +## 3 接口 -### ping +### 3.1 ping ping 接口可以用于线上服务检活。 @@ -114,7 +114,7 @@ $ curl http://127.0.0.1:18080/ping > `/ping` 接口访问不需要鉴权。 -### query +### 3.2 query query 接口可以用于处理数据查询和元数据查询。 @@ -777,7 +777,7 @@ curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X } ``` -### nonQuery +### 3.3 nonQuery 请求方式:`POST` @@ -813,7 +813,7 @@ curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X -### insertTablet +### 3.4 insertTablet 请求方式:`POST` @@ -853,7 +853,7 @@ curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X ``` -## 配置 +## 4 配置 配置位于 `iotdb-system.properties` 中。 diff --git a/src/zh/UserGuide/latest/API/RestServiceV2.md b/src/zh/UserGuide/latest/API/RestServiceV2.md index b572379d3..b88b8c199 100644 --- a/src/zh/UserGuide/latest/API/RestServiceV2.md +++ b/src/zh/UserGuide/latest/API/RestServiceV2.md @@ -22,7 +22,7 @@ # RESTful API V2 IoTDB 的 RESTful 服务可用于查询、写入和管理操作,它使用 OpenAPI 标准来定义接口并生成框架。 -## 开启RESTful 服务 +## 1 开启RESTful 服务 RESTful 服务默认情况是关闭的 找到IoTDB安装目录下面的`conf/iotdb-system.properties`文件,将 `enable_rest_service` 设置为 `true` 以启用该模块。 @@ -31,7 +31,7 @@ RESTful 服务默认情况是关闭的 enable_rest_service=true ``` -## 鉴权 +## 2 鉴权 除了检活接口 `/ping`,RESTful 服务使用了基础(basic)鉴权,每次 URL 请求都需要在 header 中携带 `'Authorization': 'Basic ' + base64.encode(username + ':' + password)`。 示例中使用的用户名为:`root`,密码为:`root`,对应的 Basic 鉴权 Header 格式为 @@ -64,9 +64,9 @@ Authorization: Basic cm9vdDpyb290 } ``` -## 接口 +## 3 接口 -### ping +### 3.1 ping ping 接口可以用于线上服务检活。 @@ -114,7 +114,7 @@ $ curl http://127.0.0.1:18080/ping > `/ping` 接口访问不需要鉴权。 -### query +### 3.2 query query 接口可以用于处理数据查询和元数据查询。 @@ -777,7 +777,7 @@ curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X } ``` -### nonQuery +### 3.3 nonQuery 请求方式:`POST` @@ -813,7 +813,7 @@ curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X -### insertTablet +### 3.4 insertTablet 请求方式:`POST` @@ -852,7 +852,7 @@ curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X } ``` -### insertRecords +### 3.5 insertRecords 请求方式:`POST` @@ -892,7 +892,7 @@ curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X ``` -## 配置 +## 4 配置 配置位于 `iotdb-system.properties` 中。 diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/DBeaver.md b/src/zh/UserGuide/latest/Ecosystem-Integration/DBeaver.md index 4b0dfcfc2..4e71c0488 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/DBeaver.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/DBeaver.md @@ -23,11 +23,11 @@ DBeaver 是一个 SQL 客户端和数据库管理工具。DBeaver 可以使用 IoTDB 的 JDBC 驱动与 IoTDB 进行交互。 -## DBeaver 安装 +## 1 DBeaver 安装 * DBeaver 下载地址:https://dbeaver.io/download/ -## IoTDB 安装 +## 2 IoTDB 安装 * 下载 IoTDB 二进制版本 * IoTDB 下载地址:https://iotdb.apache.org/Download/ @@ -35,7 +35,7 @@ DBeaver 是一个 SQL 客户端和数据库管理工具。DBeaver 可以使用 I * 或者从源代码中编译 * 参考 https://github.com/apache/iotdb -## 连接 IoTDB 与 DBeaver +## 3 连接 IoTDB 与 DBeaver 1. 启动 IoTDB 服务 diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/DataEase.md b/src/zh/UserGuide/latest/Ecosystem-Integration/DataEase.md index d3be92a31..41e2596e1 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/DataEase.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/DataEase.md @@ -20,7 +20,7 @@ --> # DataEase -## 产品概述 +## 1 产品概述 1. DataEase 简介 @@ -38,7 +38,7 @@ -## 安装要求 +## 2 安装要求 | **准备内容** | **版本要求** | | :-------------------- | :----------------------------------------------------------- | @@ -47,7 +47,7 @@ | DataEase | 要求 v1 系列 v1.18 版本,安装请参考 DataEase 官网[安装指导](https://dataease.io/docs/v2/installation/offline_INSTL_and_UPG/)(暂不支持 v2.x,其他版本适配请联系天谋商务) | | DataEase-IoTDB 连接器 | 请联系天谋商务获取 | -## 安装步骤 +## 3 安装步骤 步骤一:请联系商务获取压缩包,解压缩安装包( iotdb-api-source-1.0.0.zip ) @@ -89,16 +89,16 @@ iotdb.password=root lsof -i:8097 // config 里启动 IoTDB API Source 监听的端口 ``` -## 使用说明 +## 4 使用说明 -### 登录 DataEase +### 4.1 登录 DataEase 1. 登录 DataEase,访问地址 : `http://目标服务器IP地址:80`
-### 配置数据源 +### 4.2 配置数据源 1. 在导航条中跳转【数据源】界面
@@ -154,7 +154,7 @@ iotdb.password=root
-### 配置数据集 +### 4.3 配置数据集 1. 创建 API 数据集:在导航条中跳转至数据集页面,点击页面左上角的 【 + 】 符号,选择【API 数据集】类型,选择此数据集所在的目录,即可进入新建 API 数据集页面。
@@ -190,7 +190,7 @@ iotdb.password=root
-### 配置仪表板 +### 4.4 配置仪表板 1. 在导航条中跳转至仪表板页面,可以点击【 + 】符号新建目录,并且在对应目录,点击【 + 】符号,然后从弹出的菜单中选择【新建仪表板】
diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/Flink-IoTDB.md b/src/zh/UserGuide/latest/Ecosystem-Integration/Flink-IoTDB.md index 6d2e61dec..a261c1927 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/Flink-IoTDB.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/Flink-IoTDB.md @@ -23,11 +23,11 @@ IoTDB 与 [Apache Flink](https://flink.apache.org/) 的集成。此模块包含了 iotdb sink,允许 flink job 将时序数据写入 IoTDB。 -## IoTDBSink +## 1 IoTDBSink 使用 `IoTDBSink` ,您需要定义一个 `IoTDBOptions` 和一个 `IoTSerializationSchema` 实例。 `IoTDBSink` 默认每次发送一个数据,可以通过调用 `withBatchSize(int)` 进行调整。 -## 示例 +## 2 示例 该示例演示了如下从一个 Flink job 中发送数据到 IoTDB server 的场景: @@ -115,7 +115,7 @@ IoTDB 与 [Apache Flink](https://flink.apache.org/) 的集成。此模块包含 -## 运行方法 +## 3 运行方法 * 启动 IoTDB server * 运行 `org.apache.iotdb.flink.FlinkIoTDBSink.java` 将 Flink job 运行在本地的集群上。 diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/Flink-TsFile.md b/src/zh/UserGuide/latest/Ecosystem-Integration/Flink-TsFile.md index 17a3975e6..7954fd6dd 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/Flink-TsFile.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/Flink-TsFile.md @@ -21,7 +21,7 @@ # Apache Flink(TsFile) -## 关于 TsFile-Flink 连接器 +## 1 关于 TsFile-Flink 连接器 TsFile-Flink-Connector 对 Tsfile 类型的外部数据源实现 Flink 的支持。 这使用户可以通过 Flink DataStream/DataSet 进行读取,写入和查询。 @@ -30,9 +30,9 @@ TsFile-Flink-Connector 对 Tsfile 类型的外部数据源实现 Flink 的支持 * 从本地文件系统或 hdfs 加载单个或多个 TsFile (只支持以 DataSet 的形式)到 Flink 。 * 将本地文件系统或 hdfs 中特定目录中的所有文件加载到 Flink 中。 -## 快速开始 +## 2 快速开始 -### TsFileInputFormat 示例 +### 2.1 TsFileInputFormat 示例 1. 使用默认的 RowRowRecordParser 创建 TsFileInputFormat 。 @@ -92,7 +92,7 @@ for (String s : result) { } ``` -### TSRecordOutputFormat 示例 +### 2.2 TSRecordOutputFormat 示例 1. 使用默认的 RowTSRecordConverter 创建 TSRecordOutputFormat 。 diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/Grafana-Connector.md b/src/zh/UserGuide/latest/Ecosystem-Integration/Grafana-Connector.md index 3e44550ad..82c353321 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/Grafana-Connector.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/Grafana-Connector.md @@ -23,14 +23,14 @@ Grafana 是开源的指标量监测和可视化工具,可用于展示时序数据和应用程序运行分析。Grafana 支持 Graphite,InfluxDB 等国际主流时序数据库作为数据源。在 IoTDB 项目中,我们开发了 Grafana 展现 IoTDB 中时序数据的连接器 IoTDB-Grafana-Connector,为您提供使用 Grafana 展示 IoTDB 数据库中的时序数据的可视化方法。 -## Grafana 的安装与部署 +## 1 Grafana 的安装与部署 -### 安装 +### 1.1 安装 * Grafana 组件下载地址:https://grafana.com/grafana/download * 版本 >= 4.4.1 -### simple-json-datasource 数据源插件安装 +### 1.2 simple-json-datasource 数据源插件安装 * 插件名称: simple-json-datasource @@ -68,7 +68,7 @@ The following plugins are disabled and not shown in the list below: allow_loading_unsigned_plugins = "grafana-simple-json-datasource" ``` -### 启动 Grafana +### 1.3 启动 Grafana 进入 Grafana 的安装目录,使用以下命令启动 Grafana: * Windows 系统: @@ -85,17 +85,17 @@ Shell > grafana-server --config=/usr/local/etc/grafana/grafana.ini --homepath /u ``` 更多安装详情,请点 [这里](https://grafana.com/docs/grafana/latest/installation/) -## IoTDB 安装 +## 2 IoTDB 安装 参见 [https://github.com/apache/iotdb](https://github.com/apache/iotdb) -## Grafana-IoTDB-Connector 连接器安装 +## 3 Grafana-IoTDB-Connector 连接器安装 ```shell git clone https://github.com/apache/iotdb.git ``` -## 启动 Grafana-IoTDB-Connector +## 4 启动 Grafana-IoTDB-Connector * 方案一(适合开发者) @@ -120,7 +120,7 @@ java -jar iotdb-grafana-connector-{version}.war 如果您需要配置属性,将`grafana/src/main/resources/application.properties`移动到 war 包同级目录下(`grafana/target`) -## 使用 Grafana +## 5 使用 Grafana Grafana 以网页的 dashboard 形式为您展示数据,在使用时请您打开浏览器,访问 http://\:\ @@ -128,7 +128,7 @@ Grafana 以网页的 dashboard 形式为您展示数据,在使用时请您打 注:IP 为您的 Grafana 所在的服务器 IP,Port 为 Grafana 的运行端口(默认 3000)。默认登录的用户名和密码都是“admin”。 -### 添加 IoTDB 数据源 +### 5.1 添加 IoTDB 数据源 点击左上角的“Grafana”图标,选择`Data Source`选项,然后再点击`Add data source`。 @@ -136,13 +136,13 @@ Grafana 以网页的 dashboard 形式为您展示数据,在使用时请您打 在编辑数据源的时候,`Type`一栏选择`Simplejson`,`URL`一栏填写 http://\:\,IP 为您的 IoTDB-Grafana-Connector 连接器所在的服务器 IP,Port 为运行端口(默认 8888)。之后确保 IoTDB 已经启动,点击“Save & Test”,出现“Data Source is working”提示表示配置成功。 -### 操作 Grafana +### 5.2 操作 Grafana 进入 Grafana 可视化页面后,可以选择添加时间序列,如下图。您也可以按照 Grafana 官方文档进行相应的操作,详情可参看 Grafana 官方文档:http://docs.grafana.org/guides/getting_started/。 -## 配置 grafana +## 6 配置 grafana ``` # IoTDB 的 IP 和端口 diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/Grafana-Plugin.md b/src/zh/UserGuide/latest/Ecosystem-Integration/Grafana-Plugin.md index f7f3297f7..0a68347aa 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/Grafana-Plugin.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/Grafana-Plugin.md @@ -25,22 +25,22 @@ Grafana 是开源的指标量监测和可视化工具,可用于展示时序数 在 IoTDB 项目中,我们开发了 Grafana 插件,该插件通过调用 IoTDB REST 服务来展现 IoTDB 中时序数据 ,提供了众多时序数据的可视化方法。Grafana 插件相较于 IoTDB-Grafana-Connector 连接器执行效率更高、支持的查询种类更多。只要在您部署环境允许的情况下,*我们都推荐直接使用 Grafana 插件而不使用 IoTDB-Grafana-Connector 连接器*。 -## 部署 Grafana 插件 +## 1 部署 Grafana 插件 -### 安装 Grafana +### 1.1 安装 Grafana * Grafana 组件下载地址:https://grafana.com/grafana/download * 版本 >= 9.3.0 -### grafana-plugin 获取 +### 1.2 grafana-plugin 获取 #### Grafana官方下载 apache-iotdb-datasource 二进制文件下载地址:https://grafana.com/api/plugins/apache-iotdb-datasource/versions/1.0.0/download -### grafana-plugin 插件安装 +### 1.3 grafana-plugin 插件安装 -### 方式一 使用 grafana-cli 工具安装(推荐) +#### 方式一 使用 grafana-cli 工具安装(推荐) * 使用 grafana-cli 工具从命令行安装 apache-iotdb-datasource,命令内容如下: @@ -48,11 +48,11 @@ Grafana 是开源的指标量监测和可视化工具,可用于展示时序数 grafana-cli plugins install apache-iotdb-datasource ``` -### 方式二 使用Grafana 界面安装(推荐) +#### 方式二 使用Grafana 界面安装(推荐) 从本地 Grafana 点击 Configuration -> Plugins -> 搜索 IoTDB 进行插件安装 -### 方式三 手动安装grafana-plugin 插件(不推荐) +#### 方式三 手动安装grafana-plugin 插件(不推荐) * 拷贝上述生成的前端工程目标文件夹到 Grafana 的插件目录中 `${Grafana文件目录}\data\plugins\`。如果没有此目录可以手动建或者启动grafana会自动建立,当然也可以修改plugins的位置,具体请查看下面的修改Grafana 的插件目录位置说明。 @@ -60,7 +60,7 @@ grafana-cli plugins install apache-iotdb-datasource 更多有关Grafana详情,请点 [这里](https://grafana.com/docs/grafana/latest/plugins/installation/) -### 启动 Grafana +### 1.4 启动 Grafana 进入 Grafana 的安装目录,使用以下命令启动 Grafana: * Windows 系统: @@ -81,7 +81,7 @@ brew services start grafana 更多详情,请点 [这里](https://grafana.com/docs/grafana/latest/installation/) -### 配置 IoTDB REST 服务 +### 1.5 配置 IoTDB REST 服务 进入 `{iotdb 目录}/conf`,打开 `iotdb-system.properties` 文件,并作如下修改: @@ -97,9 +97,9 @@ rest_service_port=18080 -## 使用 Grafana 插件 +## 2 使用 Grafana 插件 -### 访问 Grafana dashboard +### 2.1 访问 Grafana dashboard Grafana 以网页的 dashboard 形式为您展示数据,在使用时请您打开浏览器,访问 `http://:`。 @@ -111,7 +111,7 @@ Grafana 以网页的 dashboard 形式为您展示数据,在使用时请您打 -### 添加 IoTDB 数据源 +### 2.2 添加 IoTDB 数据源 点击左侧的 `设置` 图标,选择 `Data Source` 选项,然后再点击 `Add data source`。 @@ -129,7 +129,7 @@ Ip 为您的 IoTDB 服务器所在的宿主机 IP,port 为 REST 服务的运 -### 创建一个新的 Panel +### 2.3 创建一个新的 Panel 点击左侧的 `Dashboards` 图标,选择 `Manage`,如下图所示: @@ -184,7 +184,7 @@ CONTROL 输入框为非必须填写项目,填写内容应当是控制查询类 -### 变量与模板功能的支持 +### 2.4 变量与模板功能的支持 SQL: Full Customized和SQL: Drop-down List两种输入方式都支持 Grafana 的变量与模板功能,下面示例中使用SQL: Full Customized输入方式,SQL: Drop-down List与之类似。 @@ -232,7 +232,7 @@ Type下拉中有Query、Custom、Text box、Constant、DataSource、Interval、A * 提示:如果查询的字段中有布尔类型的数据,会将true转化成1,false转化成0结果值进行显示。 -### 告警功能 +### 2.5 告警功能 本插件支持 Grafana alert功能。在Grafana 9告警界面一共有6个Tab,分别是Alert rules、Contact points、Notification policies、Silences、Alert groups、Admin * `Alert rules` 告警规则列表,用于展示和配置告警规则 @@ -282,7 +282,7 @@ Type下拉中有Query、Custom、Text box、Constant、DataSource、Interval、A 想了解alert更多详细的操作可以查看官方文档https://grafana.com/docs/grafana/latest/alerting/ -## 更多 +## 6 更多 更多关于 Grafana 操作详情可参看 Grafana 官方文档:http://docs.grafana.org/guides/getting_started/。 diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/Hive-TsFile.md b/src/zh/UserGuide/latest/Ecosystem-Integration/Hive-TsFile.md index 126a023f6..c15e251b7 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/Hive-TsFile.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/Hive-TsFile.md @@ -21,7 +21,7 @@ # Apache Hive(TsFile) -## 什么是 TsFile 的 Hive 连接器 +## 1 什么是 TsFile 的 Hive 连接器 TsFile 的 Hive 连接器实现了对 Hive 读取外部 Tsfile 类型的文件格式的支持, 使用户能够通过 Hive 操作 Tsfile。 @@ -32,13 +32,13 @@ TsFile 的 Hive 连接器实现了对 Hive 读取外部 Tsfile 类型的文件 * 使用 HQL 查询 tsfile * 到现在为止,写操作在 hive-connector 中还没有被支持。所以,HQL 中的 insert 操作是不被允许的 -## 系统环境要求 +## 2 系统环境要求 |Hadoop Version |Hive Version | Java Version | TsFile | |------------- |------------ | ------------ |------------ | | `2.7.3` or `3.2.1` | `2.3.6` or `3.1.2` | `1.8` | `1.0.0+`| -## 数据类型对应关系 +## 3 数据类型对应关系 | TsFile 数据类型 | Hive 数据类型 | | ---------------- | --------------- | @@ -49,7 +49,7 @@ TsFile 的 Hive 连接器实现了对 Hive 读取外部 Tsfile 类型的文件 | DOUBLE | Double | | TEXT | STRING | -## 为 Hive 添加依赖 jar 包 +## 4 为 Hive 添加依赖 jar 包 为了在 Hive 中使用 Tsfile 的 hive 连接器,我们需要把 hive 连接器的 jar 导入进 hive。 @@ -64,7 +64,7 @@ Added [/Users/hive/iotdb/hive-connector/target/hive-connector-1.0.0-jar-with-dep Added resources: [/Users/hive/iotdb/hive-connector/target/hive-connector-1.0.0-jar-with-dependencies.jar] ``` -## 创建 Tsfile-backed 的 Hive 表 +## 5 创建 Tsfile-backed 的 Hive 表 为了创建一个 Tsfile-backed 的表,需要将`serde`指定为`org.apache.iotdb.hive.TsFileSerDe`, 将`inputformat`指定为`org.apache.iotdb.hive.TSFHiveInputFormat`, @@ -108,7 +108,7 @@ Time taken: 0.053 seconds, Fetched: 2 row(s) 到目前为止,Tsfile-backed 的表已经可以像 hive 中其他表一样被操作了。 -## 从 Tsfile-backed 的 Hive 表中查询 +## 6 从 Tsfile-backed 的 Hive 表中查询 在做任何查询之前,我们需要通过如下命令,在 hive 中设置`hive.input.format`: @@ -121,7 +121,7 @@ hive> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; 例如: -### 选择查询语句示例 +### 6.1 选择查询语句示例 ``` hive> select * from only_sensor_1 limit 10; @@ -139,7 +139,7 @@ OK Time taken: 1.464 seconds, Fetched: 10 row(s) ``` -### 聚合查询语句示例 +### 6.2 聚合查询语句示例 ``` hive> select count(*) from only_sensor_1; diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md b/src/zh/UserGuide/latest/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md index ff570158b..1b8cfe518 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md @@ -20,7 +20,7 @@ --> # Ignition -## 产品概述 +## 1 产品概述 1. Ignition简介 @@ -37,7 +37,7 @@ Ignition 是一个基于WEB的监控和数据采集工具(SCADA)- 一个开 ![](/img/Ignition.png) -## 安装要求 +## 2 安装要求 | **准备内容** | **版本要求** | | :------------------------: | :------------------------------------------------------------: | @@ -46,15 +46,15 @@ Ignition 是一个基于WEB的监控和数据采集工具(SCADA)- 一个开 | Ignition-IoTDB连接器模块 | 请联系商务获取 | | Ignition-IoTDB With JDBC模块 | 下载地址:https://repo1.maven.org/maven2/org/apache/iotdb/iotdb-jdbc/ | -## Ignition-IoTDB连接器使用说明 +## 3 Ignition-IoTDB连接器使用说明 -### 简介 +### 3.1 简介 Ignition-IoTDB连接器模块可以将数据存入与历史数据库提供程序关联的数据库连接中。数据根据其数据类型直接存储到 SQL 数据库中的表中,以及毫秒时间戳。根据每个标签上的值模式和死区设置,仅在更改时存储数据,从而避免重复和不必要的数据存储。 Ignition-IoTDB连接器提供了将 Ignition 采集到的数据存入 IoTDB 的能力。 -### 安装步骤 +### 3.2 安装步骤 步骤一:进入 `Config` - `System`- `Modules` 模块,点击最下方的`Install or Upgrade a Module...` @@ -155,7 +155,7 @@ Ignition-IoTDB连接器提供了将 Ignition 采集到的数据存入 IoTDB 的 -### 使用说明 +### 3.3 使用说明 #### 配置历史数据存储 @@ -232,13 +232,13 @@ Ignition-IoTDB连接器提供了将 Ignition 采集到的数据存入 IoTDB 的 system.iotdb.query("IoTDB", "select * from root.db.Sine where time > 1709563427247") ``` -## Ignition-IoTDB With JDBC +## 4 Ignition-IoTDB With JDBC -### 简介 +### 4.1 简介 Ignition-IoTDB With JDBC提供了一个 JDBC 驱动,允许用户使用标准的JDBC API 连接和查询 lgnition-loTDB 数据库 -### 安装步骤 +### 4.2 安装步骤 步骤一:进入 `Config` - `Databases` -`Drivers` 模块,创建 `Translator` @@ -252,7 +252,7 @@ system.iotdb.query("IoTDB", "select * from root.db.Sine where time > 17095634272 ![](/img/Ignition-IoTDBWithJDBC-3.png) -### 使用说明 +### 4.3 使用说明 #### 数据写入 diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/Kubernetes_apache.md b/src/zh/UserGuide/latest/Ecosystem-Integration/Kubernetes_apache.md index a21e6df28..41a17214f 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/Kubernetes_apache.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/Kubernetes_apache.md @@ -21,7 +21,7 @@ # Kubernetes -## 1. 环境准备 +## 1 环境准备 ### 1.1 准备 Kubernetes 集群 @@ -31,7 +31,7 @@ Kubernetes 版本要求:建议版本为 Kubernetes 1.24及以上 IoTDB版本要求:不能低于v1.3.3.2 -## 2. 创建命名空间 +## 2 创建命名空间 ### 2.1 创建命名空间 @@ -47,7 +47,7 @@ kubectl create ns iotdb-ns kubectl get ns ``` -## 3. 创建 PersistentVolume (PV) +## 3 创建 PersistentVolume (PV) ### 3.1 创建 PV 配置文件 @@ -116,11 +116,11 @@ mkdir -p /data/k8s-data/iotdb-pv-02 ... ``` -## 4. 安装 Helm +## 4 安装 Helm 安装Helm步骤请参考[Helm官网](https://helm.sh/zh/docs/intro/install/) -## 5. 配置IoTDB的Helm Chart +## 5 配置IoTDB的Helm Chart ### 5.1 克隆 IoTDB Kubernetes 部署代码 @@ -184,7 +184,7 @@ confignode: dataRegionConsensusProtocolClass: org.apache.iotdb.consensus.iot.IoTConsensus ``` -## 6. 配置私库信息或预先使用ctr拉取镜像 +## 6 配置私库信息或预先使用ctr拉取镜像 在k8s上配置私有仓库的信息,为下一步helm install的前置步骤。 @@ -258,7 +258,7 @@ ctr -n k8s.io images import iotdb-enterprise:1.3.3.2-standalone.tar ctr --namespace k8s.io images list | grep 1.3.3.2 ``` -## 7. 安装 IoTDB +## 7 安装 IoTDB ### 7.1 安装 IoTDB @@ -301,7 +301,7 @@ kubectl describe pod datanode-0 -n iotdb-ns kubectl logs -n iotdb-ns confignode-0 -f ``` -## 8. 激活 IoTDB +## 8 激活 IoTDB ### 8.1 方案1:直接在 Pod 中激活(最快捷) @@ -357,7 +357,7 @@ kubectl describe pv iotdb-pv-04 | grep "Path:" 4. 从对应节点的对应目录下找到 system-info 文件,使用该 system-info 作为机器码生成激活码,并在同级目录新建文件 license,将激活码写入到该文件。 -## 9. 验证 IoTDB +## 9 验证 IoTDB ### 9.1 查看命名空间内的 Pods 状态 @@ -400,7 +400,7 @@ start-cli.sh -h 172.20.31.88 -p 31895 -## 10. 扩容 +## 10 扩容 ### 10.1 新增pv diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/Kubernetes_timecho.md b/src/zh/UserGuide/latest/Ecosystem-Integration/Kubernetes_timecho.md index 2a6847ff9..4925667d9 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/Kubernetes_timecho.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/Kubernetes_timecho.md @@ -21,7 +21,7 @@ # Kubernetes -## 1. 环境准备 +## 1 环境准备 ### 1.1 准备 Kubernetes 集群 @@ -31,7 +31,7 @@ Kubernetes 版本要求:建议版本为 Kubernetes 1.24及以上 IoTDB版本要求:不能低于v1.3.3 -## 2. 创建命名空间 +## 2 创建命名空间 ### 2.1 创建命名空间 @@ -47,7 +47,7 @@ kubectl create ns iotdb-ns kubectl get ns ``` -## 3. 创建 PersistentVolume (PV) +## 3 创建 PersistentVolume (PV) ### 3.1 创建 PV 配置文件 @@ -116,11 +116,11 @@ mkdir -p /data/k8s-data/iotdb-pv-02 ... ``` -## 4. 安装 Helm +## 4 安装 Helm 安装Helm步骤请参考[Helm官网](https://helm.sh/zh/docs/intro/install/) -## 5. 配置IoTDB的Helm Chart +## 5 配置IoTDB的Helm Chart ### 5.1 克隆 IoTDB Kubernetes 部署代码 @@ -184,7 +184,7 @@ confignode: dataRegionConsensusProtocolClass: org.apache.iotdb.consensus.iot.IoTConsensus ``` -## 6. 配置私库信息或预先使用ctr拉取镜像 +## 6 配置私库信息或预先使用ctr拉取镜像 在k8s上配置私有仓库的信息,为下一步helm install的前置步骤。 @@ -258,7 +258,7 @@ ctr -n k8s.io images import iotdb-enterprise:1.3.3.2-standalone.tar ctr --namespace k8s.io images list | grep 1.3.3.2 ``` -## 7. 安装 IoTDB +## 7 安装 IoTDB ### 7.1 安装 IoTDB @@ -301,7 +301,7 @@ kubectl describe pod datanode-0 -n iotdb-ns kubectl logs -n iotdb-ns confignode-0 -f ``` -## 8. 激活 IoTDB +## 8 激活 IoTDB ### 8.1 方案1:直接在 Pod 中激活(最快捷) @@ -357,7 +357,7 @@ kubectl describe pv iotdb-pv-04 | grep "Path:" 4. 从对应节点的对应目录下找到 system-info 文件,使用该 system-info 作为机器码生成激活码,并在同级目录新建文件 license,将激活码写入到该文件。 -## 9. 验证 IoTDB +## 9 验证 IoTDB ### 9.1 查看命名空间内的 Pods 状态 @@ -400,7 +400,7 @@ start-cli.sh -h 172.20.31.88 -p 31895 -## 10. 扩容 +## 10 扩容 ### 10.1 新增pv diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/NiFi-IoTDB.md b/src/zh/UserGuide/latest/Ecosystem-Integration/NiFi-IoTDB.md index 62aec3970..353e472f0 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/NiFi-IoTDB.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/NiFi-IoTDB.md @@ -20,7 +20,7 @@ --> # Apache NiFi -## Apache NiFi简介 +## 1 Apache NiFi简介 Apache NiFi 是一个易用的、功能强大的、可靠的数据处理和分发系统。 @@ -46,11 +46,11 @@ Apache NiFi 包含以下功能: * 多租户授权和策略管理 * 包括TLS和SSH的加密通信的标准协议 -## PutIoTDBRecord +## 2 PutIoTDBRecord 这是一个用于数据写入的处理器。它使用配置的 Record Reader 将传入 FlowFile 的内容读取为单独的记录,并使用本机接口将它们写入 Apache IoTDB。 -### PutIoTDBRecord的配置项 +### 2.1 PutIoTDBRecord的配置项 | 配置项 | 描述 | 默认值 | 是否必填 | | ------------- |---------------------------------------------------------------------------------------------------------------------------------------------------------------| ------ | -------- | @@ -65,7 +65,7 @@ Apache NiFi 包含以下功能: | Aligned | 是否使用 aligned 接口?
这个配置可以通过 Attributes 的表达式来更新。 | false | false | | MaxRowNumber | 指定 tablet 的最大行数。
这个配置可以通过 Attributes 的表达式来更新。 | 1024 | false | -### Flowfile 的推断数据类型 +### 2.2 Flowfile 的推断数据类型 如果要使用推断类型,需要注意以下几点: @@ -75,7 +75,7 @@ Apache NiFi 包含以下功能: 4. 除`Time` 以外的列必须以 `root.` 开头。 5. 支持的数据类型有: `INT`,`LONG`, `FLOAT`, `DOUBLE`, `BOOLEAN`, `TEXT`。 -### 通过配置项自定义 schema +### 2.3 通过配置项自定义 schema 如上所述,通过配置项来自定义 schema 比起推断的 schema来说,是一种更加灵活和强大的方式。 @@ -108,18 +108,18 @@ Apache NiFi 包含以下功能: 6. 支持的 `encoding` 有: `PLAIN`, `DICTIONARY`, `RLE`, `DIFF`, `TS_2DIFF`, `BITMAP`, `GORILLA_V1`, `REGULAR`, `GORILLA`,`ZIGZAG`,`CHIMP`, `SPRINTZ`, `RLBE`。 7. 支持的 `compressionType` 有: `UNCOMPRESSED`, `SNAPPY`, `GZIP`, `LZO`, `SDT`, `PAA`, `PLA`, `LZ4`, `ZSTD`, `LZMA2`。 -## Relationships +## 3 Relationships | relationship | 描述 | | ------------ | ----------------------- | | success | 数据能被正确的写入。 | | failure | schema 或者数据有异常。 | -## QueryIoTDBRecord +## 4 QueryIoTDBRecord 这是一个用于数据读取的处理器。它通过读取 FlowFile 的内容中的SQL 查询来对IoTDB的原生接口进行访问,并将查询结果用Record Writer写入 flowfile。 -### QueryIoTDBRecord的配置项 +### 4.1 QueryIoTDBRecord的配置项 | 配置项 | 描述 | 默认值 | 是否必填 | | ------------- |--------------------------------------------------------------------------------| ------ | -------- | @@ -132,7 +132,7 @@ Apache NiFi 包含以下功能: | iotdb-query-chunk-size | 返回的结果可以进行分块,数据流中会返回一批按设置大小切分的数据,而不是一个单一的响应. 分块查询可以返回无限量的行。 注意: 数据分块只有在设置不为0时启用 | 0 | false | -## Relationships +## 5 Relationships | relationship | 描述 | | ------------ | ----------------------- | diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/Spark-IoTDB.md b/src/zh/UserGuide/latest/Ecosystem-Integration/Spark-IoTDB.md index 0376fb1f2..96d79dac2 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/Spark-IoTDB.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/Spark-IoTDB.md @@ -21,7 +21,7 @@ # Apache Spark(IoTDB) -## 版本支持 +## 1 版本支持 支持的 Spark 与 Scala 版本如下: @@ -29,16 +29,16 @@ |----------------|--------------| | `2.4.0-latest` | `2.11, 2.12` | -## 注意事项 +## 2 注意事项 1. 当前版本的 `spark-iotdb-connector` 支持 `2.11` 与 `2.12` 两个版本的 Scala,暂不支持 `2.13` 版本。 2. `spark-iotdb-connector` 支持在 Java、Scala 版本的 Spark 与 PySpark 中使用。 -## 部署 +## 3 部署 `spark-iotdb-connector` 总共有两个使用场景,分别为 IDE 开发与 spark-shell 调试。 -### IDE 开发 +### 3.1 IDE 开发 在 IDE 开发时,只需要在 `pom.xml` 文件中添加以下依赖即可: @@ -51,7 +51,7 @@ ``` -### `spark-shell` 调试 +### 3.2 `spark-shell` 调试 如果需要在 `spark-shell` 中使用 `spark-iotdb-connetcor`,需要先在官网下载 `with-dependencies` 版本的 jar 包。然后再将 Jar 包拷贝到 `${SPARK_HOME}/jars` 目录中即可。 执行以下命令即可: @@ -80,9 +80,9 @@ $IoTDB_HOME/iotdb-client/jdbc/target/iotdb-jdbc-{version}-SNAPSHOT-jar-with-depe cp iotdb-jdbc-{version}-SNAPSHOT-jar-with-dependencies.jar $SPARK_HOME/jars/ ``` -## 使用 +## 4 使用 -### 参数 +### 4.1 参数 | 参数 | 描述 | 默认值 | 使用范围 | 能否为空 | |--------------|------------------------------------------------|------|------------|-------| @@ -94,7 +94,7 @@ cp iotdb-jdbc-{version}-SNAPSHOT-jar-with-dependencies.jar $SPARK_HOME/jars/ | lowerBound | 查询的起始时间戳(包含) | 0 | read | true | | upperBound | 查询的结束时间戳(包含) | 0 | read | true | -### 从 IoTDB 读取数据 +### 4.2 从 IoTDB 读取数据 以下是一个示例,演示如何从 IoTDB 中读取数据成为 DataFrame。 @@ -116,7 +116,7 @@ df.printSchema() df.show() ``` -### 将数据写入 IoTDB +### 4.3 将数据写入 IoTDB 以下是一个示例,演示如何将数据写入 IoTDB。 @@ -162,7 +162,7 @@ dfWithColumn.write.format("org.apache.iotdb.spark.db") .save ``` -### 宽表与窄表转换 +### 4.4 宽表与窄表转换 以下是如何转换宽表与窄表的示例: @@ -183,7 +183,7 @@ import org.apache.iotdb.spark.db._ val wide_df = Transformer.toWideForm(spark, narrow_df) ``` -## 宽表与窄表 +## 5 宽表与窄表 以下 TsFile 结构为例:TsFile 模式中有三个度量:状态,温度和硬件。 这三种测量的基本信息如下: diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/Spark-TsFile.md b/src/zh/UserGuide/latest/Ecosystem-Integration/Spark-TsFile.md index 0bcc8ce91..f7aa71b7f 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/Spark-TsFile.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/Spark-TsFile.md @@ -21,7 +21,7 @@ # Apache Spark(TsFile) -## About TsFile-Spark-Connector +## 1 About TsFile-Spark-Connector TsFile-Spark-Connector 对 Tsfile 类型的外部数据源实现 Spark 的支持。 这使用户可以通过 Spark 读取,写入和查询 Tsfile。 @@ -31,7 +31,7 @@ TsFile-Spark-Connector 对 Tsfile 类型的外部数据源实现 Spark 的支持 - 将本地文件系统或 hdfs 中特定目录中的所有文件加载到 Spark 中 - 将数据从 Spark 写入 TsFile -## System Requirements +## 2 System Requirements | Spark Version | Scala Version | Java Version | TsFile | | ------------- | ------------- | ------------ | -------- | @@ -40,9 +40,9 @@ TsFile-Spark-Connector 对 Tsfile 类型的外部数据源实现 Spark 的支持 > 注意:有关如何下载和使用 TsFile 的更多信息,请参见以下链接:https://github.com/apache/iotdb/tree/master/tsfile > 注意:spark 版本目前仅支持 2.4.3, 其他版本可能存在不适配的问题,目前已知 2.4.7 的版本存在不适配的问题 -## 快速开始 +## 3 快速开始 -### 本地模式 +### 3.1 本地模式 在本地模式下使用 TsFile-Spark-Connector 启动 Spark: @@ -55,7 +55,7 @@ TsFile-Spark-Connector 对 Tsfile 类型的外部数据源实现 Spark 的支持 - 有关如何获取 TsFile 的信息,请参见 https://github.com/apache/iotdb/tree/master/tsfile。 - 获取到 dependency 包:```mvn clean package -DskipTests -P get-jar-with-dependencies``` -### 分布式模式 +### 3.2 分布式模式 在分布式模式下使用 TsFile-Spark-Connector 启动 Spark(即,Spark 集群通过 spark-shell 连接): @@ -69,7 +69,7 @@ TsFile-Spark-Connector 对 Tsfile 类型的外部数据源实现 Spark 的支持 - 多个 jar 包用逗号分隔,没有任何空格。 - 有关如何获取 TsFile 的信息,请参见 https://github.com/apache/iotdb/tree/master/tsfile。 -## 数据类型对应 +## 4 数据类型对应 | TsFile 数据类型 | SparkSQL 数据类型 | | -------------- | ---------------- | @@ -80,7 +80,7 @@ TsFile-Spark-Connector 对 Tsfile 类型的外部数据源实现 Spark 的支持 | DOUBLE | DoubleType | | TEXT | StringType | -## 模式推断 +## 5 模式推断 显示 TsFile 的方式取决于架构。 以以下 TsFile 结构为例:TsFile 模式中有三个度量:状态,温度和硬件。 这三种测量的基本信息如下: @@ -125,7 +125,7 @@ TsFile 中的现有数据如下: | 5 | root.ln.wf02.wt01 | false | null | null | | 6 | root.ln.wf02.wt02 | null | ccc | null | -## Scala API +## 6 Scala API 注意:请记住预先分配必要的读写权限。 diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/Telegraf.md b/src/zh/UserGuide/latest/Ecosystem-Integration/Telegraf.md index 52250fb5d..1c4bebee2 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/Telegraf.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/Telegraf.md @@ -20,7 +20,7 @@ --> # Telegraf -## 1、产品概述 +## 1 产品概述 ### 1.1 Telegraf @@ -40,17 +40,17 @@ Telegraf-IoTDB 插件可以将保存在 Telegraf 中的监控信息输出存储 ![](/img/Telegraf.png) -## 2、安装要求 +## 2 安装要求 Telegraf支持多种操作系统,包括Linux、Windows、macOS,Telegraf 的安装推荐使用`root`管理员权限才能成功完成,具体安装要求请查看 [安装要求](https://docs.influxdata.com/telegraf/v1/install/) -## 3、安装步骤 +## 3 安装步骤 具体安装步骤请查看 [安装步骤](https://docs.influxdata.com/telegraf/v1/install/) - 注:此插件为Telegraf内置插件,无需进行二次安装 -## 4、使用说明 +## 4 使用说明 ### 4.1 设置输入源 @@ -89,7 +89,7 @@ Telegraf支持多种操作系统,包括Linux、Windows、macOS,Telegraf 的 telegraf -config /path/to/telegraf.conf ``` -## 5、使用示例 +## 5 使用示例 以下是一个使用 Telegraf 收集 CPU 数据并使用 Telegraf-IoTDB 输出到 IoTDB 的示例。使用 telegraf 命令生成配置文件 diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/Thingsboard.md b/src/zh/UserGuide/latest/Ecosystem-Integration/Thingsboard.md index 2b92a4dd3..f7f5e5a36 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/Thingsboard.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/Thingsboard.md @@ -20,7 +20,7 @@ --> # ThingsBoard -## 产品概述 +## 1 产品概述 1. ThingsBoard 简介 @@ -32,11 +32,11 @@ ThingsBoard-IoTDB 提供了将 ThingsBoard 中的数据存储到 IoTDB 的能力,也支持在 ThingsBoard 中读取 root.thingsboard 数据库下的数据信息。详细架构图如下图黄色标识所示。 -### 关系示意图 +### 1.1 关系示意图 ![](/img/Thingsboard-2.png) -## 安装要求 +## 2 安装要求 | 准备内容 | 版本要求 | | :-------------------------- | :----------------------------------------------------------- | @@ -44,7 +44,7 @@ | IoTDB | 要求已安装 V1.3.0 及以上版本,具体安装过程请参考[ 部署指导](https://www.timecho.com/docs/zh/UserGuide/latest/Deployment-and-Maintenance/IoTDB-Package_timecho.html) | | ThingsBoard(IoTDB 适配版) | 安装包请联系商务获取,具体安装步骤参见下文 | -## 安装步骤 +## 3 安装步骤 具体安装步骤请参考 [ThingsBoard 官网](https://thingsboard.io/docs/user-guide/install/ubuntu/)。其中: @@ -73,7 +73,7 @@ export IoTDB_MAX_SIZE=200 ##sessionpool内的最大数量,推荐设置为 export IoTDB_DATABASE=root.thingsboard ##thingsboard数据写入iotdb所存储的数据库,支持自定义 ``` -## 使用说明 +## 4 使用说明 1. 创建设备并接入数据:在 Thingsboard 的实体-设备中创建设备并通过工业网关将数据发送到 ThingsBoard 指定设备中 diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/Zeppelin-IoTDB_apache.md b/src/zh/UserGuide/latest/Ecosystem-Integration/Zeppelin-IoTDB_apache.md index b02f8c91d..4ef0a9f85 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/Zeppelin-IoTDB_apache.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/Zeppelin-IoTDB_apache.md @@ -21,15 +21,15 @@ # Apache Zeppelin -## Zeppelin 简介 +## 1 Zeppelin 简介 Apache Zeppelin 是一个基于网页的交互式数据分析系统。用户可以通过 Zeppelin 连接数据源并使用 SQL、Scala 等进行交互式操作。操作可以保存为文档(类似于 Jupyter)。Zeppelin 支持多种数据源,包括 Spark、ElasticSearch、Cassandra 和 InfluxDB 等等。现在,IoTDB 已经支持使用 Zeppelin 进行操作。样例如下: ![iotdb-note-snapshot](/img/github/102752947-520a3e80-43a5-11eb-8fb1-8fac471c8c7e.png) -## Zeppelin-IoTDB 解释器 +## 2 Zeppelin-IoTDB 解释器 -### 系统环境需求 +### 2.1 系统环境需求 | IoTDB 版本 | Java 版本 | Zeppelin 版本 | | :--------: | :-----------: | :-----------: | @@ -44,7 +44,7 @@ Apache Zeppelin 是一个基于网页的交互式数据分析系统。用户可 假设 Zeppelin 安装在 `$Zeppelin_HOME`. -### 编译解释器 +### 2.2 编译解释器 运行如下命令编译 IoTDB Zeppelin 解释器。 @@ -59,7 +59,7 @@ cd $IoTDB_HOME $IoTDB_HOME/zeppelin-interpreter/target/zeppelin-{version}-SNAPSHOT-jar-with-dependencies.jar ``` -### 安装解释器 +### 2.3 安装解释器 当你编译好了解释器,在 Zeppelin 的解释器目录下创建一个新的文件夹`iotdb`,并将 IoTDB 解释器放入其中。 @@ -69,7 +69,7 @@ mkdir -p $Zeppelin_HOME/interpreter/iotdb cp $IoTDB_HOME/zeppelin-interpreter/target/zeppelin-{version}-SNAPSHOT-jar-with-dependencies.jar $Zeppelin_HOME/interpreter/iotdb ``` -### 修改 Zeppelin 配置 +### 2.4 修改 Zeppelin 配置 进入 `$Zeppelin_HOME/conf`,使用 template 创建 Zeppelin 配置文件: @@ -79,7 +79,7 @@ cp zeppelin-site.xml.template zeppelin-site.xml 打开 zeppelin-site.xml 文件,将 `zeppelin.server.addr` 项修改为 `0.0.0.0` -### 启动 Zeppelin 和 IoTDB +### 2.5 启动 Zeppelin 和 IoTDB 进入 `$Zeppelin_HOME` 并运行 Zeppelin: @@ -103,7 +103,7 @@ or > sbin\start-server.bat -c -rpc_port ``` -## 使用 Zeppelin-IoTDB 解释器 +## 3 使用 Zeppelin-IoTDB 解释器 当 Zeppelin 启动后,访问 [http://127.0.0.1:8080/](http://127.0.0.1:8080/) @@ -154,7 +154,7 @@ WHERE time >= 1 以上样例放置于 `$IoTDB_HOME/zeppelin-interpreter/Zeppelin-IoTDB-Demo.zpln` -## 解释器配置项 +## 4 解释器配置项 进入页面 [http://127.0.0.1:8080/#/interpreter](http://127.0.0.1:8080/#/interpreter) 并配置 IoTDB 的连接参数: diff --git a/src/zh/UserGuide/latest/Ecosystem-Integration/Zeppelin-IoTDB_timecho.md b/src/zh/UserGuide/latest/Ecosystem-Integration/Zeppelin-IoTDB_timecho.md index 39ea4384b..a11490e8c 100644 --- a/src/zh/UserGuide/latest/Ecosystem-Integration/Zeppelin-IoTDB_timecho.md +++ b/src/zh/UserGuide/latest/Ecosystem-Integration/Zeppelin-IoTDB_timecho.md @@ -21,15 +21,15 @@ # Apache Zeppelin -## Zeppelin 简介 +## 1 Zeppelin 简介 Apache Zeppelin 是一个基于网页的交互式数据分析系统。用户可以通过 Zeppelin 连接数据源并使用 SQL、Scala 等进行交互式操作。操作可以保存为文档(类似于 Jupyter)。Zeppelin 支持多种数据源,包括 Spark、ElasticSearch、Cassandra 和 InfluxDB 等等。现在,IoTDB 已经支持使用 Zeppelin 进行操作。样例如下: ![iotdb-note-snapshot](/img/github/102752947-520a3e80-43a5-11eb-8fb1-8fac471c8c7e.png) -## Zeppelin-IoTDB 解释器 +## 2 Zeppelin-IoTDB 解释器 -### 系统环境需求 +### 2.1 系统环境需求 | IoTDB 版本 | Java 版本 | Zeppelin 版本 | | :--------: | :-----------: | :-----------: | @@ -44,7 +44,7 @@ Apache Zeppelin 是一个基于网页的交互式数据分析系统。用户可 假设 Zeppelin 安装在 `$Zeppelin_HOME`. -### 编译解释器 +### 2.2 编译解释器 运行如下命令编译 IoTDB Zeppelin 解释器。 @@ -59,7 +59,7 @@ cd $IoTDB_HOME $IoTDB_HOME/zeppelin-interpreter/target/zeppelin-{version}-SNAPSHOT-jar-with-dependencies.jar ``` -### 安装解释器 +### 2.3 安装解释器 当你编译好了解释器,在 Zeppelin 的解释器目录下创建一个新的文件夹`iotdb`,并将 IoTDB 解释器放入其中。 @@ -69,7 +69,7 @@ mkdir -p $Zeppelin_HOME/interpreter/iotdb cp $IoTDB_HOME/zeppelin-interpreter/target/zeppelin-{version}-SNAPSHOT-jar-with-dependencies.jar $Zeppelin_HOME/interpreter/iotdb ``` -### 修改 Zeppelin 配置 +### 2.4 修改 Zeppelin 配置 进入 `$Zeppelin_HOME/conf`,使用 template 创建 Zeppelin 配置文件: @@ -79,7 +79,7 @@ cp zeppelin-site.xml.template zeppelin-site.xml 打开 zeppelin-site.xml 文件,将 `zeppelin.server.addr` 项修改为 `0.0.0.0` -### 启动 Zeppelin 和 IoTDB +### 2.5 启动 Zeppelin 和 IoTDB 进入 `$Zeppelin_HOME` 并运行 Zeppelin: @@ -103,7 +103,7 @@ or > sbin\start-server.bat -c -rpc_port ``` -## 使用 Zeppelin-IoTDB 解释器 +## 6 使用 Zeppelin-IoTDB 解释器 当 Zeppelin 启动后,访问 [http://127.0.0.1:8080/](http://127.0.0.1:8080/) @@ -154,7 +154,7 @@ WHERE time >= 1 以上样例放置于 `$IoTDB_HOME/zeppelin-interpreter/Zeppelin-IoTDB-Demo.zpln` -## 解释器配置项 +## 7 解释器配置项 进入页面 [http://127.0.0.1:8080/#/interpreter](http://127.0.0.1:8080/#/interpreter) 并配置 IoTDB 的连接参数: diff --git a/src/zh/UserGuide/latest/FAQ/Frequently-asked-questions.md b/src/zh/UserGuide/latest/FAQ/Frequently-asked-questions.md index 4d859ab51..1a9e83b5b 100644 --- a/src/zh/UserGuide/latest/FAQ/Frequently-asked-questions.md +++ b/src/zh/UserGuide/latest/FAQ/Frequently-asked-questions.md @@ -23,9 +23,9 @@ # 常见问题 -## 一般问题 +## 1 一般问题 -### 如何查询我的IoTDB版本? +### 1.1 如何查询我的IoTDB版本? 有几种方法可以识别您使用的 IoTDB 版本: @@ -67,7 +67,7 @@ Total line number = 1 It costs 0.241s ``` -### 在哪里可以找到IoTDB的日志? +### 1.2 在哪里可以找到IoTDB的日志? 假设您的根目录是: @@ -89,11 +89,11 @@ Readme.md 在默认的设置里,logs 文件夹会被存储在```IOTDB_HOME/logs```。您可以在```IOTDB_HOME/conf```目录下的```logback.xml```文件中修改日志的级别和日志的存储路径。 -### 在哪里可以找到IoTDB的数据文件? +### 1.3 在哪里可以找到IoTDB的数据文件? 在默认的设置里,数据文件(包含 TsFile,metadata,WAL)被存储在```IOTDB_HOME/data/datanode```文件夹。 -### 如何知道IoTDB中存储了多少时间序列? +### 1.4 如何知道IoTDB中存储了多少时间序列? 使用 IoTDB 的命令行接口: @@ -116,15 +116,15 @@ IoTDB> count timeseries > 6 ``` -### 可以使用Hadoop和Spark读取IoTDB中的TsFile吗? +### 1.5 可以使用Hadoop和Spark读取IoTDB中的TsFile吗? 是的。IoTDB 与开源生态紧密结合。IoTDB 支持 [Hadoop](https://github.com/apache/iotdb-extras/tree/master/connectors/iotdb-connector/hadoop), [Spark](https://github.com/apache/iotdb-extras/tree/master/connectors/spark-iotdb-connector) 和 [Grafana](https://github.com/apache/iotdb-extras/tree/master/connectors/grafana-connector) 可视化工具。 -### IoTDB如何处理重复的数据点? +### 1.6 IoTDB如何处理重复的数据点? 一个数据点是由一个完整的时间序列路径(例如:```root.vehicle.d0.s0```) 和时间戳唯一标识的。如果您使用与现有点相同的路径和时间戳提交一个新点,那么 IoTDB 将更新这个点的值,而不是插入一个新点。 -### 我如何知道具体的timeseries的类型? +### 1.7 我如何知道具体的timeseries的类型? 在 IoTDB 的命令行接口中使用 SQL ```SHOW TIMESERIES ```: @@ -146,7 +146,7 @@ IoTDB> show timeseries root.fit.d1.s1 IoTDB> show timeseries root.fit.d1.* ``` -### 如何更改IoTDB的客户端时间显示格式? +### 1.8 如何更改IoTDB的客户端时间显示格式? IoTDB 客户端默认显示的时间是人类可读的(比如:```1970-01-01T08:00:00.001```),如果您想显示是时间戳或者其他可读格式,请在启动命令上添加参数```-disableISO8601```: @@ -154,12 +154,12 @@ IoTDB 客户端默认显示的时间是人类可读的(比如:```1970-01-01T > $IOTDB_CLI_HOME/sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root -disableISO8601 ``` -### 怎么处理来自`org.apache.ratis.grpc.server.GrpcLogAppender`的`IndexOutOfBoundsException`? +### 1.9 怎么处理来自`org.apache.ratis.grpc.server.GrpcLogAppender`的`IndexOutOfBoundsException`? 这是我们的依赖Ratis 2.4.1的一个内部错误日志,不会对数据写入和读取造成任何影响。 已经报告给Ratis社区,并会在未来的版本中修复。 -### 预估内存不足报错如何处理? +### 1.10 预估内存不足报错如何处理? 报错信息: ``` @@ -179,9 +179,9 @@ datanode_memory_proportion参数控制分给查询的内存,chunk_timeseriesme - 添加 align by device,会按照device顺序进行输出,内存占用会降低至单device级别。 -## 分布式部署 FAQ +## 2 分布式部署 FAQ -### 集群启停 +### 2.1 集群启停 #### ConfigNode初次启动失败,如何排查原因? @@ -217,7 +217,7 @@ datanode_memory_proportion参数控制分给查询的内存,chunk_timeseriesme - 0.13版本的默认RPC地址是0.0.0.0,1.0版本的默认RPC地址是127.0.0.1 -### 集群重启 +### 2.2 集群重启 #### 如何重启集群中的某个ConfigNode? @@ -243,7 +243,7 @@ datanode_memory_proportion参数控制分给查询的内存,chunk_timeseriesme - 无法启动成功,会报错端口已被占用 -### 集群运维 +### 2.3 集群运维 #### Show cluster执行失败,显示“please check server status”,如何排查? diff --git a/src/zh/UserGuide/latest/Reference/Common-Config-Manual.md b/src/zh/UserGuide/latest/Reference/Common-Config-Manual.md index 090b5ec61..49f4b0128 100644 --- a/src/zh/UserGuide/latest/Reference/Common-Config-Manual.md +++ b/src/zh/UserGuide/latest/Reference/Common-Config-Manual.md @@ -21,20 +21,20 @@ # 配置参数 -## 公共配置参数 +## 1 公共配置参数 IoTDB ConfigNode 和 DataNode 的公共配置参数位于 `conf` 目录下。 * `iotdb-system.properties`:IoTDB 集群的公共配置。 -### 改后生效方式 +### 1.1 改后生效方式 不同的配置参数有不同的生效方式,分为以下三种: + **仅允许在第一次启动服务前修改:** 在第一次启动 ConfigNode/DataNode 后即禁止修改,修改会导致 ConfigNode/DataNode 无法启动。 + **重启服务生效:** ConfigNode/DataNode 启动后仍可修改,但需要重启 ConfigNode/DataNode 后才生效。 + **热加载:** 可在 ConfigNode/DataNode 运行时修改,修改后通过 Session 或 Cli 发送 ```load configuration``` 或 `set configuration` 命令(SQL)至 IoTDB 使配置生效。 -### 系统配置项 +### 1.2 系统配置项 #### 副本配置 diff --git a/src/zh/UserGuide/latest/Reference/ConfigNode-Config-Manual.md b/src/zh/UserGuide/latest/Reference/ConfigNode-Config-Manual.md index 4e08f9e01..ca71cb86d 100644 --- a/src/zh/UserGuide/latest/Reference/ConfigNode-Config-Manual.md +++ b/src/zh/UserGuide/latest/Reference/ConfigNode-Config-Manual.md @@ -27,7 +27,7 @@ IoTDB ConfigNode 配置文件均位于 IoTDB 安装目录:`conf`文件夹下 * `iotdb-system.properties`:IoTDB 的配置文件。 -## 环境配置项(confignode-env.sh/bat) +## 1 环境配置项(confignode-env.sh/bat) 环境配置项主要用于对 ConfigNode 运行的 Java 环境相关参数进行配置,如 JVM 相关配置。ConfigNode 启动时,此部分配置会被传给 JVM,详细配置项说明如下: @@ -58,11 +58,11 @@ IoTDB ConfigNode 配置文件均位于 IoTDB 安装目录:`conf`文件夹下 |默认值|取决于MEMORY\_SIZE的配置。| |改后生效方式|重启服务生效| -## 系统配置项(iotdb-system.properties) +## 2 系统配置项(iotdb-system.properties) IoTDB 集群的全局配置通过 ConfigNode 配置。 -### Config Node RPC 配置 +### 2.1 Config Node RPC 配置 * cn\_internal\_address @@ -82,7 +82,7 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。 | 默认值 | 10710 | | 改后生效方式 | 仅允许在第一次启动服务前修改 | -### 共识协议 +### 2.2 共识协议 * cn\_consensus\_port @@ -93,7 +93,7 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。 | 默认值 | 10720 | | 改后生效方式 | 仅允许在第一次启动服务前修改 | -### SeedConfigNode 配置 +### 2.3 SeedConfigNode 配置 * cn\_seed\_config\_node @@ -104,7 +104,7 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。 | 默认值 | 127.0.0.1:10710 | | 改后生效方式 | 仅允许在第一次启动服务前修改 | -### 数据目录 +### 2.4 数据目录 * cn\_system\_dir @@ -124,7 +124,7 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。 |默认值| data/confignode/consensus(Windows:data\\configndoe\\consensus) | |改后生效方式| 重启服务生效 | -### Thrift RPC 配置 +### 2.5 Thrift RPC 配置 * cn\_rpc\_thrift\_compression\_enable @@ -207,4 +207,4 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。 | 默认值 | 300 | | 改后生效方式 | 重启服务生效 | -### Metric 监控配置 \ No newline at end of file +### 2.6 Metric 监控配置 \ No newline at end of file diff --git a/src/zh/UserGuide/latest/Reference/DataNode-Config-Manual_apache.md b/src/zh/UserGuide/latest/Reference/DataNode-Config-Manual_apache.md index d19056bec..e428f16a3 100644 --- a/src/zh/UserGuide/latest/Reference/DataNode-Config-Manual_apache.md +++ b/src/zh/UserGuide/latest/Reference/DataNode-Config-Manual_apache.md @@ -27,14 +27,14 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB * `iotdb-system.properties`:IoTDB 的配置文件。 -## 热修改配置项 +## 1 热修改配置项 为方便用户使用,IoTDB 为用户提供了热修改功能,即在系统运行过程中修改 `iotdb-system.properties` 中部分配置参数并即时应用到系统中。下面介绍的参数中,改后 生效方式为`热加载` 的均为支持热修改的配置参数。 通过 Session 或 Cli 发送 ```load configuration``` 或 `set configuration` 命令(SQL)至 IoTDB 可触发配置热加载。 -## 环境配置项(datanode-env.sh/bat) +## 2 环境配置项(datanode-env.sh/bat) 环境配置项主要用于对 DataNode 运行的 Java 环境相关参数进行配置,如 JVM 相关配置。DataNode/Standalone 启动时,此部分配置会被传给 JVM,详细配置项说明如下: @@ -83,11 +83,11 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |默认值|31999| |改后生效方式|重启服务生效| -## 系统配置项(iotdb-system.properties) +## 3 系统配置项(iotdb-system.properties) 系统配置项是 IoTDB DataNode/Standalone 运行的核心配置,它主要用于设置 DataNode/Standalone 数据库引擎的参数。 -### Data Node RPC 服务配置 +### 3.1 Data Node RPC 服务配置 * dn\_rpc\_address @@ -162,7 +162,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |改后生效方式| 重启服务生效 | -### SSL 配置 +### 3.2 SSL 配置 * enable\_thrift\_ssl @@ -201,7 +201,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |改后生效方式| 重启服务生效 | -### SeedConfigNode 配置 +### 3.3 SeedConfigNode 配置 * dn\_seed\_config\_node @@ -212,7 +212,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |默认值| 127.0.0.1:10710 | |改后生效方式| 仅允许在第一次启动服务前修改 | -### 连接配置 +### 3.4 连接配置 * dn\_session\_timeout\_threshold @@ -314,7 +314,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB | 默认值 | 300 | | 改后生效方式 | 重启服务生效 | -### 目录配置 +### 3.5 目录配置 * dn\_system\_dir @@ -379,9 +379,9 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB | 默认值 | data/datanode/sync | | 改后生效方式 | 重启服务生效 | -### Metric 配置 +### 3.6 Metric 配置 -## 开启 GC 日志 +## 4 开启 GC 日志 GC 日志默认是关闭的。为了性能调优,用户可能会需要收集 GC 信息。 若要打开 GC 日志,则需要在启动 IoTDB Server 的时候加上"printgc"参数: diff --git a/src/zh/UserGuide/latest/Reference/DataNode-Config-Manual_timecho.md b/src/zh/UserGuide/latest/Reference/DataNode-Config-Manual_timecho.md index c88848432..dcc415359 100644 --- a/src/zh/UserGuide/latest/Reference/DataNode-Config-Manual_timecho.md +++ b/src/zh/UserGuide/latest/Reference/DataNode-Config-Manual_timecho.md @@ -27,14 +27,14 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB * `iotdb-system.properties`:IoTDB 的配置文件。 -## 热修改配置项 +## 1 热修改配置项 为方便用户使用,IoTDB 为用户提供了热修改功能,即在系统运行过程中修改 `iotdb-system.properties` 中部分配置参数并即时应用到系统中。下面介绍的参数中,改后 生效方式为`热加载` 的均为支持热修改的配置参数。 通过 Session 或 Cli 发送 ```load configuration``` 或 `set configuration` 命令(SQL)至 IoTDB 可触发配置热加载。 -## 环境配置项(datanode-env.sh/bat) +## 2 环境配置项(datanode-env.sh/bat) 环境配置项主要用于对 DataNode 运行的 Java 环境相关参数进行配置,如 JVM 相关配置。DataNode/Standalone 启动时,此部分配置会被传给 JVM,详细配置项说明如下: @@ -83,11 +83,11 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |默认值|31999| |改后生效方式|重启服务生效| -## 系统配置项(iotdb-system.properties) +## 3 系统配置项(iotdb-system.properties) 系统配置项是 IoTDB DataNode/Standalone 运行的核心配置,它主要用于设置 DataNode/Standalone 数据库引擎的参数。 -### Data Node RPC 服务配置 +### 3.1 Data Node RPC 服务配置 * dn\_rpc\_address @@ -162,7 +162,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |改后生效方式| 重启服务生效 | -### SSL 配置 +### 3.2 SSL 配置 * enable\_thrift\_ssl @@ -201,7 +201,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |改后生效方式| 重启服务生效 | -### SeedConfigNode 配置 +### 3.3 SeedConfigNode 配置 * dn\_seed\_config\_node @@ -212,7 +212,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB |默认值| 127.0.0.1:10710 | |改后生效方式| 仅允许在第一次启动服务前修改 | -### 连接配置 +### 3.4 连接配置 * dn\_session\_timeout\_threshold @@ -314,7 +314,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB | 默认值 | 300 | | 改后生效方式 | 重启服务生效 | -### 目录配置 +### 3.5 目录配置 * dn\_system\_dir @@ -379,9 +379,9 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB | 默认值 | data/datanode/sync | | 改后生效方式 | 重启服务生效 | -### Metric 配置 +### 3.6 Metric 配置 -## 开启 GC 日志 +## 4 开启 GC 日志 GC 日志默认是关闭的。为了性能调优,用户可能会需要收集 GC 信息。 若要打开 GC 日志,则需要在启动 IoTDB Server 的时候加上"printgc"参数: diff --git a/src/zh/UserGuide/latest/Reference/UDF-Libraries_apache.md b/src/zh/UserGuide/latest/Reference/UDF-Libraries_apache.md index 7112666cf..03f2831c0 100644 --- a/src/zh/UserGuide/latest/Reference/UDF-Libraries_apache.md +++ b/src/zh/UserGuide/latest/Reference/UDF-Libraries_apache.md @@ -24,27 +24,27 @@ > 注意:当前UDF函数库中的函数仅支持毫秒级的时间戳精度。 -## 安装步骤 +## 1 安装步骤 1. 请获取与 IoTDB 版本兼容的 UDF 函数库 JAR 包的压缩包。 - | UDF 函数库版本 | 支持的 IoTDB 版本 | 下载链接 | + | UDF 安装包 | 支持的 IoTDB 版本 | 下载链接 | | --------------- | ----------------- | ------------------------------------------------------------ | - | UDF-1.3.3.zip | V1.3.3及以上 | 请联系天谋商务获取 | - | UDF-1.3.2.zip | V1.0.0~V1.3.2 | 请联系天谋商务获取 | + | apache-UDF-1.3.3.zip | V1.3.3及以上 | 请联系天谋商务获取 | + | apache-UDF-1.3.2.zip | V1.0.0~V1.3.2 | 请联系天谋商务获取| 2. 将获取的压缩包中的 library-udf.jar 文件放置在 IoTDB 集群所有节点的 `/ext/udf` 的目录下 -3. 在 IoTDB 的 SQL 命令行终端(CLI)或可视化控制台(Workbench)的 SQL 操作界面中,执行下述相应的函数注册语句。 +3. 在 IoTDB 的 SQL 命令行终端(CLI)的 SQL 操作界面中,执行下述相应的函数注册语句。 4. 批量注册:两种注册方式:注册脚本 或 SQL汇总语句 - 注册脚本 - 将压缩包中的注册脚本(register-UDF.sh 或 register-UDF.bat)按需复制到 IoTDB 的 tools 目录下,修改脚本中的参数(默认为host=127.0.0.1,rpcPort=6667,user=root,pass=root); - 启动 IoTDB 服务,运行注册脚本批量注册 UDF - SQL汇总语句 - - 打开压缩包中的SQl文件,复制全部 SQL 语句,在 IoTDB 的 SQL 命令行终端(CLI)或可视化控制台(Workbench)的 SQL 操作界面中,执行全部 SQl 语句批量注册 UDF + - 打开压缩包中的SQl文件,复制全部 SQL 语句,在 IoTDB 的 SQL 命令行终端(CLI)的 SQL 操作界面中,执行全部 SQl 语句批量注册 UDF -## 数据质量 +## 2 数据质量 -### Completeness +### 2.1 Completeness #### 注册语句 @@ -176,7 +176,7 @@ select completeness(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 +-----------------------------+--------------------------------------------+ ``` -### Consistency +### 2.2 Consistency #### 注册语句 @@ -307,7 +307,7 @@ select consistency(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 +-----------------------------+-------------------------------------------+ ``` -### Timeliness +### 2.3 Timeliness #### 注册语句 @@ -438,7 +438,7 @@ select timeliness(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 0 +-----------------------------+------------------------------------------+ ``` -### Validity +### 2.4 Validity #### 注册语句 @@ -592,9 +592,9 @@ select validity(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 00: --> -## 数据画像 +## 3 数据画像 -### ACF +### 3.1 ACF #### 注册语句 @@ -657,7 +657,7 @@ select acf(s1) from root.test.d1 where time <= 2020-01-01 00:00:05 +-----------------------------+--------------------+ ``` -### Distinct +### 3.2 Distinct #### 注册语句 @@ -716,7 +716,7 @@ select distinct(s2) from root.test.d2 +-----------------------------+-------------------------+ ``` -### Histogram +### 3.3 Histogram #### 注册语句 @@ -802,7 +802,7 @@ select histogram(s1,"min"="1","max"="20","count"="10") from root.test.d1 +-----------------------------+---------------------------------------------------------------+ ``` -### Integral +### 3.4 Integral #### 注册语句 @@ -899,7 +899,7 @@ select integral(s1, "unit"="1m") from root.test.d1 where time <= 2020-01-01 00:0 其计算公式为: $$\frac{1}{2\times 60}[(1+2) \times 1 + (2+3) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] = 0.958$$ -### IntegralAvg +### 3.5 IntegralAvg #### 注册语句 @@ -965,7 +965,7 @@ select integralavg(s1) from root.test.d1 where time <= 2020-01-01 00:00:10 其计算公式为: $$\frac{1}{2}[(1+2)\times 1 + (2+5) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] / 10 = 5.75$$ -### Mad +### 3.6 Mad #### 注册语句 @@ -1065,7 +1065,7 @@ select mad(s1, "error"="0.01") from root.test +-----------------------------+---------------------------------+ ``` -### Median +### 3.7 Median #### 注册语句 @@ -1135,7 +1135,7 @@ select median(s1, "error"="0.01") from root.test +-----------------------------+------------------------------------+ ``` -### MinMax +### 3.8 MinMax #### 注册语句 @@ -1229,7 +1229,7 @@ select minmax(s1) from root.test -### MvAvg +### 3.9 MvAvg #### 注册语句 @@ -1317,7 +1317,7 @@ select mvavg(s1, "window"="3") from root.test +-----------------------------+---------------------------------+ ``` -### PACF +### 3.10 PACF #### 注册语句 @@ -1377,7 +1377,7 @@ select pacf(s1, "lag"="5") from root.test.d1 +-----------------------------+--------------------------------+ ``` -### Percentile +### 3.11 Percentile #### 注册语句 @@ -1502,7 +1502,7 @@ select percentile(s1, "rank"="0.2", "error"="0.01") from root.test ``` -### Quantile +### 3.12 Quantile #### 注册语句 @@ -1565,7 +1565,7 @@ select quantile(s1, "rank"="0.2", "K"="800") from root.test1 +-----------------------------+------------------------------------------------+ ``` -### Period +### 3.13 Period #### 注册语句 @@ -1619,7 +1619,7 @@ select period(s1) from root.test.d3 +-----------------------------+-----------------------+ ``` -### QLB +### 3.14 QLB #### 注册语句 @@ -1710,7 +1710,7 @@ select QLB(s1) from root.test.d1 +-----------------------------+--------------------+ ``` -### Resample +### 3.15 Resample #### 注册语句 @@ -1834,7 +1834,7 @@ select resample(s1,'every'='30m','start'='2021-03-06 15:00:00') from root.test.d +-----------------------------+-----------------------------------------------------------------------+ ``` -### Sample +### 3.16 Sample #### 注册语句 @@ -1931,7 +1931,7 @@ select sample(s1,'method'='isometric','k'='5') from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### Segment +### 3.17 Segment #### 注册语句 @@ -2029,7 +2029,7 @@ select segment(s1,"error"="0.1") from root.test +-----------------------------+------------------------------------+ ``` -### Skew +### 3.18 Skew #### 注册语句 @@ -2096,7 +2096,7 @@ select skew(s1) from root.test.d1 +-----------------------------+-----------------------+ ``` -### Spline +### 3.19 Spline #### 注册语句 @@ -2309,7 +2309,7 @@ select spline(s1, "points"="151") from root.test +-----------------------------+------------------------------------+ ``` -### Spread +### 3.20 Spread #### 注册语句 @@ -2373,7 +2373,7 @@ select spread(s1) from root.test.d1 where time <= 2020-01-01 00:00:30 -### ZScore +### 3.21 ZScore #### 注册语句 @@ -2486,9 +2486,9 @@ select zscore(s1) from root.test --> -## 异常检测 +## 4 异常检测 -### IQR +### 4.1 IQR #### 注册语句 @@ -2563,7 +2563,7 @@ select iqr(s1) from root.test +-----------------------------+-----------------+ ``` -### KSigma +### 4.2 KSigma #### 注册语句 @@ -2636,7 +2636,7 @@ select ksigma(s1,"k"="1.0") from root.test.d1 where time <= 2020-01-01 00:00:30 +-----------------------------+---------------------------------+ ``` -### LOF +### 4.3 LOF #### 注册语句 @@ -2771,7 +2771,7 @@ select lof(s1, "method"="series") from root.test.d1 where time<1000 +-----------------------------+--------------------+ ``` -### MissDetect +### 4.4 MissDetect #### 注册语句 @@ -2864,7 +2864,7 @@ select missdetect(s2,'minlen'='10') from root.test.d2 +-----------------------------+------------------------------------------+ ``` -### Range +### 4.5 Range #### 注册语句 @@ -2936,7 +2936,7 @@ select range(s1,"lower_bound"="101.0","upper_bound"="125.0") from root.test.d1 w +-----------------------------+------------------------------------------------------------------+ ``` -### TwoSidedFilter +### 4.6 TwoSidedFilter #### 注册语句 @@ -3034,7 +3034,7 @@ select TwoSidedFilter(s0, 'len'='5', 'threshold'='0.3') from root.test +-----------------------------+------------+ ``` -### Outlier +### 4.7 Outlier #### 注册语句 @@ -3110,7 +3110,7 @@ select outlier(s1,"r"="5.0","k"="4","w"="10","s"="5") from root.test +-----------------------------+--------------------------------------------------------+ ``` -### MasterTrain +### 4.8 MasterTrain #### 函数简介 @@ -3195,7 +3195,7 @@ select MasterTrain(lo,la,m_lo,m_la,'p'='3','eta'='1.0') from root.test ``` -### MasterDetect +### 4.9 MasterDetect #### 函数简介 @@ -3366,9 +3366,9 @@ select MasterDetect(lo,la,m_lo,m_la,model,'output_type'='anomaly','p'='3','k'='3 --> -## 频域分析 +## 5 频域分析 -### Conv +### 5.1 Conv #### 注册语句 @@ -3422,7 +3422,7 @@ select conv(s1,s2) from root.test.d2 +-----------------------------+--------------------------------------+ ``` -### Deconv +### 5.2 Deconv #### 注册语句 @@ -3505,7 +3505,7 @@ select deconv(s3,s2,'result'='remainder') from root.test.d2 +-----------------------------+--------------------------------------------------------------+ ``` -### DWT +### 5.3 DWT #### 注册语句 @@ -3592,7 +3592,7 @@ select dwt(s1,"method"="haar") from root.test.d1 +-----------------------------+-------------------------------------+ ``` -### FFT +### 5.4 FFT #### 注册语句 @@ -3718,7 +3718,7 @@ select fft(s1, 'result'='real', 'compress'='0.99'), fft(s1, 'result'='imag','com 注:基于傅里叶变换结果的共轭性质,压缩结果只保留前一半;根据给定的压缩参数,从低频到高频保留数据点,直到保留的能量比例超过该值;保留最后一个数据点以表示序列长度。 -### HighPass +### 5.5 HighPass #### 注册语句 @@ -3812,7 +3812,7 @@ select highpass(s1,'wpass'='0.45') from root.test.d1 注:输入序列服从$y=sin(2\pi t/4)+2sin(2\pi t/5)$,长度为20,因此高通滤波之后的输出序列服从$y=sin(2\pi t/4)$。 -### IFFT +### 5.6 IFFT #### 注册语句 @@ -3893,7 +3893,7 @@ select ifft(re, im, 'interval'='1m', 'start'='2021-01-01 00:00:00') from root.te +-----------------------------+-------------------------------------------------------+ ``` -### LowPass +### 5.7 LowPass #### 注册语句 @@ -3983,9 +3983,9 @@ select lowpass(s1,'wpass'='0.45') from root.test.d1 |1970-01-01T08:00:19.000+08:00| -2.664535259100376E-16| +-----------------------------+----------------------------------------+ ``` -## Envelope +### 5.8 Envelope -### 函数简介 +#### 函数简介 本函数通过输入一维浮点数数组和用户指定的调制频率,实现对信号的解调和包络提取。解调的目标是从复杂的信号中提取感兴趣的部分,使其更易理解。比如通过解调可以找到信号的包络,即振幅的变化趋势。 @@ -4005,7 +4005,7 @@ select lowpass(s1,'wpass'='0.45') from root.test.d1 **提示:** 当解调的原始序列的值不连续时,本函数会视为连续处理,建议被分析的时间序列是一段值完整的时间序列。同时建议指定开始时间与结束时间。 -### 使用示例 +#### 使用示例 输入序列: @@ -4073,9 +4073,9 @@ select envelope(s1),envelope(s1,'frequency'='1000'),envelope(s1,'amplification'= --> -## 数据匹配 +## 6 数据匹配 -### Cov +### 6.1 Cov #### 注册语句 @@ -4142,7 +4142,7 @@ select cov(s1,s2) from root.test.d2 +-----------------------------+-------------------------------------+ ``` -### Dtw +### 6.2 Dtw #### 注册语句 @@ -4213,7 +4213,7 @@ select dtw(s1,s2) from root.test.d2 +-----------------------------+-------------------------------------+ ``` -### Pearson +### 6.3 Pearson #### 注册语句 @@ -4279,7 +4279,7 @@ select pearson(s1,s2) from root.test.d2 +-----------------------------+-----------------------------------------+ ``` -### PtnSym +### 6.4 PtnSym #### 注册语句 @@ -4343,7 +4343,7 @@ select ptnsym(s4, 'window'='5', 'threshold'='0') from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### XCorr +### 6.5 XCorr #### 注册语句 @@ -4437,9 +4437,9 @@ select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05 --> -## 数据修复 +## 7 数据修复 -### TimestampRepair +### 7.1 TimestampRepair #### 注册语句 @@ -4447,7 +4447,7 @@ select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05 create function timestamprepair as 'org.apache.iotdb.library.drepair.UDTFTimestampRepair' ``` -### 函数简介 +### 7.2 函数简介 本函数用于时间戳修复。根据给定的标准时间间隔,采用最小化修复代价的方法,通过对数据时间戳的微调,将原本时间戳间隔不稳定的数据修复为严格等间隔的数据。在未给定标准时间间隔的情况下,本函数将使用时间间隔的中位数 (median)、众数 (mode) 或聚类中心 (cluster) 来推算标准时间间隔。 @@ -4463,7 +4463,7 @@ create function timestamprepair as 'org.apache.iotdb.library.drepair.UDTFTimesta **输出序列:** 输出单个序列,类型与输入序列相同。该序列是修复后的输入序列。 -### 使用示例 +### 7.3 使用示例 #### 指定标准时间间隔 @@ -4542,7 +4542,7 @@ select timestamprepair(s1) from root.test.d2 +-----------------------------+--------------------------------+ ``` -### ValueFill +### 7.4 ValueFill #### 注册语句 @@ -4659,7 +4659,7 @@ select valuefill(s1,"method"="previous") from root.test.d2 +-----------------------------+-------------------------------------------+ ``` -### ValueRepair +### 7.5 ValueRepair #### 注册语句 @@ -4781,7 +4781,7 @@ select valuerepair(s1,'method'='LsGreedy') from root.test.d2 +-----------------------------+-------------------------------------------------+ ``` -### MasterRepair +### 7.6 MasterRepair #### 函数简介 @@ -4843,7 +4843,7 @@ select MasterRepair(t1,t2,t3,m1,m2,m3) from root.test +-----------------------------+-------------------------------------------------------------------------------------------+ ``` -### SeasonalRepair +### 7.7 SeasonalRepair #### 函数简介 本函数用于对周期性时间序列的数值进行基于分解的修复。目前,本函数支持两种方法:**Classical**使用经典分解方法得到的残差项检测数值的异常波动,并使用滑动平均修复序列;**Improved**使用改进的分解方法得到的残差项检测数值的异常波动,并使用滑动中值修复序列。 @@ -4966,9 +4966,9 @@ select seasonalrepair(s1,'method'='improved','period'=3) from root.test.d2 --> -## 序列发现 +## 8 序列发现 -### ConsecutiveSequences +### 8.1 ConsecutiveSequences #### 注册语句 @@ -5062,7 +5062,7 @@ select consecutivesequences(s1,s2) from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### ConsecutiveWindows +### 8.2 ConsecutiveWindows #### 注册语句 @@ -5152,9 +5152,9 @@ select consecutivewindows(s1,s2,'length'='10m') from root.test.d1 --> -## 机器学习 +## 9 机器学习 -### AR +### 9.1 AR #### 注册语句 @@ -5221,7 +5221,7 @@ select ar(s0,"p"="2") from root.test.d0 +-----------------------------+---------------------------+ ``` -### Representation +### 9.2 Representation #### 函数简介 @@ -5285,7 +5285,7 @@ select representation(s0,"tb"="3","vb"="2") from root.test.d0 +-----------------------------+-------------------------------------------------+ ``` -### RM +### 9.3 RM #### 函数简介 diff --git a/src/zh/UserGuide/latest/SQL-Manual/Function-and-Expression.md b/src/zh/UserGuide/latest/SQL-Manual/Function-and-Expression.md index 560d208b4..a55c164fe 100644 --- a/src/zh/UserGuide/latest/SQL-Manual/Function-and-Expression.md +++ b/src/zh/UserGuide/latest/SQL-Manual/Function-and-Expression.md @@ -21,7 +21,7 @@ # 内置函数与表达式 -## 聚合函数 +## 1 聚合函数 聚合函数是多对一函数。它们对一组值进行聚合计算,得到单个聚合结果。 @@ -55,7 +55,7 @@ IoTDB 支持的聚合函数如下: | MIN_BY | MIN_BY(x, y) 求二元输入 x 和 y 在 y 最小时对应的 x 的值。MIN_BY(time, x) 返回 x 取最小值时对应的时间戳。 | 第一个输入 x 可以是任意类型,第二个输入 y 只能是 INT32 INT64 FLOAT DOUBLE | 无 | 与第一个输入 x 的数据类型一致 | -### COUNT_IF +### 1.1 COUNT_IF #### 语法 ```sql @@ -120,7 +120,7 @@ select count_if(s1=0 & s2=0, 3, 'ignoreNull'='false'), count_if(s1=1 & s2=0, 3, +------------------------------------------------------------------------+------------------------------------------------------------------------+ ``` -### TIME_DURATION +### 1.2 TIME_DURATION #### 语法 ```sql time_duration(Path) @@ -174,7 +174,7 @@ select time_duration(s1) from root.db.d1 ``` > 注:若数据点只有一个,则返回0,若数据点为null,则返回null。 -### COUNT_TIME +### 1.3 COUNT_TIME #### 语法 ```sql count_time(*) @@ -286,7 +286,7 @@ select count_time(*) from root.db.** group by([0, 10), 2ms) align by device -### MAX_BY +### 1.4 MAX_BY #### 功能定义 max_by(x, y): 返回 y 最大时对应时间戳下的 x 值。 @@ -502,9 +502,9 @@ IoTDB> select min_by(b, a) from root.test group by ([0,7),4ms) order by time des --> -## 算数运算符和函数 +## 2 算数运算符和函数 -### 算数运算符 +### 2.1 算数运算符 #### 一元算数运算符 @@ -548,7 +548,7 @@ Total line number = 5 It costs 0.014s ``` -### 数学函数 +### 2.2 数学函数 目前 IoTDB 支持下列数学函数,这些数学函数的行为与这些函数在 Java Math 标准库中对应实现的行为一致。 @@ -639,9 +639,9 @@ It costs 0.059s --> -## 比较运算符和函数 +## 3 比较运算符和函数 -### 基本比较运算符 +### 3.1 基本比较运算符 - 输入数据类型: `INT32`, `INT64`, `FLOAT`, `DOUBLE`。 - 注意:会将所有数据转换为`DOUBLE`类型后进行比较。`==`和`!=`可以直接比较两个`BOOLEAN`。 @@ -677,7 +677,7 @@ IoTDB> select a, b, a > 10, a <= b, !(a <= b), a > 10 && a > b from root.test; +-----------------------------+-----------+-----------+----------------+--------------------------+---------------------------+------------------------------------------------+ ``` -### `BETWEEN ... AND ...` 运算符 +### 3.2 `BETWEEN ... AND ...` 运算符 |运算符 |含义| |----------------------------|-----------| @@ -694,7 +694,7 @@ select temperature from root.sg1.d1 where temperature between 36.5 and 40; select temperature from root.sg1.d1 where temperature not between 36.5 and 40; ``` -### 模糊匹配运算符 +### 3.3 模糊匹配运算符 对于 TEXT 类型的数据,支持使用 `Like` 和 `Regexp` 运算符对数据进行模糊匹配 @@ -800,7 +800,7 @@ select b, b like '1%', b regexp '[0-2]' from root.test; +-----------------------------+-----------+-------------------------+--------------------------+ ``` -### `IS NULL` 运算符 +### 3.4 `IS NULL` 运算符 |运算符 |含义| |----------------------------|-----------| @@ -819,7 +819,7 @@ select code from root.sg1.d1 where temperature is null; select code from root.sg1.d1 where temperature is not null; ``` -### `IN` 运算符 +### 3.5 `IN` 运算符 |运算符 |含义| |----------------------------|-----------| @@ -865,7 +865,7 @@ select a, a in (1, 2) from root.test; +-----------------------------+-----------+--------------------+ ``` -### 条件函数 +### 3.6 条件函数 条件函数针对每个数据点进行条件判断,返回布尔值。 @@ -949,16 +949,16 @@ IoTDB> select ts, in_range(ts, 'lower'='2', 'upper'='3.1') from root.test; --> -## 逻辑运算符 +## 4 逻辑运算符 -### 一元逻辑运算符 +### 4.1 一元逻辑运算符 - 支持运算符:`!` - 输入数据类型:`BOOLEAN`。 - 输出数据类型:`BOOLEAN`。 - 注意:`!`的优先级很高,记得使用括号调整优先级。 -### 二元逻辑运算符 +### 4.2 二元逻辑运算符 - 支持运算符 - AND:`and`,`&`, `&&` @@ -1012,9 +1012,9 @@ IoTDB> select a, b, a > 10, a <= b, !(a <= b), a > 10 && a > b from root.test; --> -## 字符串处理 +## 5 字符串处理 -### STRING_CONTAINS +### 5.1 STRING_CONTAINS #### 函数简介 @@ -1049,7 +1049,7 @@ Total line number = 3 It costs 0.007s ``` -### STRING_MATCHES +### 5.2 STRING_MATCHES #### 函数简介 @@ -1084,7 +1084,7 @@ Total line number = 3 It costs 0.007s ``` -### Length +### 5.3 Length #### 函数简介 @@ -1128,7 +1128,7 @@ select s1, length(s1) from root.sg1.d1 +-----------------------------+--------------+----------------------+ ``` -### Locate +### 5.4 Locate #### 函数简介 @@ -1194,7 +1194,7 @@ select s1, locate(s1, "target"="1", "reverse"="true") from root.sg1.d1 +-----------------------------+--------------+------------------------------------------------------+ ``` -### StartsWith +### 5.5 StartsWith #### 函数简介 @@ -1241,7 +1241,7 @@ select s1, startswith(s1, "target"="1") from root.sg1.d1 +-----------------------------+--------------+----------------------------------------+ ``` -### EndsWith +### 5.6 EndsWith #### 函数简介 @@ -1288,7 +1288,7 @@ select s1, endswith(s1, "target"="1") from root.sg1.d1 +-----------------------------+--------------+--------------------------------------+ ``` -### Concat +### 5.7 Concat #### 函数简介 @@ -1356,7 +1356,7 @@ select s1, s2, concat(s1, s2, "target1"="IoT", "target2"="DB", "series_behind"=" +-----------------------------+--------------+--------------+-----------------------------------------------------------------------------------------------+ ``` -### Substring +### 5.8 Substring #### 函数简介 提取字符串的子字符串,从指定的第一个字符开始,并在指定的字符数之后停止。下标从1开始。from 和 for的范围是 INT32 类型取值范围。 @@ -1404,7 +1404,7 @@ select s1, substring(s1 from 1 for 2) from root.sg1.d1 +-----------------------------+--------------+--------------------------------------+ ``` -### Replace +### 5.9 Replace #### 函数简介 将输入序列中的子串替换成目标子串。 @@ -1452,7 +1452,7 @@ select s1, replace(s1, 'es', 'tt') from root.sg1.d1 +-----------------------------+--------------+-----------------------------------+ ``` -### Upper +### 5.10 Upper #### 函数简介 @@ -1496,7 +1496,7 @@ select s1, upper(s1) from root.sg1.d1 +-----------------------------+--------------+---------------------+ ``` -### Lower +### 5.11 Lower #### 函数简介 @@ -1540,7 +1540,7 @@ select s1, lower(s1) from root.sg1.d1 +-----------------------------+--------------+---------------------+ ``` -### Trim +### 5.12 Trim #### 函数简介 @@ -1584,7 +1584,7 @@ select s3, trim(s3) from root.sg1.d1 +-----------------------------+--------------+--------------------+ ``` -### StrCmp +### 5.13 StrCmp #### 函数简介 @@ -1628,7 +1628,7 @@ select s1, s2, strcmp(s1, s2) from root.sg1.d1 +-----------------------------+--------------+--------------+--------------------------------------+ ``` -### StrReplace +### 5.14 StrReplace #### 函数简介 @@ -1706,7 +1706,7 @@ select strreplace(s1, "target"=",", "replace"="/", "limit"="1", "offset"="1", "r +-----------------------------+-----------------------------------------------------+ ``` -### RegexMatch +### 5.15 RegexMatch #### 函数简介 @@ -1763,7 +1763,7 @@ select regexmatch(s1, "regex"="\d+\.\d+\.\d+\.\d+", "group"="0") from root.test. +-----------------------------+----------------------------------------------------------------------+ ``` -### RegexReplace +### 5.16 RegexReplace ##### 函数简介 @@ -1917,9 +1917,9 @@ select regexsplit(s1, "regex"=",", "index"="3") from root.test.d1 --> -## 数据类型转换 +## 6 数据类型转换 -### CAST +### 6.1 CAST #### 函数简介 @@ -2020,7 +2020,7 @@ IoTDB> select cast(s6 as BOOLEAN) from root.sg.d1 where time >= 2 --> -## 常序列生成函数 +## 7 常序列生成函数 常序列生成函数用于生成所有数据点的值都相同的时间序列。 @@ -2078,7 +2078,7 @@ It costs 0.005s --> -## 选择函数 +## 8 选择函数 目前 IoTDB 支持如下选择函数: @@ -2130,9 +2130,9 @@ It costs 0.006s --> -## 区间查询函数 +## 9 区间查询函数 -### 连续满足区间函数 +### 9.1 连续满足区间函数 连续满足条件区间函数用来查询所有满足指定条件的连续区间。 @@ -2206,7 +2206,7 @@ select s1, zero_count(s1), non_zero_count(s2), zero_duration(s3), non_zero_durat --> -## 趋势计算函数 +## 10 趋势计算函数 目前 IoTDB 支持如下趋势计算函数: @@ -2241,7 +2241,7 @@ Total line number = 5 It costs 0.014s ``` -### 使用示例 +### 10.1 使用示例 #### 原始数据 @@ -2321,9 +2321,9 @@ SELECT DIFF(s1, 'ignoreNull'='false'), DIFF(s2, 'ignoreNull'='false') from root. --> -## 采样函数 +## 11 采样函数 -### 等数量分桶降采样函数 +### 11.1 等数量分桶降采样函数 本函数对输入序列进行等数量分桶采样,即根据用户给定的降采样比例和降采样方法将输入序列按固定点数等分为若干桶。在每个桶内通过给定的采样方法进行采样。 @@ -2550,7 +2550,7 @@ Total line number = 10 It costs 0.041s ``` -### M4函数 +### 11.2 M4函数 #### 函数简介 @@ -2724,9 +2724,9 @@ select M4(s1,'timeInterval'='$__interval_ms') from root.sg1.d1 --> -## 时间序列处理 +## 12 时间序列处理 -### CHANGE_POINTS +### 12.1 CHANGE_POINTS #### 函数简介 @@ -2794,9 +2794,9 @@ select change_points(s1), change_points(s2), change_points(s3), change_points(s4 --> -## Lambda 表达式 +## 13 Lambda 表达式 -### JEXL 自定义函数 +### 13.1 JEXL 自定义函数 #### 函数简介 @@ -2877,9 +2877,9 @@ It costs 0.118s --> -## 条件表达式 +## 14 条件表达式 -### CASE +### 14.1 CASE CASE表达式是一种条件表达式,可用于根据特定条件返回不同的值,功能类似于其它语言中的if-else。 CASE表达式由以下部分组成: diff --git a/src/zh/UserGuide/latest/SQL-Manual/Keywords.md b/src/zh/UserGuide/latest/SQL-Manual/Keywords.md index 0d681ffbb..f42175a45 100644 --- a/src/zh/UserGuide/latest/SQL-Manual/Keywords.md +++ b/src/zh/UserGuide/latest/SQL-Manual/Keywords.md @@ -21,13 +21,13 @@ # 关键字 -保留字(不能用于作为标识符): +## 1 保留字(不能用于作为标识符): - ROOT - TIME - TIMESTAMP -一般关键字: +## 2 一般关键字: - ADD - AFTER diff --git a/src/zh/UserGuide/latest/SQL-Manual/Operator-and-Expression.md b/src/zh/UserGuide/latest/SQL-Manual/Operator-and-Expression.md index 1d02a15bb..13ee7f6f2 100644 --- a/src/zh/UserGuide/latest/SQL-Manual/Operator-and-Expression.md +++ b/src/zh/UserGuide/latest/SQL-Manual/Operator-and-Expression.md @@ -21,8 +21,8 @@ # 函数与运算符 -## 运算符 -### 算数运算符 +## 1 运算符 +### 1.1 算数运算符 |运算符 |含义| |----------------------------|-----------| |`+` |取正(单目)| @@ -35,7 +35,7 @@ 详细说明及示例见文档 [算数运算符和函数](../SQL-Manual/Function-and-Expression.md#算数运算符)。 -### 比较运算符 +### 1.2 比较运算符 |运算符 |含义| |----------------------------|-----------| |`>` |大于| @@ -57,7 +57,7 @@ 详细说明及示例见文档 [比较运算符和函数](../SQL-Manual/Function-and-Expression.md#比较运算符和函数)。 -### 逻辑运算符 +### 1.3 逻辑运算符 |运算符 |含义| |----------------------------|-----------| |`NOT` / `!` |取非(单目)| @@ -66,7 +66,7 @@ 详细说明及示例见文档 [逻辑运算符](../SQL-Manual/Function-and-Expression.md#逻辑运算符)。 -### 运算符优先级 +### 1.4 运算符优先级 运算符的优先级从高到低排列如下,同一行的运算符优先级相同。 @@ -83,11 +83,11 @@ AND, &, && OR, |, || ``` -## 内置函数 +## 2 内置函数 列表中的函数无须注册即可在 IoTDB 中使用,数据函数质量库中的函数需要参考注册步骤进行注册后才能使用。 -### 聚合函数 +### 2.1 聚合函数 | 函数名 | 功能描述 | 允许的输入类型 | 输出类型 | | ----------- | ------------------------------------------------------------ |------------------------------------------------------| -------------- | @@ -112,7 +112,7 @@ OR, |, || 详细说明及示例见文档 [聚合函数](../SQL-Manual/Function-and-Expression.md#聚合函数)。 -### 数学函数 +### 2.2 数学函数 | 函数名 | 输入序列类型 | 输出序列类型 | 必要属性参数 | Java 标准库中的对应实现 | | ------- | ------------------------------ | ------------------------ |----------------------------------------------|-------------------------------------------------------------------| @@ -140,7 +140,7 @@ OR, |, || 详细说明及示例见文档 [数学函数](../SQL-Manual/Function-and-Expression.md#数学函数)。 -### 比较函数 +### 2.3 比较函数 | 函数名 | 可接收的输入序列类型 | 必要的属性参数 | 输出序列类型 | 功能类型 | |----------|--------------------------------|---------------------------------------|------------|--------------------------------------------------| @@ -149,7 +149,7 @@ OR, |, || 详细说明及示例见文档 [比较运算符和函数](../SQL-Manual/Function-and-Expression.md#比较运算符和函数)。 -### 字符串函数 +### 2.4 字符串函数 | 函数名 | 输入序列类型 | 必要的属性参数 | 输出序列类型 | 功能描述 | |-----------------|-------------|-----------------------------------------------------------------------------------------------------------| ------------ |-------------------------------------------------------------------------| @@ -169,7 +169,7 @@ OR, |, || 详细说明及示例见文档 [字符串处理函数](../SQL-Manual/Function-and-Expression.md#字符串处理)。 -### 数据类型转换函数 +### 2.5 数据类型转换函数 | 函数名 | 必要的属性参数 | 输出序列类型 | 功能类型 | | ------ | ------------------------------------------------------------ | ------------------------ | ---------------------------------- | @@ -177,7 +177,7 @@ OR, |, || 详细说明及示例见文档 [数据类型转换](../SQL-Manual/Function-and-Expression.md#数据类型转换)。 -### 常序列生成函数 +### 2.6 常序列生成函数 | 函数名 | 必要的属性参数 | 输出序列类型 | 功能描述 | | ------ | ------------------------------------------------------------ | -------------------------- | ------------------------------------------------------------ | @@ -187,7 +187,7 @@ OR, |, || 详细说明及示例见文档 [常序列生成函数](../SQL-Manual/Function-and-Expression.md#常序列生成函数)。 -### 选择函数 +### 2.7 选择函数 | 函数名 | 输入序列类型 | 必要的属性参数 | 输出序列类型 | 功能描述 | | -------- |-------------------------------------------------------------------| ------------------------------------------------- | ------------------------ | ------------------------------------------------------------ | @@ -196,7 +196,7 @@ OR, |, || 详细说明及示例见文档 [选择函数](../SQL-Manual/Function-and-Expression.md#选择函数)。 -### 区间查询函数 +### 2.8 区间查询函数 | 函数名 | 输入序列类型 | 属性参数 | 输出序列类型 | 功能描述 | |-------------------|--------------------------------------|------------------------------------------------|-------|------------------------------------------------------------------| @@ -207,7 +207,7 @@ OR, |, || 详细说明及示例见文档 [区间查询函数](../SQL-Manual/Function-and-Expression.md#区间查询函数)。 -### 趋势计算函数 +### 2.9 趋势计算函数 | 函数名 | 输入序列类型 | 输出序列类型 | 功能描述 | | ----------------------- | ----------------------------------------------- | ------------------------ | ------------------------------------------------------------ | @@ -224,7 +224,7 @@ OR, |, || 详细说明及示例见文档 [趋势计算函数](../SQL-Manual/Function-and-Expression.md#趋势计算函数)。 -### 采样函数 +### 2.10 采样函数 | 函数名 | 可接收的输入序列类型 | 必要的属性参数 | 输出序列类型 | 功能类型 | |----------|--------------------------------|---------------------------------------|------------|--------------------------------------------------| @@ -235,7 +235,7 @@ OR, |, || | M4 | INT32 / INT64 / FLOAT / DOUBLE | 包含固定点数的窗口和滑动时间窗口使用不同的属性参数。包含固定点数的窗口使用属性`windowSize`和`slidingStep`。滑动时间窗口使用属性`timeInterval`、`slidingStep`、`displayWindowBegin`和`displayWindowEnd`。更多细节见下文。 | INT32 / INT64 / FLOAT / DOUBLE | 返回每个窗口内的第一个点(`first`)、最后一个点(`last`)、最小值点(`bottom`)、最大值点(`top`)。在一个窗口内的聚合点输出之前,M4会将它们按照时间戳递增排序并且去重。 | 详细说明及示例见文档 [采样函数](../SQL-Manual/Function-and-Expression.md#采样函数)。 -### 时间序列处理函数 +### 2.11 时间序列处理函数 | 函数名 | 输入序列类型 | 参数 | 输出序列类型 | 功能描述 | | ------------- | ------------------------------ | ---- | ------------------------ | -------------------------- | @@ -244,7 +244,7 @@ OR, |, || 详细说明及示例见文档 [时间序列处理](../SQL-Manual/Function-and-Expression.md#时间序列处理)。 -## Lambda 表达式 +## 3 Lambda 表达式 | 函数名 | 可接收的输入序列类型 | 必要的属性参数 | 输出序列类型 | 功能类型 | | ------ | ----------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------- | ---------------------------------------------- | @@ -252,7 +252,7 @@ OR, |, || 详细说明及示例见文档 [Lambda 表达式](../SQL-Manual/Function-and-Expression.md#Lambda表达式) -## 条件表达式 +## 4 条件表达式 | 表达式名称 | 含义 | |---------------------------|-----------| @@ -260,7 +260,7 @@ OR, |, || 详细说明及示例见文档 [条件表达式](../SQL-Manual/Function-and-Expression.md#条件表达式) -## SELECT 表达式 +## 5 SELECT 表达式 `SELECT` 子句指定查询的输出,由若干个 `selectExpr` 组成。 每个 `selectExpr` 定义了查询结果中的一列或多列。 diff --git a/src/zh/UserGuide/latest/SQL-Manual/SQL-Manual.md b/src/zh/UserGuide/latest/SQL-Manual/SQL-Manual.md index 279c3d1c9..fcc4ccff2 100644 --- a/src/zh/UserGuide/latest/SQL-Manual/SQL-Manual.md +++ b/src/zh/UserGuide/latest/SQL-Manual/SQL-Manual.md @@ -1,8 +1,8 @@ # SQL手册 -## 元数据操作 +## 1 元数据操作 -### 数据库管理 +### 1.1 数据库管理 #### 创建数据库 @@ -35,7 +35,7 @@ count databases root.sgcc.* count databases root.sgcc ``` -### 时间序列管理 +### 1.2 时间序列管理 #### 创建时间序列 @@ -197,7 +197,7 @@ create aligned timeseries root.sg1.d1(s1 INT32 tags(tag1=v1, tag2=v2) attributes show timeseries where TAGS(tag1)='v1' ``` -### 时间序列路径管理 +### 1.3 时间序列路径管理 #### 查看路径的所有子路径 @@ -251,7 +251,7 @@ IoTDB> count devices root.ln.** IoTDB> count devices where time>=2017-01-01T00:00:00 and time<=2017-11-01T16:26:00; ``` -### 设备模板管理 +### 1.4 设备模板管理 ![img](/img/%E6%A8%A1%E6%9D%BF.png) @@ -327,7 +327,7 @@ IoTDB> unset device template t1 from root.sg1.d1 ```sql IoTDB> drop device template t1 ``` -### 数据存活时间管理 +### 1.5 数据存活时间管理 #### 设置 TTL ```sql @@ -360,27 +360,27 @@ IoTDB> SHOW TTL ON pathPattern ```sql IoTDB> show DEVICES ``` -## 写入数据 +## 2 写入数据 -### 写入单列数据 +### 2.1 写入单列数据 ```sql IoTDB > insert into root.ln.wf02.wt02(timestamp,status) values(1,true) ``` ```sql IoTDB > insert into root.ln.wf02.wt02(timestamp,hardware) values(1, 'v1'),(2, 'v1') ``` -### 写入多列数据 +### 2.2 写入多列数据 ```sql IoTDB > insert into root.ln.wf02.wt02(timestamp, status, hardware) values (2, false, 'v2') ``` ```sql IoTDB > insert into root.ln.wf02.wt02(timestamp, status, hardware) VALUES (3, false, 'v3'),(4, true, 'v4') ``` -### 使用服务器时间戳 +### 2.3 使用服务器时间戳 ```sql IoTDB > insert into root.ln.wf02.wt02(status, hardware) values (false, 'v2') ``` -### 写入对齐时间序列数据 +### 2.4 写入对齐时间序列数据 ```sql IoTDB > create aligned timeseries root.sg1.d1(s1 INT32, s2 DOUBLE) ``` @@ -393,7 +393,7 @@ IoTDB > insert into root.sg1.d1(timestamp, s1, s2) aligned values(2, 2, 2), (3, ```sql IoTDB > select * from root.sg1.d1 ``` -### 加载 TsFile 文件数据 +### 2.5 加载 TsFile 文件数据 load '' [sglevel=int][onSuccess=delete/none] @@ -412,9 +412,9 @@ load '' [sglevel=int][onSuccess=delete/none] - `load '/Users/Desktop/data' onSuccess=delete` - `load '/Users/Desktop/data' sglevel=1 onSuccess=delete` -## 删除数据 +## 3 删除数据 -### 删除单列数据 +### 3.1 删除单列数据 ```sql delete from root.ln.wf02.wt02.status where time<=2017-11-01T16:26:00; ``` @@ -455,7 +455,7 @@ expressions like : time > XXX, time <= XXX, or two atomic expressions connected ```sql delete from root.ln.wf02.wt02.status ``` -### 删除多列数据 +### 3.2 删除多列数据 ```sql delete from root.ln.wf02.wt02.* where time <= 2017-11-01T16:26:00; ``` @@ -465,9 +465,9 @@ IoTDB> delete from root.ln.wf03.wt02.status where time < now() Msg: The statement is executed successfully. ``` -## 数据查询 +## 4 数据查询 -### 基础查询 +### 4.1 基础查询 #### 时间过滤查询 ```sql @@ -489,7 +489,7 @@ select wf01.wt01.status, wf02.wt02.hardware from root.ln where (time > 2017-11-0 ```sql select * from root.ln.** where time > 1 order by time desc limit 10; ``` -### 选择表达式 +### 4.2 选择表达式 #### 使用别名 ```sql @@ -595,7 +595,7 @@ IoTDB> select last status, temperature from root.ln.wf01.wt01 where time >= 2017 ```sql IoTDB> select last * from root.ln.wf01.wt01 order by timeseries desc; ``` -### 查询过滤条件 +### 4.3 查询过滤条件 #### 时间过滤条件 @@ -664,7 +664,7 @@ IoTDB> select * from root.sg.d1 where value regexp '^[A-Za-z]+$' IoTDB> select * from root.sg.d1 where value regexp '^[a-z]+$' and time > 100 ``` -### 分段分组聚合 +### 4.4 分段分组聚合 #### 未指定滑动步长的时间区间分组聚合查询 ```sql @@ -786,7 +786,7 @@ select count(charging_stauts), first_value(soc) from root.sg group by count(char ```sql select count(charging_stauts), first_value(soc) from root.sg group by count(charging_status,5,ignoreNull=false) ``` -### 聚合结果过滤 +### 4.5 聚合结果过滤 不正确的: ```sql @@ -804,7 +804,7 @@ SQL 示例: select count(s1), count(s2) from root.** group by ([1,11),2ms) having count(s2) > 1 align by device; ``` -### 结果集补空值 +### 4.6 结果集补空值 ```sql FILL '(' PREVIOUS | LINEAR | constant (, interval=DURATION_LITERAL)? ')' ``` @@ -828,7 +828,7 @@ select temperature, status from root.sgcc.wf03.wt01 where time >= 2017-11-01T16: ```sql select temperature, status from root.sgcc.wf03.wt01 where time >= 2017-11-01T16:37:00.000 and time <= 2017-11-01T16:40:00.000 fill(true); ``` -### 查询结果分页 +### 4.7 查询结果分页 #### 按行分页 @@ -866,7 +866,7 @@ select max_value(*) from root.ln.wf01.wt01 group by ([2017-11-01T00:00:00, 2017- ```sql select * from root.ln.wf01.wt01 limit 10 offset 100 slimit 2 soffset 0 ``` -### 排序 +### 4.8 排序 时间对齐模式下的排序 ```sql @@ -888,13 +888,13 @@ select * from root.ln.** where time <= 2017-11-01T00:01:00 align by device; ```sql select count(*) from root.ln.** group by ((2017-11-01T00:00:00.000+08:00,2017-11-01T00:03:00.000+08:00],1m) order by device asc,time asc align by device ``` -### 查询对齐模式 +### 4.9 查询对齐模式 #### 按设备对齐 ```sql select * from root.ln.** where time <= 2017-11-01T00:01:00 align by device; ``` -### 查询写回(SELECT INTO) +### 4.10 查询写回(SELECT INTO) #### 整体描述 ```sql @@ -1021,7 +1021,7 @@ select * into ::(backup_${4}) from root.sg.** align by device; select s1, s2 into root.sg_copy.d1(t1, t2), aligned root.sg_copy.d2(t1, t2) from root.sg.d1, root.sg.d2 align by device; ``` -## 运维语句 +## 5 运维语句 生成对应的查询计划 ``` explain select s1,s2 from root.sg.d1 @@ -1030,11 +1030,11 @@ explain select s1,s2 from root.sg.d1 ``` explain analyze select s1,s2 from root.sg.d1 order by s1 ``` -## 运算符 +## 6 运算符 更多见文档[Operator-and-Expression](./Operator-and-Expression.md) -### 算数运算符 +### 6.1 算数运算符 更多见文档 [Arithmetic Operators and Functions](./Operator-and-Expression.md#算数运算符) @@ -1042,7 +1042,7 @@ explain analyze select s1,s2 from root.sg.d1 order by s1 select s1, - s1, s2, + s2, s1 + s2, s1 - s2, s1 * s2, s1 / s2, s1 % s2 from root.sg.d1 ``` -### 比较运算符 +### 6.2 比较运算符 更多见文档[Comparison Operators and Functions](./Operator-and-Expression.md#比较运算符) @@ -1073,7 +1073,7 @@ select code from root.sg1.d1 where code not in ('200', '300', '400', '500'); select a, a in (1, 2) from root.test; ``` -### 逻辑运算符 +### 6.3 逻辑运算符 更多见文档[Logical Operators](./Operator-and-Expression.md#逻辑运算符) @@ -1081,11 +1081,11 @@ select a, a in (1, 2) from root.test; select a, b, a > 10, a <= b, !(a <= b), a > 10 && a > b from root.test; ``` -## 内置函数 +## 7 内置函数 更多见文档[Operator-and-Expression](./Operator-and-Expression.md#聚合函数) -### Aggregate Functions +### 7.1 Aggregate Functions 更多见文档[Aggregate Functions](./Operator-and-Expression.md#聚合函数) @@ -1098,7 +1098,7 @@ select count_if(s1=0 & s2=0, 3, 'ignoreNull'='false'), count_if(s1=1 & s2=0, 3, select time_duration(s1) from root.db.d1; ``` -### 算数函数 +### 7.2 算数函数 更多见文档[Arithmetic Operators and Functions](./Operator-and-Expression.md#数学函数) @@ -1107,7 +1107,7 @@ select s1, sin(s1), cos(s1), tan(s1) from root.sg1.d1 limit 5 offset 1000; select s4,round(s4),round(s4,2),round(s4,-1) from root.sg1.d1; ``` -### 比较函数 +### 7.3 比较函数 更多见文档[Comparison Operators and Functions](./Operator-and-Expression.md#比较函数) @@ -1116,7 +1116,7 @@ select ts, on_off(ts, 'threshold'='2') from root.test; select ts, in_range(ts, 'lower'='2', 'upper'='3.1') from root.test; ``` -### 字符串处理函数 +### 7.4 字符串处理函数 更多见文档[String Processing](./Operator-and-Expression.md#字符串函数) @@ -1144,7 +1144,7 @@ select regexsplit(s1, "regex"=",", "index"="-1") from root.test.d1 select regexsplit(s1, "regex"=",", "index"="3") from root.test.d1 ``` -### 数据类型转换函数 +### 7.5 数据类型转换函数 更多见文档[Data Type Conversion Function](./Operator-and-Expression.md#数据类型转换函数) @@ -1152,7 +1152,7 @@ select regexsplit(s1, "regex"=",", "index"="3") from root.test.d1 SELECT cast(s1 as INT32) from root.sg ``` -### 常序列生成函数 +### 7.6 常序列生成函数 更多见文档[Constant Timeseries Generating Functions](./Operator-and-Expression.md#常序列生成函数) @@ -1160,7 +1160,7 @@ SELECT cast(s1 as INT32) from root.sg select s1, s2, const(s1, 'value'='1024', 'type'='INT64'), pi(s2), e(s1, s2) from root.sg1.d1; ``` -### 选择函数 +### 7.7 选择函数 更多见文档[Selector Functions](./Operator-and-Expression.md#选择函数) @@ -1168,7 +1168,7 @@ select s1, s2, const(s1, 'value'='1024', 'type'='INT64'), pi(s2), e(s1, s2) from select s1, top_k(s1, 'k'='2'), bottom_k(s1, 'k'='2') from root.sg1.d2 where time > 2020-12-10T20:36:15.530+08:00; ``` -### 区间查询函数 +### 7.8 区间查询函数 更多见文档[Continuous Interval Functions](./Operator-and-Expression.md#区间查询函数) @@ -1176,7 +1176,7 @@ select s1, top_k(s1, 'k'='2'), bottom_k(s1, 'k'='2') from root.sg1.d2 where time select s1, zero_count(s1), non_zero_count(s2), zero_duration(s3), non_zero_duration(s4) from root.sg.d2; ``` -### 趋势计算函数 +### 7.9 趋势计算函数 更多见文档[Variation Trend Calculation Functions](./Operator-and-Expression.md#趋势计算函数) @@ -1187,10 +1187,10 @@ SELECT DIFF(s1), DIFF(s2) from root.test; SELECT DIFF(s1, 'ignoreNull'='false'), DIFF(s2, 'ignoreNull'='false') from root.test; ``` -### 采样函数 +### 7.10 采样函数 更多见文档[Sample Functions](./Operator-and-Expression.md#采样函数)。 -### 时间序列处理函数 +### 7.11 时间序列处理函数 更多见文档[Sample Functions](./Operator-and-Expression.md#时间序列处理函数)。 @@ -1204,7 +1204,7 @@ select M4(s1,'timeInterval'='25','displayWindowBegin'='0','displayWindowEnd'='10 select M4(s1,'windowSize'='10') from root.vehicle.d1 ``` -### 时间序列处理函数 +### 7.12 时间序列处理函数 更多见文档[Time-Series](./Operator-and-Expression.md#时间序列处理函数) @@ -1212,11 +1212,11 @@ select M4(s1,'windowSize'='10') from root.vehicle.d1 select change_points(s1), change_points(s2), change_points(s3), change_points(s4), change_points(s5), change_points(s6) from root.testChangePoints.d1 ``` -## 数据质量函数库 +## 8 数据质量函数库 更多见文档[UDF-Libraries](../SQL-Manual/UDF-Libraries.md) -### 数据质量 +### 8.1 数据质量 更多见文档[Data-Quality](../SQL-Manual/UDF-Libraries.md#数据质量) @@ -1241,7 +1241,7 @@ select Validity(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 00: select Accuracy(t1,t2,t3,m1,m2,m3) from root.test ``` -### 数据画像 +### 8.2 数据画像 更多见文档[Data-Profiling](../SQL-Manual/UDF-Libraries.md#数据画像) @@ -1321,7 +1321,7 @@ select stddev(s1) from root.test.d1 select zscore(s1) from root.test ``` -### 异常检测 +### 8.3 异常检测 更多见文档[Anomaly-Detection](../SQL-Manual/UDF-Libraries.md#异常检测) @@ -1356,7 +1356,7 @@ select MasterDetect(lo,la,m_lo,m_la,model,'output_type'='repair','p'='3','k'='3' select MasterDetect(lo,la,m_lo,m_la,model,'output_type'='anomaly','p'='3','k'='3','eta'='1.0') from root.test ``` -### 频域分析 +### 8.4 频域分析 更多见文档[Frequency-Domain](../SQL-Manual/UDF-Libraries.md#频域分析) @@ -1388,7 +1388,7 @@ select lowpass(s1,'wpass'='0.45') from root.test.d1 select envelope(s1) from root.test.d1 ``` -### 数据匹配 +### 8.5 数据匹配 更多见文档[Data-Matching](../SQL-Manual/UDF-Libraries.md#数据匹配) @@ -1409,7 +1409,7 @@ select ptnsym(s4, 'window'='5', 'threshold'='0') from root.test.d1 select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05 ``` -### 数据修复 +### 8.6 数据修复 更多见文档[Data-Repairing](../SQL-Manual/UDF-Libraries.md#数据修复) @@ -1434,7 +1434,7 @@ select seasonalrepair(s1,'period'=3,'k'=2) from root.test.d2 select seasonalrepair(s1,'method'='improved','period'=3) from root.test.d2 ``` -### 序列发现 +### 8.7 序列发现 更多见文档[Series-Discovery](../SQL-Manual/UDF-Libraries.md#序列发现) @@ -1447,7 +1447,7 @@ select consecutivesequences(s1,s2) from root.test.d1 select consecutivewindows(s1,s2,'length'='10m') from root.test.d1 ``` -### 机器学习 +### 8.8 机器学习 更多见文档[Machine-Learning](../SQL-Manual/UDF-Libraries.md#机器学习) @@ -1462,7 +1462,7 @@ select representation(s0,"tb"="3","vb"="2") from root.test.d0 select rm(s0, s1,"tb"="3","vb"="2") from root.test.d0 ``` -## Lambda 表达式 +## 9 Lambda 表达式 更多见文档[Lambda](./Operator-and-Expression.md#lambda-表达式) @@ -1470,7 +1470,7 @@ select rm(s0, s1,"tb"="3","vb"="2") from root.test.d0 select jexl(temperature, 'expr'='x -> {x + x}') as jexl1, jexl(temperature, 'expr'='x -> {x * 3}') as jexl2, jexl(temperature, 'expr'='x -> {x * x}') as jexl3, jexl(temperature, 'expr'='x -> {multiply(x, 100)}') as jexl4, jexl(temperature, st, 'expr'='(x, y) -> {x + y}') as jexl5, jexl(temperature, st, str, 'expr'='(x, y, z) -> {x + y + z}') as jexl6 from root.ln.wf01.wt01;``` ``` -## 条件表达式 +## 10 条件表达式 更多见文档[Conditional Expressions](./Operator-and-Expression.md#条件表达式) @@ -1508,9 +1508,9 @@ end as `result` from root.test4 ``` -## 触发器 +## 11 触发器 -### 使用 SQL 语句注册该触发器 +### 11.1 使用 SQL 语句注册该触发器 ```sql // Create Trigger @@ -1588,7 +1588,7 @@ WITH ( ) ``` -### 卸载触发器 +### 11.2 卸载触发器 #### 卸载触发器的 SQL 语法如下: ```sql @@ -1604,13 +1604,13 @@ dropTrigger ```sql DROP TRIGGER triggerTest1 ``` -### 查询触发器 +### 11.3 查询触发器 ```sql SHOW TRIGGERS ``` -## 连续查询(Continuous Query, CQ) +## 12 连续查询(Continuous Query, CQ) -### 语法 +### 12.1 语法 ```Go CREATE (CONTINUOUS QUERY | CQ) @@ -1746,7 +1746,7 @@ END \> SELECT temperature from root.precalculated_sg.*.* align by device; ``` -### 连续查询的管理 +### 11.2 连续查询的管理 #### 查询系统已有的连续查询 @@ -1789,13 +1789,13 @@ END ```sql SELECT avg(count_s1) from root.sg_count.d; ``` -## 用户自定义函数 +## 12 用户自定义函数 -### UDFParameters +### 12.1 UDFParameters ```sql SELECT UDF(s1, s2, 'key1'='iotdb', 'key2'='123.45') FROM root.sg.d; ``` -### UDF 注册 +### 12.2 UDF 注册 ```sql CREATE FUNCTION AS (USING URI URI-STRING)? @@ -1809,7 +1809,7 @@ CREATE FUNCTION example AS 'org.apache.iotdb.udf.UDTFExample' ```sql CREATE FUNCTION example AS 'org.apache.iotdb.udf.UDTFExample' USING URI 'http://jar/example.jar' ``` -### UDF 卸载 +### 12.3 UDF 卸载 ```sql DROP FUNCTION @@ -1817,7 +1817,7 @@ DROP FUNCTION ```sql DROP FUNCTION example ``` -### UDF 查询 +### 12.4 UDF 查询 #### 带自定义输入参数的查询 ```sql @@ -1836,13 +1836,13 @@ SELECT s1 * example(* / s1 + s2) FROM root.sg.d1; SELECT s1, s2, s1 + example(s1, s2), s1 - example(s1 + example(s1, s2) / s2) FROM root.sg.d1; ``` -### 查看所有注册的 UDF +### 12.5 查看所有注册的 UDF ```sql SHOW FUNCTIONS ``` -## 权限管理 +## 13 权限管理 -### 用户与角色相关 +### 13.1 用户与角色相关 - 创建用户(需 MANAGE_USER 权限) @@ -1947,7 +1947,7 @@ ALTER USER SET PASSWORD ; eg: ALTER USER tempuser SET PASSWORD 'newpwd'; ``` -### 授权与取消授权 +### 13.2 授权与取消授权 用户使用授权语句对赋予其他用户权限,语法如下: diff --git a/src/zh/UserGuide/latest/SQL-Manual/Syntax-Rule.md b/src/zh/UserGuide/latest/SQL-Manual/Syntax-Rule.md index fe90486a1..45e2976d2 100644 --- a/src/zh/UserGuide/latest/SQL-Manual/Syntax-Rule.md +++ b/src/zh/UserGuide/latest/SQL-Manual/Syntax-Rule.md @@ -20,11 +20,11 @@ --> # 标识符 -## 字面值常量 +## 1 字面值常量 该部分对 IoTDB 中支持的字面值常量进行说明,包括字符串常量、数值型常量、时间戳常量、布尔型常量和空值。 -### 字符串常量 +### 1.1 字符串常量 在 IoTDB 中,字符串是由**单引号(`'`)或双引号(`"`)字符括起来的字符序列**。示例如下: @@ -124,7 +124,7 @@ """string" // "string ``` -### 数值型常量 +### 1.2 数值型常量 数值型常量包括整型和浮点型。 @@ -136,27 +136,27 @@ 在浮点上下文中可以使用整数,它会被解释为等效的浮点数。 -### 时间戳常量 +### 1.3 时间戳常量 时间戳是一个数据到来的时间点,在 IoTDB 中分为绝对时间戳和相对时间戳。详细信息可参考 [数据类型文档](../Background-knowledge/Data-Type.md)。 特别地,`NOW()`表示语句开始执行时的服务端系统时间戳。 -### 布尔型常量 +### 1.4 布尔型常量 布尔值常量 `TRUE` 和 `FALSE` 分别等价于 `1` 和 `0`,它们对大小写不敏感。 -### 空值 +### 1.5 空值 `NULL`值表示没有数据。`NULL`对大小写不敏感。 -## 标识符 +## 2 标识符 -### 使用场景 +### 2.1 使用场景 在 IoTDB 中,触发器名称、UDF函数名、元数据模板名称、用户与角色名、连续查询标识、Pipe、PipeSink、键值对中的键和值、别名等可以作为标识符。 -### 约束 +### 2.2 约束 请注意,此处约束是标识符的通用约束,具体标识符可能还附带其它约束条件,如用户名限制字符数大于等于4,更严格的约束请参考具体标识符相关的说明文档。 @@ -166,7 +166,7 @@ - [ 0-9 a-z A-Z _ ] (字母,数字,下划线) - ['\u2E80'..'\u9FFF'] (UNICODE 中文字符) -### 反引号 +### 2.3 反引号 **如果出现如下情况,标识符需要使用反引号进行引用:** diff --git a/src/zh/UserGuide/latest/SQL-Manual/UDF-Libraries_apache.md b/src/zh/UserGuide/latest/SQL-Manual/UDF-Libraries_apache.md index b35e35e1a..03f2831c0 100644 --- a/src/zh/UserGuide/latest/SQL-Manual/UDF-Libraries_apache.md +++ b/src/zh/UserGuide/latest/SQL-Manual/UDF-Libraries_apache.md @@ -24,7 +24,7 @@ > 注意:当前UDF函数库中的函数仅支持毫秒级的时间戳精度。 -## 安装步骤 +## 1 安装步骤 1. 请获取与 IoTDB 版本兼容的 UDF 函数库 JAR 包的压缩包。 | UDF 安装包 | 支持的 IoTDB 版本 | 下载链接 | @@ -42,9 +42,9 @@ - SQL汇总语句 - 打开压缩包中的SQl文件,复制全部 SQL 语句,在 IoTDB 的 SQL 命令行终端(CLI)的 SQL 操作界面中,执行全部 SQl 语句批量注册 UDF -## 数据质量 +## 2 数据质量 -### Completeness +### 2.1 Completeness #### 注册语句 @@ -176,7 +176,7 @@ select completeness(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 +-----------------------------+--------------------------------------------+ ``` -### Consistency +### 2.2 Consistency #### 注册语句 @@ -307,7 +307,7 @@ select consistency(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 +-----------------------------+-------------------------------------------+ ``` -### Timeliness +### 2.3 Timeliness #### 注册语句 @@ -438,7 +438,7 @@ select timeliness(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 0 +-----------------------------+------------------------------------------+ ``` -### Validity +### 2.4 Validity #### 注册语句 @@ -592,9 +592,9 @@ select validity(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 00: --> -## 数据画像 +## 3 数据画像 -### ACF +### 3.1 ACF #### 注册语句 @@ -657,7 +657,7 @@ select acf(s1) from root.test.d1 where time <= 2020-01-01 00:00:05 +-----------------------------+--------------------+ ``` -### Distinct +### 3.2 Distinct #### 注册语句 @@ -716,7 +716,7 @@ select distinct(s2) from root.test.d2 +-----------------------------+-------------------------+ ``` -### Histogram +### 3.3 Histogram #### 注册语句 @@ -802,7 +802,7 @@ select histogram(s1,"min"="1","max"="20","count"="10") from root.test.d1 +-----------------------------+---------------------------------------------------------------+ ``` -### Integral +### 3.4 Integral #### 注册语句 @@ -899,7 +899,7 @@ select integral(s1, "unit"="1m") from root.test.d1 where time <= 2020-01-01 00:0 其计算公式为: $$\frac{1}{2\times 60}[(1+2) \times 1 + (2+3) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] = 0.958$$ -### IntegralAvg +### 3.5 IntegralAvg #### 注册语句 @@ -965,7 +965,7 @@ select integralavg(s1) from root.test.d1 where time <= 2020-01-01 00:00:10 其计算公式为: $$\frac{1}{2}[(1+2)\times 1 + (2+5) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] / 10 = 5.75$$ -### Mad +### 3.6 Mad #### 注册语句 @@ -1065,7 +1065,7 @@ select mad(s1, "error"="0.01") from root.test +-----------------------------+---------------------------------+ ``` -### Median +### 3.7 Median #### 注册语句 @@ -1135,7 +1135,7 @@ select median(s1, "error"="0.01") from root.test +-----------------------------+------------------------------------+ ``` -### MinMax +### 3.8 MinMax #### 注册语句 @@ -1229,7 +1229,7 @@ select minmax(s1) from root.test -### MvAvg +### 3.9 MvAvg #### 注册语句 @@ -1317,7 +1317,7 @@ select mvavg(s1, "window"="3") from root.test +-----------------------------+---------------------------------+ ``` -### PACF +### 3.10 PACF #### 注册语句 @@ -1377,7 +1377,7 @@ select pacf(s1, "lag"="5") from root.test.d1 +-----------------------------+--------------------------------+ ``` -### Percentile +### 3.11 Percentile #### 注册语句 @@ -1502,7 +1502,7 @@ select percentile(s1, "rank"="0.2", "error"="0.01") from root.test ``` -### Quantile +### 3.12 Quantile #### 注册语句 @@ -1565,7 +1565,7 @@ select quantile(s1, "rank"="0.2", "K"="800") from root.test1 +-----------------------------+------------------------------------------------+ ``` -### Period +### 3.13 Period #### 注册语句 @@ -1619,7 +1619,7 @@ select period(s1) from root.test.d3 +-----------------------------+-----------------------+ ``` -### QLB +### 3.14 QLB #### 注册语句 @@ -1710,7 +1710,7 @@ select QLB(s1) from root.test.d1 +-----------------------------+--------------------+ ``` -### Resample +### 3.15 Resample #### 注册语句 @@ -1834,7 +1834,7 @@ select resample(s1,'every'='30m','start'='2021-03-06 15:00:00') from root.test.d +-----------------------------+-----------------------------------------------------------------------+ ``` -### Sample +### 3.16 Sample #### 注册语句 @@ -1931,7 +1931,7 @@ select sample(s1,'method'='isometric','k'='5') from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### Segment +### 3.17 Segment #### 注册语句 @@ -2029,7 +2029,7 @@ select segment(s1,"error"="0.1") from root.test +-----------------------------+------------------------------------+ ``` -### Skew +### 3.18 Skew #### 注册语句 @@ -2096,7 +2096,7 @@ select skew(s1) from root.test.d1 +-----------------------------+-----------------------+ ``` -### Spline +### 3.19 Spline #### 注册语句 @@ -2309,7 +2309,7 @@ select spline(s1, "points"="151") from root.test +-----------------------------+------------------------------------+ ``` -### Spread +### 3.20 Spread #### 注册语句 @@ -2373,7 +2373,7 @@ select spread(s1) from root.test.d1 where time <= 2020-01-01 00:00:30 -### ZScore +### 3.21 ZScore #### 注册语句 @@ -2486,9 +2486,9 @@ select zscore(s1) from root.test --> -## 异常检测 +## 4 异常检测 -### IQR +### 4.1 IQR #### 注册语句 @@ -2563,7 +2563,7 @@ select iqr(s1) from root.test +-----------------------------+-----------------+ ``` -### KSigma +### 4.2 KSigma #### 注册语句 @@ -2636,7 +2636,7 @@ select ksigma(s1,"k"="1.0") from root.test.d1 where time <= 2020-01-01 00:00:30 +-----------------------------+---------------------------------+ ``` -### LOF +### 4.3 LOF #### 注册语句 @@ -2771,7 +2771,7 @@ select lof(s1, "method"="series") from root.test.d1 where time<1000 +-----------------------------+--------------------+ ``` -### MissDetect +### 4.4 MissDetect #### 注册语句 @@ -2864,7 +2864,7 @@ select missdetect(s2,'minlen'='10') from root.test.d2 +-----------------------------+------------------------------------------+ ``` -### Range +### 4.5 Range #### 注册语句 @@ -2936,7 +2936,7 @@ select range(s1,"lower_bound"="101.0","upper_bound"="125.0") from root.test.d1 w +-----------------------------+------------------------------------------------------------------+ ``` -### TwoSidedFilter +### 4.6 TwoSidedFilter #### 注册语句 @@ -3034,7 +3034,7 @@ select TwoSidedFilter(s0, 'len'='5', 'threshold'='0.3') from root.test +-----------------------------+------------+ ``` -### Outlier +### 4.7 Outlier #### 注册语句 @@ -3110,7 +3110,7 @@ select outlier(s1,"r"="5.0","k"="4","w"="10","s"="5") from root.test +-----------------------------+--------------------------------------------------------+ ``` -### MasterTrain +### 4.8 MasterTrain #### 函数简介 @@ -3195,7 +3195,7 @@ select MasterTrain(lo,la,m_lo,m_la,'p'='3','eta'='1.0') from root.test ``` -### MasterDetect +### 4.9 MasterDetect #### 函数简介 @@ -3366,9 +3366,9 @@ select MasterDetect(lo,la,m_lo,m_la,model,'output_type'='anomaly','p'='3','k'='3 --> -## 频域分析 +## 5 频域分析 -### Conv +### 5.1 Conv #### 注册语句 @@ -3422,7 +3422,7 @@ select conv(s1,s2) from root.test.d2 +-----------------------------+--------------------------------------+ ``` -### Deconv +### 5.2 Deconv #### 注册语句 @@ -3505,7 +3505,7 @@ select deconv(s3,s2,'result'='remainder') from root.test.d2 +-----------------------------+--------------------------------------------------------------+ ``` -### DWT +### 5.3 DWT #### 注册语句 @@ -3592,7 +3592,7 @@ select dwt(s1,"method"="haar") from root.test.d1 +-----------------------------+-------------------------------------+ ``` -### FFT +### 5.4 FFT #### 注册语句 @@ -3718,7 +3718,7 @@ select fft(s1, 'result'='real', 'compress'='0.99'), fft(s1, 'result'='imag','com 注:基于傅里叶变换结果的共轭性质,压缩结果只保留前一半;根据给定的压缩参数,从低频到高频保留数据点,直到保留的能量比例超过该值;保留最后一个数据点以表示序列长度。 -### HighPass +### 5.5 HighPass #### 注册语句 @@ -3812,7 +3812,7 @@ select highpass(s1,'wpass'='0.45') from root.test.d1 注:输入序列服从$y=sin(2\pi t/4)+2sin(2\pi t/5)$,长度为20,因此高通滤波之后的输出序列服从$y=sin(2\pi t/4)$。 -### IFFT +### 5.6 IFFT #### 注册语句 @@ -3893,7 +3893,7 @@ select ifft(re, im, 'interval'='1m', 'start'='2021-01-01 00:00:00') from root.te +-----------------------------+-------------------------------------------------------+ ``` -### LowPass +### 5.7 LowPass #### 注册语句 @@ -3983,9 +3983,9 @@ select lowpass(s1,'wpass'='0.45') from root.test.d1 |1970-01-01T08:00:19.000+08:00| -2.664535259100376E-16| +-----------------------------+----------------------------------------+ ``` -## Envelope +### 5.8 Envelope -### 函数简介 +#### 函数简介 本函数通过输入一维浮点数数组和用户指定的调制频率,实现对信号的解调和包络提取。解调的目标是从复杂的信号中提取感兴趣的部分,使其更易理解。比如通过解调可以找到信号的包络,即振幅的变化趋势。 @@ -4005,7 +4005,7 @@ select lowpass(s1,'wpass'='0.45') from root.test.d1 **提示:** 当解调的原始序列的值不连续时,本函数会视为连续处理,建议被分析的时间序列是一段值完整的时间序列。同时建议指定开始时间与结束时间。 -### 使用示例 +#### 使用示例 输入序列: @@ -4073,9 +4073,9 @@ select envelope(s1),envelope(s1,'frequency'='1000'),envelope(s1,'amplification'= --> -## 数据匹配 +## 6 数据匹配 -### Cov +### 6.1 Cov #### 注册语句 @@ -4142,7 +4142,7 @@ select cov(s1,s2) from root.test.d2 +-----------------------------+-------------------------------------+ ``` -### Dtw +### 6.2 Dtw #### 注册语句 @@ -4213,7 +4213,7 @@ select dtw(s1,s2) from root.test.d2 +-----------------------------+-------------------------------------+ ``` -### Pearson +### 6.3 Pearson #### 注册语句 @@ -4279,7 +4279,7 @@ select pearson(s1,s2) from root.test.d2 +-----------------------------+-----------------------------------------+ ``` -### PtnSym +### 6.4 PtnSym #### 注册语句 @@ -4343,7 +4343,7 @@ select ptnsym(s4, 'window'='5', 'threshold'='0') from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### XCorr +### 6.5 XCorr #### 注册语句 @@ -4437,9 +4437,9 @@ select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05 --> -## 数据修复 +## 7 数据修复 -### TimestampRepair +### 7.1 TimestampRepair #### 注册语句 @@ -4447,7 +4447,7 @@ select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05 create function timestamprepair as 'org.apache.iotdb.library.drepair.UDTFTimestampRepair' ``` -### 函数简介 +### 7.2 函数简介 本函数用于时间戳修复。根据给定的标准时间间隔,采用最小化修复代价的方法,通过对数据时间戳的微调,将原本时间戳间隔不稳定的数据修复为严格等间隔的数据。在未给定标准时间间隔的情况下,本函数将使用时间间隔的中位数 (median)、众数 (mode) 或聚类中心 (cluster) 来推算标准时间间隔。 @@ -4463,7 +4463,7 @@ create function timestamprepair as 'org.apache.iotdb.library.drepair.UDTFTimesta **输出序列:** 输出单个序列,类型与输入序列相同。该序列是修复后的输入序列。 -### 使用示例 +### 7.3 使用示例 #### 指定标准时间间隔 @@ -4542,7 +4542,7 @@ select timestamprepair(s1) from root.test.d2 +-----------------------------+--------------------------------+ ``` -### ValueFill +### 7.4 ValueFill #### 注册语句 @@ -4659,7 +4659,7 @@ select valuefill(s1,"method"="previous") from root.test.d2 +-----------------------------+-------------------------------------------+ ``` -### ValueRepair +### 7.5 ValueRepair #### 注册语句 @@ -4781,7 +4781,7 @@ select valuerepair(s1,'method'='LsGreedy') from root.test.d2 +-----------------------------+-------------------------------------------------+ ``` -### MasterRepair +### 7.6 MasterRepair #### 函数简介 @@ -4843,7 +4843,7 @@ select MasterRepair(t1,t2,t3,m1,m2,m3) from root.test +-----------------------------+-------------------------------------------------------------------------------------------+ ``` -### SeasonalRepair +### 7.7 SeasonalRepair #### 函数简介 本函数用于对周期性时间序列的数值进行基于分解的修复。目前,本函数支持两种方法:**Classical**使用经典分解方法得到的残差项检测数值的异常波动,并使用滑动平均修复序列;**Improved**使用改进的分解方法得到的残差项检测数值的异常波动,并使用滑动中值修复序列。 @@ -4966,9 +4966,9 @@ select seasonalrepair(s1,'method'='improved','period'=3) from root.test.d2 --> -## 序列发现 +## 8 序列发现 -### ConsecutiveSequences +### 8.1 ConsecutiveSequences #### 注册语句 @@ -5062,7 +5062,7 @@ select consecutivesequences(s1,s2) from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### ConsecutiveWindows +### 8.2 ConsecutiveWindows #### 注册语句 @@ -5152,9 +5152,9 @@ select consecutivewindows(s1,s2,'length'='10m') from root.test.d1 --> -## 机器学习 +## 9 机器学习 -### AR +### 9.1 AR #### 注册语句 @@ -5221,7 +5221,7 @@ select ar(s0,"p"="2") from root.test.d0 +-----------------------------+---------------------------+ ``` -### Representation +### 9.2 Representation #### 函数简介 @@ -5285,7 +5285,7 @@ select representation(s0,"tb"="3","vb"="2") from root.test.d0 +-----------------------------+-------------------------------------------------+ ``` -### RM +### 9.3 RM #### 函数简介 diff --git a/src/zh/UserGuide/latest/SQL-Manual/UDF-Libraries_timecho.md b/src/zh/UserGuide/latest/SQL-Manual/UDF-Libraries_timecho.md index e9d71a727..5321bc23d 100644 --- a/src/zh/UserGuide/latest/SQL-Manual/UDF-Libraries_timecho.md +++ b/src/zh/UserGuide/latest/SQL-Manual/UDF-Libraries_timecho.md @@ -24,7 +24,7 @@ > 注意:当前UDF函数库中的函数仅支持毫秒级的时间戳精度。 -## 安装步骤 +## 1 安装步骤 1. 请获取与 IoTDB 版本兼容的 UDF 函数库 JAR 包的压缩包。 | UDF 安装包 | 支持的 IoTDB 版本 | 下载链接 | @@ -42,9 +42,9 @@ - SQL汇总语句 - 打开压缩包中的SQl文件,复制全部 SQL 语句,在 IoTDB 的 SQL 命令行终端(CLI)或可视化控制台(Workbench)的 SQL 操作界面中,执行全部 SQl 语句批量注册 UDF -## 数据质量 +## 2 数据质量 -### Completeness +### 2.1 Completeness #### 注册语句 @@ -176,7 +176,7 @@ select completeness(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 +-----------------------------+--------------------------------------------+ ``` -### Consistency +### 2.2 Consistency #### 注册语句 @@ -307,7 +307,7 @@ select consistency(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 +-----------------------------+-------------------------------------------+ ``` -### Timeliness +### 2.3 Timeliness #### 注册语句 @@ -438,7 +438,7 @@ select timeliness(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 0 +-----------------------------+------------------------------------------+ ``` -### Validity +### 2.4 Validity #### 注册语句 @@ -592,9 +592,9 @@ select validity(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 00: --> -## 数据画像 +## 3 数据画像 -### ACF +### 3.1 ACF #### 注册语句 @@ -657,7 +657,7 @@ select acf(s1) from root.test.d1 where time <= 2020-01-01 00:00:05 +-----------------------------+--------------------+ ``` -### Distinct +### 3.2 Distinct #### 注册语句 @@ -716,7 +716,7 @@ select distinct(s2) from root.test.d2 +-----------------------------+-------------------------+ ``` -### Histogram +### 3.3 Histogram #### 注册语句 @@ -802,7 +802,7 @@ select histogram(s1,"min"="1","max"="20","count"="10") from root.test.d1 +-----------------------------+---------------------------------------------------------------+ ``` -### Integral +### 3.4 Integral #### 注册语句 @@ -899,7 +899,7 @@ select integral(s1, "unit"="1m") from root.test.d1 where time <= 2020-01-01 00:0 其计算公式为: $$\frac{1}{2\times 60}[(1+2) \times 1 + (2+3) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] = 0.958$$ -### IntegralAvg +### 3.5 IntegralAvg #### 注册语句 @@ -965,7 +965,7 @@ select integralavg(s1) from root.test.d1 where time <= 2020-01-01 00:00:10 其计算公式为: $$\frac{1}{2}[(1+2)\times 1 + (2+5) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] / 10 = 5.75$$ -### Mad +### 3.6 Mad #### 注册语句 @@ -1065,7 +1065,7 @@ select mad(s1, "error"="0.01") from root.test +-----------------------------+---------------------------------+ ``` -### Median +### 3.7 Median #### 注册语句 @@ -1135,7 +1135,7 @@ select median(s1, "error"="0.01") from root.test +-----------------------------+------------------------------------+ ``` -### MinMax +### 3.8 MinMax #### 注册语句 @@ -1229,7 +1229,7 @@ select minmax(s1) from root.test -### MvAvg +### 3.9 MvAvg #### 注册语句 @@ -1317,7 +1317,7 @@ select mvavg(s1, "window"="3") from root.test +-----------------------------+---------------------------------+ ``` -### PACF +### 3.10 PACF #### 注册语句 @@ -1377,7 +1377,7 @@ select pacf(s1, "lag"="5") from root.test.d1 +-----------------------------+--------------------------------+ ``` -### Percentile +### 3.11 Percentile #### 注册语句 @@ -1502,7 +1502,7 @@ select percentile(s1, "rank"="0.2", "error"="0.01") from root.test ``` -### Quantile +### 3.12 Quantile #### 注册语句 @@ -1565,7 +1565,7 @@ select quantile(s1, "rank"="0.2", "K"="800") from root.test1 +-----------------------------+------------------------------------------------+ ``` -### Period +### 3.13 Period #### 注册语句 @@ -1619,7 +1619,7 @@ select period(s1) from root.test.d3 +-----------------------------+-----------------------+ ``` -### QLB +### 3.14 QLB #### 注册语句 @@ -1710,7 +1710,7 @@ select QLB(s1) from root.test.d1 +-----------------------------+--------------------+ ``` -### Resample +### 3.15 Resample #### 注册语句 @@ -1834,7 +1834,7 @@ select resample(s1,'every'='30m','start'='2021-03-06 15:00:00') from root.test.d +-----------------------------+-----------------------------------------------------------------------+ ``` -### Sample +### 3.16 Sample #### 注册语句 @@ -1931,7 +1931,7 @@ select sample(s1,'method'='isometric','k'='5') from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### Segment +### 3.17 Segment #### 注册语句 @@ -2029,7 +2029,7 @@ select segment(s1,"error"="0.1") from root.test +-----------------------------+------------------------------------+ ``` -### Skew +### 3.18 Skew #### 注册语句 @@ -2096,7 +2096,7 @@ select skew(s1) from root.test.d1 +-----------------------------+-----------------------+ ``` -### Spline +### 3.19 Spline #### 注册语句 @@ -2309,7 +2309,7 @@ select spline(s1, "points"="151") from root.test +-----------------------------+------------------------------------+ ``` -### Spread +### 3.20 Spread #### 注册语句 @@ -2373,7 +2373,7 @@ select spread(s1) from root.test.d1 where time <= 2020-01-01 00:00:30 -### ZScore +### 3.21 ZScore #### 注册语句 @@ -2486,9 +2486,9 @@ select zscore(s1) from root.test --> -## 异常检测 +## 4 异常检测 -### IQR +### 4.1 IQR #### 注册语句 @@ -2563,7 +2563,7 @@ select iqr(s1) from root.test +-----------------------------+-----------------+ ``` -### KSigma +### 4.2 KSigma #### 注册语句 @@ -2636,7 +2636,7 @@ select ksigma(s1,"k"="1.0") from root.test.d1 where time <= 2020-01-01 00:00:30 +-----------------------------+---------------------------------+ ``` -### LOF +### 4.3 LOF #### 注册语句 @@ -2771,7 +2771,7 @@ select lof(s1, "method"="series") from root.test.d1 where time<1000 +-----------------------------+--------------------+ ``` -### MissDetect +### 4.4 MissDetect #### 注册语句 @@ -2864,7 +2864,7 @@ select missdetect(s2,'minlen'='10') from root.test.d2 +-----------------------------+------------------------------------------+ ``` -### Range +### 4.5 Range #### 注册语句 @@ -2936,7 +2936,7 @@ select range(s1,"lower_bound"="101.0","upper_bound"="125.0") from root.test.d1 w +-----------------------------+------------------------------------------------------------------+ ``` -### TwoSidedFilter +### 4.6 TwoSidedFilter #### 注册语句 @@ -3034,7 +3034,7 @@ select TwoSidedFilter(s0, 'len'='5', 'threshold'='0.3') from root.test +-----------------------------+------------+ ``` -### Outlier +### 4.7 Outlier #### 注册语句 @@ -3110,7 +3110,7 @@ select outlier(s1,"r"="5.0","k"="4","w"="10","s"="5") from root.test +-----------------------------+--------------------------------------------------------+ ``` -### MasterTrain +### 4.8 MasterTrain #### 函数简介 @@ -3195,7 +3195,7 @@ select MasterTrain(lo,la,m_lo,m_la,'p'='3','eta'='1.0') from root.test ``` -### MasterDetect +### 4.9 MasterDetect #### 函数简介 @@ -3366,9 +3366,9 @@ select MasterDetect(lo,la,m_lo,m_la,model,'output_type'='anomaly','p'='3','k'='3 --> -## 频域分析 +## 5 频域分析 -### Conv +### 5.1 Conv #### 注册语句 @@ -3422,7 +3422,7 @@ select conv(s1,s2) from root.test.d2 +-----------------------------+--------------------------------------+ ``` -### Deconv +### 5.2 Deconv #### 注册语句 @@ -3505,7 +3505,7 @@ select deconv(s3,s2,'result'='remainder') from root.test.d2 +-----------------------------+--------------------------------------------------------------+ ``` -### DWT +### 5.3 DWT #### 注册语句 @@ -3592,7 +3592,7 @@ select dwt(s1,"method"="haar") from root.test.d1 +-----------------------------+-------------------------------------+ ``` -### FFT +### 5.4 FFT #### 注册语句 @@ -3718,7 +3718,7 @@ select fft(s1, 'result'='real', 'compress'='0.99'), fft(s1, 'result'='imag','com 注:基于傅里叶变换结果的共轭性质,压缩结果只保留前一半;根据给定的压缩参数,从低频到高频保留数据点,直到保留的能量比例超过该值;保留最后一个数据点以表示序列长度。 -### HighPass +### 5.5 HighPass #### 注册语句 @@ -3812,7 +3812,7 @@ select highpass(s1,'wpass'='0.45') from root.test.d1 注:输入序列服从$y=sin(2\pi t/4)+2sin(2\pi t/5)$,长度为20,因此高通滤波之后的输出序列服从$y=sin(2\pi t/4)$。 -### IFFT +### 5.6 IFFT #### 注册语句 @@ -3893,7 +3893,7 @@ select ifft(re, im, 'interval'='1m', 'start'='2021-01-01 00:00:00') from root.te +-----------------------------+-------------------------------------------------------+ ``` -### LowPass +### 5.7 LowPass #### 注册语句 @@ -3987,7 +3987,7 @@ select lowpass(s1,'wpass'='0.45') from root.test.d1 注:输入序列服从$y=sin(2\pi t/4)+2sin(2\pi t/5)$,长度为20,因此低通滤波之后的输出序列服从$y=2sin(2\pi t/5)$。 -### Envelope +### 5.8 Envelope #### 注册语句 @@ -4060,9 +4060,9 @@ select envelope(s1),envelope(s1,'frequency'='1000'),envelope(s1,'amplification'= ``` -## 数据匹配 +## 6 数据匹配 -### Cov +### 6.1 Cov #### 注册语句 @@ -4129,7 +4129,7 @@ select cov(s1,s2) from root.test.d2 +-----------------------------+-------------------------------------+ ``` -### Dtw +### 6.2 Dtw #### 注册语句 @@ -4200,7 +4200,7 @@ select dtw(s1,s2) from root.test.d2 +-----------------------------+-------------------------------------+ ``` -### Pearson +### 6.3 Pearson #### 注册语句 @@ -4266,7 +4266,7 @@ select pearson(s1,s2) from root.test.d2 +-----------------------------+-----------------------------------------+ ``` -### PtnSym +### 6.4 PtnSym #### 注册语句 @@ -4330,7 +4330,7 @@ select ptnsym(s4, 'window'='5', 'threshold'='0') from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### XCorr +### 6.5 XCorr #### 注册语句 @@ -4424,9 +4424,9 @@ select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05 --> -## 数据修复 +## 7 数据修复 -### TimestampRepair +### 7.1 TimestampRepair #### 注册语句 @@ -4434,7 +4434,7 @@ select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05 create function timestamprepair as 'org.apache.iotdb.library.drepair.UDTFTimestampRepair' ``` -### 函数简介 +### 7.2 函数简介 本函数用于时间戳修复。根据给定的标准时间间隔,采用最小化修复代价的方法,通过对数据时间戳的微调,将原本时间戳间隔不稳定的数据修复为严格等间隔的数据。在未给定标准时间间隔的情况下,本函数将使用时间间隔的中位数 (median)、众数 (mode) 或聚类中心 (cluster) 来推算标准时间间隔。 @@ -4450,7 +4450,7 @@ create function timestamprepair as 'org.apache.iotdb.library.drepair.UDTFTimesta **输出序列:** 输出单个序列,类型与输入序列相同。该序列是修复后的输入序列。 -### 使用示例 +### 7.3 使用示例 #### 指定标准时间间隔 @@ -4529,7 +4529,7 @@ select timestamprepair(s1) from root.test.d2 +-----------------------------+--------------------------------+ ``` -### ValueFill +### 7.4 ValueFill #### 注册语句 @@ -4646,7 +4646,7 @@ select valuefill(s1,"method"="previous") from root.test.d2 +-----------------------------+-------------------------------------------+ ``` -### ValueRepair +### 7.5 ValueRepair #### 注册语句 @@ -4768,7 +4768,7 @@ select valuerepair(s1,'method'='LsGreedy') from root.test.d2 +-----------------------------+-------------------------------------------------+ ``` -### MasterRepair +### 7.6 MasterRepair #### 函数简介 @@ -4830,7 +4830,7 @@ select MasterRepair(t1,t2,t3,m1,m2,m3) from root.test +-----------------------------+-------------------------------------------------------------------------------------------+ ``` -### SeasonalRepair +### 7.7 SeasonalRepair #### 函数简介 本函数用于对周期性时间序列的数值进行基于分解的修复。目前,本函数支持两种方法:**Classical**使用经典分解方法得到的残差项检测数值的异常波动,并使用滑动平均修复序列;**Improved**使用改进的分解方法得到的残差项检测数值的异常波动,并使用滑动中值修复序列。 @@ -4953,9 +4953,9 @@ select seasonalrepair(s1,'method'='improved','period'=3) from root.test.d2 --> -## 序列发现 +## 8 序列发现 -### ConsecutiveSequences +### 8.1 ConsecutiveSequences #### 注册语句 @@ -5049,7 +5049,7 @@ select consecutivesequences(s1,s2) from root.test.d1 +-----------------------------+------------------------------------------------------+ ``` -### ConsecutiveWindows +### 8.2 ConsecutiveWindows #### 注册语句 @@ -5139,9 +5139,9 @@ select consecutivewindows(s1,s2,'length'='10m') from root.test.d1 --> -## 机器学习 +## 9 机器学习 -### AR +### 9.1 AR #### 注册语句 @@ -5208,7 +5208,7 @@ select ar(s0,"p"="2") from root.test.d0 +-----------------------------+---------------------------+ ``` -### Representation +### 9.2 Representation #### 函数简介 @@ -5272,7 +5272,7 @@ select representation(s0,"tb"="3","vb"="2") from root.test.d0 +-----------------------------+-------------------------------------------------+ ``` -### RM +### 9.3 RM #### 函数简介 diff --git a/src/zh/UserGuide/latest/Technical-Insider/Cluster-data-partitioning.md b/src/zh/UserGuide/latest/Technical-Insider/Cluster-data-partitioning.md index 119e003a0..d8fb03381 100644 --- a/src/zh/UserGuide/latest/Technical-Insider/Cluster-data-partitioning.md +++ b/src/zh/UserGuide/latest/Technical-Insider/Cluster-data-partitioning.md @@ -22,10 +22,10 @@ # 负载均衡 本文档介绍 IoTDB 中的分区策略和负载均衡策略。根据时序数据的特性,IoTDB 按序列和时间维度对其进行分区。结合序列分区与时间分区创建一个分区,作为划分的基本单元。为了提高吞吐量并降低管理成本,这些分区被均匀分配到分片(Region)中,分片是复制的基本单元。分片的副本决定了数据的存储位置,主副本负责主要负载的管理。在此过程中,副本放置算法决定哪些节点将持有分片副本,而主副本选择算法则指定哪个副本将成为主副本。 -## 分区策略和分区分配 +## 1 分区策略和分区分配 IoTDB 为时间序列数据实现了量身定制的分区算法。在此基础上,缓存于配置节点和数据节点上的分区信息不仅易于管理,而且能够清晰区分冷热数据。随后,平衡的分区被均匀分配到集群的分片中,以实现存储均衡。 -### 分区策略 +### 1.1 分区策略 IoTDB 将生产环境中的每个传感器映射为一个时间序列。然后,使用序列分区算法对时间序列进行分区以管理其元数据,再结合时间分区算法来管理其数据。下图展示了 IoTDB 如何对时序数据进行分区。 @@ -53,7 +53,7 @@ $$\left\lfloor\frac{\text{Timestamp}-\text{StartTimestamp}}{\text{TimePartitionI #### 数据分区 结合序列分区与时间分区创建数据分区。由于序列分区算法对时间序列进行了均匀分区,特定时间分区内的数据分区负载保持均衡。这些数据分区随后被均匀分配到数据分片中,以实现数据的均衡分布。 -### 分区分配 +### 1.2 分区分配 IoTDB 使用分片来实现时间序列的弹性存储,集群中分片的数量由所有数据节点的总资源决定。由于分片的数量是动态的,IoTDB 可以轻松扩展。元数据分片和数据分片都遵循相同的分区分配算法,即均匀划分所有序列分区。下图展示了分区分配过程,其中动态扩展的分片匹配不断扩展的时间序列和集群。 @@ -70,10 +70,10 @@ $$\text{RegionGroupNumber}=\left\lfloor\frac{\sum_{i=1}^{DataNodeNumber}\text{Re 值得注意的是,IoTDB 有效利用了时序数据的特性。当配置了 TTL(生存时间)时,IoTDB 可实现无需迁移的时序数据弹性存储,该功能在集群扩展时最小化了对在线操作的影响。上图展示了该功能的一个实例:新生成的数据分区被均匀分配到每个数据分片,过期数据会自动归档。因此,集群的存储最终将保持平衡。 -## 均衡策略 +## 2 均衡策略 为了提高集群的可用性和性能,IoTDB 采用了精心设计的存储均衡和计算均衡算法。 -### 存储均衡 +### 2.1 存储均衡 数据节点持有的副本数量反映了它的存储负载。如果数据节点之间的副本数量差异较大,拥有更多副本的数据节点可能成为存储瓶颈。尽管简单的轮询(Round Robin)放置算法可以通过确保每个数据节点持有等量副本来实现存储均衡,但它会降低集群的容错能力,如下所示: @@ -88,7 +88,7 @@ $$\text{RegionGroupNumber}=\left\lfloor\frac{\sum_{i=1}^{DataNodeNumber}\text{Re 为了解决这个问题,IoTDB 采用了一种副本放置算法,该算法不仅将副本均匀放置到所有数据节点上,还确保每个 数据节点在发生故障时,能够将其负载转移到足够多的其他数据节点。因此,集群实现了存储分布的均衡,并具备较高的容错能力,从而确保其可用性。 -### 计算均衡 +### 2.2 计算均衡 数据节点持有的主副本数量反映了它的计算负载。如果数据节点之间持有主副本数量差异较大,拥有更多主副本的数据节点可能成为计算瓶颈。如果主副本选择过程使用直观的贪心算法,当副本以容错算法放置时,可能会导致主副本分布不均,如下所示: @@ -103,7 +103,7 @@ $$\text{RegionGroupNumber}=\left\lfloor\frac{\sum_{i=1}^{DataNodeNumber}\text{Re 为了解决这个问题,IoTDB 采用了一种主副本选择算法,能够持续平衡集群中的主副本分布。因此,集群实现了计算负载的均衡分布,确保了其性能。 -## Source Code +## 3 Source Code + [数据分区](https://github.com/apache/iotdb/tree/master/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition) + [分区分配](https://github.com/apache/iotdb/tree/master/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/partition) + [副本放置](https://github.com/apache/iotdb/tree/master/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/副本) diff --git a/src/zh/UserGuide/latest/Technical-Insider/Encoding-and-Compression.md b/src/zh/UserGuide/latest/Technical-Insider/Encoding-and-Compression.md index 00d0d803f..0fb8a3a29 100644 --- a/src/zh/UserGuide/latest/Technical-Insider/Encoding-and-Compression.md +++ b/src/zh/UserGuide/latest/Technical-Insider/Encoding-and-Compression.md @@ -21,9 +21,9 @@ # 编码和压缩 -## 编码方式 +## 1 编码方式 -### 基本编码方式 +### 1.1 基本编码方式 为了提高数据的存储效率,需要在数据写入的过程中对数据进行编码,从而减少磁盘空间的使用量。在写数据以及读数据的过程中都能够减少 I/O 操作的数据量从而提高性能。IoTDB 支持多种针对不同类型的数据的编码方法: @@ -73,7 +73,7 @@ RLBE编码是一种无损编码,将差分编码,位填充编码,游程长度,斐波那契编码和拼接等编码思想结合到一起。RLBE编码适合递增且递增值较小的时序数据,不适合波动较大的时序数据。 -### 数据类型与编码的对应关系 +### 1.2 数据类型与编码的对应关系 前文介绍的五种编码适用于不同的数据类型,若对应关系错误,则无法正确创建时间序列。数据类型与支持其编码的编码方式对应关系总结如下表所示。 @@ -97,11 +97,11 @@ IoTDB> create timeseries root.ln.wf02.wt02.status WITH DATATYPE=BOOLEAN, ENCODIN Msg: 507: encoding TS_2DIFF does not support BOOLEAN ``` -## 压缩方式 +## 2 压缩方式 当时间序列写入并按照指定的类型编码为二进制数据后,IoTDB 会使用压缩技术对该数据进行压缩,进一步提升空间存储效率。虽然编码和压缩都旨在提升存储效率,但编码技术通常只适合特定的数据类型(如二阶差分编码只适合与 INT32 或者 INT64 编码,存储浮点数需要先将他们乘以 10m 以转换为整数),然后将它们转换为二进制流。压缩方式(SNAPPY)针对二进制流进行压缩,因此压缩方式的使用不再受数据类型的限制。 -### 基本压缩方式 +### 2.1 基本压缩方式 IoTDB 允许在创建一个时间序列的时候指定该列的压缩方式。现阶段 IoTDB 支持以下几种压缩方式: @@ -114,7 +114,7 @@ IoTDB 允许在创建一个时间序列的时候指定该列的压缩方式。 压缩方式的指定语法详见本文[SQL 参考文档](../SQL-Manual/SQL-Manual.md)。 -### 压缩比统计信息 +### 2.2 压缩比统计信息 压缩比统计信息文件:data/datanode/system/compression_ratio diff --git a/src/zh/UserGuide/latest/Tools-System/Benchmark.md b/src/zh/UserGuide/latest/Tools-System/Benchmark.md index 46a2b0250..efafdaf7a 100644 --- a/src/zh/UserGuide/latest/Tools-System/Benchmark.md +++ b/src/zh/UserGuide/latest/Tools-System/Benchmark.md @@ -21,7 +21,7 @@ # 测试工具 -## 概述 +## 1 概述 IoT-benchmark 是基于 Java 和大数据环境开发的时序数据库基准测试工具,由清华大学软件学院研发并开源。它使用方便,支持多种写入以及查询方式,支持存储测试信息和结果以供进一步查询或分析,支持与 Tableau 集成以可视化测试结果。 @@ -54,7 +54,7 @@ IoT-benchmark 是基于 Java 和大数据环境开发的时序数据库基准测 表1-1大数据测试基准对比 -### 软件安装与环境搭建 +### 1.1 软件安装与环境搭建 #### IoT Benchmark 运行的前置条件 @@ -119,7 +119,7 @@ IoT-benchmark 是基于 Java 和大数据环境开发的时序数据库基准测 -### 主要参数介绍 +### 1.2 主要参数介绍 本节重点解释说明了主要参数的用途和配置方法。 @@ -205,7 +205,7 @@ IoT-benchmark目前支持通过配置参数“TEST_DATA_PERSISTENCE”将测试 如果我们设置“TEST_DATA_PERSISTENCE=CSV”,测试执行时和执行完毕后我们可以在IoT-benchmark根目录下看到新生成的data文件夹,其下包含csv文件夹记录测试过程;csvOutput文件夹记录测试结果。如果我们设置“TEST_DATA_PERSISTENCE=MySQL”,它会在测试开始前在指定的MySQL数据库中创建命名如“testWithDefaultPath_被测数据库名称_备注_测试启动时间”的数据表记录测试过程;会在名为“CONFIG”的数据表(如果不存在则创建该表),写入本次测试的配置信息;当测试完成时会在名为“FINAL_RESULT”的数据表(如果不存在则创建该表)中写入本次测试结果。 -## 实际案例 +## 2 实际案例 我们以中车青岛四方车辆研究所有限公司应用为例,参考《ApacheIoTDB在智能运维平台存储中的应用》中描述的场景进行实际操作说明。 @@ -234,7 +234,7 @@ IoT-benchmark目前支持通过配置参数“TEST_DATA_PERSISTENCE”将测试 | 172.21.4.4 | KaiosDB | | 172.21.4.5 | MySQL | -### 写入测试 +### 2.1 写入测试 场景描述:创建100个客户端来模拟100列车、每列车3000个传感器、数据类型为DOUBLE类型、数据时间间隔为500ms(2Hz)、顺序发送。参考以上需求我们需要修改IoT-benchmark配置参数如表2-3中所列。 @@ -305,7 +305,7 @@ IoT-benchmark目前支持通过配置参数“TEST_DATA_PERSISTENCE”将测试 -### 查询测试 +### 2.2 询测试 场景描述:在写入测试场景下模拟10个客户端对时序数据库Apache-IoTDB内存放的数据进行全类型查询任务。配置如下: @@ -330,7 +330,7 @@ IoT-benchmark目前支持通过配置参数“TEST_DATA_PERSISTENCE”将测试 图2-7查询测试结果 -### 其他参数说明 +### 2.3 其他参数说明 之前章节中针对Apache-IoTDB和KairosDB进行写入性能对比,但是用户如果要执行模拟真实写入速率测试该如何配置?测试时间过长该如何控制呢?生成的模拟数据有哪些规律吗?如果IoT-Benchmark服务器配置较低,可以使用多台机器模拟压力输出吗? diff --git a/src/zh/UserGuide/latest/Tools-System/CLI.md b/src/zh/UserGuide/latest/Tools-System/CLI.md index aaff80934..d37f9bc9e 100644 --- a/src/zh/UserGuide/latest/Tools-System/CLI.md +++ b/src/zh/UserGuide/latest/Tools-System/CLI.md @@ -24,7 +24,7 @@ IOTDB 为用户提供 cli/Shell 工具用于启动客户端和服务端程序。下面介绍每个 cli/Shell 工具的运行方式和相关参数。 > \$IOTDB\_HOME 表示 IoTDB 的安装目录所在路径。 -## 安装 +## 1 安装 如果使用源码版,可以在 iotdb 的根目录下执行 ```shell @@ -35,9 +35,9 @@ IOTDB 为用户提供 cli/Shell 工具用于启动客户端和服务端程序。 如果你下载的是二进制版,那么 Cli 可以在 sbin 文件夹下直接找到。 -## 运行 +## 2 运行 -### Cli 运行方式 +### 2.1 Cli 运行方式 安装后的 IoTDB 中有一个默认用户:`root`,默认密码为`root`。用户可以使用该用户尝试运行 IoTDB 客户端以测试服务器是否正常启动。客户端启动脚本为$IOTDB_HOME/sbin 文件夹下的`start-cli`脚本。启动脚本时需要指定运行 IP 和 RPC PORT。以下为服务器在本机启动,且用户未更改运行端口号的示例,默认端口为 6667。若用户尝试连接远程服务器或更改了服务器运行的端口号,请在-h 和-p 项处使用服务器的 IP 和 RPC PORT。
用户也可以在启动脚本的最前方设置自己的环境变量,如 JAVA_HOME 等 (对于 linux 用户,脚本路径为:"/sbin/start-cli.sh"; 对于 windows 用户,脚本路径为:"/sbin/start-cli.bat") @@ -65,7 +65,7 @@ Successfully login at 127.0.0.1:6667 ``` 输入`quit`或`exit`可退出 cli 结束本次会话,cli 输出`quit normally`表示退出成功。 -### Cli 运行参数 +### 2.2 Cli 运行参数 |参数名|参数类型|是否为必需参数| 说明| 例子 | |:---|:---|:---|:---|:---| @@ -92,7 +92,7 @@ Windows 系统启动命令如下: Shell > sbin\start-cli.bat -h 10.129.187.21 -p 6667 -u root -pw root -disableISO8601 -maxPRC 10 ``` -### CLI 特殊命令 +### 2.3 CLI 特殊命令 下面列举了一些CLI的特殊命令。 | 命令 | 描述 / 例子 | @@ -107,7 +107,7 @@ Shell > sbin\start-cli.bat -h 10.129.187.21 -p 6667 -u root -pw root -disableISO | `help` | 获取CLI特殊命令的提示 | | `exit/quit` | 退出CLI | -### 使用 OpenID 作为用户名认证登录 +### 2.4 使用 OpenID 作为用户名认证登录 OpenID Connect (OIDC) 使用 keycloack 作为 OIDC 服务权限认证服务。 @@ -207,7 +207,7 @@ curl -X POST "http://{your-keycloack-server}/realms/{your-realm}/protocol/openid {"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJxMS1XbTBvelE1TzBtUUg4LVNKYXAyWmNONE1tdWNXd25RV0tZeFpKNG93In0.eyJleHAiOjE1OTAzOTgwNzEsImlhdCI6MTU5MDM5Nzc3MSwianRpIjoiNjA0ZmYxMDctN2NiNy00NTRmLWIwYmQtY2M2ZDQwMjFiNGU4IiwiaXNzIjoiaHR0cDovL2F1dGguZGVtby5wcmFnbWF0aWNpbmR1c3RyaWVzLmRlL2F1dGgvcmVhbG1zL0lvVERCIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImJhMzJlNDcxLWM3NzItNGIzMy04ZGE2LTZmZThhY2RhMDA3MyIsInR5cCI6IkJlYXJlciIsImF6cCI6ImlvdGRiIiwic2Vzc2lvbl9zdGF0ZSI6IjA2MGQyODYyLTE0ZWQtNDJmZS1iYWY3LThkMWY3ODQ2NTdmMSIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsibG9jYWxob3N0OjgwODAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iLCJpb3RkYl9hZG1pbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ1c2VyIn0.nwbrJkWdCNjzFrTDwKNuV5h9dDMg5ytRKGOXmFIajpfsbOutJytjWTCB2WpA8E1YI3KM6gU6Jx7cd7u0oPo5syHhfCz119n_wBiDnyTZkFOAPsx0M2z20kvBLN9k36_VfuCMFUeddJjO31MeLTmxB0UKg2VkxdczmzMH3pnalhxqpnWWk3GnrRrhAf2sZog0foH4Ae3Ks0lYtYzaWK_Yo7E4Px42-gJpohy3JevOC44aJ4auzJR1RBj9LUbgcRinkBy0JLi6XXiYznSC2V485CSBHW3sseXn7pSXQADhnmGQrLfFGO5ZljmPO18eFJaimdjvgSChsrlSEmTDDsoo5Q","expires_in":300,"refresh_expires_in":1800,"refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhMzZlMGU0NC02MWNmLTQ5NmMtOGRlZi03NTkwNjQ5MzQzMjEifQ.eyJleHAiOjE1OTAzOTk1NzEsImlhdCI6MTU5MDM5Nzc3MSwianRpIjoiNmMxNTBiY2EtYmE5NC00NTgxLWEwODEtYjI2YzhhMmI5YmZmIiwiaXNzIjoiaHR0cDovL2F1dGguZGVtby5wcmFnbWF0aWNpbmR1c3RyaWVzLmRlL2F1dGgvcmVhbG1zL0lvVERCIiwiYXVkIjoiaHR0cDovL2F1dGguZGVtby5wcmFnbWF0aWNpbmR1c3RyaWVzLmRlL2F1dGgvcmVhbG1zL0lvVERCIiwic3ViIjoiYmEzMmU0NzEtYzc3Mi00YjMzLThkYTYtNmZlOGFjZGEwMDczIiwidHlwIjoiUmVmcmVzaCIsImF6cCI6ImlvdGRiIiwic2Vzc2lvbl9zdGF0ZSI6IjA2MGQyODYyLTE0ZWQtNDJmZS1iYWY3LThkMWY3ODQ2NTdmMSIsInNjb3BlIjoiZW1haWwgcHJvZmlsZSJ9.ayNpXdNX28qahodX1zowrMGiUCw2AodlHBQFqr8Ui7c","token_type":"bearer","not-before-policy":0,"session_state":"060d2862-14ed-42fe-baf7-8d1f784657f1","scope":"email profile"} ``` -### Cli 的批量操作 +### 2.5 Cli 的批量操作 当您想要通过脚本的方式通过 Cli / Shell 对 IoTDB 进行批量操作时,可以使用-e 参数。通过使用该参数,您可以在不进入客户端输入模式的情况下操作 IoTDB。 为了避免 SQL 语句和其他参数混淆,现在只支持-e 参数作为最后的参数使用。 diff --git a/src/zh/UserGuide/latest/Tools-System/Data-Export-Tool.md b/src/zh/UserGuide/latest/Tools-System/Data-Export-Tool.md index 361d5076e..c597aa464 100644 --- a/src/zh/UserGuide/latest/Tools-System/Data-Export-Tool.md +++ b/src/zh/UserGuide/latest/Tools-System/Data-Export-Tool.md @@ -1,10 +1,10 @@ # 数据导出 -## 1. 导出工具介绍 +## 1 导出工具介绍 导出工具可以将 SQL 查询的数据导出为指定的格式,包含用于导出 TsFile 文件的 `export-tsfile.sh/bat` 脚本和支持 CSV 和 SQL 格式的导出的 `export-data.sh/bat` 脚本。 -## 2. 支持的数据类型 +## 2 支持的数据类型 - CSV:纯文本格式,存储格式化数据,需按照下文指定 CSV 格式进行构造 @@ -12,7 +12,7 @@ - TsFile: IoTDB 中使用的时间序列的文件格式 -## 3. export-tsfile 脚本 +## 3 export-tsfile 脚本 支持 TsFile: IoTDB 中使用的时间序列的文件格式 @@ -68,7 +68,7 @@ tools/export-tsfile.bat -h 127.0.0.1 -p 6667 -u root -pw root -td ./ -s ./sql.tx tools/export-tsfile.sh -h 127.0.0.1 -p 6667 -u root -pw root -td ./ -s ./sql.txt -f myTsFile -t 10000 ``` -## 4. export-data 脚本 +## 4 export-data 脚本 支持 CSV:纯文本格式,存储格式化数据,需按照下文指定 CSV 格式进行构造 diff --git a/src/zh/UserGuide/latest/Tools-System/Data-Import-Tool.md b/src/zh/UserGuide/latest/Tools-System/Data-Import-Tool.md index 4c14acdf9..fd7021e13 100644 --- a/src/zh/UserGuide/latest/Tools-System/Data-Import-Tool.md +++ b/src/zh/UserGuide/latest/Tools-System/Data-Import-Tool.md @@ -1,6 +1,6 @@ # 数据导入 -## 1. IoTDB 数据导入 +## 1 IoTDB 数据导入 IoTDB 目前支持将 CSV、SQL、及TsFile(IoTDB底层开放式时间序列文件格式)格式的数据导入数据库。具体功能如下: @@ -32,7 +32,7 @@ IoTDB 目前支持将 CSV、SQL、及TsFile(IoTDB底层开放式时间序列 -## 2. import-data 脚本 +## 2 import-data 脚本 - 支持格式:CSV、SQL @@ -100,7 +100,7 @@ IoTDB 目前支持将 CSV、SQL、及TsFile(IoTDB底层开放式时间序列 >tools/import-data.bat -h 192.168.100.1 -p 6667 -u root -pw root -s ./data/dump0_0.csv -fd ./failed/ -aligned true -batch 100000 -tp ms -typeInfer boolean=text,float=double -lpf 1000 ``` -## 3. load-tsfile 脚本 +## 3 load-tsfile 脚本 - 支持格式:TsFile @@ -141,7 +141,7 @@ IoTDB 目前支持将 CSV、SQL、及TsFile(IoTDB底层开放式时间序列 > tools/load_data.bat -h 127.0.0.1 -p 6667 -u root -pw root -s /path/sql -os delete -of delete -tn 8 ``` -## 4. TsFile 主动监听&加载功能 +## 4 TsFile 主动监听&加载功能 TsFile 主动监听&加载功能能够主动监听指定目标路径(用户配置)下TsFile的文件变化,并将目标路径下的TsFile文件自动同步至指定接收路径(用户配置)。通过此功能,IoTDB 能自动检测并加载这些文件,无需手动执行任何额外的加载操作。这种自动化流程不仅简化了用户的操作步骤,还减少了操作过程中可能出现的错误,有效降低了用户在使用过程中的复杂性。 diff --git a/src/zh/UserGuide/latest/Tools-System/Maintenance-Tool_apache.md b/src/zh/UserGuide/latest/Tools-System/Maintenance-Tool_apache.md index 57b527ccb..9062be9fb 100644 --- a/src/zh/UserGuide/latest/Tools-System/Maintenance-Tool_apache.md +++ b/src/zh/UserGuide/latest/Tools-System/Maintenance-Tool_apache.md @@ -21,11 +21,11 @@ # 集群管理工具 -## 数据文件夹概览工具 +## 1 数据文件夹概览工具 IoTDB数据文件夹概览工具用于打印出数据文件夹的结构概览信息,工具位置为 tools/tsfile/print-iotdb-data-dir。 -### 用法 +### 1.1 用法 - Windows: @@ -41,7 +41,7 @@ IoTDB数据文件夹概览工具用于打印出数据文件夹的结构概览信 注意:如果没有设置输出结果的存储路径, 将使用相对路径"IoTDB_data_dir_overview.txt"作为默认值。 -### 示例 +### 1.2 示例 以Windows系统为例: @@ -82,11 +82,11 @@ data dir num:1 |============================================================== ````````````````````````` -## TsFile概览工具 +## 2 TsFile概览工具 TsFile概览工具用于以概要模式打印出一个TsFile的内容,工具位置为 tools/tsfile/print-tsfile。 -### 用法 +### 2.1 用法 - Windows: @@ -102,7 +102,7 @@ TsFile概览工具用于以概要模式打印出一个TsFile的内容,工具 注意:如果没有设置输出结果的存储路径, 将使用相对路径"TsFile_sketch_view.txt"作为默认值。 -### 示例 +### 2.2 示例 以Windows系统为例: @@ -170,11 +170,11 @@ file length: 2974 - "|||||||||||||||||||||"是为增强可读性而添加的导引信息,不是TsFile中实际存储的数据。 - 最后打印的"IndexOfTimerseriesIndex Tree"是对TsFile文件末尾的元数据索引树的重新整理打印,便于直观理解,不是TsFile中存储的实际数据。 -## TsFile Resource概览工具 +## 3 TsFile Resource概览工具 TsFile resource概览工具用于打印出TsFile resource文件的内容,工具位置为 tools/tsfile/print-tsfile-resource-files。 -### 用法 +### 3.1 用法 - Windows: @@ -188,7 +188,7 @@ TsFile resource概览工具用于打印出TsFile resource文件的内容,工 ./print-tsfile-resource-files.sh ``` -### 示例 +### 3.2 示例 以Windows系统为例: diff --git a/src/zh/UserGuide/latest/Tools-System/Maintenance-Tool_timecho.md b/src/zh/UserGuide/latest/Tools-System/Maintenance-Tool_timecho.md index 63d69149f..ebc8b6b7f 100644 --- a/src/zh/UserGuide/latest/Tools-System/Maintenance-Tool_timecho.md +++ b/src/zh/UserGuide/latest/Tools-System/Maintenance-Tool_timecho.md @@ -21,11 +21,11 @@ # 集群管理工具 -## 集群管理工具 +## 1 集群管理工具 IoTDB 集群管理工具是一款易用的运维工具(企业版工具)。旨在解决 IoTDB 分布式系统多节点的运维难题,主要包括集群部署、集群启停、弹性扩容、配置更新、数据导出等功能,从而实现对复杂数据库集群的一键式指令下发,极大降低管理难度。本文档将说明如何用集群管理工具远程部署、配置、启动和停止 IoTDB 集群实例。 -### 环境准备 +### 1.1 环境准备 本工具为 TimechoDB(基于IoTDB的企业版数据库)配套工具,您可以联系您的销售获取工具下载方式。 @@ -33,7 +33,7 @@ IoTDB 要部署的机器需要依赖jdk 8及以上版本、lsof、netstat、unzi 提示:IoTDB集群管理工具需要使用有root权限的账号 -### 部署方法 +### 1.2 部署方法 #### 下载安装 @@ -59,7 +59,7 @@ iotdbctl cluster check example /sbin/iotdbctl cluster check example ``` -### 系统结构 +### 1.3 系统结构 IoTDB集群管理工具主要由config、logs、doc、sbin目录组成。 @@ -69,7 +69,7 @@ IoTDB集群管理工具主要由config、logs、doc、sbin目录组成。 * `doc` 存放用户手册、开发手册和推荐部署手册。 -### 集群配置文件介绍 +### 1.4 集群配置文件介绍 * 在`iotdbctl/config` 目录下有集群配置的yaml文件,yaml文件名字就是集群名字yaml 文件可以有多个,为了方便用户配置yaml文件在iotd/config目录下面提供了`default_cluster.yaml`示例。 * yaml 文件配置由`global`、`confignode_servers`、`datanode_servers`、`grafana_server`、`prometheus_server`四大部分组成 @@ -176,7 +176,7 @@ IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS -XX:MaxGCPauseMillis=200" 注意:如何配置yaml key对应的值包含特殊字符如:等建议整个value使用双引号,对应的文件路径中不要使用包含空格的路径,防止出现识别出现异常问题。 -### 使用场景 +### 1.5 使用场景 #### 清理数据场景 @@ -269,7 +269,7 @@ iotdbctl cluster start default_cluster 更加详细参数请参考上方的 集群配置文件介绍 -### 命令格式 +### 1.6 命令格式 本工具的基本用法为: ```bash @@ -318,7 +318,7 @@ iotdbctl cluster deploy default_cluster | exportschema | 元数据导出 | 集群名字,-N,节点名称(必填) -param 参数 | -### 详细命令执行过程 +### 1.7 细命令执行过程 下面的命令都是以default_cluster.yaml 为示例执行的,用户可以修改成自己的集群文件来执行 @@ -701,7 +701,7 @@ iotdbctl cluster activate default_cluster -op license_path * 读取里面的机器码 * 等待输入激活码 -### 集群plugin分发 +### 1.8 集群plugin分发 ```bash #分发udf iotdbctl cluster dist-plugin default_cluster -type U -file /xxxx/udf.jar @@ -716,7 +716,7 @@ iotdbctl cluster dist-plugin default_cluster -type P -file /xxxx/pipe.jar 上传完成后需要手动执行创建udf/trigger/pipe命令 -### 集群滚动升级 +### 1.9 集群滚动升级 ```bash iotdbctl cluster upgrade default_cluster ``` @@ -727,7 +727,7 @@ iotdbctl cluster upgrade default_cluster -### 集群健康检查 +### 1.10 集群健康检查 ```bash iotdbctl cluster health_check default_cluster ``` @@ -742,7 +742,7 @@ iotdbctl cluster health_check default_cluster -N datanode_1 * datanode1 执行health_check.sh -### 集群停机备份 +### 1.11 集群停机备份 ```bash iotdbctl cluster backup default_cluster ``` @@ -758,7 +758,7 @@ iotdbctl cluster backup default_cluster -N datanode_1 说明:多个节点部署到单台机器,只支持 quick 模式 -### 集群元数据导入 +### 1.12 集群元数据导入 ```bash iotdbctl cluster importschema default_cluster -N datanode1 -param "-s ./dump0.csv -fd ./failed/ -lpf 10000" @@ -776,7 +776,7 @@ iotdbctl cluster importschema default_cluster -N datanode1 -param "-s ./dump0.cs -### 集群元数据导出 +### 1.13 集群元数据导出 ```bash iotdbctl cluster exportschema default_cluster -N datanode1 -param "-t ./ -pf ./pattern.txt -lpf 10 -t 10000" @@ -796,7 +796,7 @@ iotdbctl cluster exportschema default_cluster -N datanode1 -param "-t ./ -pf ./p -### 集群部署工具样例介绍 +### 1.14 集群部署工具样例介绍 在集群部署工具安装目录中config/example 下面有3个yaml样例,如果需要可以复制到config 中进行修改即可 | 名称 | 说明 | @@ -805,11 +805,11 @@ iotdbctl cluster exportschema default_cluster -N datanode1 -param "-t ./ -pf ./p | default\_3c3d.yaml | 3个confignode和3个datanode 配置样例 | | default\_3c3d\_grafa\_prome | 3个confignode和3个datanode、Grafana、Prometheus配置样例 | -## 数据文件夹概览工具 +## 2 数据文件夹概览工具 IoTDB数据文件夹概览工具用于打印出数据文件夹的结构概览信息,工具位置为 tools/tsfile/print-iotdb-data-dir。 -### 用法 +### 2.1 用法 - Windows: @@ -825,7 +825,7 @@ IoTDB数据文件夹概览工具用于打印出数据文件夹的结构概览信 注意:如果没有设置输出结果的存储路径, 将使用相对路径"IoTDB_data_dir_overview.txt"作为默认值。 -### 示例 +### 2.2 示例 以Windows系统为例: @@ -866,11 +866,11 @@ data dir num:1 |============================================================== ````````````````````````` -## TsFile概览工具 +## 3 TsFile概览工具 TsFile概览工具用于以概要模式打印出一个TsFile的内容,工具位置为 tools/tsfile/print-tsfile。 -### 用法 +### 3.1 用法 - Windows: @@ -886,7 +886,7 @@ TsFile概览工具用于以概要模式打印出一个TsFile的内容,工具 注意:如果没有设置输出结果的存储路径, 将使用相对路径"TsFile_sketch_view.txt"作为默认值。 -### 示例 +### 3.2 示例 以Windows系统为例: @@ -954,11 +954,11 @@ file length: 2974 - "|||||||||||||||||||||"是为增强可读性而添加的导引信息,不是TsFile中实际存储的数据。 - 最后打印的"IndexOfTimerseriesIndex Tree"是对TsFile文件末尾的元数据索引树的重新整理打印,便于直观理解,不是TsFile中存储的实际数据。 -## TsFile Resource概览工具 +## 4 TsFile Resource概览工具 TsFile resource概览工具用于打印出TsFile resource文件的内容,工具位置为 tools/tsfile/print-tsfile-resource-files。 -### 用法 +### 4.1 用法 - Windows: @@ -972,7 +972,7 @@ TsFile resource概览工具用于打印出TsFile resource文件的内容,工 ./print-tsfile-resource-files.sh ``` -### 示例 +### 4.2 示例 以Windows系统为例: diff --git a/src/zh/UserGuide/latest/Tools-System/Monitor-Tool_apache.md b/src/zh/UserGuide/latest/Tools-System/Monitor-Tool_apache.md index 3ef0730da..12eed8823 100644 --- a/src/zh/UserGuide/latest/Tools-System/Monitor-Tool_apache.md +++ b/src/zh/UserGuide/latest/Tools-System/Monitor-Tool_apache.md @@ -24,7 +24,7 @@ 监控工具的部署可参考文档 [监控面板部署](../Deployment-and-Maintenance/Monitoring-panel-deployment.md) 章节。 -## 监控指标的 Prometheus 映射关系 +## 1 监控指标的 Prometheus 映射关系 > 对于 Metric Name 为 name, Tags 为 K1=V1, ..., Kn=Vn 的监控指标有如下映射,其中 value 为具体值 @@ -36,7 +36,7 @@ | Rate | name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="m1"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="m5"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="m15"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="mean"} value | | Timer | name_seconds_max{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_seconds_sum{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_seconds_count{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_seconds{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", quantile="0.5"} value value
name_seconds{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", quantile="0.99"} value | -## 修改配置文件 +## 2 修改配置文件 1) 以 DataNode 为例,修改 iotdb-system.properties 配置文件如下: @@ -60,7 +60,7 @@ file_count{name="seq",} 2.0 ... ``` -## Prometheus + Grafana +## 3 Prometheus + Grafana 如上所示,IoTDB 对外暴露出标准的 Prometheus 格式的监控指标数据,可以使用 Prometheus 采集并存储监控指标,使用 Grafana 可视化监控指标。 @@ -102,7 +102,7 @@ static_configs: [Grafana从Prometheus查询数据并绘图的文档](https://prometheus.io/docs/visualization/grafana/#grafana-support-for-prometheus) -## Apache IoTDB Dashboard +## 4 Apache IoTDB Dashboard `Apache IoTDB Dashboard`是 IoTDB 企业版的配套产品,支持统一集中式运维管理,可通过一个监控面板监控多个集群。你可以联系商务获取到 Dashboard 的 Json文件。 @@ -112,7 +112,7 @@ static_configs: ![Apache IoTDB Dashboard](/img/%E7%9B%91%E6%8E%A7%20cluster2.png) -### 集群概览 +### 4.1 集群概览 可以监控包括但不限于: - 集群总CPU核数、总内存空间、总硬盘空间 @@ -124,7 +124,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E6%A6%82%E8%A7%88.png) -### 数据写入 +### 4.2 数据写入 可以监控包括但不限于: - 写入平均耗时、耗时中位数、99%分位耗时 @@ -133,7 +133,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E5%86%99%E5%85%A5.png) -### 数据查询 +### 4.3 数据查询 可以监控包括但不限于: - 节点查询加载时间序列元数据耗时 @@ -146,7 +146,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E6%9F%A5%E8%AF%A2.png) -### 存储引擎 +### 4.4 存储引擎 可以监控包括但不限于: - 分类型的文件数量、大小 @@ -155,7 +155,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E5%AD%98%E5%82%A8%E5%BC%95%E6%93%8E.png) -### 系统监控 +### 4.5 系统监控 可以监控包括但不限于: - 系统内存、交换内存、进程内存 diff --git a/src/zh/UserGuide/latest/Tools-System/Monitor-Tool_timecho.md b/src/zh/UserGuide/latest/Tools-System/Monitor-Tool_timecho.md index d3cc9dceb..c44210e51 100644 --- a/src/zh/UserGuide/latest/Tools-System/Monitor-Tool_timecho.md +++ b/src/zh/UserGuide/latest/Tools-System/Monitor-Tool_timecho.md @@ -24,7 +24,7 @@ 监控工具的部署可参考文档 [监控面板部署](../Deployment-and-Maintenance/Monitoring-panel-deployment.md) 章节。 -## 监控指标的 Prometheus 映射关系 +## 1 监控指标的 Prometheus 映射关系 > 对于 Metric Name 为 name, Tags 为 K1=V1, ..., Kn=Vn 的监控指标有如下映射,其中 value 为具体值 @@ -36,7 +36,7 @@ | Rate | name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="m1"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="m5"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="m15"} value
name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", rate="mean"} value | | Timer | name_seconds_max{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_seconds_sum{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_seconds_count{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value
name_seconds{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", quantile="0.5"} value value
name_seconds{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn", quantile="0.99"} value | -## 修改配置文件 +## 2 修改配置文件 1) 以 DataNode 为例,修改 iotdb-system.properties 配置文件如下: @@ -60,7 +60,7 @@ file_count{name="seq",} 2.0 ... ``` -## Prometheus + Grafana +## 3 Prometheus + Grafana 如上所示,IoTDB 对外暴露出标准的 Prometheus 格式的监控指标数据,可以使用 Prometheus 采集并存储监控指标,使用 Grafana 可视化监控指标。 @@ -102,7 +102,7 @@ static_configs: [Grafana从Prometheus查询数据并绘图的文档](https://prometheus.io/docs/visualization/grafana/#grafana-support-for-prometheus) -## Apache IoTDB Dashboard +## 4 Apache IoTDB Dashboard 我们提供了Apache IoTDB Dashboard,支持统一集中式运维管理,可通过一个监控面板监控多个集群。 @@ -112,7 +112,7 @@ static_configs: 你可以在企业版中获取到 Dashboard 的 Json文件。 -### 集群概览 +### 4.1 集群概览 可以监控包括但不限于: - 集群总CPU核数、总内存空间、总硬盘空间 @@ -124,7 +124,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E6%A6%82%E8%A7%88.png) -### 数据写入 +### 4.2 数据写入 可以监控包括但不限于: - 写入平均耗时、耗时中位数、99%分位耗时 @@ -133,7 +133,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E5%86%99%E5%85%A5.png) -### 数据查询 +### 4.3 据查询 可以监控包括但不限于: - 节点查询加载时间序列元数据耗时 @@ -146,7 +146,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E6%9F%A5%E8%AF%A2.png) -### 存储引擎 +### 4.4 存储引擎 可以监控包括但不限于: - 分类型的文件数量、大小 @@ -155,7 +155,7 @@ static_configs: ![](/img/%E7%9B%91%E6%8E%A7%20%E5%AD%98%E5%82%A8%E5%BC%95%E6%93%8E.png) -### 系统监控 +### 4.5 系统监控 可以监控包括但不限于: - 系统内存、交换内存、进程内存 diff --git a/src/zh/UserGuide/latest/Tools-System/Workbench_timecho.md b/src/zh/UserGuide/latest/Tools-System/Workbench_timecho.md index 2eb3f47b4..3ecf4934e 100644 --- a/src/zh/UserGuide/latest/Tools-System/Workbench_timecho.md +++ b/src/zh/UserGuide/latest/Tools-System/Workbench_timecho.md @@ -2,10 +2,10 @@ 可视化控制台的部署可参考文档 [可视化控制台部署](../Deployment-and-Maintenance/workbench-deployment_timecho.md) 章节。 -## 第1章 产品介绍 +## 1 产品介绍 IoTDB可视化控制台是在IoTDB企业版时序数据库基础上针对工业场景的实时数据收集、存储与分析一体化的数据管理场景开发的扩展组件,旨在为用户提供高效、可靠的实时数据存储和查询解决方案。它具有体量轻、性能高、易使用的特点,完美对接 Hadoop 与 Spark 生态,适用于工业物联网应用中海量时间序列数据高速写入和复杂分析查询的需求。 -## 第2章 使用说明 +## 2 使用说明 IoTDB的可视化控制台包含以下功能模块: | **功能模块** | **功能说明** | | ------------ | ------------------------------------------------------------ |