diff --git a/src/.vuepress/sidebar/V1.3.x/en.ts b/src/.vuepress/sidebar/V1.3.x/en.ts
index 2a02c1682..f206fdce5 100644
--- a/src/.vuepress/sidebar/V1.3.x/en.ts
+++ b/src/.vuepress/sidebar/V1.3.x/en.ts
@@ -27,33 +27,24 @@ export const enSidebar = {
text: 'About IoTDB',
collapsible: true,
prefix: 'IoTDB-Introduction/',
- // children: 'structure',
+ // children: 'structure', 使用该方式自动获取文件夹下的文件
children: [
- { text: 'What is IoTDB', link: 'IoTDB-Introduction_apache' },
- { text: 'Features', link: 'Features' },
- { text: 'System Architecture', link: 'Architecture' },
- { text: 'Performance', link: 'Performance' },
+ { text: 'IoTDB Introduction', link: 'IoTDB-Introduction_apache' },
{ text: 'Scenario', link: 'Scenario' },
- { text: 'Academic Achievement', link: 'Publication' },
],
},
{
- text: 'Quick Start',
- link: 'QuickStart/QuickStart_apache',
- },
- {
- text: 'Basic Concept',
+ text: 'Preparatory knowledge',
collapsible: true,
- prefix: 'Basic-Concept/',
- // children: 'structure',
+ prefix: 'Preparatory-knowledge/',
children: [
- { text: 'Navigating Time Series Data', link: 'Navigating_Time_Series_Data' },
- { text: 'Data Model', link: 'Data-Model-and-Terminology' },
{ text: 'Data Type', link: 'Data-Type' },
- { text: 'Encoding and Compression', link: 'Encoding-and-Compression' },
- { text: 'Data Partitioning & Load Balancing', link: 'Cluster-data-partitioning' },
],
},
+ {
+ text: 'Quick Start',
+ link: 'QuickStart/QuickStart_apache',
+ },
{
text: 'Deployment & Maintenance',
collapsible: true,
@@ -68,25 +59,51 @@ export const enSidebar = {
{ text: 'Docker Deployment', link: 'Docker-Deployment_apache' },
],
},
-
{
- text: 'User Manual',
+ text: 'Basic Functions',
collapsible: true,
- prefix: 'User-Manual/',
+ prefix: 'Basic-Concept/',
// children: 'structure',
children: [
- { text: 'Syntax Rule', link: 'Syntax-Rule' },
- { text: 'Operate Metadata', link: 'Operate-Metadata_apache' },
- { text: 'Write & Delete Data', link: 'Write-Delete-Data' },
+ {
+ text: 'Data Modeling',
+ collapsible: true,
+ children: [
+ { text: 'Timeseries Data Model', link: 'Navigating_Time_Series_Data' },
+ { text: 'Modeling Scheme Design', link: 'Data-Model-and-Terminology' },
+ { text: 'Measurement Point Management', link: 'Operate-Metadata_apache' },
+ ],
+ },
+ { text: 'Write & Delete', link: 'Write-Delete-Data' },
{ text: 'Query Data', link: 'Query-Data' },
- { text: 'Operator and Expression', link: 'Operator-and-Expression' },
+ ],
+ },
+ {
+ text: 'Advanced Features',
+ collapsible: true,
+ prefix: 'User-Manual/',
+ // children: 'structure',
+ children: [
{ text: 'Data Sync', link: 'Data-Sync_apache' },
{ text: 'Data Subscription', link: 'Data-subscription' },
- { text: 'Stream Processing', link: 'Streaming_apache' },
- { text: 'Database Programming', link: 'Database-Programming' },
+ {
+ text: 'Security Management',
+ collapsible: true,
+ children: [
+ { text: 'Authority Management', link: 'Authority-Management' },
+ ],
+ },
{ text: 'UDF', link: 'User-defined-function' },
- { text: 'Database Administration', link: 'Authority-Management' },
- { text: 'Maintennance', link: 'Maintennance' },
+ { text: 'Continuous Query', link: 'Database-Programming' },
+ {
+ text: 'Database Programming',
+ collapsible: true,
+ children: [
+ { text: 'UDF Development', link: 'UDF-development' },
+ { text: 'Trigger', link: 'Trigger' },
+ { text: 'Stream Processing', link: 'Streaming_apache' },
+ ],
+ },
],
},
{
@@ -98,7 +115,7 @@ export const enSidebar = {
{ text: 'Command Line Interface (CLI)', link: 'CLI' },
{ text: 'Monitor Tool', link: 'Monitor-Tool_apache' },
{ text: 'Benchmark Tool', link: 'Benchmark' },
- { text: 'Maintenance Tool', link: 'Maintenance-Tool_apache' },
+ { text: 'Cluster Management Tool', link: 'Maintenance-Tool_apache' },
{ text: 'Data Import', link: 'Data-Import-Tool' },
{ text: 'Data Export', link: 'Data-Export-Tool' },
],
@@ -119,8 +136,14 @@ export const enSidebar = {
{ text: 'JDBC (Not Recommend)', link: 'Programming-JDBC' },
{ text: 'MQTT Protocol', link: 'Programming-MQTT' },
{ text: 'Kafka', link: 'Programming-Kafka' },
- { text: 'REST API V1 (Not Recommend)', link: 'RestServiceV1' },
- { text: 'REST API V2', link: 'RestServiceV2' },
+ {
+ text: 'REST API',
+ collapsible: true,
+ children: [
+ { text: 'V1 (Not Recommend)', link: 'RestServiceV1' },
+ { text: 'V2', link: 'RestServiceV2' },
+ ],
+ },
],
},
{
@@ -152,12 +175,15 @@ export const enSidebar = {
],
},
{
- text: 'FAQ',
+ text: 'Technical Insider',
collapsible: true,
- prefix: 'FAQ/',
+ prefix: 'Technical-Insider/',
// children: 'structure',
children: [
- { text: 'Frequently Asked Questions', link: 'Frequently-asked-questions' }],
+ { text: 'Research Paper ', link: 'Publication' },
+ { text: 'Compression & Encoding', link: 'Encoding-and-Compression' },
+ { text: 'Data Partitioning & Load Balancing', link: 'Cluster-data-partitioning' },
+ ],
},
{
text: 'Reference',
@@ -165,13 +191,41 @@ export const enSidebar = {
prefix: 'Reference/',
// children: 'structure',
children: [
- { text: 'UDF Libraries', link: 'UDF-Libraries_apache' },
- { text: 'UDF development', link: 'UDF-development' },
- { text: 'Function and Expression', link: 'Function-and-Expression' },
- { text: 'Common Config Manual', link: 'Common-Config-Manual' },
+ {
+ text: 'Config Manual',
+ collapsible: true,
+ children: [
+ { text: 'Common Config Manual', link: 'Common-Config-Manual' },
+ { text: 'ConfigNode Config Manual', link: 'ConfigNode-Config-Manual' },
+ { text: 'DataNode Config Manual', link: 'DataNode-Config-Manual' },
+ ],
+ },
+ {
+ text: 'Functions and Operators',
+ collapsible: true,
+ children: [
+ { text: 'UDF Libraries', link: 'UDF-Libraries_timecho' },
+ { text: 'Functions and Operators', link: 'Operator-and-Expression' },
+ ],
+ },
+ {
+ text: 'Syntax-Rule',
+ collapsible: true,
+ children: [
+ { text: 'Reserved Words&Identifiers', link: 'Syntax-Rule' },
+ { text: 'Keywords', link: 'Keywords' },
+ ],
+ },
{ text: 'Status Codes', link: 'Status-Codes' },
- { text: 'Keywords', link: 'Keywords' },
],
},
+ {
+ text: 'FAQ',
+ collapsible: true,
+ prefix: 'FAQ/',
+ // children: 'structure',
+ children: [
+ { text: 'Frequently Asked Questions', link: 'Frequently-asked-questions' }],
+ },
],
};
diff --git a/src/.vuepress/sidebar/V1.3.x/zh.ts b/src/.vuepress/sidebar/V1.3.x/zh.ts
index 08d4d3e18..a9196422c 100644
--- a/src/.vuepress/sidebar/V1.3.x/zh.ts
+++ b/src/.vuepress/sidebar/V1.3.x/zh.ts
@@ -29,31 +29,22 @@ export const zhSidebar = {
prefix: 'IoTDB-Introduction/',
// children: 'structure', 使用该方式自动获取文件夹下的文件
children: [
- { text: '产品简介', link: 'IoTDB-Introduction_apache' },
- { text: '主要功能特点', link: 'Features' },
- { text: '系统架构', link: 'Architecture' },
- { text: '性能特点', link: 'Performance' },
+ { text: '产品介绍', link: 'IoTDB-Introduction_timecho' },
{ text: '应用场景', link: 'Scenario' },
- { text: '学术成果', link: 'Publication' },
],
},
{
- text: '快速上手',
- link: 'QuickStart/QuickStart_apache',
- },
- {
- text: '基础概念',
+ text: '预备知识',
collapsible: true,
- prefix: 'Basic-Concept/',
- // children: 'structure',
+ prefix: 'Preparatory-knowledge/',
children: [
- { text: '走进时序数据', link: 'Navigating_Time_Series_Data' },
- { text: '数据模型', link: 'Data-Model-and-Terminology' },
{ text: '数据类型', link: 'Data-Type' },
- { text: '编码和压缩', link: 'Encoding-and-Compression' },
- { text: '数据分区与负载均衡', link: 'Cluster-data-partitioning' },
],
},
+ {
+ text: '快速上手',
+ link: 'QuickStart/QuickStart_apache',
+ },
{
text: '部署与运维',
collapsible: true,
@@ -63,30 +54,56 @@ export const zhSidebar = {
{ text: '安装包获取', link: 'IoTDB-Package_apache' },
{ text: '资源规划', link: 'Database-Resources' },
{ text: '系统配置', link: 'Environment-Requirements' },
- { text: '单机版部署', link: 'Stand-Alone-Deployment_apache' },
- { text: '集群版部署', link: 'Cluster-Deployment_apache' },
- { text: 'Docker部署', link: 'Docker-Deployment_apache' },
+ { text: '单机版部署指导', link: 'Stand-Alone-Deployment_apache' },
+ { text: '集群版部署指导', link: 'Cluster-Deployment_apache' },
+ { text: 'Docker部署指导', link: 'Docker-Deployment_apache' },
],
},
-
{
- text: '使用手册',
+ text: '基础功能',
collapsible: true,
- prefix: 'User-Manual/',
+ prefix: 'Basic-Concept/',
// children: 'structure',
children: [
- { text: '语法约定', link: 'Syntax-Rule' },
- { text: '元数据管理', link: 'Operate-Metadata_apache' },
- { text: '数据写入与删除', link: 'Write-Delete-Data' },
+ {
+ text: '数据建模',
+ collapsible: true,
+ children: [
+ { text: '时序数据模型', link: 'Navigating_Time_Series_Data' },
+ { text: '建模方案设计', link: 'Data-Model-and-Terminology' },
+ { text: '测点管理', link: 'Operate-Metadata_apache' },
+ ],
+ },
+ { text: '写入&删除', link: 'Write-Delete-Data' },
{ text: '数据查询', link: 'Query-Data' },
- { text: '运算符、函数和表达式', link: 'Operator-and-Expression' },
+ ],
+ },
+ {
+ text: '高级功能',
+ collapsible: true,
+ prefix: 'User-Manual/',
+ // children: 'structure',
+ children: [
{ text: '数据同步', link: 'Data-Sync_apache' },
{ text: '数据订阅', link: 'Data-subscription' },
- { text: '流处理框架', link: 'Streaming_apache' },
- { text: '数据库编程', link: 'Database-Programming' },
+ {
+ text: '安全管理',
+ collapsible: true,
+ children: [
+ { text: '权限管理', link: 'Authority-Management' },
+ ],
+ },
{ text: '用户自定义函数', link: 'User-defined-function' },
- { text: '权限管理', link: 'Authority-Management' },
- { text: '运维语句', link: 'Maintennance' },
+ { text: '连续查询', link: 'Database-Programming' },
+ {
+ text: '数据库编程',
+ collapsible: true,
+ children: [
+ { text: 'UDF开发', link: 'UDF-development' },
+ { text: '触发器', link: 'Trigger' },
+ { text: '流处理框架', link: 'Streaming_apache' },
+ ],
+ },
],
},
{
@@ -95,13 +112,12 @@ export const zhSidebar = {
prefix: 'Tools-System/',
// children: 'structure',
children: [
- { text: 'SQL命令行终端 (CLI)', link: 'CLI' },
+ { text: '命令行工具', link: 'CLI' },
{ text: '监控工具', link: 'Monitor-Tool_apache' },
{ text: '测试工具', link: 'Benchmark' },
- { text: '运维工具', link: 'Maintenance-Tool_apache' },
+ { text: '集群管理工具', link: 'Maintenance-Tool_apache' },
{ text: '数据导入', link: 'Data-Import-Tool' },
{ text: '数据导出', link: 'Data-Export-Tool' },
-
],
},
{
@@ -120,8 +136,14 @@ export const zhSidebar = {
{ text: 'JDBC (不推荐)', link: 'Programming-JDBC' },
{ text: 'MQTT协议', link: 'Programming-MQTT' },
{ text: 'Kafka', link: 'Programming-Kafka' },
- { text: 'REST API V1 (不推荐)', link: 'RestServiceV1' },
- { text: 'REST API V2', link: 'RestServiceV2' },
+ {
+ text: 'REST API',
+ collapsible: true,
+ children: [
+ { text: 'V1 (不推荐)', link: 'RestServiceV1' },
+ { text: 'V2', link: 'RestServiceV2' },
+ ],
+ },
],
},
{
@@ -153,12 +175,15 @@ export const zhSidebar = {
],
},
{
- text: 'FAQ',
+ text: '技术内幕',
collapsible: true,
- prefix: 'FAQ/',
+ prefix: 'Technical-Insider/',
// children: 'structure',
children: [
- { text: '常见问题', link: 'Frequently-asked-questions' }],
+ { text: '研究论文', link: 'Publication' },
+ { text: '压缩&编码', link: 'Encoding-and-Compression' },
+ { text: '数据分区和负载均衡', link: 'Cluster-data-partitioning' },
+ ],
},
{
text: '参考',
@@ -166,15 +191,41 @@ export const zhSidebar = {
prefix: 'Reference/',
// children: 'structure',
children: [
- { text: 'UDF函数库', link: 'UDF-Libraries_apache' },
- { text: 'UDF开发', link: 'UDF-development' },
- { text: '内置函数与表达式', link: 'Function-and-Expression' },
- { text: '配置参数', link: 'Common-Config-Manual' },
- { text: 'ConfigNode配置参数', link: 'ConfigNode-Config-Manual' },
- { text: 'DataNode配置参数', link: 'DataNode-Config-Manual' },
+ {
+ text: '配置参数',
+ collapsible: true,
+ children: [
+ { text: '配置参数', link: 'Common-Config-Manual' },
+ { text: 'ConfigNode配置参数', link: 'ConfigNode-Config-Manual' },
+ { text: 'DataNode配置参数', link: 'DataNode-Config-Manual' },
+ ],
+ },
+ {
+ text: '函数与运算符',
+ collapsible: true,
+ children: [
+ { text: 'UDF函数库', link: 'UDF-Libraries_apache' },
+ { text: '函数和操作符', link: 'Operator-and-Expression' },
+ ],
+ },
+ {
+ text: '语法约定',
+ collapsible: true,
+ children: [
+ { text: '保留字&标识符', link: 'Syntax-Rule' },
+ { text: '关键字', link: 'Keywords' },
+ ],
+ },
{ text: '状态码', link: 'Status-Codes' },
- { text: '关键字', link: 'Keywords' },
],
},
+ {
+ text: 'FAQ',
+ collapsible: true,
+ prefix: 'FAQ/',
+ // children: 'structure',
+ children: [
+ { text: '常见问题', link: 'Frequently-asked-questions' }],
+ },
],
};
diff --git a/src/.vuepress/sidebar_timecho/V1.3.x/en.ts b/src/.vuepress/sidebar_timecho/V1.3.x/en.ts
index a47479335..06b649391 100644
--- a/src/.vuepress/sidebar_timecho/V1.3.x/en.ts
+++ b/src/.vuepress/sidebar_timecho/V1.3.x/en.ts
@@ -27,33 +27,24 @@ export const enSidebar = {
text: 'About IoTDB',
collapsible: true,
prefix: 'IoTDB-Introduction/',
- // children: 'structure',
+ // children: 'structure', 使用该方式自动获取文件夹下的文件
children: [
- { text: 'What is IoTDB', link: 'IoTDB-Introduction_timecho' },
- { text: 'Features', link: 'Features' },
- { text: 'System Architecture', link: 'Architecture' },
- { text: 'Performance', link: 'Performance' },
+ { text: 'IoTDB Introduction', link: 'IoTDB-Introduction_timecho' },
{ text: 'Scenario', link: 'Scenario' },
- { text: 'Academic Achievement', link: 'Publication' },
],
},
{
- text: 'Quick Start',
- link: 'QuickStart/QuickStart_timecho',
- },
- {
- text: 'Basic Concept',
+ text: 'Preparatory knowledge',
collapsible: true,
- prefix: 'Basic-Concept/',
- // children: 'structure',
+ prefix: 'Preparatory-knowledge/',
children: [
- { text: 'Navigating Time Series Data', link: 'Navigating_Time_Series_Data' },
- { text: 'Data Model', link: 'Data-Model-and-Terminology' },
{ text: 'Data Type', link: 'Data-Type' },
- { text: 'Encoding and Compression', link: 'Encoding-and-Compression' },
- { text: 'Data Partitioning & Load Balancing', link: 'Cluster-data-partitioning' },
],
},
+ {
+ text: 'Quick Start',
+ link: 'QuickStart/QuickStart_timecho',
+ },
{
text: 'Deployment & Maintenance',
collapsible: true,
@@ -72,29 +63,56 @@ export const enSidebar = {
{ text: 'Workbench Deployment', link: 'workbench-deployment' },
],
},
-
{
- text: 'User Manual',
+ text: 'Basic Functions',
collapsible: true,
- prefix: 'User-Manual/',
+ prefix: 'Basic-Concept/',
// children: 'structure',
children: [
- { text: 'Syntax Rule', link: 'Syntax-Rule' },
- { text: 'Operate Metadata', link: 'Operate-Metadata_timecho' },
- { text: 'Write & Delete Data', link: 'Write-Delete-Data' },
+ {
+ text: 'Data Modeling',
+ collapsible: true,
+ children: [
+ { text: 'Timeseries Data Model', link: 'Navigating_Time_Series_Data' },
+ { text: 'Modeling Scheme Design', link: 'Data-Model-and-Terminology' },
+ { text: 'Measurement Point Management', link: 'Operate-Metadata_timecho' },
+ ],
+ },
+ { text: 'Write & Delete', link: 'Write-Delete-Data' },
{ text: 'Query Data', link: 'Query-Data' },
- { text: 'Operator and Expression', link: 'Operator-and-Expression' },
+ ],
+ },
+ {
+ text: 'Advanced Features',
+ collapsible: true,
+ prefix: 'User-Manual/',
+ // children: 'structure',
+ children: [
{ text: 'Data Sync', link: 'Data-Sync_timecho' },
{ text: 'Data Subscription', link: 'Data-subscription' },
- { text: 'Stream Processing', link: 'Streaming_timecho' },
- { text: 'Tiered Storage', link: 'Tiered-Storage_timecho' },
- { text: 'View', link: 'IoTDB-View_timecho' },
{ text: 'AI Capability', link: 'AINode_timecho' },
- { text: 'Database Programming', link: 'Database-Programming' },
+ {
+ text: 'Security Management',
+ collapsible: true,
+ children: [
+ { text: 'White List', link: 'White-List_timecho' },
+ { text: 'Audit Log', link: 'Audit-Log_timecho' },
+ { text: 'Authority Management', link: 'Authority-Management' },
+ ],
+ },
{ text: 'UDF', link: 'User-defined-function' },
- { text: 'Security Management', link: 'Security-Management_timecho' },
- { text: 'Database Administration', link: 'Authority-Management' },
- { text: 'Maintennance', link: 'Maintennance' },
+ { text: 'View', link: 'IoTDB-View_timecho' },
+ { text: 'Tiered Storage', link: 'Tiered-Storage_timecho' },
+ { text: 'Continuous Query', link: 'Database-Programming' },
+ {
+ text: 'Database Programming',
+ collapsible: true,
+ children: [
+ { text: 'UDF Development', link: 'UDF-development' },
+ { text: 'Trigger', link: 'Trigger' },
+ { text: 'Stream Processing', link: 'Streaming_timecho' },
+ ],
+ },
],
},
{
@@ -103,11 +121,11 @@ export const enSidebar = {
prefix: 'Tools-System/',
// children: 'structure',
children: [
- { text: 'Command Line Interface (CLI)', link: 'CLI' },
+ { text: 'CLI', link: 'CLI' },
{ text: 'Workbench', link: 'Workbench_timecho' },
{ text: 'Monitor Tool', link: 'Monitor-Tool_timecho' },
{ text: 'Benchmark Tool', link: 'Benchmark' },
- { text: 'Maintenance Tool', link: 'Maintenance-Tool_timecho' },
+ { text: 'Cluster Management Tool', link: 'Maintenance-Tool_timecho' },
{ text: 'Data Import', link: 'Data-Import-Tool' },
{ text: 'Data Export', link: 'Data-Export-Tool' },
],
@@ -129,8 +147,14 @@ export const enSidebar = {
{ text: 'MQTT Protocol', link: 'Programming-MQTT' },
{ text: 'OPC UA Protocol', link: 'Programming-OPC-UA_timecho' },
{ text: 'Kafka', link: 'Programming-Kafka' },
- { text: 'REST API V1 (Not Recommend)', link: 'RestServiceV1' },
- { text: 'REST API V2', link: 'RestServiceV2' },
+ {
+ text: 'REST API',
+ collapsible: true,
+ children: [
+ { text: 'V1 (Not Recommend)', link: 'RestServiceV1' },
+ { text: 'V2', link: 'RestServiceV2' },
+ ],
+ },
],
},
{
@@ -164,12 +188,15 @@ export const enSidebar = {
],
},
{
- text: 'FAQ',
+ text: 'Technical Insider',
collapsible: true,
- prefix: 'FAQ/',
+ prefix: 'Technical-Insider/',
// children: 'structure',
children: [
- { text: 'Frequently Asked Questions', link: 'Frequently-asked-questions' }],
+ { text: 'Research Paper ', link: 'Publication' },
+ { text: 'Compression & Encoding', link: 'Encoding-and-Compression' },
+ { text: 'Data Partitioning & Load Balancing', link: 'Cluster-data-partitioning' },
+ ],
},
{
text: 'Reference',
@@ -177,15 +204,42 @@ export const enSidebar = {
prefix: 'Reference/',
// children: 'structure',
children: [
- { text: 'UDF Libraries', link: 'UDF-Libraries_timecho' },
- { text: 'UDF development', link: 'UDF-development' },
- { text: 'Function and Expression', link: 'Function-and-Expression' },
- { text: 'Common Config Manual', link: 'Common-Config-Manual' },
- { text: 'ConfigNode Config Manual', link: 'ConfigNode-Config-Manual' },
- { text: 'DataNode Config Manual', link: 'DataNode-Config-Manual' },
+ {
+ text: 'Config Manual',
+ collapsible: true,
+ children: [
+ { text: 'Common Config Manual', link: 'Common-Config-Manual' },
+ { text: 'ConfigNode Config Manual', link: 'ConfigNode-Config-Manual' },
+ { text: 'DataNode Config Manual', link: 'DataNode-Config-Manual' },
+ ],
+ },
+ {
+ text: 'Functions and Operators',
+ collapsible: true,
+ children: [
+ { text: 'UDF Libraries', link: 'UDF-Libraries_timecho' },
+ { text: 'Functions and Operators', link: 'Operator-and-Expression' },
+ ],
+ },
+ {
+ text: 'Syntax-Rule',
+ collapsible: true,
+ children: [
+ { text: 'Reserved Words&Identifiers', link: 'Syntax-Rule' },
+ { text: 'Keywords', link: 'Keywords' },
+ ],
+ },
{ text: 'Status Codes', link: 'Status-Codes' },
- { text: 'Keywords', link: 'Keywords' },
],
},
+ {
+ text: 'FAQ',
+ collapsible: true,
+ prefix: 'FAQ/',
+ // children: 'structure',
+ children: [
+ { text: 'Frequently Asked Questions', link: 'Frequently-asked-questions' }],
+ },
],
};
+
diff --git a/src/.vuepress/sidebar_timecho/V1.3.x/zh.ts b/src/.vuepress/sidebar_timecho/V1.3.x/zh.ts
index 7b71e1b82..9737b7965 100644
--- a/src/.vuepress/sidebar_timecho/V1.3.x/zh.ts
+++ b/src/.vuepress/sidebar_timecho/V1.3.x/zh.ts
@@ -29,31 +29,22 @@ export const zhSidebar = {
prefix: 'IoTDB-Introduction/',
// children: 'structure', 使用该方式自动获取文件夹下的文件
children: [
- { text: '产品简介', link: 'IoTDB-Introduction_timecho' },
- { text: '主要功能特点', link: 'Features' },
- { text: '系统架构', link: 'Architecture' },
- { text: '性能特点', link: 'Performance' },
+ { text: '产品介绍', link: 'IoTDB-Introduction_timecho' },
{ text: '应用场景', link: 'Scenario' },
- { text: '学术成果', link: 'Publication' },
],
},
{
- text: '快速上手',
- link: 'QuickStart/QuickStart_timecho',
- },
- {
- text: '基础概念',
+ text: '预备知识',
collapsible: true,
- prefix: 'Basic-Concept/',
- // children: 'structure',
+ prefix: 'Preparatory-knowledge/',
children: [
- { text: '走进时序数据', link: 'Navigating_Time_Series_Data' },
- { text: '数据模型', link: 'Data-Model-and-Terminology' },
{ text: '数据类型', link: 'Data-Type' },
- { text: '编码和压缩', link: 'Encoding-and-Compression' },
- { text: '数据分区与负载均衡', link: 'Cluster-data-partitioning' },
],
},
+ {
+ text: '快速上手',
+ link: 'QuickStart/QuickStart_timecho',
+ },
{
text: '部署与运维',
collapsible: true,
@@ -63,38 +54,65 @@ export const zhSidebar = {
{ text: '安装包获取', link: 'IoTDB-Package_timecho' },
{ text: '资源规划', link: 'Database-Resources' },
{ text: '系统配置', link: 'Environment-Requirements' },
- { text: '单机版部署', link: 'Stand-Alone-Deployment_timecho' },
- { text: '集群版部署', link: 'Cluster-Deployment_timecho' },
- { text: '双活版部署', link: 'Dual-Active-Deployment_timecho' },
- { text: 'Docker部署', link: 'Docker-Deployment_timecho' },
+ { text: '单机版部署指导', link: 'Stand-Alone-Deployment_timecho' },
+ { text: '集群版部署指导', link: 'Cluster-Deployment_timecho' },
+ { text: '双活版部署指导', link: 'Dual-Active-Deployment_timecho' },
+ { text: 'Docker部署指导', link: 'Docker-Deployment_timecho' },
{ text: 'AINode部署', link: 'AINode_Deployment_timecho' },
{ text: '监控面板部署', link: 'Monitoring-panel-deployment' },
{ text: '可视化控制台部署', link: 'workbench-deployment' },
],
},
-
{
- text: '使用手册',
+ text: '基础功能',
collapsible: true,
- prefix: 'User-Manual/',
+ prefix: 'Basic-Concept/',
// children: 'structure',
children: [
- { text: '语法约定', link: 'Syntax-Rule' },
- { text: '元数据管理', link: 'Operate-Metadata_timecho' },
- { text: '数据写入与删除', link: 'Write-Delete-Data' },
+ {
+ text: '数据建模',
+ collapsible: true,
+ children: [
+ { text: '时序数据模型', link: 'Navigating_Time_Series_Data' },
+ { text: '建模方案设计', link: 'Data-Model-and-Terminology' },
+ { text: '测点管理', link: 'Operate-Metadata_timecho' },
+ ],
+ },
+ { text: '写入&删除', link: 'Write-Delete-Data' },
{ text: '数据查询', link: 'Query-Data' },
- { text: '运算符和表达式', link: 'Operator-and-Expression' },
+ ],
+ },
+ {
+ text: '高级功能',
+ collapsible: true,
+ prefix: 'User-Manual/',
+ // children: 'structure',
+ children: [
{ text: '数据同步', link: 'Data-Sync_timecho' },
{ text: '数据订阅', link: 'Data-subscription' },
- { text: '流处理框架', link: 'Streaming_timecho' },
- { text: '多级存储', link: 'Tiered-Storage_timecho' },
- { text: '视图', link: 'IoTDB-View_timecho' },
{ text: 'AI能力', link: 'AINode_timecho' },
- { text: '数据库编程', link: 'Database-Programming' },
+ {
+ text: '安全管理',
+ collapsible: true,
+ children: [
+ { text: '白名单', link: 'White-List_timecho' },
+ { text: '审计日志', link: 'Audit-Log_timecho' },
+ { text: '权限管理', link: 'Authority-Management' },
+ ],
+ },
{ text: '用户自定义函数', link: 'User-defined-function' },
- { text: '安全控制', link: 'Security-Management_timecho' },
- { text: '权限管理', link: 'Authority-Management' },
- { text: '运维语句', link: 'Maintennance' },
+ { text: '视图', link: 'IoTDB-View_timecho' },
+ { text: '多级存储', link: 'Tiered-Storage_timecho' },
+ { text: '连续查询', link: 'Database-Programming' },
+ {
+ text: '数据库编程',
+ collapsible: true,
+ children: [
+ { text: 'UDF开发', link: 'UDF-development' },
+ { text: '触发器', link: 'Trigger' },
+ { text: '流处理框架', link: 'Streaming_timecho' },
+ ],
+ },
],
},
{
@@ -103,11 +121,11 @@ export const zhSidebar = {
prefix: 'Tools-System/',
// children: 'structure',
children: [
- { text: 'SQL命令行终端 (CLI)', link: 'CLI' },
+ { text: '命令行工具', link: 'CLI' },
{ text: '可视化控制台', link: 'Workbench_timecho' },
{ text: '监控工具', link: 'Monitor-Tool_timecho' },
{ text: '测试工具', link: 'Benchmark' },
- { text: '运维工具', link: 'Maintenance-Tool_timecho' },
+ { text: '集群管理工具', link: 'Maintenance-Tool_timecho' },
{ text: '数据导入', link: 'Data-Import-Tool' },
{ text: '数据导出', link: 'Data-Export-Tool' },
],
@@ -129,8 +147,14 @@ export const zhSidebar = {
{ text: 'MQTT协议', link: 'Programming-MQTT' },
{ text: 'OPC UA协议', link: 'Programming-OPC-UA_timecho' },
{ text: 'Kafka', link: 'Programming-Kafka' },
- { text: 'REST API V1 (不推荐)', link: 'RestServiceV1' },
- { text: 'REST API V2', link: 'RestServiceV2' },
+ {
+ text: 'REST API',
+ collapsible: true,
+ children: [
+ { text: 'V1 (不推荐)', link: 'RestServiceV1' },
+ { text: 'V2', link: 'RestServiceV2' },
+ ],
+ },
],
},
{
@@ -164,12 +188,15 @@ export const zhSidebar = {
],
},
{
- text: 'FAQ',
+ text: '技术内幕',
collapsible: true,
- prefix: 'FAQ/',
+ prefix: 'Technical-Insider/',
// children: 'structure',
children: [
- { text: '常见问题', link: 'Frequently-asked-questions' }],
+ { text: '研究论文', link: 'Publication' },
+ { text: '压缩&编码', link: 'Encoding-and-Compression' },
+ { text: '数据分区和负载均衡', link: 'Cluster-data-partitioning' },
+ ],
},
{
text: '参考',
@@ -177,15 +204,41 @@ export const zhSidebar = {
prefix: 'Reference/',
// children: 'structure',
children: [
- { text: 'UDF函数库', link: 'UDF-Libraries_timecho' },
- { text: 'UDF开发', link: 'UDF-development' },
- { text: '内置函数与表达式', link: 'Function-and-Expression' },
- { text: '配置参数', link: 'Common-Config-Manual' },
- { text: 'ConfigNode配置参数', link: 'ConfigNode-Config-Manual' },
- { text: 'DataNode配置参数', link: 'DataNode-Config-Manual' },
+ {
+ text: '配置参数',
+ collapsible: true,
+ children: [
+ { text: '配置参数', link: 'Common-Config-Manual' },
+ { text: 'ConfigNode配置参数', link: 'ConfigNode-Config-Manual' },
+ { text: 'DataNode配置参数', link: 'DataNode-Config-Manual' },
+ ],
+ },
+ {
+ text: '函数与运算符',
+ collapsible: true,
+ children: [
+ { text: 'UDF函数库', link: 'UDF-Libraries_timecho' },
+ { text: '函数和操作符', link: 'Operator-and-Expression' },
+ ],
+ },
+ {
+ text: '语法约定',
+ collapsible: true,
+ children: [
+ { text: '保留字&标识符', link: 'Syntax-Rule' },
+ { text: '关键字', link: 'Keywords' },
+ ],
+ },
{ text: '状态码', link: 'Status-Codes' },
- { text: '关键字', link: 'Keywords' },
],
},
+ {
+ text: 'FAQ',
+ collapsible: true,
+ prefix: 'FAQ/',
+ // children: 'structure',
+ children: [
+ { text: '常见问题', link: 'Frequently-asked-questions' }],
+ },
],
};
diff --git a/src/UserGuide/Master/API/Programming-CSharp-Native-API.md b/src/UserGuide/Master/Tree/API/Programming-CSharp-Native-API.md
similarity index 100%
rename from src/UserGuide/Master/API/Programming-CSharp-Native-API.md
rename to src/UserGuide/Master/Tree/API/Programming-CSharp-Native-API.md
diff --git a/src/UserGuide/Master/API/Programming-Cpp-Native-API.md b/src/UserGuide/Master/Tree/API/Programming-Cpp-Native-API.md
similarity index 100%
rename from src/UserGuide/Master/API/Programming-Cpp-Native-API.md
rename to src/UserGuide/Master/Tree/API/Programming-Cpp-Native-API.md
diff --git a/src/UserGuide/Master/API/Programming-Go-Native-API.md b/src/UserGuide/Master/Tree/API/Programming-Go-Native-API.md
similarity index 100%
rename from src/UserGuide/Master/API/Programming-Go-Native-API.md
rename to src/UserGuide/Master/Tree/API/Programming-Go-Native-API.md
diff --git a/src/UserGuide/Master/API/Programming-JDBC.md b/src/UserGuide/Master/Tree/API/Programming-JDBC.md
similarity index 100%
rename from src/UserGuide/Master/API/Programming-JDBC.md
rename to src/UserGuide/Master/Tree/API/Programming-JDBC.md
diff --git a/src/UserGuide/Master/API/Programming-Java-Native-API.md b/src/UserGuide/Master/Tree/API/Programming-Java-Native-API.md
similarity index 100%
rename from src/UserGuide/Master/API/Programming-Java-Native-API.md
rename to src/UserGuide/Master/Tree/API/Programming-Java-Native-API.md
diff --git a/src/UserGuide/Master/API/Programming-Kafka.md b/src/UserGuide/Master/Tree/API/Programming-Kafka.md
similarity index 100%
rename from src/UserGuide/Master/API/Programming-Kafka.md
rename to src/UserGuide/Master/Tree/API/Programming-Kafka.md
diff --git a/src/UserGuide/Master/API/Programming-MQTT.md b/src/UserGuide/Master/Tree/API/Programming-MQTT.md
similarity index 100%
rename from src/UserGuide/Master/API/Programming-MQTT.md
rename to src/UserGuide/Master/Tree/API/Programming-MQTT.md
diff --git a/src/UserGuide/Master/API/Programming-NodeJS-Native-API.md b/src/UserGuide/Master/Tree/API/Programming-NodeJS-Native-API.md
similarity index 100%
rename from src/UserGuide/Master/API/Programming-NodeJS-Native-API.md
rename to src/UserGuide/Master/Tree/API/Programming-NodeJS-Native-API.md
diff --git a/src/UserGuide/Master/API/Programming-ODBC.md b/src/UserGuide/Master/Tree/API/Programming-ODBC.md
similarity index 100%
rename from src/UserGuide/Master/API/Programming-ODBC.md
rename to src/UserGuide/Master/Tree/API/Programming-ODBC.md
diff --git a/src/UserGuide/Master/API/Programming-OPC-UA_timecho.md b/src/UserGuide/Master/Tree/API/Programming-OPC-UA_timecho.md
similarity index 100%
rename from src/UserGuide/Master/API/Programming-OPC-UA_timecho.md
rename to src/UserGuide/Master/Tree/API/Programming-OPC-UA_timecho.md
diff --git a/src/UserGuide/Master/API/Programming-Python-Native-API.md b/src/UserGuide/Master/Tree/API/Programming-Python-Native-API.md
similarity index 100%
rename from src/UserGuide/Master/API/Programming-Python-Native-API.md
rename to src/UserGuide/Master/Tree/API/Programming-Python-Native-API.md
diff --git a/src/UserGuide/Master/API/Programming-Rust-Native-API.md b/src/UserGuide/Master/Tree/API/Programming-Rust-Native-API.md
similarity index 100%
rename from src/UserGuide/Master/API/Programming-Rust-Native-API.md
rename to src/UserGuide/Master/Tree/API/Programming-Rust-Native-API.md
diff --git a/src/UserGuide/Master/API/RestServiceV1.md b/src/UserGuide/Master/Tree/API/RestServiceV1.md
similarity index 100%
rename from src/UserGuide/Master/API/RestServiceV1.md
rename to src/UserGuide/Master/Tree/API/RestServiceV1.md
diff --git a/src/UserGuide/Master/API/RestServiceV2.md b/src/UserGuide/Master/Tree/API/RestServiceV2.md
similarity index 100%
rename from src/UserGuide/Master/API/RestServiceV2.md
rename to src/UserGuide/Master/Tree/API/RestServiceV2.md
diff --git a/src/UserGuide/Master/Basic-Concept/Data-Model-and-Terminology.md b/src/UserGuide/Master/Tree/Basic-Concept/Data-Model-and-Terminology.md
similarity index 99%
rename from src/UserGuide/Master/Basic-Concept/Data-Model-and-Terminology.md
rename to src/UserGuide/Master/Tree/Basic-Concept/Data-Model-and-Terminology.md
index 48b7df5fe..502e393af 100644
--- a/src/UserGuide/Master/Basic-Concept/Data-Model-and-Terminology.md
+++ b/src/UserGuide/Master/Tree/Basic-Concept/Data-Model-and-Terminology.md
@@ -142,6 +142,6 @@ In the following chapters of data definition language, data operation language a
## Schema Template
-In the actual scenario, many entities collect the same measurements, that is, they have the same measurements name and type. A **schema template** can be declared to define the collectable measurements set. Schema template helps save memory by implementing schema sharing. For detailed description, please refer to [Schema Template doc](../User-Manual/Operate-Metadata.md#Device-Template).
+In the actual scenario, many entities collect the same measurements, that is, they have the same measurements name and type. A **schema template** can be declared to define the collectable measurements set. Schema template helps save memory by implementing schema sharing. For detailed description, please refer to [Schema Template doc](../User-Manual/Operate-Metadata_timecho.md#Device-Template).
In the following chapters of, data definition language, data operation language and Java Native Interface, various operations related to schema template will be introduced one by one.
diff --git a/src/UserGuide/Master/Basic-Concept/Navigating_Time_Series_Data.md b/src/UserGuide/Master/Tree/Basic-Concept/Navigating_Time_Series_Data.md
similarity index 100%
rename from src/UserGuide/Master/Basic-Concept/Navigating_Time_Series_Data.md
rename to src/UserGuide/Master/Tree/Basic-Concept/Navigating_Time_Series_Data.md
diff --git a/src/UserGuide/Master/User-Manual/Operate-Metadata_apache.md b/src/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_apache.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Operate-Metadata_apache.md
rename to src/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_apache.md
diff --git a/src/UserGuide/Master/User-Manual/Operate-Metadata_timecho.md b/src/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_timecho.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Operate-Metadata_timecho.md
rename to src/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_timecho.md
diff --git a/src/UserGuide/Master/User-Manual/Query-Data.md b/src/UserGuide/Master/Tree/Basic-Concept/Query-Data.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Query-Data.md
rename to src/UserGuide/Master/Tree/Basic-Concept/Query-Data.md
diff --git a/src/UserGuide/Master/User-Manual/Write-Delete-Data.md b/src/UserGuide/Master/Tree/Basic-Concept/Write-Delete-Data.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Write-Delete-Data.md
rename to src/UserGuide/Master/Tree/Basic-Concept/Write-Delete-Data.md
diff --git a/src/UserGuide/Master/Deployment-and-Maintenance/AINode_Deployment_timecho.md b/src/UserGuide/Master/Tree/Deployment-and-Maintenance/AINode_Deployment_timecho.md
similarity index 100%
rename from src/UserGuide/Master/Deployment-and-Maintenance/AINode_Deployment_timecho.md
rename to src/UserGuide/Master/Tree/Deployment-and-Maintenance/AINode_Deployment_timecho.md
diff --git a/src/UserGuide/Master/Deployment-and-Maintenance/Cluster-Deployment_apache.md b/src/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_apache.md
similarity index 100%
rename from src/UserGuide/Master/Deployment-and-Maintenance/Cluster-Deployment_apache.md
rename to src/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_apache.md
diff --git a/src/UserGuide/Master/Deployment-and-Maintenance/Cluster-Deployment_timecho.md b/src/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_timecho.md
similarity index 100%
rename from src/UserGuide/Master/Deployment-and-Maintenance/Cluster-Deployment_timecho.md
rename to src/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_timecho.md
diff --git a/src/UserGuide/Master/Deployment-and-Maintenance/Database-Resources.md b/src/UserGuide/Master/Tree/Deployment-and-Maintenance/Database-Resources.md
similarity index 100%
rename from src/UserGuide/Master/Deployment-and-Maintenance/Database-Resources.md
rename to src/UserGuide/Master/Tree/Deployment-and-Maintenance/Database-Resources.md
diff --git a/src/UserGuide/Master/Deployment-and-Maintenance/Docker-Deployment_apache.md b/src/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_apache.md
similarity index 100%
rename from src/UserGuide/Master/Deployment-and-Maintenance/Docker-Deployment_apache.md
rename to src/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_apache.md
diff --git a/src/UserGuide/Master/Deployment-and-Maintenance/Docker-Deployment_timecho.md b/src/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_timecho.md
similarity index 100%
rename from src/UserGuide/Master/Deployment-and-Maintenance/Docker-Deployment_timecho.md
rename to src/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_timecho.md
diff --git a/src/UserGuide/Master/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md b/src/UserGuide/Master/Tree/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md
similarity index 100%
rename from src/UserGuide/Master/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md
rename to src/UserGuide/Master/Tree/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md
diff --git a/src/UserGuide/Master/Deployment-and-Maintenance/Environment-Requirements.md b/src/UserGuide/Master/Tree/Deployment-and-Maintenance/Environment-Requirements.md
similarity index 100%
rename from src/UserGuide/Master/Deployment-and-Maintenance/Environment-Requirements.md
rename to src/UserGuide/Master/Tree/Deployment-and-Maintenance/Environment-Requirements.md
diff --git a/src/UserGuide/Master/Deployment-and-Maintenance/IoTDB-Package_apache.md b/src/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_apache.md
similarity index 100%
rename from src/UserGuide/Master/Deployment-and-Maintenance/IoTDB-Package_apache.md
rename to src/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_apache.md
diff --git a/src/UserGuide/Master/Deployment-and-Maintenance/IoTDB-Package_timecho.md b/src/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_timecho.md
similarity index 100%
rename from src/UserGuide/Master/Deployment-and-Maintenance/IoTDB-Package_timecho.md
rename to src/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_timecho.md
diff --git a/src/UserGuide/Master/Deployment-and-Maintenance/Monitoring-panel-deployment.md b/src/UserGuide/Master/Tree/Deployment-and-Maintenance/Monitoring-panel-deployment.md
similarity index 100%
rename from src/UserGuide/Master/Deployment-and-Maintenance/Monitoring-panel-deployment.md
rename to src/UserGuide/Master/Tree/Deployment-and-Maintenance/Monitoring-panel-deployment.md
diff --git a/src/UserGuide/Master/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md b/src/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md
similarity index 100%
rename from src/UserGuide/Master/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md
rename to src/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md
diff --git a/src/UserGuide/Master/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md b/src/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md
similarity index 100%
rename from src/UserGuide/Master/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md
rename to src/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md
diff --git a/src/UserGuide/Master/Deployment-and-Maintenance/workbench-deployment.md b/src/UserGuide/Master/Tree/Deployment-and-Maintenance/workbench-deployment.md
similarity index 100%
rename from src/UserGuide/Master/Deployment-and-Maintenance/workbench-deployment.md
rename to src/UserGuide/Master/Tree/Deployment-and-Maintenance/workbench-deployment.md
diff --git a/src/UserGuide/Master/Ecosystem-Integration/DBeaver.md b/src/UserGuide/Master/Tree/Ecosystem-Integration/DBeaver.md
similarity index 100%
rename from src/UserGuide/Master/Ecosystem-Integration/DBeaver.md
rename to src/UserGuide/Master/Tree/Ecosystem-Integration/DBeaver.md
diff --git a/src/UserGuide/Master/Ecosystem-Integration/DataEase.md b/src/UserGuide/Master/Tree/Ecosystem-Integration/DataEase.md
similarity index 100%
rename from src/UserGuide/Master/Ecosystem-Integration/DataEase.md
rename to src/UserGuide/Master/Tree/Ecosystem-Integration/DataEase.md
diff --git a/src/UserGuide/Master/Ecosystem-Integration/Flink-IoTDB.md b/src/UserGuide/Master/Tree/Ecosystem-Integration/Flink-IoTDB.md
similarity index 100%
rename from src/UserGuide/Master/Ecosystem-Integration/Flink-IoTDB.md
rename to src/UserGuide/Master/Tree/Ecosystem-Integration/Flink-IoTDB.md
diff --git a/src/UserGuide/Master/Ecosystem-Integration/Flink-TsFile.md b/src/UserGuide/Master/Tree/Ecosystem-Integration/Flink-TsFile.md
similarity index 100%
rename from src/UserGuide/Master/Ecosystem-Integration/Flink-TsFile.md
rename to src/UserGuide/Master/Tree/Ecosystem-Integration/Flink-TsFile.md
diff --git a/src/UserGuide/Master/Ecosystem-Integration/Grafana-Connector.md b/src/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Connector.md
similarity index 100%
rename from src/UserGuide/Master/Ecosystem-Integration/Grafana-Connector.md
rename to src/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Connector.md
diff --git a/src/UserGuide/Master/Ecosystem-Integration/Grafana-Plugin.md b/src/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Plugin.md
similarity index 100%
rename from src/UserGuide/Master/Ecosystem-Integration/Grafana-Plugin.md
rename to src/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Plugin.md
diff --git a/src/UserGuide/Master/Ecosystem-Integration/Hive-TsFile.md b/src/UserGuide/Master/Tree/Ecosystem-Integration/Hive-TsFile.md
similarity index 100%
rename from src/UserGuide/Master/Ecosystem-Integration/Hive-TsFile.md
rename to src/UserGuide/Master/Tree/Ecosystem-Integration/Hive-TsFile.md
diff --git a/src/UserGuide/Master/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md b/src/UserGuide/Master/Tree/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md
similarity index 100%
rename from src/UserGuide/Master/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md
rename to src/UserGuide/Master/Tree/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md
diff --git a/src/UserGuide/Master/Ecosystem-Integration/NiFi-IoTDB.md b/src/UserGuide/Master/Tree/Ecosystem-Integration/NiFi-IoTDB.md
similarity index 100%
rename from src/UserGuide/Master/Ecosystem-Integration/NiFi-IoTDB.md
rename to src/UserGuide/Master/Tree/Ecosystem-Integration/NiFi-IoTDB.md
diff --git a/src/UserGuide/Master/Ecosystem-Integration/Spark-IoTDB.md b/src/UserGuide/Master/Tree/Ecosystem-Integration/Spark-IoTDB.md
similarity index 100%
rename from src/UserGuide/Master/Ecosystem-Integration/Spark-IoTDB.md
rename to src/UserGuide/Master/Tree/Ecosystem-Integration/Spark-IoTDB.md
diff --git a/src/UserGuide/Master/Ecosystem-Integration/Spark-TsFile.md b/src/UserGuide/Master/Tree/Ecosystem-Integration/Spark-TsFile.md
similarity index 100%
rename from src/UserGuide/Master/Ecosystem-Integration/Spark-TsFile.md
rename to src/UserGuide/Master/Tree/Ecosystem-Integration/Spark-TsFile.md
diff --git a/src/UserGuide/Master/Ecosystem-Integration/Telegraf-IoTDB.md b/src/UserGuide/Master/Tree/Ecosystem-Integration/Telegraf-IoTDB.md
similarity index 100%
rename from src/UserGuide/Master/Ecosystem-Integration/Telegraf-IoTDB.md
rename to src/UserGuide/Master/Tree/Ecosystem-Integration/Telegraf-IoTDB.md
diff --git a/src/UserGuide/Master/Ecosystem-Integration/Thingsboard.md b/src/UserGuide/Master/Tree/Ecosystem-Integration/Thingsboard.md
similarity index 100%
rename from src/UserGuide/Master/Ecosystem-Integration/Thingsboard.md
rename to src/UserGuide/Master/Tree/Ecosystem-Integration/Thingsboard.md
diff --git a/src/UserGuide/Master/Ecosystem-Integration/Zeppelin-IoTDB.md b/src/UserGuide/Master/Tree/Ecosystem-Integration/Zeppelin-IoTDB.md
similarity index 100%
rename from src/UserGuide/Master/Ecosystem-Integration/Zeppelin-IoTDB.md
rename to src/UserGuide/Master/Tree/Ecosystem-Integration/Zeppelin-IoTDB.md
diff --git a/src/UserGuide/Master/FAQ/Frequently-asked-questions.md b/src/UserGuide/Master/Tree/FAQ/Frequently-asked-questions.md
similarity index 100%
rename from src/UserGuide/Master/FAQ/Frequently-asked-questions.md
rename to src/UserGuide/Master/Tree/FAQ/Frequently-asked-questions.md
diff --git a/src/UserGuide/Master/IoTDB-Introduction/IoTDB-Introduction_apache.md b/src/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_apache.md
similarity index 100%
rename from src/UserGuide/Master/IoTDB-Introduction/IoTDB-Introduction_apache.md
rename to src/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_apache.md
diff --git a/src/UserGuide/Master/IoTDB-Introduction/IoTDB-Introduction_timecho.md b/src/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_timecho.md
similarity index 100%
rename from src/UserGuide/Master/IoTDB-Introduction/IoTDB-Introduction_timecho.md
rename to src/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_timecho.md
diff --git a/src/UserGuide/Master/IoTDB-Introduction/Scenario.md b/src/UserGuide/Master/Tree/IoTDB-Introduction/Scenario.md
similarity index 100%
rename from src/UserGuide/Master/IoTDB-Introduction/Scenario.md
rename to src/UserGuide/Master/Tree/IoTDB-Introduction/Scenario.md
diff --git a/src/UserGuide/Master/Basic-Concept/Data-Type.md b/src/UserGuide/Master/Tree/Preparatory-knowledge/Data-Type.md
similarity index 100%
rename from src/UserGuide/Master/Basic-Concept/Data-Type.md
rename to src/UserGuide/Master/Tree/Preparatory-knowledge/Data-Type.md
diff --git a/src/UserGuide/Master/QuickStart/QuickStart.md b/src/UserGuide/Master/Tree/QuickStart/QuickStart.md
similarity index 100%
rename from src/UserGuide/Master/QuickStart/QuickStart.md
rename to src/UserGuide/Master/Tree/QuickStart/QuickStart.md
diff --git a/src/UserGuide/Master/QuickStart/QuickStart_apache.md b/src/UserGuide/Master/Tree/QuickStart/QuickStart_apache.md
similarity index 100%
rename from src/UserGuide/Master/QuickStart/QuickStart_apache.md
rename to src/UserGuide/Master/Tree/QuickStart/QuickStart_apache.md
diff --git a/src/UserGuide/Master/QuickStart/QuickStart_timecho.md b/src/UserGuide/Master/Tree/QuickStart/QuickStart_timecho.md
similarity index 100%
rename from src/UserGuide/Master/QuickStart/QuickStart_timecho.md
rename to src/UserGuide/Master/Tree/QuickStart/QuickStart_timecho.md
diff --git a/src/UserGuide/Master/Reference/Common-Config-Manual.md b/src/UserGuide/Master/Tree/Reference/Common-Config-Manual.md
similarity index 99%
rename from src/UserGuide/Master/Reference/Common-Config-Manual.md
rename to src/UserGuide/Master/Tree/Reference/Common-Config-Manual.md
index f70b57fb0..f03a6b03f 100644
--- a/src/UserGuide/Master/Reference/Common-Config-Manual.md
+++ b/src/UserGuide/Master/Tree/Reference/Common-Config-Manual.md
@@ -2162,6 +2162,8 @@ Different configuration parameters take effect in the following three ways:
| Effective | hot-load |
+
+
#### TsFile Active Listening&Loading Function Configuration
* load\_active\_listening\_enable
diff --git a/src/UserGuide/Master/Reference/ConfigNode-Config-Manual.md b/src/UserGuide/Master/Tree/Reference/ConfigNode-Config-Manual.md
similarity index 100%
rename from src/UserGuide/Master/Reference/ConfigNode-Config-Manual.md
rename to src/UserGuide/Master/Tree/Reference/ConfigNode-Config-Manual.md
diff --git a/src/UserGuide/Master/Reference/DataNode-Config-Manual.md b/src/UserGuide/Master/Tree/Reference/DataNode-Config-Manual.md
similarity index 100%
rename from src/UserGuide/Master/Reference/DataNode-Config-Manual.md
rename to src/UserGuide/Master/Tree/Reference/DataNode-Config-Manual.md
index 4911486ab..94ede5013 100644
--- a/src/UserGuide/Master/Reference/DataNode-Config-Manual.md
+++ b/src/UserGuide/Master/Tree/Reference/DataNode-Config-Manual.md
@@ -499,9 +499,9 @@ There will be at most 10 gc.log.* files and each one can reach to 10MB.
|Effective| After restarting system |
-
#### Storage engine configuration
+
* dn\_default\_space\_usage\_thresholds
|Name| dn\_default\_space\_usage\_thresholds |
diff --git a/src/UserGuide/Master/Reference/Function-and-Expression.md b/src/UserGuide/Master/Tree/Reference/Function-and-Expression.md
similarity index 100%
rename from src/UserGuide/Master/Reference/Function-and-Expression.md
rename to src/UserGuide/Master/Tree/Reference/Function-and-Expression.md
diff --git a/src/UserGuide/Master/Reference/Keywords.md b/src/UserGuide/Master/Tree/Reference/Keywords.md
similarity index 100%
rename from src/UserGuide/Master/Reference/Keywords.md
rename to src/UserGuide/Master/Tree/Reference/Keywords.md
diff --git a/src/UserGuide/Master/Reference/Modify-Config-Manual.md b/src/UserGuide/Master/Tree/Reference/Modify-Config-Manual.md
similarity index 100%
rename from src/UserGuide/Master/Reference/Modify-Config-Manual.md
rename to src/UserGuide/Master/Tree/Reference/Modify-Config-Manual.md
diff --git a/src/UserGuide/Master/User-Manual/Operator-and-Expression.md b/src/UserGuide/Master/Tree/Reference/Operator-and-Expression.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Operator-and-Expression.md
rename to src/UserGuide/Master/Tree/Reference/Operator-and-Expression.md
diff --git a/src/UserGuide/Master/Reference/Status-Codes.md b/src/UserGuide/Master/Tree/Reference/Status-Codes.md
similarity index 100%
rename from src/UserGuide/Master/Reference/Status-Codes.md
rename to src/UserGuide/Master/Tree/Reference/Status-Codes.md
diff --git a/src/UserGuide/Master/Reference/UDF-Libraries_apache.md b/src/UserGuide/Master/Tree/Reference/UDF-Libraries_apache.md
similarity index 100%
rename from src/UserGuide/Master/Reference/UDF-Libraries_apache.md
rename to src/UserGuide/Master/Tree/Reference/UDF-Libraries_apache.md
diff --git a/src/UserGuide/Master/Reference/UDF-Libraries_timecho.md b/src/UserGuide/Master/Tree/Reference/UDF-Libraries_timecho.md
similarity index 100%
rename from src/UserGuide/Master/Reference/UDF-Libraries_timecho.md
rename to src/UserGuide/Master/Tree/Reference/UDF-Libraries_timecho.md
diff --git a/src/UserGuide/Master/SQL-Manual/SQL-Manual.md b/src/UserGuide/Master/Tree/SQL-Manual/SQL-Manual.md
similarity index 99%
rename from src/UserGuide/Master/SQL-Manual/SQL-Manual.md
rename to src/UserGuide/Master/Tree/SQL-Manual/SQL-Manual.md
index 62eb67e9a..ca286e694 100644
--- a/src/UserGuide/Master/SQL-Manual/SQL-Manual.md
+++ b/src/UserGuide/Master/Tree/SQL-Manual/SQL-Manual.md
@@ -23,7 +23,7 @@
## DATABASE MANAGEMENT
-For more details, see document [Operate-Metadata](../User-Manual/Operate-Metadata.md).
+For more details, see document [Operate-Metadata](../User-Manual/Operate-Metadata_timecho.md).
### Create Database
@@ -105,7 +105,7 @@ IoTDB> SHOW DEVICES
## DEVICE TEMPLATE
-For more details, see document [Operate-Metadata](../User-Manual/Operate-Metadata.md).
+For more details, see document [Operate-Metadata](../User-Manual/Operate-Metadata_timecho.md).

@@ -184,7 +184,7 @@ IoTDB> alter device template t1 add (speed FLOAT encoding=RLE, FLOAT TEXT encodi
## TIMESERIES MANAGEMENT
-For more details, see document [Operate-Metadata](../User-Manual/Operate-Metadata.md).
+For more details, see document [Operate-Metadata](../User-Manual/Operate-Metadata_timecho.md).
### Create Timeseries
@@ -364,7 +364,7 @@ The above operations are supported for timeseries tag, attribute updates, etc.
## NODE MANAGEMENT
-For more details, see document [Operate-Metadata](../User-Manual/Operate-Metadata.md).
+For more details, see document [Operate-Metadata](../User-Manual/Operate-Metadata_timecho.md).
### Show Child Paths
diff --git a/src/UserGuide/Master/Basic-Concept/Cluster-data-partitioning.md b/src/UserGuide/Master/Tree/Technical-Insider/Cluster-data-partitioning.md
similarity index 100%
rename from src/UserGuide/Master/Basic-Concept/Cluster-data-partitioning.md
rename to src/UserGuide/Master/Tree/Technical-Insider/Cluster-data-partitioning.md
diff --git a/src/UserGuide/Master/Basic-Concept/Encoding-and-Compression.md b/src/UserGuide/Master/Tree/Technical-Insider/Encoding-and-Compression.md
similarity index 100%
rename from src/UserGuide/Master/Basic-Concept/Encoding-and-Compression.md
rename to src/UserGuide/Master/Tree/Technical-Insider/Encoding-and-Compression.md
diff --git a/src/UserGuide/Master/IoTDB-Introduction/Publication.md b/src/UserGuide/Master/Tree/Technical-Insider/Publication.md
similarity index 100%
rename from src/UserGuide/Master/IoTDB-Introduction/Publication.md
rename to src/UserGuide/Master/Tree/Technical-Insider/Publication.md
diff --git a/src/UserGuide/Master/Tools-System/Benchmark.md b/src/UserGuide/Master/Tree/Tools-System/Benchmark.md
similarity index 100%
rename from src/UserGuide/Master/Tools-System/Benchmark.md
rename to src/UserGuide/Master/Tree/Tools-System/Benchmark.md
diff --git a/src/UserGuide/Master/Tools-System/CLI.md b/src/UserGuide/Master/Tree/Tools-System/CLI.md
similarity index 100%
rename from src/UserGuide/Master/Tools-System/CLI.md
rename to src/UserGuide/Master/Tree/Tools-System/CLI.md
diff --git a/src/UserGuide/Master/Tools-System/Data-Export-Tool.md b/src/UserGuide/Master/Tree/Tools-System/Data-Export-Tool.md
similarity index 100%
rename from src/UserGuide/Master/Tools-System/Data-Export-Tool.md
rename to src/UserGuide/Master/Tree/Tools-System/Data-Export-Tool.md
diff --git a/src/UserGuide/Master/Tools-System/Data-Import-Tool.md b/src/UserGuide/Master/Tree/Tools-System/Data-Import-Tool.md
similarity index 100%
rename from src/UserGuide/Master/Tools-System/Data-Import-Tool.md
rename to src/UserGuide/Master/Tree/Tools-System/Data-Import-Tool.md
diff --git a/src/UserGuide/Master/Tools-System/Maintenance-Tool_apache.md b/src/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_apache.md
similarity index 99%
rename from src/UserGuide/Master/Tools-System/Maintenance-Tool_apache.md
rename to src/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_apache.md
index 42c8cdef7..98b69f17c 100644
--- a/src/UserGuide/Master/Tools-System/Maintenance-Tool_apache.md
+++ b/src/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_apache.md
@@ -18,7 +18,8 @@
under the License.
-->
-# Maintenance Tool
+# Cluster management tool
+
## IoTDB Data Directory Overview Tool
IoTDB data directory overview tool is used to print an overview of the IoTDB data directory structure. The location is tools/tsfile/print-iotdb-data-dir.
diff --git a/src/UserGuide/Master/Tools-System/Maintenance-Tool_timecho.md b/src/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_timecho.md
similarity index 99%
rename from src/UserGuide/Master/Tools-System/Maintenance-Tool_timecho.md
rename to src/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_timecho.md
index 0006f2a12..d77787934 100644
--- a/src/UserGuide/Master/Tools-System/Maintenance-Tool_timecho.md
+++ b/src/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_timecho.md
@@ -18,7 +18,7 @@
under the License.
-->
-# Maintenance Tool
+# Cluster management tool
## IoTDB-OpsKit
diff --git a/src/UserGuide/Master/Tools-System/Monitor-Tool_apache.md b/src/UserGuide/Master/Tree/Tools-System/Monitor-Tool_apache.md
similarity index 100%
rename from src/UserGuide/Master/Tools-System/Monitor-Tool_apache.md
rename to src/UserGuide/Master/Tree/Tools-System/Monitor-Tool_apache.md
diff --git a/src/UserGuide/Master/Tools-System/Monitor-Tool_timecho.md b/src/UserGuide/Master/Tree/Tools-System/Monitor-Tool_timecho.md
similarity index 100%
rename from src/UserGuide/Master/Tools-System/Monitor-Tool_timecho.md
rename to src/UserGuide/Master/Tree/Tools-System/Monitor-Tool_timecho.md
diff --git a/src/UserGuide/Master/Tools-System/Workbench_timecho.md b/src/UserGuide/Master/Tree/Tools-System/Workbench_timecho.md
similarity index 100%
rename from src/UserGuide/Master/Tools-System/Workbench_timecho.md
rename to src/UserGuide/Master/Tree/Tools-System/Workbench_timecho.md
diff --git a/src/UserGuide/Master/User-Manual/AINode_timecho.md b/src/UserGuide/Master/Tree/User-Manual/AINode_timecho.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/AINode_timecho.md
rename to src/UserGuide/Master/Tree/User-Manual/AINode_timecho.md
diff --git a/src/UserGuide/Master/User-Manual/Security-Management_timecho.md b/src/UserGuide/Master/Tree/User-Manual/Audit-Log_timecho.md
similarity index 66%
rename from src/UserGuide/Master/User-Manual/Security-Management_timecho.md
rename to src/UserGuide/Master/Tree/User-Manual/Audit-Log_timecho.md
index 607c21d7b..741135b0d 100644
--- a/src/UserGuide/Master/User-Manual/Security-Management_timecho.md
+++ b/src/UserGuide/Master/Tree/User-Manual/Audit-Log_timecho.md
@@ -19,69 +19,18 @@
-->
-# Security Management
+# Audit log
-## White List
-
-**function description**
-
-Allow which client addresses can connect to IoTDB
-
-**configuration file**
-
-conf/iotdb-system.properties
-
-conf/white.list
-
-**configuration item**
-
-iotdb-system.properties:
-
-Decide whether to enable white list
-
-```YAML
-
-# Whether to enable white list
-enable_white_list=true
-```
-
-white.list:
-
-Decide which IP addresses can connect to IoTDB
-
-```YAML
-# Support for annotation
-# Supports precise matching, one IP per line
-10.2.3.4
-
-# Support for * wildcards, one ip per line
-10.*.1.3
-10.100.0.*
-```
-
-**note**
-
-1. If the white list itself is cancelled via the session client, the current connection is not immediately disconnected. It is rejected the next time the connection is created.
-2. If white.list is modified directly, it takes effect within one minute. If modified via the session client, it takes effect immediately, updating the values in memory and the white.list disk file.
-3. Enable the whitelist function, there is no white.list file, start the DB service successfully, however, all connections are rejected.
-4. while DB service is running, the white.list file is deleted, and all connections are denied after up to one minute.
-5. whether to enable the configuration of the white list function, can be hot loaded.
-6. Use the Java native interface to modify the whitelist, must be the root user to modify, reject non-root user to modify; modify the content must be legal, otherwise it will throw a StatementExecutionException.
-
-
-
-## Audit log
-
-### Background of the function
+## Background of the function
Audit log is the record credentials of a database, which can be queried by the audit log function to ensure information security by various operations such as user add, delete, change and check in the database. With the audit log function of IoTDB, the following scenarios can be achieved:
- We can decide whether to record audit logs according to the source of the link ( human operation or not), such as: non-human operation such as hardware collector write data no need to record audit logs, human operation such as ordinary users through cli, workbench and other tools to operate the data need to record audit logs.
- Filter out system-level write operations, such as those recorded by the IoTDB monitoring system itself.
-#### Scene Description
+### Scene Description
-##### Logging all operations (add, delete, change, check) of all users
+#### Logging all operations (add, delete, change, check) of all users
The audit log function traces all user operations in the database. The information recorded should include data operations (add, delete, query) and metadata operations (add, modify, delete, query), client login information (user name, ip address).
@@ -90,11 +39,11 @@ Client Sources:

-##### Audit logging can be turned off for some user connections
+#### Audit logging can be turned off for some user connections
No audit logs are required for data written by the hardware collector via Session/JDBC/MQTT if it is a non-human action.
-### Function Definition
+## Function Definition
It is available through through configurations:
@@ -108,7 +57,7 @@ It is available through through configurations:
2. data and metadata query operations
3. metadata class adding, modifying, and deleting operations.
-#### configuration item
+### configuration item
In iotdb-system.properties, change the following configurations:
diff --git a/src/UserGuide/Master/User-Manual/Authority-Management.md b/src/UserGuide/Master/Tree/User-Manual/Authority-Management.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Authority-Management.md
rename to src/UserGuide/Master/Tree/User-Manual/Authority-Management.md
diff --git a/src/UserGuide/Master/User-Manual/Data-Sync_apache.md b/src/UserGuide/Master/Tree/User-Manual/Data-Sync_apache.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Data-Sync_apache.md
rename to src/UserGuide/Master/Tree/User-Manual/Data-Sync_apache.md
diff --git a/src/UserGuide/Master/User-Manual/Data-Sync_timecho.md b/src/UserGuide/Master/Tree/User-Manual/Data-Sync_timecho.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Data-Sync_timecho.md
rename to src/UserGuide/Master/Tree/User-Manual/Data-Sync_timecho.md
diff --git a/src/UserGuide/Master/User-Manual/Data-subscription.md b/src/UserGuide/Master/Tree/User-Manual/Data-subscription.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Data-subscription.md
rename to src/UserGuide/Master/Tree/User-Manual/Data-subscription.md
diff --git a/src/UserGuide/Master/User-Manual/Database-Programming.md b/src/UserGuide/Master/Tree/User-Manual/Database-Programming.md
similarity index 64%
rename from src/UserGuide/Master/User-Manual/Database-Programming.md
rename to src/UserGuide/Master/Tree/User-Manual/Database-Programming.md
index 9367c865e..940ee444f 100644
--- a/src/UserGuide/Master/User-Manual/Database-Programming.md
+++ b/src/UserGuide/Master/Tree/User-Manual/Database-Programming.md
@@ -21,452 +21,6 @@
# Database Programming
-## TRIGGER
-
-### Instructions
-
-The trigger provides a mechanism for listening to changes in time series data. With user-defined logic, tasks such as alerting and data forwarding can be conducted.
-
-The trigger is implemented based on the reflection mechanism. Users can monitor data changes by implementing the Java interfaces. IoTDB allows users to dynamically register and drop triggers without restarting the server.
-
-The document will help you learn to define and manage triggers.
-
-#### Pattern for Listening
-
-A single trigger can be used to listen for data changes in a time series that match a specific pattern. For example, a trigger can listen for the data changes of time series `root.sg.a`, or time series that match the pattern `root.sg.*`. When you register a trigger, you can specify the path pattern that the trigger listens on through an SQL statement.
-
-#### Trigger Type
-
-There are currently two types of triggers, and you can specify the type through an SQL statement when registering a trigger:
-
-- Stateful triggers: The execution logic of this type of trigger may depend on data from multiple insertion statement . The framework will aggregate the data written by different nodes into the same trigger instance for calculation to retain context information. This type of trigger is usually used for sampling or statistical data aggregation for a period of time. information. Only one node in the cluster holds an instance of a stateful trigger.
-- Stateless triggers: The execution logic of the trigger is only related to the current input data. The framework does not need to aggregate the data of different nodes into the same trigger instance. This type of trigger is usually used for calculation of single row data and abnormal detection. Each node in the cluster holds an instance of a stateless trigger.
-
-#### Trigger Event
-
-There are currently two trigger events for the trigger, and other trigger events will be expanded in the future. When you register a trigger, you can specify the trigger event through an SQL statement:
-
-- BEFORE INSERT: Fires before the data is persisted. **Please note that currently the trigger does not support data cleaning and will not change the data to be persisted itself.**
-- AFTER INSERT: Fires after the data is persisted.
-
-### How to Implement a Trigger
-
-You need to implement the trigger by writing a Java class, where the dependency shown below is required. If you use [Maven](http://search.maven.org/), you can search for them directly from the [Maven repository](http://search.maven.org/).
-
-#### Dependency
-
-```xml
-
- org.apache.iotdb
- iotdb-server
- 1.0.0
- provided
-
-```
-
-Note that the dependency version should be correspondent to the target server version.
-
-#### Interface Description
-
-To implement a trigger, you need to implement the `org.apache.iotdb.trigger.api.Trigger` class.
-
-```java
-import org.apache.iotdb.trigger.api.enums.FailureStrategy;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-
-public interface Trigger {
-
- /**
- * This method is mainly used to validate {@link TriggerAttributes} before calling {@link
- * Trigger#onCreate(TriggerAttributes)}.
- *
- * @param attributes TriggerAttributes
- * @throws Exception e
- */
- default void validate(TriggerAttributes attributes) throws Exception {}
-
- /**
- * This method will be called when creating a trigger after validation.
- *
- * @param attributes TriggerAttributes
- * @throws Exception e
- */
- default void onCreate(TriggerAttributes attributes) throws Exception {}
-
- /**
- * This method will be called when dropping a trigger.
- *
- * @throws Exception e
- */
- default void onDrop() throws Exception {}
-
- /**
- * When restarting a DataNode, Triggers that have been registered will be restored and this method
- * will be called during the process of restoring.
- *
- * @throws Exception e
- */
- default void restore() throws Exception {}
-
- /**
- * Overrides this method to set the expected FailureStrategy, {@link FailureStrategy#OPTIMISTIC}
- * is the default strategy.
- *
- * @return {@link FailureStrategy}
- */
- default FailureStrategy getFailureStrategy() {
- return FailureStrategy.OPTIMISTIC;
- }
-
- /**
- * @param tablet see {@link Tablet} for detailed information of data structure. Data that is
- * inserted will be constructed as a Tablet and you can define process logic with {@link
- * Tablet}.
- * @return true if successfully fired
- * @throws Exception e
- */
- default boolean fire(Tablet tablet) throws Exception {
- return true;
- }
-}
-```
-
-This class provides two types of programming interfaces: **Lifecycle related interfaces** and **data change listening related interfaces**. All the interfaces in this class are not required to be implemented. When the interfaces are not implemented, the trigger will not respond to the data changes. You can implement only some of these interfaces according to your needs.
-
-Descriptions of the interfaces are as followed.
-
-##### Lifecycle Related Interfaces
-
-| Interface | Description |
-| ------------------------------------------------------------ | ------------------------------------------------------------ |
-| *default void validate(TriggerAttributes attributes) throws Exception {}* | When you creates a trigger using the `CREATE TRIGGER` statement, you can specify the parameters that the trigger needs to use, and this interface will be used to verify the correctness of the parameters。 |
-| *default void onCreate(TriggerAttributes attributes) throws Exception {}* | This interface is called once when you create a trigger using the `CREATE TRIGGER` statement. During the lifetime of each trigger instance, this interface will be called only once. This interface is mainly used for the following functions: helping users to parse custom attributes in SQL statements (using `TriggerAttributes`). You can create or apply for resources, such as establishing external links, opening files, etc. |
-| *default void onDrop() throws Exception {}* | This interface is called when you drop a trigger using the `DROP TRIGGER` statement. During the lifetime of each trigger instance, this interface will be called only once. This interface mainly has the following functions: it can perform the operation of resource release and can be used to persist the results of trigger calculations. |
-| *default void restore() throws Exception {}* | When the DataNode is restarted, the cluster will restore the trigger instance registered on the DataNode, and this interface will be called once for stateful trigger during the process. After the DataNode where the stateful trigger instance is located goes down, the cluster will restore the trigger instance on another available DataNode, calling this interface once in the process. This interface can be used to customize recovery logic. |
-
-##### Data Change Listening Related Interfaces
-
-###### Listening Interface
-
-```java
-/**
- * @param tablet see {@link Tablet} for detailed information of data structure. Data that is
- * inserted will be constructed as a Tablet and you can define process logic with {@link
- * Tablet}.
- * @return true if successfully fired
- * @throws Exception e
- */
- default boolean fire(Tablet tablet) throws Exception {
- return true;
- }
-```
-
-When the data changes, the trigger uses the Tablet as the unit of firing operation. You can obtain the metadata and data of the corresponding sequence through Tablet, and then perform the corresponding trigger operation. If the fire process is successful, the return value should be true. If the interface returns false or throws an exception, we consider the trigger fire process as failed. When the trigger fire process fails, we will perform corresponding operations according to the listening strategy interface.
-
-When performing an INSERT operation, for each time series in it, we will detect whether there is a trigger that listens to the path pattern, and then assemble the time series data that matches the path pattern listened by the same trigger into a new Tablet for trigger fire interface. Can be understood as:
-
-```java
-Map> pathToTriggerListMap => Map
-```
-
-**Note that currently we do not make any guarantees about the order in which triggers fire.**
-
-Here is an example:
-
-Suppose there are three triggers, and the trigger event of the triggers are all BEFORE INSERT:
-
-- Trigger1 listens on `root.sg.*`
-- Trigger2 listens on `root.sg.a`
-- Trigger3 listens on `root.sg.b`
-
-Insertion statement:
-
-```sql
-insert into root.sg(time, a, b) values (1, 1, 1);
-```
-
-The time series `root.sg.a` matches Trigger1 and Trigger2, and the sequence `root.sg.b` matches Trigger1 and Trigger3, then:
-
-- The data of `root.sg.a` and `root.sg.b` will be assembled into a new tablet1, and Trigger1.fire(tablet1) will be executed at the corresponding Trigger Event.
-- The data of `root.sg.a` will be assembled into a new tablet2, and Trigger2.fire(tablet2) will be executed at the corresponding Trigger Event.
-- The data of `root.sg.b` will be assembled into a new tablet3, and Trigger3.fire(tablet3) will be executed at the corresponding Trigger Event.
-
-###### Listening Strategy Interface
-
-When the trigger fails to fire, we will take corresponding actions according to the strategy set by the listening strategy interface. You can set `org.apache.iotdb.trigger.api.enums.FailureStrategy`. There are currently two strategies, optimistic and pessimistic:
-
-- Optimistic strategy: The trigger that fails to fire does not affect the firing of subsequent triggers, nor does it affect the writing process, that is, we do not perform additional processing on the sequence involved in the trigger failure, only log the failure to record the failure, and finally inform user that data insertion is successful, but the trigger fire part failed.
-- Pessimistic strategy: The failure trigger affects the processing of all subsequent Pipelines, that is, we believe that the firing failure of the trigger will cause all subsequent triggering processes to no longer be carried out. If the trigger event of the trigger is BEFORE INSERT, then the insertion will no longer be performed, and the insertion failure will be returned directly.
-
-```java
- /**
- * Overrides this method to set the expected FailureStrategy, {@link FailureStrategy#OPTIMISTIC}
- * is the default strategy.
- *
- * @return {@link FailureStrategy}
- */
- default FailureStrategy getFailureStrategy() {
- return FailureStrategy.OPTIMISTIC;
- }
-```
-
-#### Example
-
-If you use [Maven](http://search.maven.org/), you can refer to our sample project **trigger-example**.
-
-You can find it [here](https://github.com/apache/iotdb/tree/master/example/trigger).
-
-Here is the code from one of the sample projects:
-
-```java
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.trigger;
-
-import org.apache.iotdb.db.storageengine.trigger.sink.alertmanager.AlertManagerConfiguration;
-import org.apache.iotdb.db.storageengine.trigger.sink.alertmanager.AlertManagerEvent;
-import org.apache.iotdb.db.storageengine.trigger.sink.alertmanager.AlertManagerHandler;
-import org.apache.iotdb.trigger.api.Trigger;
-import org.apache.iotdb.trigger.api.TriggerAttributes;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-
-public class ClusterAlertingExample implements Trigger {
- private static final Logger LOGGER = LoggerFactory.getLogger(ClusterAlertingExample.class);
-
- private final AlertManagerHandler alertManagerHandler = new AlertManagerHandler();
-
- private final AlertManagerConfiguration alertManagerConfiguration =
- new AlertManagerConfiguration("http://127.0.0.1:9093/api/v2/alerts");
-
- private String alertname;
-
- private final HashMap labels = new HashMap<>();
-
- private final HashMap annotations = new HashMap<>();
-
- @Override
- public void onCreate(TriggerAttributes attributes) throws Exception {
- alertname = "alert_test";
-
- labels.put("series", "root.ln.wf01.wt01.temperature");
- labels.put("value", "");
- labels.put("severity", "");
-
- annotations.put("summary", "high temperature");
- annotations.put("description", "{{.alertname}}: {{.series}} is {{.value}}");
-
- alertManagerHandler.open(alertManagerConfiguration);
- }
-
- @Override
- public void onDrop() throws IOException {
- alertManagerHandler.close();
- }
-
- @Override
- public boolean fire(Tablet tablet) throws Exception {
- List measurementSchemaList = tablet.getSchemas();
- for (int i = 0, n = measurementSchemaList.size(); i < n; i++) {
- if (measurementSchemaList.get(i).getType().equals(TSDataType.DOUBLE)) {
- // for example, we only deal with the columns of Double type
- double[] values = (double[]) tablet.values[i];
- for (double value : values) {
- if (value > 100.0) {
- LOGGER.info("trigger value > 100");
- labels.put("value", String.valueOf(value));
- labels.put("severity", "critical");
- AlertManagerEvent alertManagerEvent =
- new AlertManagerEvent(alertname, labels, annotations);
- alertManagerHandler.onEvent(alertManagerEvent);
- } else if (value > 50.0) {
- LOGGER.info("trigger value > 50");
- labels.put("value", String.valueOf(value));
- labels.put("severity", "warning");
- AlertManagerEvent alertManagerEvent =
- new AlertManagerEvent(alertname, labels, annotations);
- alertManagerHandler.onEvent(alertManagerEvent);
- }
- }
- }
- }
- return true;
- }
-}
-```
-
-### Trigger Management
-
-You can create and drop a trigger through an SQL statement, and you can also query all registered triggers through an SQL statement.
-
-**We recommend that you stop insertion while creating triggers.**
-
-#### Create Trigger
-
-Triggers can be registered on arbitrary path patterns. The time series registered with the trigger will be listened to by the trigger. When there is data change on the series, the corresponding fire method in the trigger will be called.
-
-Registering a trigger can be done as follows:
-
-1. Implement a Trigger class as described in the How to implement a Trigger chapter, assuming the class's full class name is `org.apache.iotdb.trigger.ClusterAlertingExample`
-2. Package the project into a JAR package.
-3. Register the trigger with an SQL statement. During the creation process, the `validate` and `onCreate` interfaces of the trigger will only be called once. For details, please refer to the chapter of How to implement a Trigger.
-
-The complete SQL syntax is as follows:
-
-```sql
-// Create Trigger
-createTrigger
- : CREATE triggerType TRIGGER triggerName=identifier triggerEventClause ON pathPattern AS className=STRING_LITERAL uriClause? triggerAttributeClause?
- ;
-
-triggerType
- : STATELESS | STATEFUL
- ;
-
-triggerEventClause
- : (BEFORE | AFTER) INSERT
- ;
-
-uriClause
- : USING URI uri
- ;
-
-uri
- : STRING_LITERAL
- ;
-
-triggerAttributeClause
- : WITH LR_BRACKET triggerAttribute (COMMA triggerAttribute)* RR_BRACKET
- ;
-
-triggerAttribute
- : key=attributeKey operator_eq value=attributeValue
- ;
-```
-
-Below is the explanation for the SQL syntax:
-
-- triggerName: The trigger ID, which is globally unique and used to distinguish different triggers, is case-sensitive.
-- triggerType: Trigger types are divided into two categories, STATELESS and STATEFUL.
-- triggerEventClause: when the trigger fires, BEFORE INSERT and AFTER INSERT are supported now.
-- pathPattern:The path pattern the trigger listens on, can contain wildcards * and **.
-- className:The class name of the Trigger class.
-- jarLocation: Optional. When this option is not specified, by default, we consider that the DBA has placed the JAR package required to create the trigger in the trigger_root_dir directory (configuration item, default is IOTDB_HOME/ext/trigger) of each DataNode node. When this option is specified, we will download and distribute the file resource corresponding to the URI to the trigger_root_dir/install directory of each DataNode.
-- triggerAttributeClause: It is used to specify the parameters that need to be set when the trigger instance is created. This part is optional in the SQL syntax.
-
-Here is an example SQL statement to help you understand:
-
-```sql
-CREATE STATELESS TRIGGER triggerTest
-BEFORE INSERT
-ON root.sg.**
-AS 'org.apache.iotdb.trigger.ClusterAlertingExample'
-USING URI '/jar/ClusterAlertingExample.jar'
-WITH (
- "name" = "trigger",
- "limit" = "100"
-)
-```
-
-The above SQL statement creates a trigger named triggerTest:
-
-- The trigger is stateless.
-- Fires before insertion.
-- Listens on path pattern root\.sg.**
-- The implemented trigger class is named `org.apache.iotdb.trigger.ClusterAlertingExample`
-- The JAR package URI is http://jar/ClusterAlertingExample.jar
-- When creating the trigger instance, two parameters, name and limit, are passed in.
-
-#### Drop Trigger
-
-The trigger can be dropped by specifying the trigger ID. During the process of dropping the trigger, the `onDrop` interface of the trigger will be called only once.
-
-The SQL syntax is:
-
-```sql
-// Drop Trigger
-dropTrigger
- : DROP TRIGGER triggerName=identifier
-;
-```
-
-Here is an example statement:
-
-```sql
-DROP TRIGGER triggerTest1
-```
-
-The above statement will drop the trigger with ID triggerTest1.
-
-#### Show Trigger
-
-You can query information about triggers that exist in the cluster through an SQL statement.
-
-The SQL syntax is as follows:
-
-```sql
-SHOW TRIGGERS
-```
-
-The result set format of this statement is as follows:
-
-| TriggerName | Event | Type | State | PathPattern | ClassName | NodeId |
-| ------------ | ---------------------------- | -------------------- | ------------------------------------------- | ----------- | --------------------------------------- | --------------------------------------- |
-| triggerTest1 | BEFORE_INSERT / AFTER_INSERT | STATELESS / STATEFUL | INACTIVE / ACTIVE / DROPPING / TRANSFFERING | root.** | org.apache.iotdb.trigger.TriggerExample | ALL(STATELESS) / DATA_NODE_ID(STATEFUL) |
-
-#### Trigger State
-
-During the process of creating and dropping triggers in the cluster, we maintain the states of the triggers. The following is a description of these states:
-
-| State | Description | Is it recommended to insert data? |
-| ------------ | ------------------------------------------------------------ | --------------------------------- |
-| INACTIVE | The intermediate state of executing `CREATE TRIGGER`, the cluster has just recorded the trigger information on the ConfigNode, and the trigger has not been activated on any DataNode. | NO |
-| ACTIVE | Status after successful execution of `CREATE TRIGGE`, the trigger is available on all DataNodes in the cluster. | YES |
-| DROPPING | Intermediate state of executing `DROP TRIGGER`, the cluster is in the process of dropping the trigger. | NO |
-| TRANSFERRING | The cluster is migrating the location of this trigger instance. | NO |
-
-### Notes
-
-- The trigger takes effect from the time of registration, and does not process the existing historical data. **That is, only insertion requests that occur after the trigger is successfully registered will be listened to by the trigger. **
-- The fire process of trigger is synchronous currently, so you need to ensure the efficiency of the trigger, otherwise the writing performance may be greatly affected. **You need to guarantee concurrency safety of triggers yourself**.
-- Please do no register too many triggers in the cluster. Because the trigger information is fully stored in the ConfigNode, and there is a copy of the information in all DataNodes
-- **It is recommended to stop writing when registering triggers**. Registering a trigger is not an atomic operation. When registering a trigger, there will be an intermediate state in which some nodes in the cluster have registered the trigger, and some nodes have not yet registered successfully. To avoid write requests on some nodes being listened to by triggers and not being listened to on some nodes, we recommend not to perform writes when registering triggers.
-- When the node holding the stateful trigger instance goes down, we will try to restore the corresponding instance on another node. During the recovery process, we will call the restore interface of the trigger class once.
-- The trigger JAR package has a size limit, which must be less than min(`config_node_ratis_log_appender_buffer_size_max`, 2G), where `config_node_ratis_log_appender_buffer_size_max` is a configuration item. For the specific meaning, please refer to the IOTDB configuration item description.
-- **It is better not to have classes with the same full class name but different function implementations in different JAR packages.** For example, trigger1 and trigger2 correspond to resources trigger1.jar and trigger2.jar respectively. If two JAR packages contain a `org.apache.iotdb.trigger.example.AlertListener` class, when `CREATE TRIGGER` uses this class, the system will randomly load the class in one of the JAR packages, which will eventually leads the inconsistent behavior of trigger and other issues.
-
-### Configuration Parameters
-
-| Parameter | Meaning |
-| ------------------------------------------------- | ------------------------------------------------------------ |
-| *trigger_lib_dir* | Directory to save the trigger jar package |
-| *stateful\_trigger\_retry\_num\_when\_not\_found* | How many times will we retry to found an instance of stateful trigger on DataNodes if not found |
-
## CONTINUOUS QUERY (CQ)
### Introduction
diff --git a/src/UserGuide/Master/User-Manual/IoTDB-View_timecho.md b/src/UserGuide/Master/Tree/User-Manual/IoTDB-View_timecho.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/IoTDB-View_timecho.md
rename to src/UserGuide/Master/Tree/User-Manual/IoTDB-View_timecho.md
diff --git a/src/UserGuide/Master/User-Manual/Maintennance.md b/src/UserGuide/Master/Tree/User-Manual/Maintennance.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Maintennance.md
rename to src/UserGuide/Master/Tree/User-Manual/Maintennance.md
diff --git a/src/UserGuide/Master/User-Manual/Streaming_apache.md b/src/UserGuide/Master/Tree/User-Manual/Streaming_apache.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Streaming_apache.md
rename to src/UserGuide/Master/Tree/User-Manual/Streaming_apache.md
diff --git a/src/UserGuide/Master/User-Manual/Streaming_timecho.md b/src/UserGuide/Master/Tree/User-Manual/Streaming_timecho.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Streaming_timecho.md
rename to src/UserGuide/Master/Tree/User-Manual/Streaming_timecho.md
diff --git a/src/UserGuide/Master/User-Manual/Syntax-Rule.md b/src/UserGuide/Master/Tree/User-Manual/Syntax-Rule.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Syntax-Rule.md
rename to src/UserGuide/Master/Tree/User-Manual/Syntax-Rule.md
diff --git a/src/UserGuide/Master/User-Manual/Tiered-Storage_timecho.md b/src/UserGuide/Master/Tree/User-Manual/Tiered-Storage_timecho.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Tiered-Storage_timecho.md
rename to src/UserGuide/Master/Tree/User-Manual/Tiered-Storage_timecho.md
diff --git a/src/UserGuide/Master/User-Manual/Trigger.md b/src/UserGuide/Master/Tree/User-Manual/Trigger.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/Trigger.md
rename to src/UserGuide/Master/Tree/User-Manual/Trigger.md
diff --git a/src/UserGuide/Master/Reference/UDF-development.md b/src/UserGuide/Master/Tree/User-Manual/UDF-development.md
similarity index 100%
rename from src/UserGuide/Master/Reference/UDF-development.md
rename to src/UserGuide/Master/Tree/User-Manual/UDF-development.md
diff --git a/src/UserGuide/Master/User-Manual/User-defined-function.md b/src/UserGuide/Master/Tree/User-Manual/User-defined-function.md
similarity index 100%
rename from src/UserGuide/Master/User-Manual/User-defined-function.md
rename to src/UserGuide/Master/Tree/User-Manual/User-defined-function.md
diff --git a/src/UserGuide/Master/Tree/User-Manual/White-List_timecho.md b/src/UserGuide/Master/Tree/User-Manual/White-List_timecho.md
new file mode 100644
index 000000000..75fe11866
--- /dev/null
+++ b/src/UserGuide/Master/Tree/User-Manual/White-List_timecho.md
@@ -0,0 +1,70 @@
+
+
+# White List
+
+**function description**
+
+Allow which client addresses can connect to IoTDB
+
+**configuration file**
+
+conf/iotdb-system.properties
+
+conf/white.list
+
+**configuration item**
+
+iotdb-system.properties:
+
+Decide whether to enable white list
+
+```YAML
+
+# Whether to enable white list
+enable_white_list=true
+```
+
+white.list:
+
+Decide which IP addresses can connect to IoTDB
+
+```YAML
+# Support for annotation
+# Supports precise matching, one IP per line
+10.2.3.4
+
+# Support for * wildcards, one ip per line
+10.*.1.3
+10.100.0.*
+```
+
+**note**
+
+1. If the white list itself is cancelled via the session client, the current connection is not immediately disconnected. It is rejected the next time the connection is created.
+2. If white.list is modified directly, it takes effect within one minute. If modified via the session client, it takes effect immediately, updating the values in memory and the white.list disk file.
+3. Enable the whitelist function, there is no white.list file, start the DB service successfully, however, all connections are rejected.
+4. while DB service is running, the white.list file is deleted, and all connections are denied after up to one minute.
+5. whether to enable the configuration of the white list function, can be hot loaded.
+6. Use the Java native interface to modify the whitelist, must be the root user to modify, reject non-root user to modify; modify the content must be legal, otherwise it will throw a StatementExecutionException.
+
+
+
diff --git a/src/UserGuide/Master/UserGuideReadme.md b/src/UserGuide/Master/Tree/UserGuideReadme.md
similarity index 100%
rename from src/UserGuide/Master/UserGuideReadme.md
rename to src/UserGuide/Master/Tree/UserGuideReadme.md
diff --git a/src/UserGuide/Master/stage/AINode_Deployment.md b/src/UserGuide/Master/Tree/stage/AINode_Deployment.md
similarity index 100%
rename from src/UserGuide/Master/stage/AINode_Deployment.md
rename to src/UserGuide/Master/Tree/stage/AINode_Deployment.md
diff --git a/src/UserGuide/Master/stage/Administration-Management/Administration.md b/src/UserGuide/Master/Tree/stage/Administration-Management/Administration.md
similarity index 100%
rename from src/UserGuide/Master/stage/Administration-Management/Administration.md
rename to src/UserGuide/Master/Tree/stage/Administration-Management/Administration.md
diff --git a/src/UserGuide/Master/IoTDB-Introduction/Architecture.md b/src/UserGuide/Master/Tree/stage/Architecture.md
similarity index 100%
rename from src/UserGuide/Master/IoTDB-Introduction/Architecture.md
rename to src/UserGuide/Master/Tree/stage/Architecture.md
diff --git a/src/UserGuide/Master/stage/Cluster-Deployment.md b/src/UserGuide/Master/Tree/stage/Cluster-Deployment.md
similarity index 100%
rename from src/UserGuide/Master/stage/Cluster-Deployment.md
rename to src/UserGuide/Master/Tree/stage/Cluster-Deployment.md
diff --git a/src/UserGuide/Master/stage/Cluster-Deployment_timecho.md b/src/UserGuide/Master/Tree/stage/Cluster-Deployment_timecho.md
similarity index 100%
rename from src/UserGuide/Master/stage/Cluster-Deployment_timecho.md
rename to src/UserGuide/Master/Tree/stage/Cluster-Deployment_timecho.md
diff --git a/src/UserGuide/Master/stage/Cluster/Cluster-Concept.md b/src/UserGuide/Master/Tree/stage/Cluster/Cluster-Concept.md
similarity index 100%
rename from src/UserGuide/Master/stage/Cluster/Cluster-Concept.md
rename to src/UserGuide/Master/Tree/stage/Cluster/Cluster-Concept.md
diff --git a/src/UserGuide/Master/stage/Cluster/Cluster-Maintenance.md b/src/UserGuide/Master/Tree/stage/Cluster/Cluster-Maintenance.md
similarity index 100%
rename from src/UserGuide/Master/stage/Cluster/Cluster-Maintenance.md
rename to src/UserGuide/Master/Tree/stage/Cluster/Cluster-Maintenance.md
diff --git a/src/UserGuide/Master/stage/Cluster/Cluster-Setup.md b/src/UserGuide/Master/Tree/stage/Cluster/Cluster-Setup.md
similarity index 100%
rename from src/UserGuide/Master/stage/Cluster/Cluster-Setup.md
rename to src/UserGuide/Master/Tree/stage/Cluster/Cluster-Setup.md
diff --git a/src/UserGuide/Master/stage/Cluster/Get-Installation-Package.md b/src/UserGuide/Master/Tree/stage/Cluster/Get-Installation-Package.md
similarity index 100%
rename from src/UserGuide/Master/stage/Cluster/Get-Installation-Package.md
rename to src/UserGuide/Master/Tree/stage/Cluster/Get-Installation-Package.md
diff --git a/src/UserGuide/Master/stage/ClusterQuickStart.md b/src/UserGuide/Master/Tree/stage/ClusterQuickStart.md
similarity index 100%
rename from src/UserGuide/Master/stage/ClusterQuickStart.md
rename to src/UserGuide/Master/Tree/stage/ClusterQuickStart.md
diff --git a/src/UserGuide/Master/stage/Command-Line-Interface.md b/src/UserGuide/Master/Tree/stage/Command-Line-Interface.md
similarity index 100%
rename from src/UserGuide/Master/stage/Command-Line-Interface.md
rename to src/UserGuide/Master/Tree/stage/Command-Line-Interface.md
diff --git a/src/UserGuide/Master/stage/Data-Import-Export-Tool.md b/src/UserGuide/Master/Tree/stage/Data-Import-Export-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Data-Import-Export-Tool.md
rename to src/UserGuide/Master/Tree/stage/Data-Import-Export-Tool.md
diff --git a/src/UserGuide/Master/stage/Data-Modeling/DataRegion.md b/src/UserGuide/Master/Tree/stage/Data-Modeling/DataRegion.md
similarity index 100%
rename from src/UserGuide/Master/stage/Data-Modeling/DataRegion.md
rename to src/UserGuide/Master/Tree/stage/Data-Modeling/DataRegion.md
diff --git a/src/UserGuide/Master/stage/Data-Modeling/SchemaRegion-rocksdb.md b/src/UserGuide/Master/Tree/stage/Data-Modeling/SchemaRegion-rocksdb.md
similarity index 100%
rename from src/UserGuide/Master/stage/Data-Modeling/SchemaRegion-rocksdb.md
rename to src/UserGuide/Master/Tree/stage/Data-Modeling/SchemaRegion-rocksdb.md
diff --git a/src/UserGuide/Master/stage/Deadband-Process.md b/src/UserGuide/Master/Tree/stage/Deadband-Process.md
similarity index 100%
rename from src/UserGuide/Master/stage/Deadband-Process.md
rename to src/UserGuide/Master/Tree/stage/Deadband-Process.md
diff --git a/src/UserGuide/Master/stage/Delete-Data/Delete-Data.md b/src/UserGuide/Master/Tree/stage/Delete-Data/Delete-Data.md
similarity index 100%
rename from src/UserGuide/Master/stage/Delete-Data/Delete-Data.md
rename to src/UserGuide/Master/Tree/stage/Delete-Data/Delete-Data.md
diff --git a/src/UserGuide/Master/stage/Delete-Data/TTL.md b/src/UserGuide/Master/Tree/stage/Delete-Data/TTL.md
similarity index 99%
rename from src/UserGuide/Master/stage/Delete-Data/TTL.md
rename to src/UserGuide/Master/Tree/stage/Delete-Data/TTL.md
index c45edf05b..d539a87c8 100644
--- a/src/UserGuide/Master/stage/Delete-Data/TTL.md
+++ b/src/UserGuide/Master/Tree/stage/Delete-Data/TTL.md
@@ -59,7 +59,7 @@ The SQL Statement for setting TTL is as follow:
set ttl to pathPattern 360000;
```
Set the Time to Live (TTL) to a pathPattern of 360,000 milliseconds; the pathPattern should not contain a wildcard (\*) in the middle and must end with a double asterisk (\*\*). The pathPattern is used to match corresponding devices.
-To maintain compatibility with older SQL syntax, if the user-provided pathPattern matches a database (db), the path pattern is automatically expanded to include all sub-paths denoted by path.\*\*.
+To maintain compatibility with older SQL syntax, if the user-provided pathPattern matches a database (db), the path pattern is automatically expanded to include all sub-paths denoted by path.\*\*.
For instance, writing "set ttl to root.sg 360000" will automatically be transformed into "set ttl to root.sg.\*\* 360000", which sets the TTL for all devices under root.sg. However, if the specified pathPattern does not match a database, the aforementioned logic will not apply. For example, writing "set ttl to root.sg.group 360000" will not be expanded to "root.sg.group.\*\*" since root.sg.group does not match a database.
It is also permissible to specify a particular device without a wildcard (*).
## Unset TTL
diff --git a/src/UserGuide/Master/stage/Deployment-Recommendation.md b/src/UserGuide/Master/Tree/stage/Deployment-Recommendation.md
similarity index 100%
rename from src/UserGuide/Master/stage/Deployment-Recommendation.md
rename to src/UserGuide/Master/Tree/stage/Deployment-Recommendation.md
diff --git a/src/UserGuide/Master/stage/Docker-Install.md b/src/UserGuide/Master/Tree/stage/Docker-Install.md
similarity index 100%
rename from src/UserGuide/Master/stage/Docker-Install.md
rename to src/UserGuide/Master/Tree/stage/Docker-Install.md
diff --git a/src/UserGuide/Master/stage/Edge-Cloud-Collaboration/Sync-Tool.md b/src/UserGuide/Master/Tree/stage/Edge-Cloud-Collaboration/Sync-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Edge-Cloud-Collaboration/Sync-Tool.md
rename to src/UserGuide/Master/Tree/stage/Edge-Cloud-Collaboration/Sync-Tool.md
diff --git a/src/UserGuide/Master/stage/Environmental-Requirement.md b/src/UserGuide/Master/Tree/stage/Environmental-Requirement.md
similarity index 100%
rename from src/UserGuide/Master/stage/Environmental-Requirement.md
rename to src/UserGuide/Master/Tree/stage/Environmental-Requirement.md
diff --git a/src/UserGuide/Master/IoTDB-Introduction/Features.md b/src/UserGuide/Master/Tree/stage/Features.md
similarity index 100%
rename from src/UserGuide/Master/IoTDB-Introduction/Features.md
rename to src/UserGuide/Master/Tree/stage/Features.md
diff --git a/src/UserGuide/Master/stage/Files.md b/src/UserGuide/Master/Tree/stage/Files.md
similarity index 100%
rename from src/UserGuide/Master/stage/Files.md
rename to src/UserGuide/Master/Tree/stage/Files.md
diff --git a/src/UserGuide/Master/stage/Flink-SQL-IoTDB.md b/src/UserGuide/Master/Tree/stage/Flink-SQL-IoTDB.md
similarity index 100%
rename from src/UserGuide/Master/stage/Flink-SQL-IoTDB.md
rename to src/UserGuide/Master/Tree/stage/Flink-SQL-IoTDB.md
diff --git a/src/UserGuide/Master/stage/General-SQL-Statements.md b/src/UserGuide/Master/Tree/stage/General-SQL-Statements.md
similarity index 100%
rename from src/UserGuide/Master/stage/General-SQL-Statements.md
rename to src/UserGuide/Master/Tree/stage/General-SQL-Statements.md
diff --git a/src/UserGuide/Master/stage/Integration-Test/Integration-Test-refactoring-tutorial.md b/src/UserGuide/Master/Tree/stage/Integration-Test/Integration-Test-refactoring-tutorial.md
similarity index 100%
rename from src/UserGuide/Master/stage/Integration-Test/Integration-Test-refactoring-tutorial.md
rename to src/UserGuide/Master/Tree/stage/Integration-Test/Integration-Test-refactoring-tutorial.md
diff --git a/src/UserGuide/Master/stage/Interface-Comparison.md b/src/UserGuide/Master/Tree/stage/Interface-Comparison.md
similarity index 100%
rename from src/UserGuide/Master/stage/Interface-Comparison.md
rename to src/UserGuide/Master/Tree/stage/Interface-Comparison.md
diff --git a/src/UserGuide/Master/stage/IoTDB-Data-Pipe_timecho.md b/src/UserGuide/Master/Tree/stage/IoTDB-Data-Pipe_timecho.md
similarity index 100%
rename from src/UserGuide/Master/stage/IoTDB-Data-Pipe_timecho.md
rename to src/UserGuide/Master/Tree/stage/IoTDB-Data-Pipe_timecho.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/CSV-Tool.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/CSV-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/CSV-Tool.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/CSV-Tool.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/IoTDB-Data-Dir-Overview-Tool.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/IoTDB-Data-Dir-Overview-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/IoTDB-Data-Dir-Overview-Tool.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/IoTDB-Data-Dir-Overview-Tool.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/JMX-Tool.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/JMX-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/JMX-Tool.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/JMX-Tool.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/Load-Tsfile.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/Load-Tsfile.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/Load-Tsfile.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/Load-Tsfile.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/Log-Tool.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/Log-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/Log-Tool.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/Log-Tool.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/MLogParser-Tool.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/MLogParser-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/MLogParser-Tool.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/MLogParser-Tool.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/Maintenance-Command.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/Maintenance-Command.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/Maintenance-Command.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/Maintenance-Command.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/Overlap-Validation-And-Repair-Tool.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/Overlap-Validation-And-Repair-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/Overlap-Validation-And-Repair-Tool.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/Overlap-Validation-And-Repair-Tool.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/SchemaFileSketch-Tool.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/SchemaFileSketch-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/SchemaFileSketch-Tool.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/SchemaFileSketch-Tool.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/TsFile-Load-Export-Tool.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Load-Export-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/TsFile-Load-Export-Tool.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Load-Export-Tool.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/TsFile-Resource-Sketch-Tool.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Resource-Sketch-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/TsFile-Resource-Sketch-Tool.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Resource-Sketch-Tool.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/TsFile-Settle-Tool.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Settle-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/TsFile-Settle-Tool.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Settle-Tool.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/TsFile-Sketch-Tool.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Sketch-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/TsFile-Sketch-Tool.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Sketch-Tool.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/TsFile-Split-Tool.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Split-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/TsFile-Split-Tool.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Split-Tool.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/TsFileSelfCheck-Tool.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFileSelfCheck-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/TsFileSelfCheck-Tool.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFileSelfCheck-Tool.md
diff --git a/src/UserGuide/Master/stage/Maintenance-Tools/Watermark-Tool.md b/src/UserGuide/Master/Tree/stage/Maintenance-Tools/Watermark-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Maintenance-Tools/Watermark-Tool.md
rename to src/UserGuide/Master/Tree/stage/Maintenance-Tools/Watermark-Tool.md
diff --git a/src/UserGuide/Master/stage/MapReduce-TsFile.md b/src/UserGuide/Master/Tree/stage/MapReduce-TsFile.md
similarity index 100%
rename from src/UserGuide/Master/stage/MapReduce-TsFile.md
rename to src/UserGuide/Master/Tree/stage/MapReduce-TsFile.md
diff --git a/src/UserGuide/Master/stage/Monitor-Alert/Alerting.md b/src/UserGuide/Master/Tree/stage/Monitor-Alert/Alerting.md
similarity index 100%
rename from src/UserGuide/Master/stage/Monitor-Alert/Alerting.md
rename to src/UserGuide/Master/Tree/stage/Monitor-Alert/Alerting.md
diff --git a/src/UserGuide/Master/stage/Monitor-Alert/Metric-Tool.md b/src/UserGuide/Master/Tree/stage/Monitor-Alert/Metric-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Monitor-Alert/Metric-Tool.md
rename to src/UserGuide/Master/Tree/stage/Monitor-Alert/Metric-Tool.md
diff --git a/src/UserGuide/Master/stage/Monitoring-Board-Install-and-Deploy.md b/src/UserGuide/Master/Tree/stage/Monitoring-Board-Install-and-Deploy.md
similarity index 100%
rename from src/UserGuide/Master/stage/Monitoring-Board-Install-and-Deploy.md
rename to src/UserGuide/Master/Tree/stage/Monitoring-Board-Install-and-Deploy.md
diff --git a/src/UserGuide/Master/stage/Operate-Metadata/Auto-Create-MetaData.md b/src/UserGuide/Master/Tree/stage/Operate-Metadata/Auto-Create-MetaData.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operate-Metadata/Auto-Create-MetaData.md
rename to src/UserGuide/Master/Tree/stage/Operate-Metadata/Auto-Create-MetaData.md
diff --git a/src/UserGuide/Master/stage/Operate-Metadata/Database.md b/src/UserGuide/Master/Tree/stage/Operate-Metadata/Database.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operate-Metadata/Database.md
rename to src/UserGuide/Master/Tree/stage/Operate-Metadata/Database.md
diff --git a/src/UserGuide/Master/stage/Operate-Metadata/Node.md b/src/UserGuide/Master/Tree/stage/Operate-Metadata/Node.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operate-Metadata/Node.md
rename to src/UserGuide/Master/Tree/stage/Operate-Metadata/Node.md
diff --git a/src/UserGuide/Master/stage/Operate-Metadata/Template.md b/src/UserGuide/Master/Tree/stage/Operate-Metadata/Template.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operate-Metadata/Template.md
rename to src/UserGuide/Master/Tree/stage/Operate-Metadata/Template.md
diff --git a/src/UserGuide/Master/stage/Operate-Metadata/Timeseries.md b/src/UserGuide/Master/Tree/stage/Operate-Metadata/Timeseries.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operate-Metadata/Timeseries.md
rename to src/UserGuide/Master/Tree/stage/Operate-Metadata/Timeseries.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Aggregation.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Aggregation.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Aggregation.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Aggregation.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Anomaly-Detection.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Anomaly-Detection.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Anomaly-Detection.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Anomaly-Detection.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Comparison.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Comparison.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Comparison.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Comparison.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Conditional.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Conditional.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Conditional.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Conditional.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Constant.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Constant.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Constant.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Constant.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Continuous-Interval.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Continuous-Interval.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Continuous-Interval.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Continuous-Interval.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Conversion.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Conversion.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Conversion.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Conversion.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Data-Matching.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Data-Matching.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Data-Matching.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Data-Matching.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Data-Profiling.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Data-Profiling.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Data-Profiling.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Data-Profiling.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Data-Quality.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Data-Quality.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Data-Quality.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Data-Quality.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Data-Repairing.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Data-Repairing.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Data-Repairing.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Data-Repairing.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Frequency-Domain.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Frequency-Domain.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Frequency-Domain.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Frequency-Domain.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Lambda.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Lambda.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Lambda.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Lambda.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Logical.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Logical.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Logical.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Logical.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Machine-Learning.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Machine-Learning.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Machine-Learning.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Machine-Learning.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Mathematical.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Mathematical.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Mathematical.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Mathematical.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Overview.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Overview.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Overview.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Overview.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Sample.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Sample.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Sample.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Sample.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Selection.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Selection.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Selection.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Selection.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Series-Discovery.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Series-Discovery.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Series-Discovery.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Series-Discovery.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/String.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/String.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/String.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/String.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Time-Series.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Time-Series.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Time-Series.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Time-Series.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/User-Defined-Function.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/User-Defined-Function.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/User-Defined-Function.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/User-Defined-Function.md
diff --git a/src/UserGuide/Master/stage/Operators-Functions/Variation-Trend.md b/src/UserGuide/Master/Tree/stage/Operators-Functions/Variation-Trend.md
similarity index 100%
rename from src/UserGuide/Master/stage/Operators-Functions/Variation-Trend.md
rename to src/UserGuide/Master/Tree/stage/Operators-Functions/Variation-Trend.md
diff --git a/src/UserGuide/Master/IoTDB-Introduction/Performance.md b/src/UserGuide/Master/Tree/stage/Performance.md
similarity index 100%
rename from src/UserGuide/Master/IoTDB-Introduction/Performance.md
rename to src/UserGuide/Master/Tree/stage/Performance.md
diff --git a/src/UserGuide/Master/stage/Programming-Thrift.md b/src/UserGuide/Master/Tree/stage/Programming-Thrift.md
similarity index 100%
rename from src/UserGuide/Master/stage/Programming-Thrift.md
rename to src/UserGuide/Master/Tree/stage/Programming-Thrift.md
diff --git a/src/UserGuide/Master/stage/Query-Data/Align-By.md b/src/UserGuide/Master/Tree/stage/Query-Data/Align-By.md
similarity index 100%
rename from src/UserGuide/Master/stage/Query-Data/Align-By.md
rename to src/UserGuide/Master/Tree/stage/Query-Data/Align-By.md
diff --git a/src/UserGuide/Master/stage/Query-Data/Continuous-Query.md b/src/UserGuide/Master/Tree/stage/Query-Data/Continuous-Query.md
similarity index 100%
rename from src/UserGuide/Master/stage/Query-Data/Continuous-Query.md
rename to src/UserGuide/Master/Tree/stage/Query-Data/Continuous-Query.md
diff --git a/src/UserGuide/Master/stage/Query-Data/Fill.md b/src/UserGuide/Master/Tree/stage/Query-Data/Fill.md
similarity index 100%
rename from src/UserGuide/Master/stage/Query-Data/Fill.md
rename to src/UserGuide/Master/Tree/stage/Query-Data/Fill.md
diff --git a/src/UserGuide/Master/stage/Query-Data/Group-By.md b/src/UserGuide/Master/Tree/stage/Query-Data/Group-By.md
similarity index 100%
rename from src/UserGuide/Master/stage/Query-Data/Group-By.md
rename to src/UserGuide/Master/Tree/stage/Query-Data/Group-By.md
diff --git a/src/UserGuide/Master/stage/Query-Data/Having-Condition.md b/src/UserGuide/Master/Tree/stage/Query-Data/Having-Condition.md
similarity index 100%
rename from src/UserGuide/Master/stage/Query-Data/Having-Condition.md
rename to src/UserGuide/Master/Tree/stage/Query-Data/Having-Condition.md
diff --git a/src/UserGuide/Master/stage/Query-Data/Last-Query.md b/src/UserGuide/Master/Tree/stage/Query-Data/Last-Query.md
similarity index 100%
rename from src/UserGuide/Master/stage/Query-Data/Last-Query.md
rename to src/UserGuide/Master/Tree/stage/Query-Data/Last-Query.md
diff --git a/src/UserGuide/Master/stage/Query-Data/Order-By.md b/src/UserGuide/Master/Tree/stage/Query-Data/Order-By.md
similarity index 100%
rename from src/UserGuide/Master/stage/Query-Data/Order-By.md
rename to src/UserGuide/Master/Tree/stage/Query-Data/Order-By.md
diff --git a/src/UserGuide/Master/stage/Query-Data/Overview.md b/src/UserGuide/Master/Tree/stage/Query-Data/Overview.md
similarity index 100%
rename from src/UserGuide/Master/stage/Query-Data/Overview.md
rename to src/UserGuide/Master/Tree/stage/Query-Data/Overview.md
diff --git a/src/UserGuide/Master/stage/Query-Data/Pagination.md b/src/UserGuide/Master/Tree/stage/Query-Data/Pagination.md
similarity index 100%
rename from src/UserGuide/Master/stage/Query-Data/Pagination.md
rename to src/UserGuide/Master/Tree/stage/Query-Data/Pagination.md
diff --git a/src/UserGuide/Master/stage/Query-Data/Select-Expression.md b/src/UserGuide/Master/Tree/stage/Query-Data/Select-Expression.md
similarity index 100%
rename from src/UserGuide/Master/stage/Query-Data/Select-Expression.md
rename to src/UserGuide/Master/Tree/stage/Query-Data/Select-Expression.md
diff --git a/src/UserGuide/Master/stage/Query-Data/Select-Into.md b/src/UserGuide/Master/Tree/stage/Query-Data/Select-Into.md
similarity index 100%
rename from src/UserGuide/Master/stage/Query-Data/Select-Into.md
rename to src/UserGuide/Master/Tree/stage/Query-Data/Select-Into.md
diff --git a/src/UserGuide/Master/stage/Query-Data/Where-Condition.md b/src/UserGuide/Master/Tree/stage/Query-Data/Where-Condition.md
similarity index 100%
rename from src/UserGuide/Master/stage/Query-Data/Where-Condition.md
rename to src/UserGuide/Master/Tree/stage/Query-Data/Where-Condition.md
diff --git a/src/UserGuide/Master/stage/QuickStart.md b/src/UserGuide/Master/Tree/stage/QuickStart.md
similarity index 100%
rename from src/UserGuide/Master/stage/QuickStart.md
rename to src/UserGuide/Master/Tree/stage/QuickStart.md
diff --git a/src/UserGuide/Master/stage/SQL-Reference.md b/src/UserGuide/Master/Tree/stage/SQL-Reference.md
similarity index 100%
rename from src/UserGuide/Master/stage/SQL-Reference.md
rename to src/UserGuide/Master/Tree/stage/SQL-Reference.md
diff --git a/src/UserGuide/Master/stage/Schema-Template.md b/src/UserGuide/Master/Tree/stage/Schema-Template.md
similarity index 100%
rename from src/UserGuide/Master/stage/Schema-Template.md
rename to src/UserGuide/Master/Tree/stage/Schema-Template.md
diff --git a/src/UserGuide/Master/stage/Security-Management_apache.md b/src/UserGuide/Master/Tree/stage/Security-Management_apache.md
similarity index 100%
rename from src/UserGuide/Master/stage/Security-Management_apache.md
rename to src/UserGuide/Master/Tree/stage/Security-Management_apache.md
diff --git a/src/UserGuide/Master/stage/Security-Management_timecho.md b/src/UserGuide/Master/Tree/stage/Security-Management_timecho.md
similarity index 100%
rename from src/UserGuide/Master/stage/Security-Management_timecho.md
rename to src/UserGuide/Master/Tree/stage/Security-Management_timecho.md
diff --git a/src/UserGuide/Master/stage/ServerFileList.md b/src/UserGuide/Master/Tree/stage/ServerFileList.md
similarity index 100%
rename from src/UserGuide/Master/stage/ServerFileList.md
rename to src/UserGuide/Master/Tree/stage/ServerFileList.md
diff --git a/src/UserGuide/Master/stage/Syntax-Conventions/Detailed-Grammar.md b/src/UserGuide/Master/Tree/stage/Syntax-Conventions/Detailed-Grammar.md
similarity index 100%
rename from src/UserGuide/Master/stage/Syntax-Conventions/Detailed-Grammar.md
rename to src/UserGuide/Master/Tree/stage/Syntax-Conventions/Detailed-Grammar.md
diff --git a/src/UserGuide/Master/stage/Syntax-Conventions/Identifier.md b/src/UserGuide/Master/Tree/stage/Syntax-Conventions/Identifier.md
similarity index 100%
rename from src/UserGuide/Master/stage/Syntax-Conventions/Identifier.md
rename to src/UserGuide/Master/Tree/stage/Syntax-Conventions/Identifier.md
diff --git a/src/UserGuide/Master/stage/Syntax-Conventions/KeyValue-Pair.md b/src/UserGuide/Master/Tree/stage/Syntax-Conventions/KeyValue-Pair.md
similarity index 100%
rename from src/UserGuide/Master/stage/Syntax-Conventions/KeyValue-Pair.md
rename to src/UserGuide/Master/Tree/stage/Syntax-Conventions/KeyValue-Pair.md
diff --git a/src/UserGuide/Master/stage/Syntax-Conventions/Keywords-And-Reserved-Words.md b/src/UserGuide/Master/Tree/stage/Syntax-Conventions/Keywords-And-Reserved-Words.md
similarity index 100%
rename from src/UserGuide/Master/stage/Syntax-Conventions/Keywords-And-Reserved-Words.md
rename to src/UserGuide/Master/Tree/stage/Syntax-Conventions/Keywords-And-Reserved-Words.md
diff --git a/src/UserGuide/Master/stage/Syntax-Conventions/Literal-Values.md b/src/UserGuide/Master/Tree/stage/Syntax-Conventions/Literal-Values.md
similarity index 100%
rename from src/UserGuide/Master/stage/Syntax-Conventions/Literal-Values.md
rename to src/UserGuide/Master/Tree/stage/Syntax-Conventions/Literal-Values.md
diff --git a/src/UserGuide/Master/stage/Syntax-Conventions/NodeName-In-Path.md b/src/UserGuide/Master/Tree/stage/Syntax-Conventions/NodeName-In-Path.md
similarity index 100%
rename from src/UserGuide/Master/stage/Syntax-Conventions/NodeName-In-Path.md
rename to src/UserGuide/Master/Tree/stage/Syntax-Conventions/NodeName-In-Path.md
diff --git a/src/UserGuide/Master/stage/Syntax-Conventions/Session-And-TsFile-API.md b/src/UserGuide/Master/Tree/stage/Syntax-Conventions/Session-And-TsFile-API.md
similarity index 100%
rename from src/UserGuide/Master/stage/Syntax-Conventions/Session-And-TsFile-API.md
rename to src/UserGuide/Master/Tree/stage/Syntax-Conventions/Session-And-TsFile-API.md
diff --git a/src/UserGuide/Master/stage/TSDB-Comparison.md b/src/UserGuide/Master/Tree/stage/TSDB-Comparison.md
similarity index 100%
rename from src/UserGuide/Master/stage/TSDB-Comparison.md
rename to src/UserGuide/Master/Tree/stage/TSDB-Comparison.md
diff --git a/src/UserGuide/Master/stage/Time-Partition.md b/src/UserGuide/Master/Tree/stage/Time-Partition.md
similarity index 100%
rename from src/UserGuide/Master/stage/Time-Partition.md
rename to src/UserGuide/Master/Tree/stage/Time-Partition.md
diff --git a/src/UserGuide/Master/stage/Time-zone.md b/src/UserGuide/Master/Tree/stage/Time-zone.md
similarity index 100%
rename from src/UserGuide/Master/stage/Time-zone.md
rename to src/UserGuide/Master/Tree/stage/Time-zone.md
diff --git a/src/UserGuide/Master/stage/Trigger/Configuration-Parameters.md b/src/UserGuide/Master/Tree/stage/Trigger/Configuration-Parameters.md
similarity index 100%
rename from src/UserGuide/Master/stage/Trigger/Configuration-Parameters.md
rename to src/UserGuide/Master/Tree/stage/Trigger/Configuration-Parameters.md
diff --git a/src/UserGuide/Master/stage/Trigger/Implement-Trigger.md b/src/UserGuide/Master/Tree/stage/Trigger/Implement-Trigger.md
similarity index 100%
rename from src/UserGuide/Master/stage/Trigger/Implement-Trigger.md
rename to src/UserGuide/Master/Tree/stage/Trigger/Implement-Trigger.md
diff --git a/src/UserGuide/Master/stage/Trigger/Instructions.md b/src/UserGuide/Master/Tree/stage/Trigger/Instructions.md
similarity index 100%
rename from src/UserGuide/Master/stage/Trigger/Instructions.md
rename to src/UserGuide/Master/Tree/stage/Trigger/Instructions.md
diff --git a/src/UserGuide/Master/stage/Trigger/Notes.md b/src/UserGuide/Master/Tree/stage/Trigger/Notes.md
similarity index 100%
rename from src/UserGuide/Master/stage/Trigger/Notes.md
rename to src/UserGuide/Master/Tree/stage/Trigger/Notes.md
diff --git a/src/UserGuide/Master/stage/Trigger/Trigger-Management.md b/src/UserGuide/Master/Tree/stage/Trigger/Trigger-Management.md
similarity index 100%
rename from src/UserGuide/Master/stage/Trigger/Trigger-Management.md
rename to src/UserGuide/Master/Tree/stage/Trigger/Trigger-Management.md
diff --git a/src/UserGuide/Master/stage/TsFile-Import-Export-Tool.md b/src/UserGuide/Master/Tree/stage/TsFile-Import-Export-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/TsFile-Import-Export-Tool.md
rename to src/UserGuide/Master/Tree/stage/TsFile-Import-Export-Tool.md
diff --git a/src/UserGuide/Master/stage/WayToGetIoTDB.md b/src/UserGuide/Master/Tree/stage/WayToGetIoTDB.md
similarity index 100%
rename from src/UserGuide/Master/stage/WayToGetIoTDB.md
rename to src/UserGuide/Master/Tree/stage/WayToGetIoTDB.md
diff --git a/src/UserGuide/Master/stage/Write-Data/Batch-Load-Tool.md b/src/UserGuide/Master/Tree/stage/Write-Data/Batch-Load-Tool.md
similarity index 100%
rename from src/UserGuide/Master/stage/Write-Data/Batch-Load-Tool.md
rename to src/UserGuide/Master/Tree/stage/Write-Data/Batch-Load-Tool.md
diff --git a/src/UserGuide/Master/stage/Write-Data/MQTT.md b/src/UserGuide/Master/Tree/stage/Write-Data/MQTT.md
similarity index 100%
rename from src/UserGuide/Master/stage/Write-Data/MQTT.md
rename to src/UserGuide/Master/Tree/stage/Write-Data/MQTT.md
diff --git a/src/UserGuide/Master/stage/Write-Data/REST-API.md b/src/UserGuide/Master/Tree/stage/Write-Data/REST-API.md
similarity index 100%
rename from src/UserGuide/Master/stage/Write-Data/REST-API.md
rename to src/UserGuide/Master/Tree/stage/Write-Data/REST-API.md
diff --git a/src/UserGuide/Master/stage/Write-Data/Session.md b/src/UserGuide/Master/Tree/stage/Write-Data/Session.md
similarity index 100%
rename from src/UserGuide/Master/stage/Write-Data/Session.md
rename to src/UserGuide/Master/Tree/stage/Write-Data/Session.md
diff --git a/src/UserGuide/Master/stage/Write-Data/Write-Data.md b/src/UserGuide/Master/Tree/stage/Write-Data/Write-Data.md
similarity index 100%
rename from src/UserGuide/Master/stage/Write-Data/Write-Data.md
rename to src/UserGuide/Master/Tree/stage/Write-Data/Write-Data.md
diff --git a/src/UserGuide/Master/stage/Writing-Data-on-HDFS.md b/src/UserGuide/Master/Tree/stage/Writing-Data-on-HDFS.md
similarity index 100%
rename from src/UserGuide/Master/stage/Writing-Data-on-HDFS.md
rename to src/UserGuide/Master/Tree/stage/Writing-Data-on-HDFS.md
diff --git a/src/UserGuide/latest/User-Manual/Operate-Metadata_apache.md b/src/UserGuide/latest/Basic-Concept/Operate-Metadata_apache.md
similarity index 100%
rename from src/UserGuide/latest/User-Manual/Operate-Metadata_apache.md
rename to src/UserGuide/latest/Basic-Concept/Operate-Metadata_apache.md
diff --git a/src/UserGuide/latest/User-Manual/Operate-Metadata_timecho.md b/src/UserGuide/latest/Basic-Concept/Operate-Metadata_timecho.md
similarity index 100%
rename from src/UserGuide/latest/User-Manual/Operate-Metadata_timecho.md
rename to src/UserGuide/latest/Basic-Concept/Operate-Metadata_timecho.md
diff --git a/src/UserGuide/latest/User-Manual/Query-Data.md b/src/UserGuide/latest/Basic-Concept/Query-Data.md
similarity index 100%
rename from src/UserGuide/latest/User-Manual/Query-Data.md
rename to src/UserGuide/latest/Basic-Concept/Query-Data.md
diff --git a/src/UserGuide/latest/User-Manual/Write-Delete-Data.md b/src/UserGuide/latest/Basic-Concept/Write-Delete-Data.md
similarity index 100%
rename from src/UserGuide/latest/User-Manual/Write-Delete-Data.md
rename to src/UserGuide/latest/Basic-Concept/Write-Delete-Data.md
diff --git a/src/UserGuide/latest/Basic-Concept/Data-Type.md b/src/UserGuide/latest/Preparatory-knowledge/Data-Type.md
similarity index 100%
rename from src/UserGuide/latest/Basic-Concept/Data-Type.md
rename to src/UserGuide/latest/Preparatory-knowledge/Data-Type.md
diff --git a/src/UserGuide/latest/User-Manual/Operator-and-Expression.md b/src/UserGuide/latest/Reference/Operator-and-Expression.md
similarity index 100%
rename from src/UserGuide/latest/User-Manual/Operator-and-Expression.md
rename to src/UserGuide/latest/Reference/Operator-and-Expression.md
diff --git a/src/UserGuide/latest/Basic-Concept/Cluster-data-partitioning.md b/src/UserGuide/latest/Technical-Insider/Cluster-data-partitioning.md
similarity index 100%
rename from src/UserGuide/latest/Basic-Concept/Cluster-data-partitioning.md
rename to src/UserGuide/latest/Technical-Insider/Cluster-data-partitioning.md
diff --git a/src/UserGuide/latest/Basic-Concept/Encoding-and-Compression.md b/src/UserGuide/latest/Technical-Insider/Encoding-and-Compression.md
similarity index 100%
rename from src/UserGuide/latest/Basic-Concept/Encoding-and-Compression.md
rename to src/UserGuide/latest/Technical-Insider/Encoding-and-Compression.md
diff --git a/src/UserGuide/latest/IoTDB-Introduction/Publication.md b/src/UserGuide/latest/Technical-Insider/Publication.md
similarity index 100%
rename from src/UserGuide/latest/IoTDB-Introduction/Publication.md
rename to src/UserGuide/latest/Technical-Insider/Publication.md
diff --git a/src/UserGuide/latest/Tools-System/Maintenance-Tool_apache.md b/src/UserGuide/latest/Tools-System/Maintenance-Tool_apache.md
index 42c8cdef7..98b69f17c 100644
--- a/src/UserGuide/latest/Tools-System/Maintenance-Tool_apache.md
+++ b/src/UserGuide/latest/Tools-System/Maintenance-Tool_apache.md
@@ -18,7 +18,8 @@
under the License.
-->
-# Maintenance Tool
+# Cluster management tool
+
## IoTDB Data Directory Overview Tool
IoTDB data directory overview tool is used to print an overview of the IoTDB data directory structure. The location is tools/tsfile/print-iotdb-data-dir.
diff --git a/src/UserGuide/latest/Tools-System/Maintenance-Tool_timecho.md b/src/UserGuide/latest/Tools-System/Maintenance-Tool_timecho.md
index 0006f2a12..d77787934 100644
--- a/src/UserGuide/latest/Tools-System/Maintenance-Tool_timecho.md
+++ b/src/UserGuide/latest/Tools-System/Maintenance-Tool_timecho.md
@@ -18,7 +18,7 @@
under the License.
-->
-# Maintenance Tool
+# Cluster management tool
## IoTDB-OpsKit
diff --git a/src/UserGuide/latest/User-Manual/Security-Management_timecho.md b/src/UserGuide/latest/User-Manual/Audit-Log_timecho.md
similarity index 66%
rename from src/UserGuide/latest/User-Manual/Security-Management_timecho.md
rename to src/UserGuide/latest/User-Manual/Audit-Log_timecho.md
index 607c21d7b..741135b0d 100644
--- a/src/UserGuide/latest/User-Manual/Security-Management_timecho.md
+++ b/src/UserGuide/latest/User-Manual/Audit-Log_timecho.md
@@ -19,69 +19,18 @@
-->
-# Security Management
+# Audit log
-## White List
-
-**function description**
-
-Allow which client addresses can connect to IoTDB
-
-**configuration file**
-
-conf/iotdb-system.properties
-
-conf/white.list
-
-**configuration item**
-
-iotdb-system.properties:
-
-Decide whether to enable white list
-
-```YAML
-
-# Whether to enable white list
-enable_white_list=true
-```
-
-white.list:
-
-Decide which IP addresses can connect to IoTDB
-
-```YAML
-# Support for annotation
-# Supports precise matching, one IP per line
-10.2.3.4
-
-# Support for * wildcards, one ip per line
-10.*.1.3
-10.100.0.*
-```
-
-**note**
-
-1. If the white list itself is cancelled via the session client, the current connection is not immediately disconnected. It is rejected the next time the connection is created.
-2. If white.list is modified directly, it takes effect within one minute. If modified via the session client, it takes effect immediately, updating the values in memory and the white.list disk file.
-3. Enable the whitelist function, there is no white.list file, start the DB service successfully, however, all connections are rejected.
-4. while DB service is running, the white.list file is deleted, and all connections are denied after up to one minute.
-5. whether to enable the configuration of the white list function, can be hot loaded.
-6. Use the Java native interface to modify the whitelist, must be the root user to modify, reject non-root user to modify; modify the content must be legal, otherwise it will throw a StatementExecutionException.
-
-
-
-## Audit log
-
-### Background of the function
+## Background of the function
Audit log is the record credentials of a database, which can be queried by the audit log function to ensure information security by various operations such as user add, delete, change and check in the database. With the audit log function of IoTDB, the following scenarios can be achieved:
- We can decide whether to record audit logs according to the source of the link ( human operation or not), such as: non-human operation such as hardware collector write data no need to record audit logs, human operation such as ordinary users through cli, workbench and other tools to operate the data need to record audit logs.
- Filter out system-level write operations, such as those recorded by the IoTDB monitoring system itself.
-#### Scene Description
+### Scene Description
-##### Logging all operations (add, delete, change, check) of all users
+#### Logging all operations (add, delete, change, check) of all users
The audit log function traces all user operations in the database. The information recorded should include data operations (add, delete, query) and metadata operations (add, modify, delete, query), client login information (user name, ip address).
@@ -90,11 +39,11 @@ Client Sources:

-##### Audit logging can be turned off for some user connections
+#### Audit logging can be turned off for some user connections
No audit logs are required for data written by the hardware collector via Session/JDBC/MQTT if it is a non-human action.
-### Function Definition
+## Function Definition
It is available through through configurations:
@@ -108,7 +57,7 @@ It is available through through configurations:
2. data and metadata query operations
3. metadata class adding, modifying, and deleting operations.
-#### configuration item
+### configuration item
In iotdb-system.properties, change the following configurations:
diff --git a/src/UserGuide/latest/User-Manual/Database-Programming.md b/src/UserGuide/latest/User-Manual/Database-Programming.md
index 9367c865e..940ee444f 100644
--- a/src/UserGuide/latest/User-Manual/Database-Programming.md
+++ b/src/UserGuide/latest/User-Manual/Database-Programming.md
@@ -21,452 +21,6 @@
# Database Programming
-## TRIGGER
-
-### Instructions
-
-The trigger provides a mechanism for listening to changes in time series data. With user-defined logic, tasks such as alerting and data forwarding can be conducted.
-
-The trigger is implemented based on the reflection mechanism. Users can monitor data changes by implementing the Java interfaces. IoTDB allows users to dynamically register and drop triggers without restarting the server.
-
-The document will help you learn to define and manage triggers.
-
-#### Pattern for Listening
-
-A single trigger can be used to listen for data changes in a time series that match a specific pattern. For example, a trigger can listen for the data changes of time series `root.sg.a`, or time series that match the pattern `root.sg.*`. When you register a trigger, you can specify the path pattern that the trigger listens on through an SQL statement.
-
-#### Trigger Type
-
-There are currently two types of triggers, and you can specify the type through an SQL statement when registering a trigger:
-
-- Stateful triggers: The execution logic of this type of trigger may depend on data from multiple insertion statement . The framework will aggregate the data written by different nodes into the same trigger instance for calculation to retain context information. This type of trigger is usually used for sampling or statistical data aggregation for a period of time. information. Only one node in the cluster holds an instance of a stateful trigger.
-- Stateless triggers: The execution logic of the trigger is only related to the current input data. The framework does not need to aggregate the data of different nodes into the same trigger instance. This type of trigger is usually used for calculation of single row data and abnormal detection. Each node in the cluster holds an instance of a stateless trigger.
-
-#### Trigger Event
-
-There are currently two trigger events for the trigger, and other trigger events will be expanded in the future. When you register a trigger, you can specify the trigger event through an SQL statement:
-
-- BEFORE INSERT: Fires before the data is persisted. **Please note that currently the trigger does not support data cleaning and will not change the data to be persisted itself.**
-- AFTER INSERT: Fires after the data is persisted.
-
-### How to Implement a Trigger
-
-You need to implement the trigger by writing a Java class, where the dependency shown below is required. If you use [Maven](http://search.maven.org/), you can search for them directly from the [Maven repository](http://search.maven.org/).
-
-#### Dependency
-
-```xml
-
- org.apache.iotdb
- iotdb-server
- 1.0.0
- provided
-
-```
-
-Note that the dependency version should be correspondent to the target server version.
-
-#### Interface Description
-
-To implement a trigger, you need to implement the `org.apache.iotdb.trigger.api.Trigger` class.
-
-```java
-import org.apache.iotdb.trigger.api.enums.FailureStrategy;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-
-public interface Trigger {
-
- /**
- * This method is mainly used to validate {@link TriggerAttributes} before calling {@link
- * Trigger#onCreate(TriggerAttributes)}.
- *
- * @param attributes TriggerAttributes
- * @throws Exception e
- */
- default void validate(TriggerAttributes attributes) throws Exception {}
-
- /**
- * This method will be called when creating a trigger after validation.
- *
- * @param attributes TriggerAttributes
- * @throws Exception e
- */
- default void onCreate(TriggerAttributes attributes) throws Exception {}
-
- /**
- * This method will be called when dropping a trigger.
- *
- * @throws Exception e
- */
- default void onDrop() throws Exception {}
-
- /**
- * When restarting a DataNode, Triggers that have been registered will be restored and this method
- * will be called during the process of restoring.
- *
- * @throws Exception e
- */
- default void restore() throws Exception {}
-
- /**
- * Overrides this method to set the expected FailureStrategy, {@link FailureStrategy#OPTIMISTIC}
- * is the default strategy.
- *
- * @return {@link FailureStrategy}
- */
- default FailureStrategy getFailureStrategy() {
- return FailureStrategy.OPTIMISTIC;
- }
-
- /**
- * @param tablet see {@link Tablet} for detailed information of data structure. Data that is
- * inserted will be constructed as a Tablet and you can define process logic with {@link
- * Tablet}.
- * @return true if successfully fired
- * @throws Exception e
- */
- default boolean fire(Tablet tablet) throws Exception {
- return true;
- }
-}
-```
-
-This class provides two types of programming interfaces: **Lifecycle related interfaces** and **data change listening related interfaces**. All the interfaces in this class are not required to be implemented. When the interfaces are not implemented, the trigger will not respond to the data changes. You can implement only some of these interfaces according to your needs.
-
-Descriptions of the interfaces are as followed.
-
-##### Lifecycle Related Interfaces
-
-| Interface | Description |
-| ------------------------------------------------------------ | ------------------------------------------------------------ |
-| *default void validate(TriggerAttributes attributes) throws Exception {}* | When you creates a trigger using the `CREATE TRIGGER` statement, you can specify the parameters that the trigger needs to use, and this interface will be used to verify the correctness of the parameters。 |
-| *default void onCreate(TriggerAttributes attributes) throws Exception {}* | This interface is called once when you create a trigger using the `CREATE TRIGGER` statement. During the lifetime of each trigger instance, this interface will be called only once. This interface is mainly used for the following functions: helping users to parse custom attributes in SQL statements (using `TriggerAttributes`). You can create or apply for resources, such as establishing external links, opening files, etc. |
-| *default void onDrop() throws Exception {}* | This interface is called when you drop a trigger using the `DROP TRIGGER` statement. During the lifetime of each trigger instance, this interface will be called only once. This interface mainly has the following functions: it can perform the operation of resource release and can be used to persist the results of trigger calculations. |
-| *default void restore() throws Exception {}* | When the DataNode is restarted, the cluster will restore the trigger instance registered on the DataNode, and this interface will be called once for stateful trigger during the process. After the DataNode where the stateful trigger instance is located goes down, the cluster will restore the trigger instance on another available DataNode, calling this interface once in the process. This interface can be used to customize recovery logic. |
-
-##### Data Change Listening Related Interfaces
-
-###### Listening Interface
-
-```java
-/**
- * @param tablet see {@link Tablet} for detailed information of data structure. Data that is
- * inserted will be constructed as a Tablet and you can define process logic with {@link
- * Tablet}.
- * @return true if successfully fired
- * @throws Exception e
- */
- default boolean fire(Tablet tablet) throws Exception {
- return true;
- }
-```
-
-When the data changes, the trigger uses the Tablet as the unit of firing operation. You can obtain the metadata and data of the corresponding sequence through Tablet, and then perform the corresponding trigger operation. If the fire process is successful, the return value should be true. If the interface returns false or throws an exception, we consider the trigger fire process as failed. When the trigger fire process fails, we will perform corresponding operations according to the listening strategy interface.
-
-When performing an INSERT operation, for each time series in it, we will detect whether there is a trigger that listens to the path pattern, and then assemble the time series data that matches the path pattern listened by the same trigger into a new Tablet for trigger fire interface. Can be understood as:
-
-```java
-Map> pathToTriggerListMap => Map
-```
-
-**Note that currently we do not make any guarantees about the order in which triggers fire.**
-
-Here is an example:
-
-Suppose there are three triggers, and the trigger event of the triggers are all BEFORE INSERT:
-
-- Trigger1 listens on `root.sg.*`
-- Trigger2 listens on `root.sg.a`
-- Trigger3 listens on `root.sg.b`
-
-Insertion statement:
-
-```sql
-insert into root.sg(time, a, b) values (1, 1, 1);
-```
-
-The time series `root.sg.a` matches Trigger1 and Trigger2, and the sequence `root.sg.b` matches Trigger1 and Trigger3, then:
-
-- The data of `root.sg.a` and `root.sg.b` will be assembled into a new tablet1, and Trigger1.fire(tablet1) will be executed at the corresponding Trigger Event.
-- The data of `root.sg.a` will be assembled into a new tablet2, and Trigger2.fire(tablet2) will be executed at the corresponding Trigger Event.
-- The data of `root.sg.b` will be assembled into a new tablet3, and Trigger3.fire(tablet3) will be executed at the corresponding Trigger Event.
-
-###### Listening Strategy Interface
-
-When the trigger fails to fire, we will take corresponding actions according to the strategy set by the listening strategy interface. You can set `org.apache.iotdb.trigger.api.enums.FailureStrategy`. There are currently two strategies, optimistic and pessimistic:
-
-- Optimistic strategy: The trigger that fails to fire does not affect the firing of subsequent triggers, nor does it affect the writing process, that is, we do not perform additional processing on the sequence involved in the trigger failure, only log the failure to record the failure, and finally inform user that data insertion is successful, but the trigger fire part failed.
-- Pessimistic strategy: The failure trigger affects the processing of all subsequent Pipelines, that is, we believe that the firing failure of the trigger will cause all subsequent triggering processes to no longer be carried out. If the trigger event of the trigger is BEFORE INSERT, then the insertion will no longer be performed, and the insertion failure will be returned directly.
-
-```java
- /**
- * Overrides this method to set the expected FailureStrategy, {@link FailureStrategy#OPTIMISTIC}
- * is the default strategy.
- *
- * @return {@link FailureStrategy}
- */
- default FailureStrategy getFailureStrategy() {
- return FailureStrategy.OPTIMISTIC;
- }
-```
-
-#### Example
-
-If you use [Maven](http://search.maven.org/), you can refer to our sample project **trigger-example**.
-
-You can find it [here](https://github.com/apache/iotdb/tree/master/example/trigger).
-
-Here is the code from one of the sample projects:
-
-```java
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.trigger;
-
-import org.apache.iotdb.db.storageengine.trigger.sink.alertmanager.AlertManagerConfiguration;
-import org.apache.iotdb.db.storageengine.trigger.sink.alertmanager.AlertManagerEvent;
-import org.apache.iotdb.db.storageengine.trigger.sink.alertmanager.AlertManagerHandler;
-import org.apache.iotdb.trigger.api.Trigger;
-import org.apache.iotdb.trigger.api.TriggerAttributes;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-
-public class ClusterAlertingExample implements Trigger {
- private static final Logger LOGGER = LoggerFactory.getLogger(ClusterAlertingExample.class);
-
- private final AlertManagerHandler alertManagerHandler = new AlertManagerHandler();
-
- private final AlertManagerConfiguration alertManagerConfiguration =
- new AlertManagerConfiguration("http://127.0.0.1:9093/api/v2/alerts");
-
- private String alertname;
-
- private final HashMap labels = new HashMap<>();
-
- private final HashMap annotations = new HashMap<>();
-
- @Override
- public void onCreate(TriggerAttributes attributes) throws Exception {
- alertname = "alert_test";
-
- labels.put("series", "root.ln.wf01.wt01.temperature");
- labels.put("value", "");
- labels.put("severity", "");
-
- annotations.put("summary", "high temperature");
- annotations.put("description", "{{.alertname}}: {{.series}} is {{.value}}");
-
- alertManagerHandler.open(alertManagerConfiguration);
- }
-
- @Override
- public void onDrop() throws IOException {
- alertManagerHandler.close();
- }
-
- @Override
- public boolean fire(Tablet tablet) throws Exception {
- List measurementSchemaList = tablet.getSchemas();
- for (int i = 0, n = measurementSchemaList.size(); i < n; i++) {
- if (measurementSchemaList.get(i).getType().equals(TSDataType.DOUBLE)) {
- // for example, we only deal with the columns of Double type
- double[] values = (double[]) tablet.values[i];
- for (double value : values) {
- if (value > 100.0) {
- LOGGER.info("trigger value > 100");
- labels.put("value", String.valueOf(value));
- labels.put("severity", "critical");
- AlertManagerEvent alertManagerEvent =
- new AlertManagerEvent(alertname, labels, annotations);
- alertManagerHandler.onEvent(alertManagerEvent);
- } else if (value > 50.0) {
- LOGGER.info("trigger value > 50");
- labels.put("value", String.valueOf(value));
- labels.put("severity", "warning");
- AlertManagerEvent alertManagerEvent =
- new AlertManagerEvent(alertname, labels, annotations);
- alertManagerHandler.onEvent(alertManagerEvent);
- }
- }
- }
- }
- return true;
- }
-}
-```
-
-### Trigger Management
-
-You can create and drop a trigger through an SQL statement, and you can also query all registered triggers through an SQL statement.
-
-**We recommend that you stop insertion while creating triggers.**
-
-#### Create Trigger
-
-Triggers can be registered on arbitrary path patterns. The time series registered with the trigger will be listened to by the trigger. When there is data change on the series, the corresponding fire method in the trigger will be called.
-
-Registering a trigger can be done as follows:
-
-1. Implement a Trigger class as described in the How to implement a Trigger chapter, assuming the class's full class name is `org.apache.iotdb.trigger.ClusterAlertingExample`
-2. Package the project into a JAR package.
-3. Register the trigger with an SQL statement. During the creation process, the `validate` and `onCreate` interfaces of the trigger will only be called once. For details, please refer to the chapter of How to implement a Trigger.
-
-The complete SQL syntax is as follows:
-
-```sql
-// Create Trigger
-createTrigger
- : CREATE triggerType TRIGGER triggerName=identifier triggerEventClause ON pathPattern AS className=STRING_LITERAL uriClause? triggerAttributeClause?
- ;
-
-triggerType
- : STATELESS | STATEFUL
- ;
-
-triggerEventClause
- : (BEFORE | AFTER) INSERT
- ;
-
-uriClause
- : USING URI uri
- ;
-
-uri
- : STRING_LITERAL
- ;
-
-triggerAttributeClause
- : WITH LR_BRACKET triggerAttribute (COMMA triggerAttribute)* RR_BRACKET
- ;
-
-triggerAttribute
- : key=attributeKey operator_eq value=attributeValue
- ;
-```
-
-Below is the explanation for the SQL syntax:
-
-- triggerName: The trigger ID, which is globally unique and used to distinguish different triggers, is case-sensitive.
-- triggerType: Trigger types are divided into two categories, STATELESS and STATEFUL.
-- triggerEventClause: when the trigger fires, BEFORE INSERT and AFTER INSERT are supported now.
-- pathPattern:The path pattern the trigger listens on, can contain wildcards * and **.
-- className:The class name of the Trigger class.
-- jarLocation: Optional. When this option is not specified, by default, we consider that the DBA has placed the JAR package required to create the trigger in the trigger_root_dir directory (configuration item, default is IOTDB_HOME/ext/trigger) of each DataNode node. When this option is specified, we will download and distribute the file resource corresponding to the URI to the trigger_root_dir/install directory of each DataNode.
-- triggerAttributeClause: It is used to specify the parameters that need to be set when the trigger instance is created. This part is optional in the SQL syntax.
-
-Here is an example SQL statement to help you understand:
-
-```sql
-CREATE STATELESS TRIGGER triggerTest
-BEFORE INSERT
-ON root.sg.**
-AS 'org.apache.iotdb.trigger.ClusterAlertingExample'
-USING URI '/jar/ClusterAlertingExample.jar'
-WITH (
- "name" = "trigger",
- "limit" = "100"
-)
-```
-
-The above SQL statement creates a trigger named triggerTest:
-
-- The trigger is stateless.
-- Fires before insertion.
-- Listens on path pattern root\.sg.**
-- The implemented trigger class is named `org.apache.iotdb.trigger.ClusterAlertingExample`
-- The JAR package URI is http://jar/ClusterAlertingExample.jar
-- When creating the trigger instance, two parameters, name and limit, are passed in.
-
-#### Drop Trigger
-
-The trigger can be dropped by specifying the trigger ID. During the process of dropping the trigger, the `onDrop` interface of the trigger will be called only once.
-
-The SQL syntax is:
-
-```sql
-// Drop Trigger
-dropTrigger
- : DROP TRIGGER triggerName=identifier
-;
-```
-
-Here is an example statement:
-
-```sql
-DROP TRIGGER triggerTest1
-```
-
-The above statement will drop the trigger with ID triggerTest1.
-
-#### Show Trigger
-
-You can query information about triggers that exist in the cluster through an SQL statement.
-
-The SQL syntax is as follows:
-
-```sql
-SHOW TRIGGERS
-```
-
-The result set format of this statement is as follows:
-
-| TriggerName | Event | Type | State | PathPattern | ClassName | NodeId |
-| ------------ | ---------------------------- | -------------------- | ------------------------------------------- | ----------- | --------------------------------------- | --------------------------------------- |
-| triggerTest1 | BEFORE_INSERT / AFTER_INSERT | STATELESS / STATEFUL | INACTIVE / ACTIVE / DROPPING / TRANSFFERING | root.** | org.apache.iotdb.trigger.TriggerExample | ALL(STATELESS) / DATA_NODE_ID(STATEFUL) |
-
-#### Trigger State
-
-During the process of creating and dropping triggers in the cluster, we maintain the states of the triggers. The following is a description of these states:
-
-| State | Description | Is it recommended to insert data? |
-| ------------ | ------------------------------------------------------------ | --------------------------------- |
-| INACTIVE | The intermediate state of executing `CREATE TRIGGER`, the cluster has just recorded the trigger information on the ConfigNode, and the trigger has not been activated on any DataNode. | NO |
-| ACTIVE | Status after successful execution of `CREATE TRIGGE`, the trigger is available on all DataNodes in the cluster. | YES |
-| DROPPING | Intermediate state of executing `DROP TRIGGER`, the cluster is in the process of dropping the trigger. | NO |
-| TRANSFERRING | The cluster is migrating the location of this trigger instance. | NO |
-
-### Notes
-
-- The trigger takes effect from the time of registration, and does not process the existing historical data. **That is, only insertion requests that occur after the trigger is successfully registered will be listened to by the trigger. **
-- The fire process of trigger is synchronous currently, so you need to ensure the efficiency of the trigger, otherwise the writing performance may be greatly affected. **You need to guarantee concurrency safety of triggers yourself**.
-- Please do no register too many triggers in the cluster. Because the trigger information is fully stored in the ConfigNode, and there is a copy of the information in all DataNodes
-- **It is recommended to stop writing when registering triggers**. Registering a trigger is not an atomic operation. When registering a trigger, there will be an intermediate state in which some nodes in the cluster have registered the trigger, and some nodes have not yet registered successfully. To avoid write requests on some nodes being listened to by triggers and not being listened to on some nodes, we recommend not to perform writes when registering triggers.
-- When the node holding the stateful trigger instance goes down, we will try to restore the corresponding instance on another node. During the recovery process, we will call the restore interface of the trigger class once.
-- The trigger JAR package has a size limit, which must be less than min(`config_node_ratis_log_appender_buffer_size_max`, 2G), where `config_node_ratis_log_appender_buffer_size_max` is a configuration item. For the specific meaning, please refer to the IOTDB configuration item description.
-- **It is better not to have classes with the same full class name but different function implementations in different JAR packages.** For example, trigger1 and trigger2 correspond to resources trigger1.jar and trigger2.jar respectively. If two JAR packages contain a `org.apache.iotdb.trigger.example.AlertListener` class, when `CREATE TRIGGER` uses this class, the system will randomly load the class in one of the JAR packages, which will eventually leads the inconsistent behavior of trigger and other issues.
-
-### Configuration Parameters
-
-| Parameter | Meaning |
-| ------------------------------------------------- | ------------------------------------------------------------ |
-| *trigger_lib_dir* | Directory to save the trigger jar package |
-| *stateful\_trigger\_retry\_num\_when\_not\_found* | How many times will we retry to found an instance of stateful trigger on DataNodes if not found |
-
## CONTINUOUS QUERY (CQ)
### Introduction
diff --git a/src/UserGuide/latest/Reference/UDF-development.md b/src/UserGuide/latest/User-Manual/UDF-development.md
similarity index 100%
rename from src/UserGuide/latest/Reference/UDF-development.md
rename to src/UserGuide/latest/User-Manual/UDF-development.md
diff --git a/src/UserGuide/latest/User-Manual/White-List_timecho.md b/src/UserGuide/latest/User-Manual/White-List_timecho.md
new file mode 100644
index 000000000..75fe11866
--- /dev/null
+++ b/src/UserGuide/latest/User-Manual/White-List_timecho.md
@@ -0,0 +1,70 @@
+
+
+# White List
+
+**function description**
+
+Allow which client addresses can connect to IoTDB
+
+**configuration file**
+
+conf/iotdb-system.properties
+
+conf/white.list
+
+**configuration item**
+
+iotdb-system.properties:
+
+Decide whether to enable white list
+
+```YAML
+
+# Whether to enable white list
+enable_white_list=true
+```
+
+white.list:
+
+Decide which IP addresses can connect to IoTDB
+
+```YAML
+# Support for annotation
+# Supports precise matching, one IP per line
+10.2.3.4
+
+# Support for * wildcards, one ip per line
+10.*.1.3
+10.100.0.*
+```
+
+**note**
+
+1. If the white list itself is cancelled via the session client, the current connection is not immediately disconnected. It is rejected the next time the connection is created.
+2. If white.list is modified directly, it takes effect within one minute. If modified via the session client, it takes effect immediately, updating the values in memory and the white.list disk file.
+3. Enable the whitelist function, there is no white.list file, start the DB service successfully, however, all connections are rejected.
+4. while DB service is running, the white.list file is deleted, and all connections are denied after up to one minute.
+5. whether to enable the configuration of the white list function, can be hot loaded.
+6. Use the Java native interface to modify the whitelist, must be the root user to modify, reject non-root user to modify; modify the content must be legal, otherwise it will throw a StatementExecutionException.
+
+
+
diff --git a/src/UserGuide/latest/IoTDB-Introduction/Architecture.md b/src/UserGuide/latest/stage/Architecture.md
similarity index 100%
rename from src/UserGuide/latest/IoTDB-Introduction/Architecture.md
rename to src/UserGuide/latest/stage/Architecture.md
diff --git a/src/UserGuide/latest/IoTDB-Introduction/Features.md b/src/UserGuide/latest/stage/Features.md
similarity index 100%
rename from src/UserGuide/latest/IoTDB-Introduction/Features.md
rename to src/UserGuide/latest/stage/Features.md
diff --git a/src/UserGuide/latest/IoTDB-Introduction/Performance.md b/src/UserGuide/latest/stage/Performance.md
similarity index 100%
rename from src/UserGuide/latest/IoTDB-Introduction/Performance.md
rename to src/UserGuide/latest/stage/Performance.md
diff --git a/src/zh/UserGuide/Master/API/Programming-CSharp-Native-API.md b/src/zh/UserGuide/Master/Tree/API/Programming-CSharp-Native-API.md
similarity index 100%
rename from src/zh/UserGuide/Master/API/Programming-CSharp-Native-API.md
rename to src/zh/UserGuide/Master/Tree/API/Programming-CSharp-Native-API.md
diff --git a/src/zh/UserGuide/Master/API/Programming-Cpp-Native-API.md b/src/zh/UserGuide/Master/Tree/API/Programming-Cpp-Native-API.md
similarity index 100%
rename from src/zh/UserGuide/Master/API/Programming-Cpp-Native-API.md
rename to src/zh/UserGuide/Master/Tree/API/Programming-Cpp-Native-API.md
diff --git a/src/zh/UserGuide/Master/API/Programming-Go-Native-API.md b/src/zh/UserGuide/Master/Tree/API/Programming-Go-Native-API.md
similarity index 100%
rename from src/zh/UserGuide/Master/API/Programming-Go-Native-API.md
rename to src/zh/UserGuide/Master/Tree/API/Programming-Go-Native-API.md
diff --git a/src/zh/UserGuide/Master/API/Programming-JDBC.md b/src/zh/UserGuide/Master/Tree/API/Programming-JDBC.md
similarity index 100%
rename from src/zh/UserGuide/Master/API/Programming-JDBC.md
rename to src/zh/UserGuide/Master/Tree/API/Programming-JDBC.md
diff --git a/src/zh/UserGuide/Master/API/Programming-Java-Native-API.md b/src/zh/UserGuide/Master/Tree/API/Programming-Java-Native-API.md
similarity index 100%
rename from src/zh/UserGuide/Master/API/Programming-Java-Native-API.md
rename to src/zh/UserGuide/Master/Tree/API/Programming-Java-Native-API.md
diff --git a/src/zh/UserGuide/Master/API/Programming-Kafka.md b/src/zh/UserGuide/Master/Tree/API/Programming-Kafka.md
similarity index 100%
rename from src/zh/UserGuide/Master/API/Programming-Kafka.md
rename to src/zh/UserGuide/Master/Tree/API/Programming-Kafka.md
diff --git a/src/zh/UserGuide/Master/API/Programming-MQTT.md b/src/zh/UserGuide/Master/Tree/API/Programming-MQTT.md
similarity index 100%
rename from src/zh/UserGuide/Master/API/Programming-MQTT.md
rename to src/zh/UserGuide/Master/Tree/API/Programming-MQTT.md
diff --git a/src/zh/UserGuide/Master/API/Programming-NodeJS-Native-API.md b/src/zh/UserGuide/Master/Tree/API/Programming-NodeJS-Native-API.md
similarity index 100%
rename from src/zh/UserGuide/Master/API/Programming-NodeJS-Native-API.md
rename to src/zh/UserGuide/Master/Tree/API/Programming-NodeJS-Native-API.md
diff --git a/src/zh/UserGuide/Master/API/Programming-ODBC.md b/src/zh/UserGuide/Master/Tree/API/Programming-ODBC.md
similarity index 100%
rename from src/zh/UserGuide/Master/API/Programming-ODBC.md
rename to src/zh/UserGuide/Master/Tree/API/Programming-ODBC.md
diff --git a/src/zh/UserGuide/Master/API/Programming-OPC-UA_timecho.md b/src/zh/UserGuide/Master/Tree/API/Programming-OPC-UA_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/API/Programming-OPC-UA_timecho.md
rename to src/zh/UserGuide/Master/Tree/API/Programming-OPC-UA_timecho.md
diff --git a/src/zh/UserGuide/Master/API/Programming-Python-Native-API.md b/src/zh/UserGuide/Master/Tree/API/Programming-Python-Native-API.md
similarity index 100%
rename from src/zh/UserGuide/Master/API/Programming-Python-Native-API.md
rename to src/zh/UserGuide/Master/Tree/API/Programming-Python-Native-API.md
diff --git a/src/zh/UserGuide/Master/API/Programming-Rust-Native-API.md b/src/zh/UserGuide/Master/Tree/API/Programming-Rust-Native-API.md
similarity index 100%
rename from src/zh/UserGuide/Master/API/Programming-Rust-Native-API.md
rename to src/zh/UserGuide/Master/Tree/API/Programming-Rust-Native-API.md
diff --git a/src/zh/UserGuide/Master/API/RestServiceV1.md b/src/zh/UserGuide/Master/Tree/API/RestServiceV1.md
similarity index 100%
rename from src/zh/UserGuide/Master/API/RestServiceV1.md
rename to src/zh/UserGuide/Master/Tree/API/RestServiceV1.md
diff --git a/src/zh/UserGuide/Master/API/RestServiceV2.md b/src/zh/UserGuide/Master/Tree/API/RestServiceV2.md
similarity index 100%
rename from src/zh/UserGuide/Master/API/RestServiceV2.md
rename to src/zh/UserGuide/Master/Tree/API/RestServiceV2.md
diff --git a/src/zh/UserGuide/Master/Basic-Concept/Data-Model-and-Terminology.md b/src/zh/UserGuide/Master/Tree/Basic-Concept/Data-Model-and-Terminology.md
similarity index 99%
rename from src/zh/UserGuide/Master/Basic-Concept/Data-Model-and-Terminology.md
rename to src/zh/UserGuide/Master/Tree/Basic-Concept/Data-Model-and-Terminology.md
index cc70bafa0..f5a00fe87 100644
--- a/src/zh/UserGuide/Master/Basic-Concept/Data-Model-and-Terminology.md
+++ b/src/zh/UserGuide/Master/Tree/Basic-Concept/Data-Model-and-Terminology.md
@@ -27,7 +27,7 @@
-在上图所描述的实际场景中,有许多实体所采集的物理量相同,即具有相同的工况名称和类型,因此,可以声明一个**元数据模板**来定义可采集的物理量集合。在实践中,元数据模板的使用可帮助减少元数据的资源占用,详细内容参见 [元数据模板](../User-Manual/Operate-Metadata.md#元数据模板管理)。
+在上图所描述的实际场景中,有许多实体所采集的物理量相同,即具有相同的工况名称和类型,因此,可以声明一个**元数据模板**来定义可采集的物理量集合。在实践中,元数据模板的使用可帮助减少元数据的资源占用,详细内容参见 [元数据模板](../User-Manual/Operate-Metadata_timecho.md#元数据模板管理)。
IoTDB 模型结构涉及的基本概念在下文将做详细叙述。
diff --git a/src/zh/UserGuide/Master/Basic-Concept/Navigating_Time_Series_Data.md b/src/zh/UserGuide/Master/Tree/Basic-Concept/Navigating_Time_Series_Data.md
similarity index 100%
rename from src/zh/UserGuide/Master/Basic-Concept/Navigating_Time_Series_Data.md
rename to src/zh/UserGuide/Master/Tree/Basic-Concept/Navigating_Time_Series_Data.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Operate-Metadata_apache.md b/src/zh/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_apache.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/Operate-Metadata_apache.md
rename to src/zh/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_apache.md
diff --git a/src/zh/UserGuide/latest/User-Manual/Operate-Metadata_timecho.md b/src/zh/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_timecho.md
similarity index 100%
rename from src/zh/UserGuide/latest/User-Manual/Operate-Metadata_timecho.md
rename to src/zh/UserGuide/Master/Tree/Basic-Concept/Operate-Metadata_timecho.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Query-Data.md b/src/zh/UserGuide/Master/Tree/Basic-Concept/Query-Data.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/Query-Data.md
rename to src/zh/UserGuide/Master/Tree/Basic-Concept/Query-Data.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Write-Delete-Data.md b/src/zh/UserGuide/Master/Tree/Basic-Concept/Write-Delete-Data.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/Write-Delete-Data.md
rename to src/zh/UserGuide/Master/Tree/Basic-Concept/Write-Delete-Data.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/AINode_Deployment_timecho.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/AINode_Deployment_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/AINode_Deployment_timecho.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/AINode_Deployment_timecho.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Cluster-Deployment_apache.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_apache.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/Cluster-Deployment_apache.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_apache.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Cluster-Deployment_timecho.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/Cluster-Deployment_timecho.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Cluster-Deployment_timecho.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Database-Resources.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Database-Resources.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/Database-Resources.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Database-Resources.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Docker-Deployment_apache.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_apache.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/Docker-Deployment_apache.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_apache.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Docker-Deployment_timecho.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/Docker-Deployment_timecho.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Docker-Deployment_timecho.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Environment-Requirements.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Environment-Requirements.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/Environment-Requirements.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Environment-Requirements.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/IoTDB-Package_apache.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_apache.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/IoTDB-Package_apache.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_apache.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/IoTDB-Package_timecho.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/IoTDB-Package_timecho.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/IoTDB-Package_timecho.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Monitoring-panel-deployment.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Monitoring-panel-deployment.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/Monitoring-panel-deployment.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Monitoring-panel-deployment.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Slow-Query-Management.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Slow-Query-Management.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/Slow-Query-Management.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Slow-Query-Management.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md
diff --git a/src/zh/UserGuide/Master/Deployment-and-Maintenance/workbench-deployment.md b/src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/workbench-deployment.md
similarity index 100%
rename from src/zh/UserGuide/Master/Deployment-and-Maintenance/workbench-deployment.md
rename to src/zh/UserGuide/Master/Tree/Deployment-and-Maintenance/workbench-deployment.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/DBeaver.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/DBeaver.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/DBeaver.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/DBeaver.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/DataEase.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/DataEase.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/DataEase.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/DataEase.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/Flink-IoTDB.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Flink-IoTDB.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/Flink-IoTDB.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Flink-IoTDB.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/Flink-TsFile.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Flink-TsFile.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/Flink-TsFile.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Flink-TsFile.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/Grafana-Connector.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Connector.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/Grafana-Connector.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Connector.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/Grafana-Plugin.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Plugin.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/Grafana-Plugin.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Grafana-Plugin.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/Hive-TsFile.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Hive-TsFile.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/Hive-TsFile.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Hive-TsFile.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Ignition-IoTDB-plugin_timecho.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/NiFi-IoTDB.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/NiFi-IoTDB.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/NiFi-IoTDB.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/NiFi-IoTDB.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/Spark-IoTDB.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Spark-IoTDB.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/Spark-IoTDB.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Spark-IoTDB.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/Spark-TsFile.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Spark-TsFile.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/Spark-TsFile.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Spark-TsFile.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/Telegraf-IoTDB.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Telegraf-IoTDB.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/Telegraf-IoTDB.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Telegraf-IoTDB.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/Thingsboard.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Thingsboard.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/Thingsboard.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Thingsboard.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/Zeppelin-IoTDB_apache.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Zeppelin-IoTDB_apache.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/Zeppelin-IoTDB_apache.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Zeppelin-IoTDB_apache.md
diff --git a/src/zh/UserGuide/Master/Ecosystem-Integration/Zeppelin-IoTDB_timecho.md b/src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Zeppelin-IoTDB_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/Ecosystem-Integration/Zeppelin-IoTDB_timecho.md
rename to src/zh/UserGuide/Master/Tree/Ecosystem-Integration/Zeppelin-IoTDB_timecho.md
diff --git a/src/zh/UserGuide/Master/FAQ/Frequently-asked-questions.md b/src/zh/UserGuide/Master/Tree/FAQ/Frequently-asked-questions.md
similarity index 100%
rename from src/zh/UserGuide/Master/FAQ/Frequently-asked-questions.md
rename to src/zh/UserGuide/Master/Tree/FAQ/Frequently-asked-questions.md
diff --git a/src/zh/UserGuide/Master/IoTDB-Introduction/IoTDB-Introduction_apache.md b/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_apache.md
similarity index 100%
rename from src/zh/UserGuide/Master/IoTDB-Introduction/IoTDB-Introduction_apache.md
rename to src/zh/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_apache.md
diff --git a/src/zh/UserGuide/Master/IoTDB-Introduction/IoTDB-Introduction_timecho.md b/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/IoTDB-Introduction/IoTDB-Introduction_timecho.md
rename to src/zh/UserGuide/Master/Tree/IoTDB-Introduction/IoTDB-Introduction_timecho.md
diff --git a/src/zh/UserGuide/Master/IoTDB-Introduction/Scenario.md b/src/zh/UserGuide/Master/Tree/IoTDB-Introduction/Scenario.md
similarity index 100%
rename from src/zh/UserGuide/Master/IoTDB-Introduction/Scenario.md
rename to src/zh/UserGuide/Master/Tree/IoTDB-Introduction/Scenario.md
diff --git a/src/zh/UserGuide/Master/Basic-Concept/Data-Type.md b/src/zh/UserGuide/Master/Tree/Preparatory-knowledge/Data-Type.md
similarity index 100%
rename from src/zh/UserGuide/Master/Basic-Concept/Data-Type.md
rename to src/zh/UserGuide/Master/Tree/Preparatory-knowledge/Data-Type.md
diff --git a/src/zh/UserGuide/Master/QuickStart/QuickStart.md b/src/zh/UserGuide/Master/Tree/QuickStart/QuickStart.md
similarity index 100%
rename from src/zh/UserGuide/Master/QuickStart/QuickStart.md
rename to src/zh/UserGuide/Master/Tree/QuickStart/QuickStart.md
diff --git a/src/zh/UserGuide/Master/QuickStart/QuickStart_apache.md b/src/zh/UserGuide/Master/Tree/QuickStart/QuickStart_apache.md
similarity index 96%
rename from src/zh/UserGuide/Master/QuickStart/QuickStart_apache.md
rename to src/zh/UserGuide/Master/Tree/QuickStart/QuickStart_apache.md
index b26322a4c..15ae1f268 100644
--- a/src/zh/UserGuide/Master/QuickStart/QuickStart_apache.md
+++ b/src/zh/UserGuide/Master/Tree/QuickStart/QuickStart_apache.md
@@ -72,9 +72,9 @@ IoTDB 除了自身拥有丰富的功能外,其周边的工具体系包含的
- 测试工具:IoT-benchmark 是一个基于 Java 和大数据环境开发的时序数据库基准测试工具,由清华大学软件学院研发并开源。它支持多种写入和查询方式,能够存储测试信息和结果供进一步查询或分析,并支持与 Tableau 集成以可视化测试结果。具体使用介绍请查看:[测试工具](../Tools-System/Benchmark.md)
- 数据导入脚本:针对于不同场景,IoTDB 为用户提供多种批量导入数据的操作方式,具体使用介绍请查看:[数据导入](../Tools-System/Data-Import-Tool.md)
-
-
- - 数据导出脚本:针对于不同场景,IoTDB 为用户提供多种批量导出数据的操作方式,具体使用介绍请查看:[数据导出](../Tools-System/Data-Export-Tool.md)
+
+
+ - 数据导出脚本:针对于不同场景,IoTDB 为用户提供多种批量导出数据的操作方式,具体使用介绍请查看:[数据导出](../Tools-System/Data-Export-Tool.md)
## 使用过程中遇到问题?
diff --git a/src/zh/UserGuide/Master/QuickStart/QuickStart_timecho.md b/src/zh/UserGuide/Master/Tree/QuickStart/QuickStart_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/QuickStart/QuickStart_timecho.md
rename to src/zh/UserGuide/Master/Tree/QuickStart/QuickStart_timecho.md
diff --git a/src/zh/UserGuide/Master/Reference/Common-Config-Manual.md b/src/zh/UserGuide/Master/Tree/Reference/Common-Config-Manual.md
similarity index 99%
rename from src/zh/UserGuide/Master/Reference/Common-Config-Manual.md
rename to src/zh/UserGuide/Master/Tree/Reference/Common-Config-Manual.md
index 0d0629e97..f7eec98f8 100644
--- a/src/zh/UserGuide/Master/Reference/Common-Config-Manual.md
+++ b/src/zh/UserGuide/Master/Tree/Reference/Common-Config-Manual.md
@@ -714,6 +714,7 @@ IoTDB ConfigNode 和 DataNode 的公共配置参数位于 `conf` 目录下。
|默认值| -1 |
|改后生效方式| 重启生效 |
+
* max\_waiting\_time\_when\_insert\_blocked
| 名字 | max\_waiting\_time\_when\_insert\_blocked |
diff --git a/src/zh/UserGuide/Master/Reference/ConfigNode-Config-Manual.md b/src/zh/UserGuide/Master/Tree/Reference/ConfigNode-Config-Manual.md
similarity index 100%
rename from src/zh/UserGuide/Master/Reference/ConfigNode-Config-Manual.md
rename to src/zh/UserGuide/Master/Tree/Reference/ConfigNode-Config-Manual.md
diff --git a/src/zh/UserGuide/Master/Reference/DataNode-Config-Manual.md b/src/zh/UserGuide/Master/Tree/Reference/DataNode-Config-Manual.md
similarity index 99%
rename from src/zh/UserGuide/Master/Reference/DataNode-Config-Manual.md
rename to src/zh/UserGuide/Master/Tree/Reference/DataNode-Config-Manual.md
index fb5fdde55..c88848432 100644
--- a/src/zh/UserGuide/Master/Reference/DataNode-Config-Manual.md
+++ b/src/zh/UserGuide/Master/Tree/Reference/DataNode-Config-Manual.md
@@ -491,7 +491,8 @@ GC 日志会被存储在`IOTDB_HOME/logs/gc.log`. 至多会存储 10 个 gc.log
|改后生效方式| 重启生效 |
-#### 存储引擎配置
+
+#### 多级存储配置
* dn\_default\_space\_usage\_thresholds
diff --git a/src/zh/UserGuide/Master/Reference/Function-and-Expression.md b/src/zh/UserGuide/Master/Tree/Reference/Function-and-Expression.md
similarity index 100%
rename from src/zh/UserGuide/Master/Reference/Function-and-Expression.md
rename to src/zh/UserGuide/Master/Tree/Reference/Function-and-Expression.md
diff --git a/src/zh/UserGuide/Master/Reference/Keywords.md b/src/zh/UserGuide/Master/Tree/Reference/Keywords.md
similarity index 100%
rename from src/zh/UserGuide/Master/Reference/Keywords.md
rename to src/zh/UserGuide/Master/Tree/Reference/Keywords.md
diff --git a/src/zh/UserGuide/Master/Reference/Modify-Config-Manual.md b/src/zh/UserGuide/Master/Tree/Reference/Modify-Config-Manual.md
similarity index 100%
rename from src/zh/UserGuide/Master/Reference/Modify-Config-Manual.md
rename to src/zh/UserGuide/Master/Tree/Reference/Modify-Config-Manual.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Operator-and-Expression.md b/src/zh/UserGuide/Master/Tree/Reference/Operator-and-Expression.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/Operator-and-Expression.md
rename to src/zh/UserGuide/Master/Tree/Reference/Operator-and-Expression.md
diff --git a/src/zh/UserGuide/Master/Reference/Status-Codes.md b/src/zh/UserGuide/Master/Tree/Reference/Status-Codes.md
similarity index 100%
rename from src/zh/UserGuide/Master/Reference/Status-Codes.md
rename to src/zh/UserGuide/Master/Tree/Reference/Status-Codes.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Syntax-Rule.md b/src/zh/UserGuide/Master/Tree/Reference/Syntax-Rule.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/Syntax-Rule.md
rename to src/zh/UserGuide/Master/Tree/Reference/Syntax-Rule.md
diff --git a/src/zh/UserGuide/Master/Reference/UDF-Libraries_apache.md b/src/zh/UserGuide/Master/Tree/Reference/UDF-Libraries_apache.md
similarity index 100%
rename from src/zh/UserGuide/Master/Reference/UDF-Libraries_apache.md
rename to src/zh/UserGuide/Master/Tree/Reference/UDF-Libraries_apache.md
diff --git a/src/zh/UserGuide/Master/Reference/UDF-Libraries_timecho.md b/src/zh/UserGuide/Master/Tree/Reference/UDF-Libraries_timecho.md
similarity index 99%
rename from src/zh/UserGuide/Master/Reference/UDF-Libraries_timecho.md
rename to src/zh/UserGuide/Master/Tree/Reference/UDF-Libraries_timecho.md
index c8a0871ae..c7dfbd333 100644
--- a/src/zh/UserGuide/Master/Reference/UDF-Libraries_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/Reference/UDF-Libraries_timecho.md
@@ -3946,6 +3946,7 @@ create function lowpass as 'org.apache.iotdb.library.frequency.UDTFLowPass'
+-----------------------------+---------------+
```
+
用于查询的SQL语句:
```sql
diff --git a/src/zh/UserGuide/Master/SQL-Manual/SQL-Manual.md b/src/zh/UserGuide/Master/Tree/SQL-Manual/SQL-Manual.md
similarity index 99%
rename from src/zh/UserGuide/Master/SQL-Manual/SQL-Manual.md
rename to src/zh/UserGuide/Master/Tree/SQL-Manual/SQL-Manual.md
index ad9e831c4..6da4c878b 100644
--- a/src/zh/UserGuide/Master/SQL-Manual/SQL-Manual.md
+++ b/src/zh/UserGuide/Master/Tree/SQL-Manual/SQL-Manual.md
@@ -358,7 +358,7 @@ IoTDB> SHOW ALL TTL
IoTDB> SHOW TTL ON pathPattern
```
```sql
-IoTDB> SHOW DEVICES
+IoTDB> show DEVICES
```
## 写入数据
diff --git a/src/zh/UserGuide/Master/Basic-Concept/Cluster-data-partitioning.md b/src/zh/UserGuide/Master/Tree/Technical-Insider/Cluster-data-partitioning.md
similarity index 100%
rename from src/zh/UserGuide/Master/Basic-Concept/Cluster-data-partitioning.md
rename to src/zh/UserGuide/Master/Tree/Technical-Insider/Cluster-data-partitioning.md
diff --git a/src/zh/UserGuide/Master/Basic-Concept/Encoding-and-Compression.md b/src/zh/UserGuide/Master/Tree/Technical-Insider/Encoding-and-Compression.md
similarity index 100%
rename from src/zh/UserGuide/Master/Basic-Concept/Encoding-and-Compression.md
rename to src/zh/UserGuide/Master/Tree/Technical-Insider/Encoding-and-Compression.md
diff --git a/src/zh/UserGuide/Master/IoTDB-Introduction/Publication.md b/src/zh/UserGuide/Master/Tree/Technical-Insider/Publication.md
similarity index 100%
rename from src/zh/UserGuide/Master/IoTDB-Introduction/Publication.md
rename to src/zh/UserGuide/Master/Tree/Technical-Insider/Publication.md
diff --git a/src/zh/UserGuide/Master/Tools-System/Benchmark.md b/src/zh/UserGuide/Master/Tree/Tools-System/Benchmark.md
similarity index 100%
rename from src/zh/UserGuide/Master/Tools-System/Benchmark.md
rename to src/zh/UserGuide/Master/Tree/Tools-System/Benchmark.md
diff --git a/src/zh/UserGuide/Master/Tools-System/CLI.md b/src/zh/UserGuide/Master/Tree/Tools-System/CLI.md
similarity index 100%
rename from src/zh/UserGuide/Master/Tools-System/CLI.md
rename to src/zh/UserGuide/Master/Tree/Tools-System/CLI.md
diff --git a/src/zh/UserGuide/Master/Tools-System/Data-Export-Tool.md b/src/zh/UserGuide/Master/Tree/Tools-System/Data-Export-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/Tools-System/Data-Export-Tool.md
rename to src/zh/UserGuide/Master/Tree/Tools-System/Data-Export-Tool.md
diff --git a/src/zh/UserGuide/Master/Tools-System/Data-Import-Tool.md b/src/zh/UserGuide/Master/Tree/Tools-System/Data-Import-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/Tools-System/Data-Import-Tool.md
rename to src/zh/UserGuide/Master/Tree/Tools-System/Data-Import-Tool.md
diff --git a/src/zh/UserGuide/Master/Tools-System/Maintenance-Tool_apache.md b/src/zh/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_apache.md
similarity index 99%
rename from src/zh/UserGuide/Master/Tools-System/Maintenance-Tool_apache.md
rename to src/zh/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_apache.md
index 216df4368..57b527ccb 100644
--- a/src/zh/UserGuide/Master/Tools-System/Maintenance-Tool_apache.md
+++ b/src/zh/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_apache.md
@@ -19,7 +19,7 @@
-->
-# 运维工具
+# 集群管理工具
## 数据文件夹概览工具
diff --git a/src/zh/UserGuide/Master/Tools-System/Maintenance-Tool_timecho.md b/src/zh/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_timecho.md
similarity index 99%
rename from src/zh/UserGuide/Master/Tools-System/Maintenance-Tool_timecho.md
rename to src/zh/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_timecho.md
index 0ef56dcec..63d69149f 100644
--- a/src/zh/UserGuide/Master/Tools-System/Maintenance-Tool_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/Tools-System/Maintenance-Tool_timecho.md
@@ -19,7 +19,7 @@
-->
-# 运维工具
+# 集群管理工具
## 集群管理工具
diff --git a/src/zh/UserGuide/Master/Tools-System/Monitor-Tool_apache.md b/src/zh/UserGuide/Master/Tree/Tools-System/Monitor-Tool_apache.md
similarity index 100%
rename from src/zh/UserGuide/Master/Tools-System/Monitor-Tool_apache.md
rename to src/zh/UserGuide/Master/Tree/Tools-System/Monitor-Tool_apache.md
diff --git a/src/zh/UserGuide/Master/Tools-System/Monitor-Tool_timecho.md b/src/zh/UserGuide/Master/Tree/Tools-System/Monitor-Tool_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/Tools-System/Monitor-Tool_timecho.md
rename to src/zh/UserGuide/Master/Tree/Tools-System/Monitor-Tool_timecho.md
diff --git a/src/zh/UserGuide/Master/Tools-System/Workbench_timecho.md b/src/zh/UserGuide/Master/Tree/Tools-System/Workbench_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/Tools-System/Workbench_timecho.md
rename to src/zh/UserGuide/Master/Tree/Tools-System/Workbench_timecho.md
diff --git a/src/zh/UserGuide/Master/User-Manual/AINode_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/AINode_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/AINode_timecho.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/AINode_timecho.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Security-Management_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/Audit-Log_timecho.md
similarity index 69%
rename from src/zh/UserGuide/Master/User-Manual/Security-Management_timecho.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/Audit-Log_timecho.md
index 8dc4076fd..0165a99d8 100644
--- a/src/zh/UserGuide/Master/User-Manual/Security-Management_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Audit-Log_timecho.md
@@ -19,59 +19,10 @@
-->
-# 安全控制
-## 白名单
+# 审计日志
-**功能描述**
-
-允许哪些客户端地址能连接 IoTDB
-
-**配置文件**
-
-conf/iotdb-system.properties
-
-conf/white.list
-
-**配置项**
-
-iotdb-system.properties:
-
-决定是否开启白名单功能
-
-```YAML
-# 是否开启白名单功能
-enable_white_list=true
-```
-
-white.list:
-
-决定哪些IP地址能够连接IoTDB
-
-```YAML
-# 支持注释
-# 支持精确匹配,每行一个ip
-10.2.3.4
-
-# 支持*通配符,每行一个ip
-10.*.1.3
-10.100.0.*
-```
-
-**注意事项**
-
-1. 如果通过session客户端取消本身的白名单,当前连接并不会立即断开。在下次创建连接的时候拒绝。
-2. 如果直接修改white.list,一分钟内生效。如果通过session客户端修改,立即生效,更新内存中的值和white.list磁盘文件
-3. 开启白名单功能,没有white.list 文件,启动DB服务成功,但是,拒绝所有连接。
-4. DB服务运行中,删除 white.list 文件,至多一分钟后,拒绝所有连接。
-5. 是否开启白名单功能的配置,可以热加载。
-6. 使用Java 原生接口修改白名单,必须是root用户才能修改,拒绝非root用户修改;修改内容必须合法,否则会抛出StatementExecutionException异常。
-
-
-
-## 审计日志
-
-### 功能背景
+## 功能背景
审计日志是数据库的记录凭证,通过审计日志功能可以查询到用户在数据库中增删改查等各项操作,以保证信息安全。关于IoTDB的审计日志功能可以实现以下场景的需求:
@@ -80,11 +31,11 @@ white.list:
-#### 场景说明
+### 场景说明
-##### 对所有用户的所有操作(增、删、改、查)进行记录
+#### 对所有用户的所有操作(增、删、改、查)进行记录
通过审计日志功能追踪到所有用户在数据中的各项操作。其中所记录的信息要包含数据操作(新增、删除、查询)及元数据操作(新增、修改、删除、查询)、客户端登录信息(用户名、ip地址)。
@@ -97,8 +48,7 @@ white.list:

-
-##### 可关闭部分用户连接的审计日志
+#### 可关闭部分用户连接的审计日志
@@ -106,7 +56,7 @@ white.list:
-### 功能定义
+## 功能定义
@@ -122,7 +72,7 @@ white.list:
2. 数据和元数据的查询操作
3. 元数据类的新增、修改、删除操作
-#### 配置项
+### 配置项
在iotdb-system.properties中修改以下几项配置
diff --git a/src/zh/UserGuide/Master/User-Manual/Authority-Management.md b/src/zh/UserGuide/Master/Tree/User-Manual/Authority-Management.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/Authority-Management.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/Authority-Management.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Data-Sync_apache.md b/src/zh/UserGuide/Master/Tree/User-Manual/Data-Sync_apache.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/Data-Sync_apache.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/Data-Sync_apache.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Data-Sync_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/Data-Sync_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/Data-Sync_timecho.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/Data-Sync_timecho.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Data-subscription.md b/src/zh/UserGuide/Master/Tree/User-Manual/Data-subscription.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/Data-subscription.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/Data-subscription.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Database-Programming.md b/src/zh/UserGuide/Master/Tree/User-Manual/Database-Programming.md
similarity index 65%
rename from src/zh/UserGuide/Master/User-Manual/Database-Programming.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/Database-Programming.md
index 1a5610983..b3b1af76a 100644
--- a/src/zh/UserGuide/Master/User-Manual/Database-Programming.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Database-Programming.md
@@ -20,451 +20,6 @@
-->
# 数据库编程
-## 触发器
-### 使用说明
-
-触发器提供了一种侦听序列数据变动的机制。配合用户自定义逻辑,可完成告警、数据转发等功能。
-
-触发器基于 Java 反射机制实现。用户通过简单实现 Java 接口,即可实现数据侦听。IoTDB 允许用户动态注册、卸载触发器,在注册、卸载期间,无需启停服务器。
-
-#### 侦听模式
-
-IoTDB 的单个触发器可用于侦听符合特定模式的时间序列的数据变动,如时间序列 root.sg.a 上的数据变动,或者符合路径模式 root.**.a 的时间序列上的数据变动。您在注册触发器时可以通过 SQL 语句指定触发器侦听的路径模式。
-
-#### 触发器类型
-
-目前触发器分为两类,您在注册触发器时可以通过 SQL 语句指定类型:
-
-- 有状态的触发器。该类触发器的执行逻辑可能依赖前后的多条数据,框架会将不同节点写入的数据汇总到同一个触发器实例进行计算,来保留上下文信息,通常用于采样或者统计一段时间的数据聚合信息。集群中只有一个节点持有有状态触发器的实例。
-- 无状态的触发器。触发器的执行逻辑只和当前输入的数据有关,框架无需将不同节点的数据汇总到同一个触发器实例中,通常用于单行数据的计算和异常检测等。集群中每个节点均持有无状态触发器的实例。
-
-#### 触发时机
-
-触发器的触发时机目前有两种,后续会拓展其它触发时机。您在注册触发器时可以通过 SQL 语句指定触发时机:
-
-- BEFORE INSERT,即在数据持久化之前触发。请注意,目前触发器并不支持数据清洗,不会对要持久化的数据本身进行变动。
-- AFTER INSERT,即在数据持久化之后触发。
-
-### 编写触发器
-
-#### 触发器依赖
-
-触发器的逻辑需要您编写 Java 类进行实现。
-在编写触发器逻辑时,需要使用到下面展示的依赖。如果您使用 [Maven](http://search.maven.org/),则可以直接从 [Maven 库](http://search.maven.org/)中搜索到它们。请注意选择和目标服务器版本相同的依赖版本。
-
-``` xml
-
- org.apache.iotdb
- iotdb-server
- 1.0.0
- provided
-
-```
-
-#### 接口说明
-
-编写一个触发器需要实现 `org.apache.iotdb.trigger.api.Trigger` 类。
-
-```java
-import org.apache.iotdb.trigger.api.enums.FailureStrategy;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-
-public interface Trigger {
-
- /**
- * This method is mainly used to validate {@link TriggerAttributes} before calling {@link
- * Trigger#onCreate(TriggerAttributes)}.
- *
- * @param attributes TriggerAttributes
- * @throws Exception e
- */
- default void validate(TriggerAttributes attributes) throws Exception {}
-
- /**
- * This method will be called when creating a trigger after validation.
- *
- * @param attributes TriggerAttributes
- * @throws Exception e
- */
- default void onCreate(TriggerAttributes attributes) throws Exception {}
-
- /**
- * This method will be called when dropping a trigger.
- *
- * @throws Exception e
- */
- default void onDrop() throws Exception {}
-
- /**
- * When restarting a DataNode, Triggers that have been registered will be restored and this method
- * will be called during the process of restoring.
- *
- * @throws Exception e
- */
- default void restore() throws Exception {}
-
- /**
- * Overrides this method to set the expected FailureStrategy, {@link FailureStrategy#OPTIMISTIC}
- * is the default strategy.
- *
- * @return {@link FailureStrategy}
- */
- default FailureStrategy getFailureStrategy() {
- return FailureStrategy.OPTIMISTIC;
- }
-
- /**
- * @param tablet see {@link Tablet} for detailed information of data structure. Data that is
- * inserted will be constructed as a Tablet and you can define process logic with {@link
- * Tablet}.
- * @return true if successfully fired
- * @throws Exception e
- */
- default boolean fire(Tablet tablet) throws Exception {
- return true;
- }
-}
-```
-
-该类主要提供了两类编程接口:**生命周期相关接口**和**数据变动侦听相关接口**。该类中所有的接口都不是必须实现的,当您不实现它们时,它们不会对流经的数据操作产生任何响应。您可以根据实际需要,只实现其中若干接口。
-
-下面是所有可供用户进行实现的接口的说明。
-
-##### 生命周期相关接口
-
-| 接口定义 | 描述 |
-| ------------------------------------------------------------ | ------------------------------------------------------------ |
-| *default void validate(TriggerAttributes attributes) throws Exception {}* | 用户在使用 `CREATE TRIGGER` 语句创建触发器时,可以指定触发器需要使用的参数,该接口会用于验证参数正确性。 |
-| *default void onCreate(TriggerAttributes attributes) throws Exception {}* | 当您使用`CREATE TRIGGER`语句创建触发器后,该接口会被调用一次。在每一个触发器实例的生命周期内,该接口会且仅会被调用一次。该接口主要有如下作用:帮助用户解析 SQL 语句中的自定义属性(使用`TriggerAttributes`)。 可以创建或申请资源,如建立外部链接、打开文件等。 |
-| *default void onDrop() throws Exception {}* | 当您使用`DROP TRIGGER`语句删除触发器后,该接口会被调用。在每一个触发器实例的生命周期内,该接口会且仅会被调用一次。该接口主要有如下作用:可以进行资源释放的操作。可以用于持久化触发器计算的结果。 |
-| *default void restore() throws Exception {}* | 当重启 DataNode 时,集群会恢复 DataNode 上已经注册的触发器实例,在此过程中会为该 DataNode 上的有状态触发器调用一次该接口。有状态触发器实例所在的 DataNode 宕机后,集群会在另一个可用 DataNode 上恢复该触发器的实例,在此过程中会调用一次该接口。该接口可以用于自定义恢复逻辑。 |
-
-##### 数据变动侦听相关接口
-
-###### 侦听接口
-
-```java
- /**
- * @param tablet see {@link Tablet} for detailed information of data structure. Data that is
- * inserted will be constructed as a Tablet and you can define process logic with {@link
- * Tablet}.
- * @return true if successfully fired
- * @throws Exception e
- */
- default boolean fire(Tablet tablet) throws Exception {
- return true;
- }
-```
-
-数据变动时,触发器以 Tablet 作为触发操作的单位。您可以通过 Tablet 获取相应序列的元数据和数据,然后进行相应的触发操作,触发成功则返回值应当为 true。该接口返回 false 或是抛出异常我们均认为触发失败。在触发失败时,我们会根据侦听策略接口进行相应的操作。
-
-进行一次 INSERT 操作时,对于其中的每条时间序列,我们会检测是否有侦听该路径模式的触发器,然后将符合同一个触发器所侦听的路径模式的时间序列数据组装成一个新的 Tablet 用于触发器的 fire 接口。可以理解成:
-
-```java
-Map> pathToTriggerListMap => Map
-```
-
-**请注意,目前我们不对触发器的触发顺序有任何保证。**
-
-下面是示例:
-
-假设有三个触发器,触发器的触发时机均为 BEFORE INSERT
-
-- 触发器 Trigger1 侦听路径模式:root\.sg.*
-- 触发器 Trigger2 侦听路径模式:root.sg.a
-- 触发器 Trigger3 侦听路径模式:root.sg.b
-
-写入语句:
-
-```sql
-insert into root.sg(time, a, b) values (1, 1, 1);
-```
-
-序列 root.sg.a 匹配 Trigger1 和 Trigger2,序列 root.sg.b 匹配 Trigger1 和 Trigger3,那么:
-
-- root.sg.a 和 root.sg.b 的数据会被组装成一个新的 tablet1,在相应的触发时机进行 Trigger1.fire(tablet1)
-- root.sg.a 的数据会被组装成一个新的 tablet2,在相应的触发时机进行 Trigger2.fire(tablet2)
-- root.sg.b 的数据会被组装成一个新的 tablet3,在相应的触发时机进行 Trigger3.fire(tablet3)
-
-###### 侦听策略接口
-
-在触发器触发失败时,我们会根据侦听策略接口设置的策略进行相应的操作,您可以通过下述接口设置 `org.apache.iotdb.trigger.api.enums.FailureStrategy`,目前有乐观和悲观两种策略:
-
-- 乐观策略:触发失败的触发器不影响后续触发器的触发,也不影响写入流程,即我们不对触发失败涉及的序列做额外处理,仅打日志记录失败,最后返回用户写入数据成功,但触发部分失败。
-- 悲观策略:失败触发器影响后续所有 Pipeline 的处理,即我们认为该 Trigger 触发失败会导致后续所有触发流程不再进行。如果该触发器的触发时机为 BEFORE INSERT,那么写入也不再进行,直接返回写入失败。
-
-```java
- /**
- * Overrides this method to set the expected FailureStrategy, {@link FailureStrategy#OPTIMISTIC}
- * is the default strategy.
- *
- * @return {@link FailureStrategy}
- */
- default FailureStrategy getFailureStrategy() {
- return FailureStrategy.OPTIMISTIC;
- }
-```
-
-您可以参考下图辅助理解,其中 Trigger1 配置采用乐观策略,Trigger2 配置采用悲观策略。Trigger1 和 Trigger2 的触发时机是 BEFORE INSERT,Trigger3 和 Trigger4 的触发时机是 AFTER INSERT。 正常执行流程如下:
-
-
-
-
-
-
-#### 示例
-
-如果您使用 [Maven](http://search.maven.org/),可以参考我们编写的示例项目 trigger-example。您可以在 [这里](https://github.com/apache/iotdb/tree/master/example/trigger) 找到它。后续我们会加入更多的示例项目供您参考。
-
-下面是其中一个示例项目的代码:
-
-```java
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.trigger;
-
-import org.apache.iotdb.db.engine.trigger.sink.alertmanager.AlertManagerConfiguration;
-import org.apache.iotdb.db.engine.trigger.sink.alertmanager.AlertManagerEvent;
-import org.apache.iotdb.db.engine.trigger.sink.alertmanager.AlertManagerHandler;
-import org.apache.iotdb.trigger.api.Trigger;
-import org.apache.iotdb.trigger.api.TriggerAttributes;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-
-public class ClusterAlertingExample implements Trigger {
- private static final Logger LOGGER = LoggerFactory.getLogger(ClusterAlertingExample.class);
-
- private final AlertManagerHandler alertManagerHandler = new AlertManagerHandler();
-
- private final AlertManagerConfiguration alertManagerConfiguration =
- new AlertManagerConfiguration("http://127.0.0.1:9093/api/v2/alerts");
-
- private String alertname;
-
- private final HashMap labels = new HashMap<>();
-
- private final HashMap annotations = new HashMap<>();
-
- @Override
- public void onCreate(TriggerAttributes attributes) throws Exception {
- alertname = "alert_test";
-
- labels.put("series", "root.ln.wf01.wt01.temperature");
- labels.put("value", "");
- labels.put("severity", "");
-
- annotations.put("summary", "high temperature");
- annotations.put("description", "{{.alertname}}: {{.series}} is {{.value}}");
-
- alertManagerHandler.open(alertManagerConfiguration);
- }
-
- @Override
- public void onDrop() throws IOException {
- alertManagerHandler.close();
- }
-
- @Override
- public boolean fire(Tablet tablet) throws Exception {
- List measurementSchemaList = tablet.getSchemas();
- for (int i = 0, n = measurementSchemaList.size(); i < n; i++) {
- if (measurementSchemaList.get(i).getType().equals(TSDataType.DOUBLE)) {
- // for example, we only deal with the columns of Double type
- double[] values = (double[]) tablet.values[i];
- for (double value : values) {
- if (value > 100.0) {
- LOGGER.info("trigger value > 100");
- labels.put("value", String.valueOf(value));
- labels.put("severity", "critical");
- AlertManagerEvent alertManagerEvent =
- new AlertManagerEvent(alertname, labels, annotations);
- alertManagerHandler.onEvent(alertManagerEvent);
- } else if (value > 50.0) {
- LOGGER.info("trigger value > 50");
- labels.put("value", String.valueOf(value));
- labels.put("severity", "warning");
- AlertManagerEvent alertManagerEvent =
- new AlertManagerEvent(alertname, labels, annotations);
- alertManagerHandler.onEvent(alertManagerEvent);
- }
- }
- }
- }
- return true;
- }
-}
-```
-### 管理触发器
-
-您可以通过 SQL 语句注册和卸载一个触发器实例,您也可以通过 SQL 语句查询到所有已经注册的触发器。
-
-**我们建议您在注册触发器时停止写入。**
-
-#### 注册触发器
-
-触发器可以注册在任意路径模式上。被注册有触发器的序列将会被触发器侦听,当序列上有数据变动时,触发器中对应的触发方法将会被调用。
-
-注册一个触发器可以按如下流程进行:
-
-1. 按照编写触发器章节的说明,实现一个完整的 Trigger 类,假定这个类的全类名为 `org.apache.iotdb.trigger.ClusterAlertingExample`
-2. 将项目打成 JAR 包。
-3. 使用 SQL 语句注册该触发器。注册过程中会仅只会调用一次触发器的 `validate` 和 `onCreate` 接口,具体请参考编写触发器章节。
-
-完整 SQL 语法如下:
-
-```sql
-// Create Trigger
-createTrigger
- : CREATE triggerType TRIGGER triggerName=identifier triggerEventClause ON pathPattern AS className=STRING_LITERAL uriClause? triggerAttributeClause?
- ;
-
-triggerType
- : STATELESS | STATEFUL
- ;
-
-triggerEventClause
- : (BEFORE | AFTER) INSERT
- ;
-
-uriClause
- : USING URI uri
- ;
-
-uri
- : STRING_LITERAL
- ;
-
-triggerAttributeClause
- : WITH LR_BRACKET triggerAttribute (COMMA triggerAttribute)* RR_BRACKET
- ;
-
-triggerAttribute
- : key=attributeKey operator_eq value=attributeValue
- ;
-```
-
-下面对 SQL 语法进行说明,您可以结合使用说明章节进行理解:
-
-- triggerName:触发器 ID,该 ID 是全局唯一的,用于区分不同触发器,大小写敏感。
-- triggerType:触发器类型,分为无状态(STATELESS)和有状态(STATEFUL)两类。
-- triggerEventClause:触发时机,目前仅支持写入前(BEFORE INSERT)和写入后(AFTER INSERT)两种。
-- pathPattern:触发器侦听的路径模式,可以包含通配符 * 和 **。
-- className:触发器实现类的类名。
-- uriClause:可选项,当不指定该选项时,我们默认 DBA 已经在各个 DataNode 节点的 trigger_root_dir 目录(配置项,默认为 IOTDB_HOME/ext/trigger)下放置好创建该触发器需要的 JAR 包。当指定该选项时,我们会将该 URI 对应的文件资源下载并分发到各 DataNode 的 trigger_root_dir/install 目录下。
-- triggerAttributeClause:用于指定触发器实例创建时需要设置的参数,SQL 语法中该部分是可选项。
-
-下面是一个帮助您理解的 SQL 语句示例:
-
-```sql
-CREATE STATELESS TRIGGER triggerTest
-BEFORE INSERT
-ON root.sg.**
-AS 'org.apache.iotdb.trigger.ClusterAlertingExample'
-USING URI 'http://jar/ClusterAlertingExample.jar'
-WITH (
- "name" = "trigger",
- "limit" = "100"
-)
-```
-
-上述 SQL 语句创建了一个名为 triggerTest 的触发器:
-
-- 该触发器是无状态的(STATELESS)
-- 在写入前触发(BEFORE INSERT)
-- 该触发器侦听路径模式为 root\.sg.**
-- 所编写的触发器类名为 org.apache.iotdb.trigger.ClusterAlertingExample
-- JAR 包的 URI 为 http://jar/ClusterAlertingExample.jar
-- 创建该触发器实例时会传入 name 和 limit 两个参数。
-
-#### 卸载触发器
-
-可以通过指定触发器 ID 的方式卸载触发器,卸载触发器的过程中会且仅会调用一次触发器的 `onDrop` 接口。
-
-卸载触发器的 SQL 语法如下:
-
-```sql
-// Drop Trigger
-dropTrigger
- : DROP TRIGGER triggerName=identifier
-;
-```
-
-下面是示例语句:
-
-```sql
-DROP TRIGGER triggerTest1
-```
-
-上述语句将会卸载 ID 为 triggerTest1 的触发器。
-
-#### 查询触发器
-
-可以通过 SQL 语句查询集群中存在的触发器的信息。SQL 语法如下:
-
-```sql
-SHOW TRIGGERS
-```
-
-该语句的结果集格式如下:
-
-| TriggerName | Event | Type | State | PathPattern | ClassName | NodeId |
-| ------------ | ---------------------------- | -------------------- | ------------------------------------------- | ----------- | --------------------------------------- | --------------------------------------- |
-| triggerTest1 | BEFORE_INSERT / AFTER_INSERT | STATELESS / STATEFUL | INACTIVE / ACTIVE / DROPPING / TRANSFFERING | root.** | org.apache.iotdb.trigger.TriggerExample | ALL(STATELESS) / DATA_NODE_ID(STATEFUL) |
-
-
-#### 触发器状态说明
-
-在集群中注册以及卸载触发器的过程中,我们维护了触发器的状态,下面是对这些状态的说明:
-
-| 状态 | 描述 | 是否建议写入进行 |
-| ------------ | ------------------------------------------------------------ | ---------------- |
-| INACTIVE | 执行 `CREATE TRIGGER` 的中间状态,集群刚在 ConfigNode 上记录该触发器的信息,还未在任何 DataNode 上激活该触发器 | 否 |
-| ACTIVE | 执行 `CREATE TRIGGE` 成功后的状态,集群所有 DataNode 上的该触发器都已经可用 | 是 |
-| DROPPING | 执行 `DROP TRIGGER` 的中间状态,集群正处在卸载该触发器的过程中 | 否 |
-| TRANSFERRING | 集群正在进行该触发器实例位置的迁移 | 否 |
-
-### 重要注意事项
-
-- 触发器从注册时开始生效,不对已有的历史数据进行处理。**即只有成功注册触发器之后发生的写入请求才会被触发器侦听到。**
-- 触发器目前采用**同步触发**,所以编写时需要保证触发器效率,否则可能会大幅影响写入性能。**您需要自己保证触发器内部的并发安全性**。
-- 集群中**不能注册过多触发器**。因为触发器信息全量保存在 ConfigNode 中,并且在所有 DataNode 都有一份该信息的副本。
-- **建议注册触发器时停止写入**。注册触发器并不是一个原子操作,注册触发器时,会出现集群内部分节点已经注册了该触发器,部分节点尚未注册成功的中间状态。为了避免部分节点上的写入请求被触发器侦听到,部分节点上没有被侦听到的情况,我们建议注册触发器时不要执行写入。
-- 触发器将作为进程内程序执行,如果您的触发器编写不慎,内存占用过多,由于 IoTDB 并没有办法监控触发器所使用的内存,所以有 OOM 的风险。
-- 持有有状态触发器实例的节点宕机时,我们会尝试在另外的节点上恢复相应实例,在恢复过程中我们会调用一次触发器类的 restore 接口,您可以在该接口中实现恢复触发器所维护的状态的逻辑。
-- 触发器 JAR 包有大小限制,必须小于 min(`config_node_ratis_log_appender_buffer_size_max`, 2G),其中 `config_node_ratis_log_appender_buffer_size_max` 是一个配置项,具体含义可以参考 IOTDB 配置项说明。
-- **不同的 JAR 包中最好不要有全类名相同但功能实现不一样的类**。例如:触发器 trigger1、trigger2 分别对应资源 trigger1.jar、trigger2.jar。如果两个 JAR 包里都包含一个 `org.apache.iotdb.trigger.example.AlertListener` 类,当 `CREATE TRIGGER` 使用到这个类时,系统会随机加载其中一个 JAR 包中的类,最终导致触发器执行行为不一致以及其他的问题。
-
-### 配置参数
-
-| 配置项 | 含义 |
-| ------------------------------------------------- | ---------------------------------------------- |
-| *trigger_lib_dir* | 保存触发器 jar 包的目录位置 |
-| *stateful\_trigger\_retry\_num\_when\_not\_found* | 有状态触发器触发无法找到触发器实例时的重试次数 |
## 连续查询(Continuous Query, CQ)
diff --git a/src/zh/UserGuide/Master/User-Manual/IoTDB-View_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/IoTDB-View_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/IoTDB-View_timecho.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/IoTDB-View_timecho.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Maintennance.md b/src/zh/UserGuide/Master/Tree/User-Manual/Maintennance.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/Maintennance.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/Maintennance.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Streaming_apache.md b/src/zh/UserGuide/Master/Tree/User-Manual/Streaming_apache.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/Streaming_apache.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/Streaming_apache.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Streaming_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/Streaming_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/Streaming_timecho.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/Streaming_timecho.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Tiered-Storage_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/Tiered-Storage_timecho.md
similarity index 99%
rename from src/zh/UserGuide/Master/User-Manual/Tiered-Storage_timecho.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/Tiered-Storage_timecho.md
index e46de729f..501a3966f 100644
--- a/src/zh/UserGuide/Master/User-Manual/Tiered-Storage_timecho.md
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/Tiered-Storage_timecho.md
@@ -48,6 +48,7 @@
| remote_tsfile_cache_page_size_in_kb | 20480 | 云端存储在本地缓存文件的块大小 | 如果未使用远端存储,无需配置 |
| remote_tsfile_cache_max_disk_usage_in_mb | 51200 | 云端存储本地缓存的最大磁盘占用大小 | 如果未使用远端存储,无需配置 |
+
## 本地多级存储配置示例
以下以本地两级存储的配置示例。
diff --git a/src/zh/UserGuide/Master/User-Manual/Trigger.md b/src/zh/UserGuide/Master/Tree/User-Manual/Trigger.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/Trigger.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/Trigger.md
diff --git a/src/zh/UserGuide/Master/Reference/UDF-development.md b/src/zh/UserGuide/Master/Tree/User-Manual/UDF-development.md
similarity index 100%
rename from src/zh/UserGuide/Master/Reference/UDF-development.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/UDF-development.md
diff --git a/src/zh/UserGuide/Master/User-Manual/User-defined-function.md b/src/zh/UserGuide/Master/Tree/User-Manual/User-defined-function.md
similarity index 100%
rename from src/zh/UserGuide/Master/User-Manual/User-defined-function.md
rename to src/zh/UserGuide/Master/Tree/User-Manual/User-defined-function.md
diff --git a/src/zh/UserGuide/Master/Tree/User-Manual/White-List_timecho.md b/src/zh/UserGuide/Master/Tree/User-Manual/White-List_timecho.md
new file mode 100644
index 000000000..4b43a03fc
--- /dev/null
+++ b/src/zh/UserGuide/Master/Tree/User-Manual/White-List_timecho.md
@@ -0,0 +1,70 @@
+
+
+
+# 白名单
+
+**功能描述**
+
+允许哪些客户端地址能连接 IoTDB
+
+**配置文件**
+
+conf/iotdb-system.properties
+
+conf/white.list
+
+**配置项**
+
+iotdb-system.properties:
+
+决定是否开启白名单功能
+
+```YAML
+# 是否开启白名单功能
+enable_white_list=true
+```
+
+white.list:
+
+决定哪些IP地址能够连接IoTDB
+
+```YAML
+# 支持注释
+# 支持精确匹配,每行一个ip
+10.2.3.4
+
+# 支持*通配符,每行一个ip
+10.*.1.3
+10.100.0.*
+```
+
+**注意事项**
+
+1. 如果通过session客户端取消本身的白名单,当前连接并不会立即断开。在下次创建连接的时候拒绝。
+2. 如果直接修改white.list,一分钟内生效。如果通过session客户端修改,立即生效,更新内存中的值和white.list磁盘文件
+3. 开启白名单功能,没有white.list 文件,启动DB服务成功,但是,拒绝所有连接。
+4. DB服务运行中,删除 white.list 文件,至多一分钟后,拒绝所有连接。
+5. 是否开启白名单功能的配置,可以热加载。
+6. 使用Java 原生接口修改白名单,必须是root用户才能修改,拒绝非root用户修改;修改内容必须合法,否则会抛出StatementExecutionException异常。
+
+
+
diff --git a/src/zh/UserGuide/Master/UserGuideReadme.md b/src/zh/UserGuide/Master/Tree/UserGuideReadme.md
similarity index 100%
rename from src/zh/UserGuide/Master/UserGuideReadme.md
rename to src/zh/UserGuide/Master/Tree/UserGuideReadme.md
diff --git a/src/zh/UserGuide/Master/stage/AINode_Deployment.md b/src/zh/UserGuide/Master/Tree/stage/AINode_Deployment.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/AINode_Deployment.md
rename to src/zh/UserGuide/Master/Tree/stage/AINode_Deployment.md
diff --git a/src/zh/UserGuide/Master/stage/Administration-Management/Administration.md b/src/zh/UserGuide/Master/Tree/stage/Administration-Management/Administration.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Administration-Management/Administration.md
rename to src/zh/UserGuide/Master/Tree/stage/Administration-Management/Administration.md
diff --git a/src/zh/UserGuide/Master/IoTDB-Introduction/Architecture.md b/src/zh/UserGuide/Master/Tree/stage/Architecture.md
similarity index 100%
rename from src/zh/UserGuide/Master/IoTDB-Introduction/Architecture.md
rename to src/zh/UserGuide/Master/Tree/stage/Architecture.md
diff --git a/src/zh/UserGuide/Master/stage/Cluster-Deployment.md b/src/zh/UserGuide/Master/Tree/stage/Cluster-Deployment.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Cluster-Deployment.md
rename to src/zh/UserGuide/Master/Tree/stage/Cluster-Deployment.md
diff --git a/src/zh/UserGuide/Master/stage/Cluster-Deployment_timecho.md b/src/zh/UserGuide/Master/Tree/stage/Cluster-Deployment_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Cluster-Deployment_timecho.md
rename to src/zh/UserGuide/Master/Tree/stage/Cluster-Deployment_timecho.md
diff --git a/src/zh/UserGuide/Master/stage/Cluster/Cluster-Concept.md b/src/zh/UserGuide/Master/Tree/stage/Cluster/Cluster-Concept.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Cluster/Cluster-Concept.md
rename to src/zh/UserGuide/Master/Tree/stage/Cluster/Cluster-Concept.md
diff --git a/src/zh/UserGuide/Master/stage/Cluster/Cluster-Maintenance.md b/src/zh/UserGuide/Master/Tree/stage/Cluster/Cluster-Maintenance.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Cluster/Cluster-Maintenance.md
rename to src/zh/UserGuide/Master/Tree/stage/Cluster/Cluster-Maintenance.md
diff --git a/src/zh/UserGuide/Master/stage/Cluster/Cluster-Setup.md b/src/zh/UserGuide/Master/Tree/stage/Cluster/Cluster-Setup.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Cluster/Cluster-Setup.md
rename to src/zh/UserGuide/Master/Tree/stage/Cluster/Cluster-Setup.md
diff --git a/src/zh/UserGuide/Master/stage/Cluster/Get-Installation-Package.md b/src/zh/UserGuide/Master/Tree/stage/Cluster/Get-Installation-Package.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Cluster/Get-Installation-Package.md
rename to src/zh/UserGuide/Master/Tree/stage/Cluster/Get-Installation-Package.md
diff --git a/src/zh/UserGuide/Master/stage/ClusterQuickStart.md b/src/zh/UserGuide/Master/Tree/stage/ClusterQuickStart.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/ClusterQuickStart.md
rename to src/zh/UserGuide/Master/Tree/stage/ClusterQuickStart.md
diff --git a/src/zh/UserGuide/Master/stage/Command-Line-Interface.md b/src/zh/UserGuide/Master/Tree/stage/Command-Line-Interface.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Command-Line-Interface.md
rename to src/zh/UserGuide/Master/Tree/stage/Command-Line-Interface.md
diff --git a/src/zh/UserGuide/Master/stage/Data-Import-Export-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Data-Import-Export-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Data-Import-Export-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Data-Import-Export-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Data-Modeling/DataRegion.md b/src/zh/UserGuide/Master/Tree/stage/Data-Modeling/DataRegion.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Data-Modeling/DataRegion.md
rename to src/zh/UserGuide/Master/Tree/stage/Data-Modeling/DataRegion.md
diff --git a/src/zh/UserGuide/Master/stage/Data-Modeling/SchemaRegion-rocksdb.md b/src/zh/UserGuide/Master/Tree/stage/Data-Modeling/SchemaRegion-rocksdb.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Data-Modeling/SchemaRegion-rocksdb.md
rename to src/zh/UserGuide/Master/Tree/stage/Data-Modeling/SchemaRegion-rocksdb.md
diff --git a/src/zh/UserGuide/Master/stage/Deadband-Process.md b/src/zh/UserGuide/Master/Tree/stage/Deadband-Process.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Deadband-Process.md
rename to src/zh/UserGuide/Master/Tree/stage/Deadband-Process.md
diff --git a/src/zh/UserGuide/Master/stage/Delete-Data.md b/src/zh/UserGuide/Master/Tree/stage/Delete-Data.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Delete-Data.md
rename to src/zh/UserGuide/Master/Tree/stage/Delete-Data.md
diff --git a/src/zh/UserGuide/Master/stage/Delete-Data/Delete-Data.md b/src/zh/UserGuide/Master/Tree/stage/Delete-Data/Delete-Data.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Delete-Data/Delete-Data.md
rename to src/zh/UserGuide/Master/Tree/stage/Delete-Data/Delete-Data.md
diff --git a/src/zh/UserGuide/Master/stage/Delete-Data/TTL.md b/src/zh/UserGuide/Master/Tree/stage/Delete-Data/TTL.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Delete-Data/TTL.md
rename to src/zh/UserGuide/Master/Tree/stage/Delete-Data/TTL.md
diff --git a/src/zh/UserGuide/Master/stage/Deployment-Preparation.md b/src/zh/UserGuide/Master/Tree/stage/Deployment-Preparation.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Deployment-Preparation.md
rename to src/zh/UserGuide/Master/Tree/stage/Deployment-Preparation.md
diff --git a/src/zh/UserGuide/Master/stage/Deployment-Recommendation.md b/src/zh/UserGuide/Master/Tree/stage/Deployment-Recommendation.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Deployment-Recommendation.md
rename to src/zh/UserGuide/Master/Tree/stage/Deployment-Recommendation.md
diff --git a/src/zh/UserGuide/Master/stage/Docker-Install.md b/src/zh/UserGuide/Master/Tree/stage/Docker-Install.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Docker-Install.md
rename to src/zh/UserGuide/Master/Tree/stage/Docker-Install.md
diff --git a/src/zh/UserGuide/Master/stage/Edge-Cloud-Collaboration/Sync-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Edge-Cloud-Collaboration/Sync-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Edge-Cloud-Collaboration/Sync-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Edge-Cloud-Collaboration/Sync-Tool.md
diff --git a/src/zh/UserGuide/Master/IoTDB-Introduction/Features.md b/src/zh/UserGuide/Master/Tree/stage/Features.md
similarity index 100%
rename from src/zh/UserGuide/Master/IoTDB-Introduction/Features.md
rename to src/zh/UserGuide/Master/Tree/stage/Features.md
diff --git a/src/zh/UserGuide/Master/stage/Files.md b/src/zh/UserGuide/Master/Tree/stage/Files.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Files.md
rename to src/zh/UserGuide/Master/Tree/stage/Files.md
diff --git a/src/zh/UserGuide/Master/stage/Flink-SQL-IoTDB.md b/src/zh/UserGuide/Master/Tree/stage/Flink-SQL-IoTDB.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Flink-SQL-IoTDB.md
rename to src/zh/UserGuide/Master/Tree/stage/Flink-SQL-IoTDB.md
diff --git a/src/zh/UserGuide/Master/stage/General-SQL-Statements.md b/src/zh/UserGuide/Master/Tree/stage/General-SQL-Statements.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/General-SQL-Statements.md
rename to src/zh/UserGuide/Master/Tree/stage/General-SQL-Statements.md
diff --git a/src/zh/UserGuide/Master/stage/InfluxDB-Protocol.md b/src/zh/UserGuide/Master/Tree/stage/InfluxDB-Protocol.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/InfluxDB-Protocol.md
rename to src/zh/UserGuide/Master/Tree/stage/InfluxDB-Protocol.md
diff --git a/src/zh/UserGuide/Master/stage/Integration-Test/Integration-Test-refactoring-tutorial.md b/src/zh/UserGuide/Master/Tree/stage/Integration-Test/Integration-Test-refactoring-tutorial.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Integration-Test/Integration-Test-refactoring-tutorial.md
rename to src/zh/UserGuide/Master/Tree/stage/Integration-Test/Integration-Test-refactoring-tutorial.md
diff --git a/src/zh/UserGuide/Master/stage/Interface-Comparison.md b/src/zh/UserGuide/Master/Tree/stage/Interface-Comparison.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Interface-Comparison.md
rename to src/zh/UserGuide/Master/Tree/stage/Interface-Comparison.md
diff --git a/src/zh/UserGuide/Master/stage/IoTDB-Data-Pipe_timecho.md b/src/zh/UserGuide/Master/Tree/stage/IoTDB-Data-Pipe_timecho.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/IoTDB-Data-Pipe_timecho.md
rename to src/zh/UserGuide/Master/Tree/stage/IoTDB-Data-Pipe_timecho.md
diff --git a/src/zh/UserGuide/Master/stage/Last-Query.md b/src/zh/UserGuide/Master/Tree/stage/Last-Query.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Last-Query.md
rename to src/zh/UserGuide/Master/Tree/stage/Last-Query.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/CSV-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/CSV-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/CSV-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/CSV-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/IoTDB-Data-Dir-Overview-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/IoTDB-Data-Dir-Overview-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/IoTDB-Data-Dir-Overview-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/IoTDB-Data-Dir-Overview-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/JMX-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/JMX-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/JMX-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/JMX-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/Load-Tsfile.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/Load-Tsfile.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/Load-Tsfile.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/Load-Tsfile.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/Log-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/Log-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/Log-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/Log-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/MLogParser-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/MLogParser-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/MLogParser-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/MLogParser-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/Maintenance-Command.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/Maintenance-Command.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/Maintenance-Command.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/Maintenance-Command.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/Overlap-Validation-And-Repair-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/Overlap-Validation-And-Repair-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/Overlap-Validation-And-Repair-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/Overlap-Validation-And-Repair-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/SchemaFileSketch-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/SchemaFileSketch-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/SchemaFileSketch-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/SchemaFileSketch-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/TsFile-Load-Export-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Load-Export-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/TsFile-Load-Export-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Load-Export-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/TsFile-Resource-Sketch-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Resource-Sketch-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/TsFile-Resource-Sketch-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Resource-Sketch-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/TsFile-Settle-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Settle-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/TsFile-Settle-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Settle-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/TsFile-Sketch-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Sketch-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/TsFile-Sketch-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Sketch-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/TsFile-Split-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Split-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/TsFile-Split-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFile-Split-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/TsFileSelfCheck-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFileSelfCheck-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/TsFileSelfCheck-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/TsFileSelfCheck-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Maintenance-Tools/Watermark-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/Watermark-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Maintenance-Tools/Watermark-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Maintenance-Tools/Watermark-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/MapReduce-TsFile.md b/src/zh/UserGuide/Master/Tree/stage/MapReduce-TsFile.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/MapReduce-TsFile.md
rename to src/zh/UserGuide/Master/Tree/stage/MapReduce-TsFile.md
diff --git a/src/zh/UserGuide/Master/stage/Monitor-Alert/Alerting.md b/src/zh/UserGuide/Master/Tree/stage/Monitor-Alert/Alerting.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Monitor-Alert/Alerting.md
rename to src/zh/UserGuide/Master/Tree/stage/Monitor-Alert/Alerting.md
diff --git a/src/zh/UserGuide/Master/stage/Monitor-Alert/Metric-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Monitor-Alert/Metric-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Monitor-Alert/Metric-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Monitor-Alert/Metric-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Monitoring-Board-Install-and-Deploy.md b/src/zh/UserGuide/Master/Tree/stage/Monitoring-Board-Install-and-Deploy.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Monitoring-Board-Install-and-Deploy.md
rename to src/zh/UserGuide/Master/Tree/stage/Monitoring-Board-Install-and-Deploy.md
diff --git a/src/zh/UserGuide/Master/stage/Operate-Metadata/Auto-Create-MetaData.md b/src/zh/UserGuide/Master/Tree/stage/Operate-Metadata/Auto-Create-MetaData.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operate-Metadata/Auto-Create-MetaData.md
rename to src/zh/UserGuide/Master/Tree/stage/Operate-Metadata/Auto-Create-MetaData.md
diff --git a/src/zh/UserGuide/Master/stage/Operate-Metadata/Database.md b/src/zh/UserGuide/Master/Tree/stage/Operate-Metadata/Database.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operate-Metadata/Database.md
rename to src/zh/UserGuide/Master/Tree/stage/Operate-Metadata/Database.md
diff --git a/src/zh/UserGuide/Master/stage/Operate-Metadata/Node.md b/src/zh/UserGuide/Master/Tree/stage/Operate-Metadata/Node.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operate-Metadata/Node.md
rename to src/zh/UserGuide/Master/Tree/stage/Operate-Metadata/Node.md
diff --git a/src/zh/UserGuide/Master/stage/Operate-Metadata/Template.md b/src/zh/UserGuide/Master/Tree/stage/Operate-Metadata/Template.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operate-Metadata/Template.md
rename to src/zh/UserGuide/Master/Tree/stage/Operate-Metadata/Template.md
diff --git a/src/zh/UserGuide/Master/stage/Operate-Metadata/Timeseries.md b/src/zh/UserGuide/Master/Tree/stage/Operate-Metadata/Timeseries.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operate-Metadata/Timeseries.md
rename to src/zh/UserGuide/Master/Tree/stage/Operate-Metadata/Timeseries.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Aggregation.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Aggregation.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Aggregation.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Aggregation.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Anomaly-Detection.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Anomaly-Detection.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Anomaly-Detection.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Anomaly-Detection.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Comparison.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Comparison.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Comparison.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Comparison.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Conditional.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Conditional.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Conditional.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Conditional.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Constant.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Constant.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Constant.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Constant.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Continuous-Interval.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Continuous-Interval.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Continuous-Interval.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Continuous-Interval.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Conversion.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Conversion.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Conversion.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Conversion.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Data-Matching.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Data-Matching.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Data-Matching.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Data-Matching.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Data-Profiling.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Data-Profiling.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Data-Profiling.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Data-Profiling.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Data-Quality.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Data-Quality.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Data-Quality.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Data-Quality.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Data-Repairing.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Data-Repairing.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Data-Repairing.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Data-Repairing.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Frequency-Domain.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Frequency-Domain.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Frequency-Domain.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Frequency-Domain.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Lambda.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Lambda.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Lambda.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Lambda.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Logical.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Logical.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Logical.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Logical.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Machine-Learning.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Machine-Learning.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Machine-Learning.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Machine-Learning.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Mathematical.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Mathematical.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Mathematical.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Mathematical.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Overview.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Overview.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Overview.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Overview.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Sample.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Sample.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Sample.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Sample.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Selection.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Selection.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Selection.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Selection.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Series-Discovery.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Series-Discovery.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Series-Discovery.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Series-Discovery.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/String.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/String.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/String.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/String.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Time-Series.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Time-Series.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Time-Series.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Time-Series.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/User-Defined-Function.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/User-Defined-Function.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/User-Defined-Function.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/User-Defined-Function.md
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Variation-Trend.md b/src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Variation-Trend.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Operators-Functions/Variation-Trend.md
rename to src/zh/UserGuide/Master/Tree/stage/Operators-Functions/Variation-Trend.md
diff --git a/src/zh/UserGuide/Master/IoTDB-Introduction/Performance.md b/src/zh/UserGuide/Master/Tree/stage/Performance.md
similarity index 100%
rename from src/zh/UserGuide/Master/IoTDB-Introduction/Performance.md
rename to src/zh/UserGuide/Master/Tree/stage/Performance.md
diff --git a/src/zh/UserGuide/Master/stage/Programming-Thrift.md b/src/zh/UserGuide/Master/Tree/stage/Programming-Thrift.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Programming-Thrift.md
rename to src/zh/UserGuide/Master/Tree/stage/Programming-Thrift.md
diff --git a/src/zh/UserGuide/Master/stage/Programming-TsFile-API.md b/src/zh/UserGuide/Master/Tree/stage/Programming-TsFile-API.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Programming-TsFile-API.md
rename to src/zh/UserGuide/Master/Tree/stage/Programming-TsFile-API.md
diff --git a/src/zh/UserGuide/Master/stage/Query-Data/Align-By.md b/src/zh/UserGuide/Master/Tree/stage/Query-Data/Align-By.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Query-Data/Align-By.md
rename to src/zh/UserGuide/Master/Tree/stage/Query-Data/Align-By.md
diff --git a/src/zh/UserGuide/Master/stage/Query-Data/Continuous-Query.md b/src/zh/UserGuide/Master/Tree/stage/Query-Data/Continuous-Query.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Query-Data/Continuous-Query.md
rename to src/zh/UserGuide/Master/Tree/stage/Query-Data/Continuous-Query.md
diff --git a/src/zh/UserGuide/Master/stage/Query-Data/Fill.md b/src/zh/UserGuide/Master/Tree/stage/Query-Data/Fill.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Query-Data/Fill.md
rename to src/zh/UserGuide/Master/Tree/stage/Query-Data/Fill.md
diff --git a/src/zh/UserGuide/Master/stage/Query-Data/Group-By.md b/src/zh/UserGuide/Master/Tree/stage/Query-Data/Group-By.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Query-Data/Group-By.md
rename to src/zh/UserGuide/Master/Tree/stage/Query-Data/Group-By.md
diff --git a/src/zh/UserGuide/Master/stage/Query-Data/Having-Condition.md b/src/zh/UserGuide/Master/Tree/stage/Query-Data/Having-Condition.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Query-Data/Having-Condition.md
rename to src/zh/UserGuide/Master/Tree/stage/Query-Data/Having-Condition.md
diff --git a/src/zh/UserGuide/Master/stage/Query-Data/Order-By.md b/src/zh/UserGuide/Master/Tree/stage/Query-Data/Order-By.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Query-Data/Order-By.md
rename to src/zh/UserGuide/Master/Tree/stage/Query-Data/Order-By.md
diff --git a/src/zh/UserGuide/Master/stage/Query-Data/Overview.md b/src/zh/UserGuide/Master/Tree/stage/Query-Data/Overview.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Query-Data/Overview.md
rename to src/zh/UserGuide/Master/Tree/stage/Query-Data/Overview.md
diff --git a/src/zh/UserGuide/Master/stage/Query-Data/Pagination.md b/src/zh/UserGuide/Master/Tree/stage/Query-Data/Pagination.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Query-Data/Pagination.md
rename to src/zh/UserGuide/Master/Tree/stage/Query-Data/Pagination.md
diff --git a/src/zh/UserGuide/Master/stage/Query-Data/Select-Expression.md b/src/zh/UserGuide/Master/Tree/stage/Query-Data/Select-Expression.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Query-Data/Select-Expression.md
rename to src/zh/UserGuide/Master/Tree/stage/Query-Data/Select-Expression.md
diff --git a/src/zh/UserGuide/Master/stage/Query-Data/Select-Into.md b/src/zh/UserGuide/Master/Tree/stage/Query-Data/Select-Into.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Query-Data/Select-Into.md
rename to src/zh/UserGuide/Master/Tree/stage/Query-Data/Select-Into.md
diff --git a/src/zh/UserGuide/Master/stage/Query-Data/Where-Condition.md b/src/zh/UserGuide/Master/Tree/stage/Query-Data/Where-Condition.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Query-Data/Where-Condition.md
rename to src/zh/UserGuide/Master/Tree/stage/Query-Data/Where-Condition.md
diff --git a/src/zh/UserGuide/Master/stage/QuickStart.md b/src/zh/UserGuide/Master/Tree/stage/QuickStart.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/QuickStart.md
rename to src/zh/UserGuide/Master/Tree/stage/QuickStart.md
diff --git a/src/zh/UserGuide/Master/stage/SQL-Reference.md b/src/zh/UserGuide/Master/Tree/stage/SQL-Reference.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/SQL-Reference.md
rename to src/zh/UserGuide/Master/Tree/stage/SQL-Reference.md
diff --git a/src/zh/UserGuide/Master/stage/Schema-Template.md b/src/zh/UserGuide/Master/Tree/stage/Schema-Template.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Schema-Template.md
rename to src/zh/UserGuide/Master/Tree/stage/Schema-Template.md
diff --git a/src/zh/UserGuide/Master/stage/ServerFileList.md b/src/zh/UserGuide/Master/Tree/stage/ServerFileList.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/ServerFileList.md
rename to src/zh/UserGuide/Master/Tree/stage/ServerFileList.md
diff --git a/src/zh/UserGuide/Master/stage/Syntax-Conventions/Detailed-Grammar.md b/src/zh/UserGuide/Master/Tree/stage/Syntax-Conventions/Detailed-Grammar.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Syntax-Conventions/Detailed-Grammar.md
rename to src/zh/UserGuide/Master/Tree/stage/Syntax-Conventions/Detailed-Grammar.md
diff --git a/src/zh/UserGuide/Master/stage/Syntax-Conventions/Identifier.md b/src/zh/UserGuide/Master/Tree/stage/Syntax-Conventions/Identifier.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Syntax-Conventions/Identifier.md
rename to src/zh/UserGuide/Master/Tree/stage/Syntax-Conventions/Identifier.md
diff --git a/src/zh/UserGuide/Master/stage/Syntax-Conventions/KeyValue-Pair.md b/src/zh/UserGuide/Master/Tree/stage/Syntax-Conventions/KeyValue-Pair.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Syntax-Conventions/KeyValue-Pair.md
rename to src/zh/UserGuide/Master/Tree/stage/Syntax-Conventions/KeyValue-Pair.md
diff --git a/src/zh/UserGuide/Master/stage/Syntax-Conventions/Keywords-And-Reserved-Words.md b/src/zh/UserGuide/Master/Tree/stage/Syntax-Conventions/Keywords-And-Reserved-Words.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Syntax-Conventions/Keywords-And-Reserved-Words.md
rename to src/zh/UserGuide/Master/Tree/stage/Syntax-Conventions/Keywords-And-Reserved-Words.md
diff --git a/src/zh/UserGuide/Master/stage/Syntax-Conventions/Literal-Values.md b/src/zh/UserGuide/Master/Tree/stage/Syntax-Conventions/Literal-Values.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Syntax-Conventions/Literal-Values.md
rename to src/zh/UserGuide/Master/Tree/stage/Syntax-Conventions/Literal-Values.md
diff --git a/src/zh/UserGuide/Master/stage/Syntax-Conventions/NodeName-In-Path.md b/src/zh/UserGuide/Master/Tree/stage/Syntax-Conventions/NodeName-In-Path.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Syntax-Conventions/NodeName-In-Path.md
rename to src/zh/UserGuide/Master/Tree/stage/Syntax-Conventions/NodeName-In-Path.md
diff --git a/src/zh/UserGuide/Master/stage/Syntax-Conventions/Session-And-TsFile-API.md b/src/zh/UserGuide/Master/Tree/stage/Syntax-Conventions/Session-And-TsFile-API.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Syntax-Conventions/Session-And-TsFile-API.md
rename to src/zh/UserGuide/Master/Tree/stage/Syntax-Conventions/Session-And-TsFile-API.md
diff --git a/src/zh/UserGuide/Master/stage/TSDB-Comparison.md b/src/zh/UserGuide/Master/Tree/stage/TSDB-Comparison.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/TSDB-Comparison.md
rename to src/zh/UserGuide/Master/Tree/stage/TSDB-Comparison.md
diff --git a/src/zh/UserGuide/Master/stage/Time-Partition.md b/src/zh/UserGuide/Master/Tree/stage/Time-Partition.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Time-Partition.md
rename to src/zh/UserGuide/Master/Tree/stage/Time-Partition.md
diff --git a/src/zh/UserGuide/Master/stage/Time-zone.md b/src/zh/UserGuide/Master/Tree/stage/Time-zone.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Time-zone.md
rename to src/zh/UserGuide/Master/Tree/stage/Time-zone.md
diff --git a/src/zh/UserGuide/Master/stage/Trigger/Configuration-Parameters.md b/src/zh/UserGuide/Master/Tree/stage/Trigger/Configuration-Parameters.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Trigger/Configuration-Parameters.md
rename to src/zh/UserGuide/Master/Tree/stage/Trigger/Configuration-Parameters.md
diff --git a/src/zh/UserGuide/Master/stage/Trigger/Implement-Trigger.md b/src/zh/UserGuide/Master/Tree/stage/Trigger/Implement-Trigger.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Trigger/Implement-Trigger.md
rename to src/zh/UserGuide/Master/Tree/stage/Trigger/Implement-Trigger.md
diff --git a/src/zh/UserGuide/Master/stage/Trigger/Instructions.md b/src/zh/UserGuide/Master/Tree/stage/Trigger/Instructions.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Trigger/Instructions.md
rename to src/zh/UserGuide/Master/Tree/stage/Trigger/Instructions.md
diff --git a/src/zh/UserGuide/Master/stage/Trigger/Notes.md b/src/zh/UserGuide/Master/Tree/stage/Trigger/Notes.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Trigger/Notes.md
rename to src/zh/UserGuide/Master/Tree/stage/Trigger/Notes.md
diff --git a/src/zh/UserGuide/Master/stage/Trigger/Trigger-Management.md b/src/zh/UserGuide/Master/Tree/stage/Trigger/Trigger-Management.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Trigger/Trigger-Management.md
rename to src/zh/UserGuide/Master/Tree/stage/Trigger/Trigger-Management.md
diff --git a/src/zh/UserGuide/Master/stage/TsFile-Import-Export-Tool.md b/src/zh/UserGuide/Master/Tree/stage/TsFile-Import-Export-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/TsFile-Import-Export-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/TsFile-Import-Export-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/WayToGetIoTDB.md b/src/zh/UserGuide/Master/Tree/stage/WayToGetIoTDB.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/WayToGetIoTDB.md
rename to src/zh/UserGuide/Master/Tree/stage/WayToGetIoTDB.md
diff --git a/src/zh/UserGuide/Master/stage/Write-Data/Batch-Load-Tool.md b/src/zh/UserGuide/Master/Tree/stage/Write-Data/Batch-Load-Tool.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Write-Data/Batch-Load-Tool.md
rename to src/zh/UserGuide/Master/Tree/stage/Write-Data/Batch-Load-Tool.md
diff --git a/src/zh/UserGuide/Master/stage/Write-Data/MQTT.md b/src/zh/UserGuide/Master/Tree/stage/Write-Data/MQTT.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Write-Data/MQTT.md
rename to src/zh/UserGuide/Master/Tree/stage/Write-Data/MQTT.md
diff --git a/src/zh/UserGuide/Master/stage/Write-Data/REST-API.md b/src/zh/UserGuide/Master/Tree/stage/Write-Data/REST-API.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Write-Data/REST-API.md
rename to src/zh/UserGuide/Master/Tree/stage/Write-Data/REST-API.md
diff --git a/src/zh/UserGuide/Master/stage/Write-Data/Session.md b/src/zh/UserGuide/Master/Tree/stage/Write-Data/Session.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Write-Data/Session.md
rename to src/zh/UserGuide/Master/Tree/stage/Write-Data/Session.md
diff --git a/src/zh/UserGuide/Master/stage/Write-Data/Write-Data.md b/src/zh/UserGuide/Master/Tree/stage/Write-Data/Write-Data.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Write-Data/Write-Data.md
rename to src/zh/UserGuide/Master/Tree/stage/Write-Data/Write-Data.md
diff --git a/src/zh/UserGuide/Master/stage/Writing-Data-on-HDFS.md b/src/zh/UserGuide/Master/Tree/stage/Writing-Data-on-HDFS.md
similarity index 100%
rename from src/zh/UserGuide/Master/stage/Writing-Data-on-HDFS.md
rename to src/zh/UserGuide/Master/Tree/stage/Writing-Data-on-HDFS.md
diff --git a/src/zh/UserGuide/latest/User-Manual/Operate-Metadata_apache.md b/src/zh/UserGuide/latest/Basic-Concept/Operate-Metadata_apache.md
similarity index 100%
rename from src/zh/UserGuide/latest/User-Manual/Operate-Metadata_apache.md
rename to src/zh/UserGuide/latest/Basic-Concept/Operate-Metadata_apache.md
diff --git a/src/zh/UserGuide/Master/User-Manual/Operate-Metadata_timecho.md b/src/zh/UserGuide/latest/Basic-Concept/Operate-Metadata_timecho.md
similarity index 99%
rename from src/zh/UserGuide/Master/User-Manual/Operate-Metadata_timecho.md
rename to src/zh/UserGuide/latest/Basic-Concept/Operate-Metadata_timecho.md
index db4f524e1..b8c571bcd 100644
--- a/src/zh/UserGuide/Master/User-Manual/Operate-Metadata_timecho.md
+++ b/src/zh/UserGuide/latest/Basic-Concept/Operate-Metadata_timecho.md
@@ -249,7 +249,6 @@ IoTDB> show devices
所有设备都一定会有 TTL,即不可能是 null。INF 表示无穷大。
-
### 设置异构数据库(进阶操作)
在熟悉 IoTDB 元数据建模的前提下,用户可以在 IoTDB 中设置异构的数据库,以便应对不同的生产需求。
diff --git a/src/zh/UserGuide/latest/User-Manual/Query-Data.md b/src/zh/UserGuide/latest/Basic-Concept/Query-Data.md
similarity index 100%
rename from src/zh/UserGuide/latest/User-Manual/Query-Data.md
rename to src/zh/UserGuide/latest/Basic-Concept/Query-Data.md
diff --git a/src/zh/UserGuide/latest/User-Manual/Write-Delete-Data.md b/src/zh/UserGuide/latest/Basic-Concept/Write-Delete-Data.md
similarity index 100%
rename from src/zh/UserGuide/latest/User-Manual/Write-Delete-Data.md
rename to src/zh/UserGuide/latest/Basic-Concept/Write-Delete-Data.md
diff --git a/src/zh/UserGuide/latest/Basic-Concept/Data-Type.md b/src/zh/UserGuide/latest/Preparatory-knowledge/Data-Type.md
similarity index 100%
rename from src/zh/UserGuide/latest/Basic-Concept/Data-Type.md
rename to src/zh/UserGuide/latest/Preparatory-knowledge/Data-Type.md
diff --git a/src/zh/UserGuide/latest/User-Manual/Operator-and-Expression.md b/src/zh/UserGuide/latest/Reference/Operator-and-Expression.md
similarity index 100%
rename from src/zh/UserGuide/latest/User-Manual/Operator-and-Expression.md
rename to src/zh/UserGuide/latest/Reference/Operator-and-Expression.md
diff --git a/src/zh/UserGuide/latest/User-Manual/Syntax-Rule.md b/src/zh/UserGuide/latest/Reference/Syntax-Rule.md
similarity index 100%
rename from src/zh/UserGuide/latest/User-Manual/Syntax-Rule.md
rename to src/zh/UserGuide/latest/Reference/Syntax-Rule.md
diff --git a/src/zh/UserGuide/latest/Basic-Concept/Cluster-data-partitioning.md b/src/zh/UserGuide/latest/Technical-Insider/Cluster-data-partitioning.md
similarity index 100%
rename from src/zh/UserGuide/latest/Basic-Concept/Cluster-data-partitioning.md
rename to src/zh/UserGuide/latest/Technical-Insider/Cluster-data-partitioning.md
diff --git a/src/zh/UserGuide/latest/Basic-Concept/Encoding-and-Compression.md b/src/zh/UserGuide/latest/Technical-Insider/Encoding-and-Compression.md
similarity index 100%
rename from src/zh/UserGuide/latest/Basic-Concept/Encoding-and-Compression.md
rename to src/zh/UserGuide/latest/Technical-Insider/Encoding-and-Compression.md
diff --git a/src/zh/UserGuide/latest/IoTDB-Introduction/Publication.md b/src/zh/UserGuide/latest/Technical-Insider/Publication.md
similarity index 100%
rename from src/zh/UserGuide/latest/IoTDB-Introduction/Publication.md
rename to src/zh/UserGuide/latest/Technical-Insider/Publication.md
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 216df4368..57b527ccb 100644
--- a/src/zh/UserGuide/latest/Tools-System/Maintenance-Tool_apache.md
+++ b/src/zh/UserGuide/latest/Tools-System/Maintenance-Tool_apache.md
@@ -19,7 +19,7 @@
-->
-# 运维工具
+# 集群管理工具
## 数据文件夹概览工具
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 0ef56dcec..63d69149f 100644
--- a/src/zh/UserGuide/latest/Tools-System/Maintenance-Tool_timecho.md
+++ b/src/zh/UserGuide/latest/Tools-System/Maintenance-Tool_timecho.md
@@ -19,7 +19,7 @@
-->
-# 运维工具
+# 集群管理工具
## 集群管理工具
diff --git a/src/zh/UserGuide/latest/User-Manual/Security-Management_timecho.md b/src/zh/UserGuide/latest/User-Manual/Audit-Log_timecho.md
similarity index 69%
rename from src/zh/UserGuide/latest/User-Manual/Security-Management_timecho.md
rename to src/zh/UserGuide/latest/User-Manual/Audit-Log_timecho.md
index 8dc4076fd..0165a99d8 100644
--- a/src/zh/UserGuide/latest/User-Manual/Security-Management_timecho.md
+++ b/src/zh/UserGuide/latest/User-Manual/Audit-Log_timecho.md
@@ -19,59 +19,10 @@
-->
-# 安全控制
-## 白名单
+# 审计日志
-**功能描述**
-
-允许哪些客户端地址能连接 IoTDB
-
-**配置文件**
-
-conf/iotdb-system.properties
-
-conf/white.list
-
-**配置项**
-
-iotdb-system.properties:
-
-决定是否开启白名单功能
-
-```YAML
-# 是否开启白名单功能
-enable_white_list=true
-```
-
-white.list:
-
-决定哪些IP地址能够连接IoTDB
-
-```YAML
-# 支持注释
-# 支持精确匹配,每行一个ip
-10.2.3.4
-
-# 支持*通配符,每行一个ip
-10.*.1.3
-10.100.0.*
-```
-
-**注意事项**
-
-1. 如果通过session客户端取消本身的白名单,当前连接并不会立即断开。在下次创建连接的时候拒绝。
-2. 如果直接修改white.list,一分钟内生效。如果通过session客户端修改,立即生效,更新内存中的值和white.list磁盘文件
-3. 开启白名单功能,没有white.list 文件,启动DB服务成功,但是,拒绝所有连接。
-4. DB服务运行中,删除 white.list 文件,至多一分钟后,拒绝所有连接。
-5. 是否开启白名单功能的配置,可以热加载。
-6. 使用Java 原生接口修改白名单,必须是root用户才能修改,拒绝非root用户修改;修改内容必须合法,否则会抛出StatementExecutionException异常。
-
-
-
-## 审计日志
-
-### 功能背景
+## 功能背景
审计日志是数据库的记录凭证,通过审计日志功能可以查询到用户在数据库中增删改查等各项操作,以保证信息安全。关于IoTDB的审计日志功能可以实现以下场景的需求:
@@ -80,11 +31,11 @@ white.list:
-#### 场景说明
+### 场景说明
-##### 对所有用户的所有操作(增、删、改、查)进行记录
+#### 对所有用户的所有操作(增、删、改、查)进行记录
通过审计日志功能追踪到所有用户在数据中的各项操作。其中所记录的信息要包含数据操作(新增、删除、查询)及元数据操作(新增、修改、删除、查询)、客户端登录信息(用户名、ip地址)。
@@ -97,8 +48,7 @@ white.list:

-
-##### 可关闭部分用户连接的审计日志
+#### 可关闭部分用户连接的审计日志
@@ -106,7 +56,7 @@ white.list:
-### 功能定义
+## 功能定义
@@ -122,7 +72,7 @@ white.list:
2. 数据和元数据的查询操作
3. 元数据类的新增、修改、删除操作
-#### 配置项
+### 配置项
在iotdb-system.properties中修改以下几项配置
diff --git a/src/zh/UserGuide/latest/User-Manual/Database-Programming.md b/src/zh/UserGuide/latest/User-Manual/Database-Programming.md
index 1a5610983..b3b1af76a 100644
--- a/src/zh/UserGuide/latest/User-Manual/Database-Programming.md
+++ b/src/zh/UserGuide/latest/User-Manual/Database-Programming.md
@@ -20,451 +20,6 @@
-->
# 数据库编程
-## 触发器
-### 使用说明
-
-触发器提供了一种侦听序列数据变动的机制。配合用户自定义逻辑,可完成告警、数据转发等功能。
-
-触发器基于 Java 反射机制实现。用户通过简单实现 Java 接口,即可实现数据侦听。IoTDB 允许用户动态注册、卸载触发器,在注册、卸载期间,无需启停服务器。
-
-#### 侦听模式
-
-IoTDB 的单个触发器可用于侦听符合特定模式的时间序列的数据变动,如时间序列 root.sg.a 上的数据变动,或者符合路径模式 root.**.a 的时间序列上的数据变动。您在注册触发器时可以通过 SQL 语句指定触发器侦听的路径模式。
-
-#### 触发器类型
-
-目前触发器分为两类,您在注册触发器时可以通过 SQL 语句指定类型:
-
-- 有状态的触发器。该类触发器的执行逻辑可能依赖前后的多条数据,框架会将不同节点写入的数据汇总到同一个触发器实例进行计算,来保留上下文信息,通常用于采样或者统计一段时间的数据聚合信息。集群中只有一个节点持有有状态触发器的实例。
-- 无状态的触发器。触发器的执行逻辑只和当前输入的数据有关,框架无需将不同节点的数据汇总到同一个触发器实例中,通常用于单行数据的计算和异常检测等。集群中每个节点均持有无状态触发器的实例。
-
-#### 触发时机
-
-触发器的触发时机目前有两种,后续会拓展其它触发时机。您在注册触发器时可以通过 SQL 语句指定触发时机:
-
-- BEFORE INSERT,即在数据持久化之前触发。请注意,目前触发器并不支持数据清洗,不会对要持久化的数据本身进行变动。
-- AFTER INSERT,即在数据持久化之后触发。
-
-### 编写触发器
-
-#### 触发器依赖
-
-触发器的逻辑需要您编写 Java 类进行实现。
-在编写触发器逻辑时,需要使用到下面展示的依赖。如果您使用 [Maven](http://search.maven.org/),则可以直接从 [Maven 库](http://search.maven.org/)中搜索到它们。请注意选择和目标服务器版本相同的依赖版本。
-
-``` xml
-
- org.apache.iotdb
- iotdb-server
- 1.0.0
- provided
-
-```
-
-#### 接口说明
-
-编写一个触发器需要实现 `org.apache.iotdb.trigger.api.Trigger` 类。
-
-```java
-import org.apache.iotdb.trigger.api.enums.FailureStrategy;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-
-public interface Trigger {
-
- /**
- * This method is mainly used to validate {@link TriggerAttributes} before calling {@link
- * Trigger#onCreate(TriggerAttributes)}.
- *
- * @param attributes TriggerAttributes
- * @throws Exception e
- */
- default void validate(TriggerAttributes attributes) throws Exception {}
-
- /**
- * This method will be called when creating a trigger after validation.
- *
- * @param attributes TriggerAttributes
- * @throws Exception e
- */
- default void onCreate(TriggerAttributes attributes) throws Exception {}
-
- /**
- * This method will be called when dropping a trigger.
- *
- * @throws Exception e
- */
- default void onDrop() throws Exception {}
-
- /**
- * When restarting a DataNode, Triggers that have been registered will be restored and this method
- * will be called during the process of restoring.
- *
- * @throws Exception e
- */
- default void restore() throws Exception {}
-
- /**
- * Overrides this method to set the expected FailureStrategy, {@link FailureStrategy#OPTIMISTIC}
- * is the default strategy.
- *
- * @return {@link FailureStrategy}
- */
- default FailureStrategy getFailureStrategy() {
- return FailureStrategy.OPTIMISTIC;
- }
-
- /**
- * @param tablet see {@link Tablet} for detailed information of data structure. Data that is
- * inserted will be constructed as a Tablet and you can define process logic with {@link
- * Tablet}.
- * @return true if successfully fired
- * @throws Exception e
- */
- default boolean fire(Tablet tablet) throws Exception {
- return true;
- }
-}
-```
-
-该类主要提供了两类编程接口:**生命周期相关接口**和**数据变动侦听相关接口**。该类中所有的接口都不是必须实现的,当您不实现它们时,它们不会对流经的数据操作产生任何响应。您可以根据实际需要,只实现其中若干接口。
-
-下面是所有可供用户进行实现的接口的说明。
-
-##### 生命周期相关接口
-
-| 接口定义 | 描述 |
-| ------------------------------------------------------------ | ------------------------------------------------------------ |
-| *default void validate(TriggerAttributes attributes) throws Exception {}* | 用户在使用 `CREATE TRIGGER` 语句创建触发器时,可以指定触发器需要使用的参数,该接口会用于验证参数正确性。 |
-| *default void onCreate(TriggerAttributes attributes) throws Exception {}* | 当您使用`CREATE TRIGGER`语句创建触发器后,该接口会被调用一次。在每一个触发器实例的生命周期内,该接口会且仅会被调用一次。该接口主要有如下作用:帮助用户解析 SQL 语句中的自定义属性(使用`TriggerAttributes`)。 可以创建或申请资源,如建立外部链接、打开文件等。 |
-| *default void onDrop() throws Exception {}* | 当您使用`DROP TRIGGER`语句删除触发器后,该接口会被调用。在每一个触发器实例的生命周期内,该接口会且仅会被调用一次。该接口主要有如下作用:可以进行资源释放的操作。可以用于持久化触发器计算的结果。 |
-| *default void restore() throws Exception {}* | 当重启 DataNode 时,集群会恢复 DataNode 上已经注册的触发器实例,在此过程中会为该 DataNode 上的有状态触发器调用一次该接口。有状态触发器实例所在的 DataNode 宕机后,集群会在另一个可用 DataNode 上恢复该触发器的实例,在此过程中会调用一次该接口。该接口可以用于自定义恢复逻辑。 |
-
-##### 数据变动侦听相关接口
-
-###### 侦听接口
-
-```java
- /**
- * @param tablet see {@link Tablet} for detailed information of data structure. Data that is
- * inserted will be constructed as a Tablet and you can define process logic with {@link
- * Tablet}.
- * @return true if successfully fired
- * @throws Exception e
- */
- default boolean fire(Tablet tablet) throws Exception {
- return true;
- }
-```
-
-数据变动时,触发器以 Tablet 作为触发操作的单位。您可以通过 Tablet 获取相应序列的元数据和数据,然后进行相应的触发操作,触发成功则返回值应当为 true。该接口返回 false 或是抛出异常我们均认为触发失败。在触发失败时,我们会根据侦听策略接口进行相应的操作。
-
-进行一次 INSERT 操作时,对于其中的每条时间序列,我们会检测是否有侦听该路径模式的触发器,然后将符合同一个触发器所侦听的路径模式的时间序列数据组装成一个新的 Tablet 用于触发器的 fire 接口。可以理解成:
-
-```java
-Map> pathToTriggerListMap => Map
-```
-
-**请注意,目前我们不对触发器的触发顺序有任何保证。**
-
-下面是示例:
-
-假设有三个触发器,触发器的触发时机均为 BEFORE INSERT
-
-- 触发器 Trigger1 侦听路径模式:root\.sg.*
-- 触发器 Trigger2 侦听路径模式:root.sg.a
-- 触发器 Trigger3 侦听路径模式:root.sg.b
-
-写入语句:
-
-```sql
-insert into root.sg(time, a, b) values (1, 1, 1);
-```
-
-序列 root.sg.a 匹配 Trigger1 和 Trigger2,序列 root.sg.b 匹配 Trigger1 和 Trigger3,那么:
-
-- root.sg.a 和 root.sg.b 的数据会被组装成一个新的 tablet1,在相应的触发时机进行 Trigger1.fire(tablet1)
-- root.sg.a 的数据会被组装成一个新的 tablet2,在相应的触发时机进行 Trigger2.fire(tablet2)
-- root.sg.b 的数据会被组装成一个新的 tablet3,在相应的触发时机进行 Trigger3.fire(tablet3)
-
-###### 侦听策略接口
-
-在触发器触发失败时,我们会根据侦听策略接口设置的策略进行相应的操作,您可以通过下述接口设置 `org.apache.iotdb.trigger.api.enums.FailureStrategy`,目前有乐观和悲观两种策略:
-
-- 乐观策略:触发失败的触发器不影响后续触发器的触发,也不影响写入流程,即我们不对触发失败涉及的序列做额外处理,仅打日志记录失败,最后返回用户写入数据成功,但触发部分失败。
-- 悲观策略:失败触发器影响后续所有 Pipeline 的处理,即我们认为该 Trigger 触发失败会导致后续所有触发流程不再进行。如果该触发器的触发时机为 BEFORE INSERT,那么写入也不再进行,直接返回写入失败。
-
-```java
- /**
- * Overrides this method to set the expected FailureStrategy, {@link FailureStrategy#OPTIMISTIC}
- * is the default strategy.
- *
- * @return {@link FailureStrategy}
- */
- default FailureStrategy getFailureStrategy() {
- return FailureStrategy.OPTIMISTIC;
- }
-```
-
-您可以参考下图辅助理解,其中 Trigger1 配置采用乐观策略,Trigger2 配置采用悲观策略。Trigger1 和 Trigger2 的触发时机是 BEFORE INSERT,Trigger3 和 Trigger4 的触发时机是 AFTER INSERT。 正常执行流程如下:
-
-
-
-
-
-
-#### 示例
-
-如果您使用 [Maven](http://search.maven.org/),可以参考我们编写的示例项目 trigger-example。您可以在 [这里](https://github.com/apache/iotdb/tree/master/example/trigger) 找到它。后续我们会加入更多的示例项目供您参考。
-
-下面是其中一个示例项目的代码:
-
-```java
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.trigger;
-
-import org.apache.iotdb.db.engine.trigger.sink.alertmanager.AlertManagerConfiguration;
-import org.apache.iotdb.db.engine.trigger.sink.alertmanager.AlertManagerEvent;
-import org.apache.iotdb.db.engine.trigger.sink.alertmanager.AlertManagerHandler;
-import org.apache.iotdb.trigger.api.Trigger;
-import org.apache.iotdb.trigger.api.TriggerAttributes;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-
-public class ClusterAlertingExample implements Trigger {
- private static final Logger LOGGER = LoggerFactory.getLogger(ClusterAlertingExample.class);
-
- private final AlertManagerHandler alertManagerHandler = new AlertManagerHandler();
-
- private final AlertManagerConfiguration alertManagerConfiguration =
- new AlertManagerConfiguration("http://127.0.0.1:9093/api/v2/alerts");
-
- private String alertname;
-
- private final HashMap labels = new HashMap<>();
-
- private final HashMap annotations = new HashMap<>();
-
- @Override
- public void onCreate(TriggerAttributes attributes) throws Exception {
- alertname = "alert_test";
-
- labels.put("series", "root.ln.wf01.wt01.temperature");
- labels.put("value", "");
- labels.put("severity", "");
-
- annotations.put("summary", "high temperature");
- annotations.put("description", "{{.alertname}}: {{.series}} is {{.value}}");
-
- alertManagerHandler.open(alertManagerConfiguration);
- }
-
- @Override
- public void onDrop() throws IOException {
- alertManagerHandler.close();
- }
-
- @Override
- public boolean fire(Tablet tablet) throws Exception {
- List measurementSchemaList = tablet.getSchemas();
- for (int i = 0, n = measurementSchemaList.size(); i < n; i++) {
- if (measurementSchemaList.get(i).getType().equals(TSDataType.DOUBLE)) {
- // for example, we only deal with the columns of Double type
- double[] values = (double[]) tablet.values[i];
- for (double value : values) {
- if (value > 100.0) {
- LOGGER.info("trigger value > 100");
- labels.put("value", String.valueOf(value));
- labels.put("severity", "critical");
- AlertManagerEvent alertManagerEvent =
- new AlertManagerEvent(alertname, labels, annotations);
- alertManagerHandler.onEvent(alertManagerEvent);
- } else if (value > 50.0) {
- LOGGER.info("trigger value > 50");
- labels.put("value", String.valueOf(value));
- labels.put("severity", "warning");
- AlertManagerEvent alertManagerEvent =
- new AlertManagerEvent(alertname, labels, annotations);
- alertManagerHandler.onEvent(alertManagerEvent);
- }
- }
- }
- }
- return true;
- }
-}
-```
-### 管理触发器
-
-您可以通过 SQL 语句注册和卸载一个触发器实例,您也可以通过 SQL 语句查询到所有已经注册的触发器。
-
-**我们建议您在注册触发器时停止写入。**
-
-#### 注册触发器
-
-触发器可以注册在任意路径模式上。被注册有触发器的序列将会被触发器侦听,当序列上有数据变动时,触发器中对应的触发方法将会被调用。
-
-注册一个触发器可以按如下流程进行:
-
-1. 按照编写触发器章节的说明,实现一个完整的 Trigger 类,假定这个类的全类名为 `org.apache.iotdb.trigger.ClusterAlertingExample`
-2. 将项目打成 JAR 包。
-3. 使用 SQL 语句注册该触发器。注册过程中会仅只会调用一次触发器的 `validate` 和 `onCreate` 接口,具体请参考编写触发器章节。
-
-完整 SQL 语法如下:
-
-```sql
-// Create Trigger
-createTrigger
- : CREATE triggerType TRIGGER triggerName=identifier triggerEventClause ON pathPattern AS className=STRING_LITERAL uriClause? triggerAttributeClause?
- ;
-
-triggerType
- : STATELESS | STATEFUL
- ;
-
-triggerEventClause
- : (BEFORE | AFTER) INSERT
- ;
-
-uriClause
- : USING URI uri
- ;
-
-uri
- : STRING_LITERAL
- ;
-
-triggerAttributeClause
- : WITH LR_BRACKET triggerAttribute (COMMA triggerAttribute)* RR_BRACKET
- ;
-
-triggerAttribute
- : key=attributeKey operator_eq value=attributeValue
- ;
-```
-
-下面对 SQL 语法进行说明,您可以结合使用说明章节进行理解:
-
-- triggerName:触发器 ID,该 ID 是全局唯一的,用于区分不同触发器,大小写敏感。
-- triggerType:触发器类型,分为无状态(STATELESS)和有状态(STATEFUL)两类。
-- triggerEventClause:触发时机,目前仅支持写入前(BEFORE INSERT)和写入后(AFTER INSERT)两种。
-- pathPattern:触发器侦听的路径模式,可以包含通配符 * 和 **。
-- className:触发器实现类的类名。
-- uriClause:可选项,当不指定该选项时,我们默认 DBA 已经在各个 DataNode 节点的 trigger_root_dir 目录(配置项,默认为 IOTDB_HOME/ext/trigger)下放置好创建该触发器需要的 JAR 包。当指定该选项时,我们会将该 URI 对应的文件资源下载并分发到各 DataNode 的 trigger_root_dir/install 目录下。
-- triggerAttributeClause:用于指定触发器实例创建时需要设置的参数,SQL 语法中该部分是可选项。
-
-下面是一个帮助您理解的 SQL 语句示例:
-
-```sql
-CREATE STATELESS TRIGGER triggerTest
-BEFORE INSERT
-ON root.sg.**
-AS 'org.apache.iotdb.trigger.ClusterAlertingExample'
-USING URI 'http://jar/ClusterAlertingExample.jar'
-WITH (
- "name" = "trigger",
- "limit" = "100"
-)
-```
-
-上述 SQL 语句创建了一个名为 triggerTest 的触发器:
-
-- 该触发器是无状态的(STATELESS)
-- 在写入前触发(BEFORE INSERT)
-- 该触发器侦听路径模式为 root\.sg.**
-- 所编写的触发器类名为 org.apache.iotdb.trigger.ClusterAlertingExample
-- JAR 包的 URI 为 http://jar/ClusterAlertingExample.jar
-- 创建该触发器实例时会传入 name 和 limit 两个参数。
-
-#### 卸载触发器
-
-可以通过指定触发器 ID 的方式卸载触发器,卸载触发器的过程中会且仅会调用一次触发器的 `onDrop` 接口。
-
-卸载触发器的 SQL 语法如下:
-
-```sql
-// Drop Trigger
-dropTrigger
- : DROP TRIGGER triggerName=identifier
-;
-```
-
-下面是示例语句:
-
-```sql
-DROP TRIGGER triggerTest1
-```
-
-上述语句将会卸载 ID 为 triggerTest1 的触发器。
-
-#### 查询触发器
-
-可以通过 SQL 语句查询集群中存在的触发器的信息。SQL 语法如下:
-
-```sql
-SHOW TRIGGERS
-```
-
-该语句的结果集格式如下:
-
-| TriggerName | Event | Type | State | PathPattern | ClassName | NodeId |
-| ------------ | ---------------------------- | -------------------- | ------------------------------------------- | ----------- | --------------------------------------- | --------------------------------------- |
-| triggerTest1 | BEFORE_INSERT / AFTER_INSERT | STATELESS / STATEFUL | INACTIVE / ACTIVE / DROPPING / TRANSFFERING | root.** | org.apache.iotdb.trigger.TriggerExample | ALL(STATELESS) / DATA_NODE_ID(STATEFUL) |
-
-
-#### 触发器状态说明
-
-在集群中注册以及卸载触发器的过程中,我们维护了触发器的状态,下面是对这些状态的说明:
-
-| 状态 | 描述 | 是否建议写入进行 |
-| ------------ | ------------------------------------------------------------ | ---------------- |
-| INACTIVE | 执行 `CREATE TRIGGER` 的中间状态,集群刚在 ConfigNode 上记录该触发器的信息,还未在任何 DataNode 上激活该触发器 | 否 |
-| ACTIVE | 执行 `CREATE TRIGGE` 成功后的状态,集群所有 DataNode 上的该触发器都已经可用 | 是 |
-| DROPPING | 执行 `DROP TRIGGER` 的中间状态,集群正处在卸载该触发器的过程中 | 否 |
-| TRANSFERRING | 集群正在进行该触发器实例位置的迁移 | 否 |
-
-### 重要注意事项
-
-- 触发器从注册时开始生效,不对已有的历史数据进行处理。**即只有成功注册触发器之后发生的写入请求才会被触发器侦听到。**
-- 触发器目前采用**同步触发**,所以编写时需要保证触发器效率,否则可能会大幅影响写入性能。**您需要自己保证触发器内部的并发安全性**。
-- 集群中**不能注册过多触发器**。因为触发器信息全量保存在 ConfigNode 中,并且在所有 DataNode 都有一份该信息的副本。
-- **建议注册触发器时停止写入**。注册触发器并不是一个原子操作,注册触发器时,会出现集群内部分节点已经注册了该触发器,部分节点尚未注册成功的中间状态。为了避免部分节点上的写入请求被触发器侦听到,部分节点上没有被侦听到的情况,我们建议注册触发器时不要执行写入。
-- 触发器将作为进程内程序执行,如果您的触发器编写不慎,内存占用过多,由于 IoTDB 并没有办法监控触发器所使用的内存,所以有 OOM 的风险。
-- 持有有状态触发器实例的节点宕机时,我们会尝试在另外的节点上恢复相应实例,在恢复过程中我们会调用一次触发器类的 restore 接口,您可以在该接口中实现恢复触发器所维护的状态的逻辑。
-- 触发器 JAR 包有大小限制,必须小于 min(`config_node_ratis_log_appender_buffer_size_max`, 2G),其中 `config_node_ratis_log_appender_buffer_size_max` 是一个配置项,具体含义可以参考 IOTDB 配置项说明。
-- **不同的 JAR 包中最好不要有全类名相同但功能实现不一样的类**。例如:触发器 trigger1、trigger2 分别对应资源 trigger1.jar、trigger2.jar。如果两个 JAR 包里都包含一个 `org.apache.iotdb.trigger.example.AlertListener` 类,当 `CREATE TRIGGER` 使用到这个类时,系统会随机加载其中一个 JAR 包中的类,最终导致触发器执行行为不一致以及其他的问题。
-
-### 配置参数
-
-| 配置项 | 含义 |
-| ------------------------------------------------- | ---------------------------------------------- |
-| *trigger_lib_dir* | 保存触发器 jar 包的目录位置 |
-| *stateful\_trigger\_retry\_num\_when\_not\_found* | 有状态触发器触发无法找到触发器实例时的重试次数 |
## 连续查询(Continuous Query, CQ)
diff --git a/src/zh/UserGuide/latest/Reference/UDF-development.md b/src/zh/UserGuide/latest/User-Manual/UDF-development.md
similarity index 100%
rename from src/zh/UserGuide/latest/Reference/UDF-development.md
rename to src/zh/UserGuide/latest/User-Manual/UDF-development.md
diff --git a/src/zh/UserGuide/latest/User-Manual/White-List_timecho.md b/src/zh/UserGuide/latest/User-Manual/White-List_timecho.md
new file mode 100644
index 000000000..4b43a03fc
--- /dev/null
+++ b/src/zh/UserGuide/latest/User-Manual/White-List_timecho.md
@@ -0,0 +1,70 @@
+
+
+
+# 白名单
+
+**功能描述**
+
+允许哪些客户端地址能连接 IoTDB
+
+**配置文件**
+
+conf/iotdb-system.properties
+
+conf/white.list
+
+**配置项**
+
+iotdb-system.properties:
+
+决定是否开启白名单功能
+
+```YAML
+# 是否开启白名单功能
+enable_white_list=true
+```
+
+white.list:
+
+决定哪些IP地址能够连接IoTDB
+
+```YAML
+# 支持注释
+# 支持精确匹配,每行一个ip
+10.2.3.4
+
+# 支持*通配符,每行一个ip
+10.*.1.3
+10.100.0.*
+```
+
+**注意事项**
+
+1. 如果通过session客户端取消本身的白名单,当前连接并不会立即断开。在下次创建连接的时候拒绝。
+2. 如果直接修改white.list,一分钟内生效。如果通过session客户端修改,立即生效,更新内存中的值和white.list磁盘文件
+3. 开启白名单功能,没有white.list 文件,启动DB服务成功,但是,拒绝所有连接。
+4. DB服务运行中,删除 white.list 文件,至多一分钟后,拒绝所有连接。
+5. 是否开启白名单功能的配置,可以热加载。
+6. 使用Java 原生接口修改白名单,必须是root用户才能修改,拒绝非root用户修改;修改内容必须合法,否则会抛出StatementExecutionException异常。
+
+
+
diff --git a/src/zh/UserGuide/latest/IoTDB-Introduction/Architecture.md b/src/zh/UserGuide/latest/stage/Architecture.md
similarity index 100%
rename from src/zh/UserGuide/latest/IoTDB-Introduction/Architecture.md
rename to src/zh/UserGuide/latest/stage/Architecture.md
diff --git a/src/zh/UserGuide/latest/IoTDB-Introduction/Features.md b/src/zh/UserGuide/latest/stage/Features.md
similarity index 100%
rename from src/zh/UserGuide/latest/IoTDB-Introduction/Features.md
rename to src/zh/UserGuide/latest/stage/Features.md
diff --git a/src/zh/UserGuide/latest/IoTDB-Introduction/Performance.md b/src/zh/UserGuide/latest/stage/Performance.md
similarity index 100%
rename from src/zh/UserGuide/latest/IoTDB-Introduction/Performance.md
rename to src/zh/UserGuide/latest/stage/Performance.md