You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hx...@apache.org on 2020/04/13 07:32:54 UTC

[incubator-iotdb] branch master updated: upgrade site and add docs/zh (#1030)

This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new dd2e0e8  upgrade site and add docs/zh (#1030)
dd2e0e8 is described below

commit dd2e0e8daf5d476ba9cd915c87c357c33adc784f
Author: Sail <37...@users.noreply.github.com>
AuthorDate: Mon Apr 13 15:32:45 2020 +0800

    upgrade site and add docs/zh (#1030)
    
    * modify site and docs/zh
    
    * Update pom.xml and travis
---
 .travis.yml                                        |  32 +-
 docs/Community/ASF.md                              |  33 --
 docs/Community/Community-Powered By.md             |  13 -
 docs/Community/Community-Project Committers.md     |   2 -
 docs/Community/Wiki.md                             |  30 -
 docs/Download/README.md                            |   2 -
 docs/README.md                                     |   8 +-
 docs/zh/Community/ASF.md                           |  33 --
 docs/zh/Community/Community-Powered By.md          |  32 +-
 docs/zh/Community/Community-Project Committers.md  |   2 -
 docs/zh/Community/Wiki.md                          |  30 -
 docs/zh/Download/README.md                         |   2 -
 docs/zh/README.md                                  |   4 +-
 docs/zh/UserGuide/4-Client/6-Programming - MQTT.md | 101 ++++
 .../{6-Status Codes.md => 7-Status Codes.md}       |   0
 pom.xml                                            |   3 +
 site/pom.xml                                       |   4 +-
 site/src/main/.vuepress/components/FooterFixed.vue |  50 --
 site/src/main/.vuepress/config.js                  | 633 +++++++++++----------
 site/src/main/.vuepress/enhanceApp.js              |   6 +-
 site/src/main/.vuepress/public/css/index.css       |  27 -
 .../public/img/contributor-avatar/user.svg         |   2 +-
 .../.vuepress/styles/{palette.styl => index.styl}  |   9 +-
 site/src/main/.vuepress/styles/palette.styl        |   7 +-
 .../theme/components/AlgoliaSearchBox.vue          | 172 ++++++
 .../.vuepress/theme/components/DropdownLink.vue    | 196 +++++++
 .../theme/components/DropdownTransition.vue        |  50 ++
 site/src/main/.vuepress/theme/components/Home.vue  | 179 ++++++
 .../main/.vuepress/theme/components/NavLink.vue    |  65 +++
 .../main/.vuepress/theme/components/NavLinks.vue   | 166 ++++++
 .../src/main/.vuepress/theme/components/Navbar.vue | 139 +++++
 site/src/main/.vuepress/theme/components/Page.vue  | 278 +++++++++
 .../main/.vuepress/theme/components/Sidebar.vue    |  76 +++
 .../.vuepress/theme/components/SidebarButton.vue   |  44 ++
 .../.vuepress/theme/components/SidebarGroup.vue    | 146 +++++
 .../.vuepress/theme/components/SidebarLink.vue     | 126 ++++
 .../.vuepress/theme/components/SidebarLinks.vue    | 103 ++++
 .../.vuepress/theme/global-components/Badge.vue    |  61 ++
 .../global-components}/Contributor.vue             |   0
 .../Home.vue => theme/global-components/IoTDB.vue} |   2 +-
 .../global-components/IoTDBZH.vue}                 |   2 +-
 site/src/main/.vuepress/theme/index.js             |  63 ++
 site/src/main/.vuepress/theme/layouts/404.vue      |  43 ++
 site/src/main/.vuepress/theme/layouts/Layout.vue   | 166 ++++++
 .../{override.styl => theme/noopModule.js}         |   4 +-
 .../palette.styl => theme/styles/arrow.styl}       |  23 +-
 site/src/main/.vuepress/theme/styles/code.styl     | 166 ++++++
 .../styles/custom-blocks.styl}                     |  44 +-
 site/src/main/.vuepress/theme/styles/index.styl    | 227 ++++++++
 .../{enhanceApp.js => theme/styles/mobile.styl}    |  51 +-
 .../{override.styl => theme/styles/toc.styl}       |   6 +-
 .../palette.styl => theme/styles/wrapper.styl}     |  10 +-
 site/src/main/.vuepress/theme/util/index.js        | 256 +++++++++
 site/src/main/package.json                         |  21 +-
 54 files changed, 3314 insertions(+), 636 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 6b91e6d..35616ee 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -105,16 +105,6 @@ matrix:
         - export "PATH=/c/mvn363/apache-maven-3.6.3/bin:$PATH"
         - export "HADOOP_HOME=/c/hadoop"
         - export "PATH=/c/hadoop/bin:$PATH"
-      script:
-        - java -version
-        - mvn -version
-        # Output something every 10 minutes or Travis kills the job
-        - while sleep 540; do echo "=====[ $SECONDS seconds still running ]====="; done &
-        # we do not build site on Win
-        # we do not build distribution for save time
-        - travis_wait 40 mvn -B clean test integration-test -pl '!distribution' -am
-        # Killing background sleep loop
-        - kill %1
     - os: linux
       if: fork = false #only fork=true (i.e., the committer has permission to write the repo)
       name: sonar-analysis
@@ -139,12 +129,30 @@ matrix:
       after_success:
         - mvn coveralls:report -DserviceName=travis_ci -pl tsfile,server,jdbc,client,session,hive-connector,flink-iotdb-connector,flink-tsfile-connector
     - os: linux
-      name: website checker
+      name: linux-website checker
       dist: xenial
       jdk: openjdk8
       script:
         - mvn clean package -pl site
-
+    - os: windows
+      name: windows-website checker
+      language: c
+      before_install:
+        # - choco install openjdk11 --version=11.0.2.01 -y
+        # can get the download links from https://jdk.java.net/archive/
+        - wget --no-check-certificate https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_windows-x64_bin.zip
+        - wget --no-check-certificate https://www-eu.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip
+        - /C/Progra~1/7-Zip/7z.exe x apache-maven-3.6.3-bin.zip -o/c/mvn363
+        - /C/Progra~1/7-Zip/7z.exe x openjdk-11.0.2_windows-x64_bin.zip -o/c/java
+      before_script:
+        - export "JAVA_HOME=/c/java/jdk-11.0.2"
+        - export "PATH=$JAVA_HOME/bin:$PATH"
+        - export "PATH=$JAVA_HOME/jre/bin:$PATH"
+        - export "MAVEN_HOME=/c/mvn363/apache-maven-3.6.3"
+        - export "M2_HOME=/c/mvn363/apache-maven-3.6.3"
+        - export "PATH=/c/mvn363/apache-maven-3.6.3/bin:$PATH"
+      script:
+        - mvn clean package -pl site
 cache:
   directories:
     - '$HOME/.m2/repository'
diff --git a/docs/Community/ASF.md b/docs/Community/ASF.md
deleted file mode 100644
index 496fe35..0000000
--- a/docs/Community/ASF.md
+++ /dev/null
@@ -1,33 +0,0 @@
-<!--
-
-    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.
-
--->
-
-# ASF
-
-- <a href="http://www.apache.org/" target = "_self">Foundation</a>
-- <a href="http://www.apache.org/licenses/" target = "_self">License</a>
-- <a href="http://www.apache.org/security/" target = "_self">Security</a>
-- <a href="http://www.apache.org/foundation/sponsorship.html" target = "_self">Sponsorship</a>
-- <a href="http://www.apache.org/foundation/thanks.html" target = "_self">Thanks</a>
-- <a href="http://www.apache.org/events/current-event" target = "_self">Current Events</a>
-
-
-
-<FooterFixed/>
\ No newline at end of file
diff --git a/docs/Community/Community-Powered By.md b/docs/Community/Community-Powered By.md
index 63861bf..ed75254 100644
--- a/docs/Community/Community-Powered By.md	
+++ b/docs/Community/Community-Powered By.md	
@@ -19,15 +19,6 @@
 
 -->
 
-<!-- TOC -->
-
-## Outline
-
-- Powered By
-    - Project and Product names using "IoTDB"
-    - Companies and Organizations
-
-<!-- /TOC -->
 ## Powered By
 
 ### Project and Product names using "IoTDB"
@@ -42,7 +33,3 @@ To add yourself to the list, please email dev@iotdb.apache.org with your organiz
 
 - School of Software (Tsinghua University), and National Engineering Laboratery for Big Data Software  that initially launched IoTDB  
   - We have both graduate students and a team of professional software engineers working on the stack
-
-
-
-<FooterFixed/>
\ No newline at end of file
diff --git a/docs/Community/Community-Project Committers.md b/docs/Community/Community-Project Committers.md
index 82ab2c5..d138f23 100644
--- a/docs/Community/Community-Project Committers.md	
+++ b/docs/Community/Community-Project Committers.md	
@@ -20,5 +20,3 @@
 -->
 
 <Contributor/>
-
-<FooterFixed/>
\ No newline at end of file
diff --git a/docs/Community/Wiki.md b/docs/Community/Wiki.md
deleted file mode 100644
index d527d1b..0000000
--- a/docs/Community/Wiki.md
+++ /dev/null
@@ -1,30 +0,0 @@
-<!--
-
-    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.
-
--->
-
-# WIKI
-
-We use Apache’s Confluence instance as Wiki, however most information is generally managed on this website.
-
-This service is available <a href="https://cwiki.apache.org/confluence/display/iotdb" target = "_self">Here</a>
-
-
-
-<FooterFixed/>
\ No newline at end of file
diff --git a/docs/Download/README.md b/docs/Download/README.md
index 580d9b8..e1df77e 100644
--- a/docs/Download/README.md
+++ b/docs/Download/README.md
@@ -63,5 +63,3 @@ Find all releases in the [Archive incubating repository](https://archive.apache.
 # Verifying Hashes and Signatures
 
 Along with our releases, we also provide sha512 hashes in *.sha512 files and cryptographic signatures in *.asc files. The Apache Software Foundation has an extensive tutorial to [verify hashes and signatures ](http://www.apache.org/info/verification.html)which you can follow by using any of these release-signing [KEYS ](https://downloads.apache.org/incubator/iotdb/KEYS).
-
-<FooterFixed/>
\ No newline at end of file
diff --git a/docs/README.md b/docs/README.md
index 0dce55f..9a45d0e 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -7,9 +7,9 @@
     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
@@ -18,6 +18,4 @@
     under the License.
 
 -->
-<Home/>
-
-<FooterFixed/>
\ No newline at end of file
+<IoTDB/>
diff --git a/docs/zh/Community/ASF.md b/docs/zh/Community/ASF.md
deleted file mode 100644
index d7f7c41..0000000
--- a/docs/zh/Community/ASF.md
+++ /dev/null
@@ -1,33 +0,0 @@
-<!--
-
-    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.
-
--->
-
-# ASF
-
-- <a href="http://www.apache.org/" target = "_self">基础</a>
-- <a href="http://www.apache.org/licenses/" target = "_self">执照</a>
-- <a href="http://www.apache.org/security/" target = "_self">安全</a>
-- <a href="http://www.apache.org/foundation/sponsorship.html" target = "_self">赞助</a>
-- <a href="http://www.apache.org/foundation/thanks.html" target = "_self">致谢</a>
-- <a href="http://www.apache.org/events/current-event" target = "_self">活动</a>
-
-
-
-<FooterFixed/>
\ No newline at end of file
diff --git a/docs/zh/Community/Community-Powered By.md b/docs/zh/Community/Community-Powered By.md
index e826a95..cfcb698 100644
--- a/docs/zh/Community/Community-Powered By.md	
+++ b/docs/zh/Community/Community-Powered By.md	
@@ -7,9 +7,9 @@
     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
@@ -19,26 +19,18 @@
 
 -->
 
-<!-- TOC -->
-
-## Outline
-
-- Powered By
-    - Project and Product names using "IoTDB"
-    - Companies and Organizations
+## 技术支持
 
-<!-- /TOC -->
-## Powered By
+### 使用“IoTDB”的项目和产品名称
 
-### Project and Product names using "IoTDB"
+使用Apache IoTDB和相关营销材料创建产品和项目的组织应注意尊重“ Apache IoTDB”中的商标及其徽标。 请参阅[ASF商标指南](https://www.apache.org/foundation/marks/)和相关的[FAQ](https://www.apache.org/foundation/marks/faq/),以获得全面的信息。 正确使用ASF商标的权威指南。
+建议不要在任何名称中包含”IoTDB“,以防止IoTDB项目出现潜在的商标问题。
+例如,不应使用诸如”IoTDB BigDataProduct“之类的名称,因为该名称通常包括“IoTDB”。 但是,以上链接描述了一些例外情况,例如“由Apache IoTDB支持的BigDataProduct”或“ Apache IoTDB的BigDataProduct”之类的名称。 总而言之,任何名称都包含“ Apache IoTDB”作为整体是可以接受的。  
+您可以采取的常见做法是创建软件标识符(Maven坐标,模块名称等),例如”iotdb-tool“。 这些是允许的。 还允许在说明中名义使用商标,例如”BigDataProduct”是Apache IoTDB的子产品”。
 
-Organizations creating products and projects using Apache IoTDB, along with associated marketing materials, should take care to respect the trademark in “Apache IoTDB” and its logo. Please refer to [ASF Trademarks Guidance](https://www.apache.org/foundation/marks/) and associated [FAQ](https://www.apache.org/foundation/marks/faq/) for comprehensive and authoritative guidance on proper usage of ASF trademarks.
-It is recommended to not include “IoTDB” in any names to prevent potential trademark issue with the IoTDB project.
-As an example, names like “IoTDB BigDataProduct” should not be used, as the name include “IoTDB” in general. The above links, however, describe some exceptions, like for names such as “BigDataProduct, powered by Apache IoTDB” or “BigDataProduct for Apache IoTDB”. In summary, any names contain "Apache IoTDB" as a whole are acceptable.  
-A common practice you can take is to create software identifiers (Maven coordinates, module names, etc.) like “iotdb-tool”. These are permitted. Nominative use of trademarks in descriptions is also allowed, as in “BigDataProduct is a subproduct for Apache IoTDB”.
+### 公司和组织
+要将自己添加到列表中,请给dev@iotdb.apache.org发送电子邮件,其中包含您的组织名称,URL,正在使用的IoTDB组件列表以及用例的简短描述。
 
-### Companies and Organizations
-To add yourself to the list, please email dev@iotdb.apache.org with your organization name, URL, a list of IoTDB components you are using, and a short description of your use case.
+- 清华大学软件学院和大数据系统软件国家工程实验室最初启动了IoTDB
+	- 我们有研究生和一组专业软件工程师在堆栈上工作
 
-- School of Software (Tsinghua University), and National Engineering Laboratery for Big Data Software  that initially launched IoTDB  
-	- We have both graduate students and a team of professional software engineers working on the stack
diff --git a/docs/zh/Community/Community-Project Committers.md b/docs/zh/Community/Community-Project Committers.md
index 82ab2c5..d138f23 100644
--- a/docs/zh/Community/Community-Project Committers.md	
+++ b/docs/zh/Community/Community-Project Committers.md	
@@ -20,5 +20,3 @@
 -->
 
 <Contributor/>
-
-<FooterFixed/>
\ No newline at end of file
diff --git a/docs/zh/Community/Wiki.md b/docs/zh/Community/Wiki.md
deleted file mode 100644
index 5e117a8..0000000
--- a/docs/zh/Community/Wiki.md
+++ /dev/null
@@ -1,30 +0,0 @@
-<!--
-
-    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.
-
--->
-
-# WIKI
-
-我们将Apache的Confluence实例用作Wiki,但是大多数信息通常都在此网站上进行管理。
-
-该服务在 <a href="https://cwiki.apache.org/confluence/display/iotdb" target = "_self">这里</a>可用
-
-
-
-<FooterFixed/>
\ No newline at end of file
diff --git a/docs/zh/Download/README.md b/docs/zh/Download/README.md
index 71b53a5..d094798 100644
--- a/docs/zh/Download/README.md
+++ b/docs/zh/Download/README.md
@@ -62,5 +62,3 @@
 # 验证哈希和签名
 
 除了我们的发行版,我们还在* .sha512文件中提供了sha512散列,并在* .asc文件中提供了加密签名。  Apache Software Foundation提供了广泛的教程来 [验证哈希和签名](http://www.apache.org/info/verification.html),您可以使用任何这些发布签名的[KEYS](https://downloads.apache.org/incubator/iotdb/KEYS)来遵循这些哈希和签名。
-
-<FooterFixed/>
\ No newline at end of file
diff --git a/docs/zh/README.md b/docs/zh/README.md
index 7b7fe8a..f9044fd 100644
--- a/docs/zh/README.md
+++ b/docs/zh/README.md
@@ -18,6 +18,4 @@
     under the License.
 
 -->
-<Home_zh/>
-
-<FooterFixed/>
\ No newline at end of file
+<IoTDBZH/>
diff --git a/docs/zh/UserGuide/4-Client/6-Programming - MQTT.md b/docs/zh/UserGuide/4-Client/6-Programming - MQTT.md
new file mode 100644
index 0000000..51bf767
--- /dev/null
+++ b/docs/zh/UserGuide/4-Client/6-Programming - MQTT.md	
@@ -0,0 +1,101 @@
+<!--
+
+    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.
+
+-->
+# MQTT协议
+
+[MQTT](http://mqtt.org/)是机器对机器(M2M)/“物联网”连接协议。
+
+它被设计为一种非常轻量级的发布/订阅消息传递。
+
+对于与需要较小代码占用和/或网络带宽非常宝贵的远程位置的连接很有用。
+
+IoTDB支持MQTT v3.1(OASIS标准)协议。
+IoTDB服务器包括内置的MQTT服务,该服务允许远程设备将消息直接发送到IoTDB服务器。
+
+<img style="width:100%; max-width:800px; max-height:600px; margin-left:auto; margin-right:auto; display:block;" src="https://user-images.githubusercontent.com/6711230/78357432-0c71cf80-75e4-11ea-98aa-c43a54d469ce.png">
+
+
+## 内置MQTT服务
+内置的MQTT服务提供了通过MQTT直接连接到IoTDB的能力。 它侦听来自MQTT客户端的发布消息,然后立即将数据写入存储。
+MQTT主题与IoTDB时间序列相对应。
+消息有效载荷可以由Java SPI加载的`PayloadFormatter`格式化为事件,默认实现为`JSONPayloadFormatter` 
+   默认的`json`格式化程序支持两种json格式,以下是MQTT消息有效负载示例:
+
+```json
+ {
+      "device":"root.sg.d1",
+      "timestamp":1586076045524,
+      "measurements":["s1","s2"],
+      "values":[0.530635,0.530635]
+ }
+```
+或者
+```json
+{
+      "device":"root.sg.d1",
+      "timestamps":[1586076045524,1586076065526],
+      "measurements":["s1","s2"],
+      "values":[[0.530635,0.530635], [0.530655,0.530695]]
+  }
+```
+
+<img style="width:100%; max-width:800px; max-height:600px; margin-left:auto; margin-right:auto; display:block;" src="https://user-images.githubusercontent.com/6711230/78357469-1bf11880-75e4-11ea-978f-a53996667a0d.png">
+
+## MQTT配置
+默认情况下,IoTDB MQTT服务从`${IOTDB_HOME}/${IOTDB_CONF}/iotdbengine.properties`加载配置。
+
+配置如下:
+
+| 名称      | 描述         | 默认 |
+| ------------- |:-------------:|:------:|
+| enable_mqtt_service      | 是否启用mqtt服务 | true |
+| mqtt_host      | mqtt服务绑定主机 | 0.0.0.0 |
+| mqtt_port      | mqtt服务绑定端口 |   1883 |
+| mqtt_handler_pool_size | 处理mqtt消息的处理程序池大小 |    1 |
+| mqtt_payload_formatter | mqtt消息有效负载格式化程序 |    json |
+
+
+## 例子
+以下是mqtt客户端将消息发送到IoTDB服务器的示例。
+
+ ```java
+        MQTT mqtt = new MQTT();
+        mqtt.setHost("127.0.0.1", 1883);
+        mqtt.setUserName("root");
+        mqtt.setPassword("root");
+
+        BlockingConnection connection = mqtt.blockingConnection();
+        connection.connect();
+
+        Random random = new Random();
+        for (int i = 0; i < 10; i++) {
+            String payload = String.format("{\n" +
+                    "\"device\":\"root.sg.d1\",\n" +
+                    "\"timestamp\":%d,\n" +
+                    "\"measurements\":[\"s1\"],\n" +
+                    "\"values\":[%f]\n" +
+                    "}", System.currentTimeMillis(), random.nextDouble());
+
+            connection.publish("root.sg.d1.s1", payload.getBytes(), QoS.AT_LEAST_ONCE, false);
+        }
+
+        connection.disconnect();
+    }
+ ```
diff --git a/docs/zh/UserGuide/4-Client/6-Status Codes.md b/docs/zh/UserGuide/4-Client/7-Status Codes.md
similarity index 100%
rename from docs/zh/UserGuide/4-Client/6-Status Codes.md
rename to docs/zh/UserGuide/4-Client/7-Status Codes.md
diff --git a/pom.xml b/pom.xml
index 12e5bcc..bec74f1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -550,6 +550,9 @@
                             <exclude>**/*.cvs</exclude>
                             <!-- licenses -->
                             <exclude>licenses/*</exclude>
+			    <!-- only for Travis CI with WinOS-->
+                            <exclude>hadoopbin</exclude>
+                            <exclude>windowssystem32</exclude>
                             <!-- generated by Github -->
                             <exclude>.github/**</exclude>
                             <!-- figures -->
diff --git a/site/pom.xml b/site/pom.xml
index 8f4a0c5..b417b5b 100644
--- a/site/pom.xml
+++ b/site/pom.xml
@@ -172,7 +172,7 @@
                         </goals>
                         <configuration>
                             <sourceFile>${project.build.directory}/vue-source/src/UserGuide</sourceFile>
-                            <destinationFile>${project.build.directory}/vue-source/src/tmpUserGuide/master</destinationFile>
+                            <destinationFile>${project.build.directory}/vue-source/src/tmpUserGuide/Master</destinationFile>
                         </configuration>
                     </execution>
                     <execution>
@@ -183,7 +183,7 @@
                         </goals>
                         <configuration>
                             <sourceFile>${project.build.directory}/vue-source/src/zh/UserGuide</sourceFile>
-                            <destinationFile>${project.build.directory}/vue-source/src/zh/tmpUserGuide/master</destinationFile>
+                            <destinationFile>${project.build.directory}/vue-source/src/zh/tmpUserGuide/Master</destinationFile>
                         </configuration>
                     </execution>
                 </executions>
diff --git a/site/src/main/.vuepress/components/FooterFixed.vue b/site/src/main/.vuepress/components/FooterFixed.vue
deleted file mode 100644
index b55fd4b..0000000
--- a/site/src/main/.vuepress/components/FooterFixed.vue
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-* 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.
-*/
-
-<template>
-<div style="margin-top:120px; 
-    height: 10px;
-    text-align: center;
-    line-height: 50px;
-    width: 100%;
-    ">
-   
-       <p>Copyright © 2020 The Apache Software Foundation.<br>
-       Apache and the Apache feather logo are trademarks of The Apache Software Foundation</p>
-        <p style="text-align:justify!important;">
-        Disclaimer: Apache IoTDB (incubating) (Database for Internet of Things) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the complet [...]
-      </p>
-
-</div>
-</template>
-
-<script>
-  export default {
-    name: 'FooterFixed',
-    year: "",
-    created() {
-    }
-  }
-</script>
-
-<style>
-.footer-p{
-  text-align: center;
-  line-height: 5px;
-}
-</style>
diff --git a/site/src/main/.vuepress/config.js b/site/src/main/.vuepress/config.js
index 2d9784a..9eb184f 100644
--- a/site/src/main/.vuepress/config.js
+++ b/site/src/main/.vuepress/config.js
@@ -50,7 +50,7 @@ var config = {
 		logo: '/img/logo.png',
 		
 		searchMaxSuggestions:10,
-		
+
 		displayAllHeaders: true,
 		
 		sidebarDepth: 0,
@@ -72,7 +72,7 @@ var config = {
 				 {
 					text: 'Document',
 					items: [
-						{ text: 'In progress', link: '/UserGuide/master/0-Get Started/1-QuickStart' },
+						{ text: 'In progress', link: '/UserGuide/Master/0-Get Started/1-QuickStart' },
 						{ text: 'V0.9.x', link: '/UserGuide/V0.9.x/0-Get Started/1-QuickStart' },
 					    { text: 'V0.8.x', link: '/UserGuide/V0.8.x/0-Get Started/1-QuickStart'},
 					]
@@ -88,8 +88,7 @@ var config = {
 				  {
 					text: 'Community',
 					items: [
-					  { text: 'ASF', link: '/Community/ASF'},
-					  { text: 'Wiki', link: '/Community/Wiki'},
+					  { text: 'Wiki', link: 'https://cwiki.apache.org/confluence/display/iotdb'},
 					  { text: 'People', link: '/Community/Community-Project Committers'},
 					  { text: 'Powered By', link: '/Community/Community-Powered By'},
 					]
@@ -103,275 +102,286 @@ var config = {
 					  { text: 'Changelist of RPC', link: '/Development/rpc-changelist'},
 					]
 				  },
+				  {
+					text: 'ASF',
+					items: [
+					  { text: 'Foundation', link: 'http://www.apache.org/'},
+					  { text: 'License', link: 'http://www.apache.org/licenses/'},
+					  { text: 'Security', link: 'http://www.apache.org/security/'},
+					  { text: 'Sponsorship', link: 'http://www.apache.org/foundation/sponsorship.html'},
+					  { text: 'Thanks', link: 'http://www.apache.org/foundation/thanks.html'},
+					  { text: 'Current Events', link: 'http://www.apache.org/events/current-event'},
+					]
+				  },
 			],
 			sidebar: {
 				'/UserGuide/V0.8.x/': [
 					{
-						title:'User Guide(V0.8.x)',
+						title:'IoTDB User Guide (V0.8.x)',
 						collapsable: false,
 					},
 					{
 						title: '0-Get Started',
 						children: [
-							'0-Get Started/1-QuickStart',
-							'0-Get Started/2-Frequently asked questions',
-							'0-Get Started/3-Publication'
+							['0-Get Started/1-QuickStart','QuickStart'],
+							['0-Get Started/2-Frequently asked questions','Frequently asked questions'],
+							['0-Get Started/3-Publication','Research Papers']
 						]
 					},
 					{
 						title: '1-Overview',
 						children: [
-							'1-Overview/1-What is IoTDB',
-							'1-Overview/2-Architecture',
-							'1-Overview/3-Scenario',
-							'1-Overview/4-Features'
+							['1-Overview/1-What is IoTDB','What is IoTDB'],
+							['1-Overview/2-Architecture','Architecture'],
+							['1-Overview/3-Scenario','Scenario'],
+							['1-Overview/4-Features','Features']
 						]
 					},
 					{
 						title: '2-Concept Key Concepts and Terminology',
 						children: [
-							'2-Concept Key Concepts and Terminology/1-Key Concepts and Terminology',
-							'2-Concept Key Concepts and Terminology/2-Data Type',
-							'2-Concept Key Concepts and Terminology/3-Encoding',
-							'2-Concept Key Concepts and Terminology/4-Compression'
+							['2-Concept Key Concepts and Terminology/1-Key Concepts and Terminology','Key Concepts and Terminology'],
+							['2-Concept Key Concepts and Terminology/2-Data Type','Data Type'],
+							['2-Concept Key Concepts and Terminology/3-Encoding','Encoding'],
+							['2-Concept Key Concepts and Terminology/4-Compression','Compression']
 						]
 					},
 					{
 						title: '3-Operation Manual',
 						children: [
-							'3-Operation Manual/1-Sample Data',
-							'3-Operation Manual/2-Data Model Selection',
-							'3-Operation Manual/3-Data Import',
-							'3-Operation Manual/4-Data Query',
-							'3-Operation Manual/5-Data Maintenance',
-							'3-Operation Manual/6-Priviledge Management',
+							['3-Operation Manual/1-Sample Data','Sample Data'],
+							['3-Operation Manual/2-Data Model Selection','Data Model Selection'],
+							['3-Operation Manual/3-Data Import','Data Import'],
+							['3-Operation Manual/4-Data Query','Data Query'],
+							['3-Operation Manual/5-Data Maintenance','Data Maintenance'],
+							['3-Operation Manual/6-Priviledge Management','Priviledge Management']
 						]
 					},
 					{
 						title: '4-Deployment and Management',
 						children: [
-							'4-Deployment and Management/1-Deployment',
-							'4-Deployment and Management/2-Configuration',
-							'4-Deployment and Management/3-System Monitor',
-							'4-Deployment and Management/4-Performance Monitor',
-							'4-Deployment and Management/5-System log',
-							'4-Deployment and Management/6-Data Management',
-							'4-Deployment and Management/7-Build and use IoTDB by Dockerfile',
+							['4-Deployment and Management/1-Deployment','Deployment'],
+							['4-Deployment and Management/2-Configuration','Configuration'],
+							['4-Deployment and Management/3-System Monitor','System Monitor'],
+							['4-Deployment and Management/4-Performance Monitor','Performance Monitor'],
+							['4-Deployment and Management/5-System log','System log'],
+							['4-Deployment and Management/6-Data Management','Data Management'],
+							['4-Deployment and Management/7-Build and use IoTDB by Dockerfile','Dockerfile']
 						]
 					},
 					{
 						title: '5-IoTDB SQL Documentation',
 						children: [
-							'5-IoTDB SQL Documentation/1-IoTDB Query Statement',
-							'5-IoTDB SQL Documentation/2-Reference',
+							['5-IoTDB SQL Documentation/1-IoTDB Query Statement','IoTDB Query Statement'],
+							['5-IoTDB SQL Documentation/2-Reference','Reference']
 						]
 					},
 					{
 						title: '6-JDBC API',
 						children: [
-							'6-JDBC API/1-JDBC API',
+							['6-JDBC API/1-JDBC API','JDBC API']
 						]
 					},
 					{
 						title: '7-TsFile',
 						children: [
-							'7-TsFile/1-Installation',
-							'7-TsFile/2-Usage',
-							'7-TsFile/3-Hierarchy',
+							['7-TsFile/1-Installation','Installation'],
+							['7-TsFile/2-Usage','Usage'],
+							['7-TsFile/3-Hierarchy','Hierarchy']
 						]
 					},
 					{
 						title: '8-System Tools',
 						children: [
-							'8-System Tools/1-Sync',
-							'8-System Tools/2-Memory Estimation Tool',
+							['8-System Tools/1-Sync','Sync'],
+							['8-System Tools/2-Memory Estimation Tool','Memory Estimation Tool']
 						]
 					},
 				],
 				'/UserGuide/V0.9.x/': [
 					{
-						title:'User Guide(V0.9.x)',
+						title:'IoTDB User Guide (V0.9.x)',
 						collapsable: false,
 					},
 					{
 						title: '0-Get Started',
 						children: [
-							'0-Get Started/1-QuickStart',
-							'0-Get Started/2-Frequently asked questions',
-							'0-Get Started/3-Publication'
+							['0-Get Started/1-QuickStart','QuickStart'],
+							['0-Get Started/2-Frequently asked questions','Frequently asked questions'],
+							['0-Get Started/3-Publication','Research Papers']
 						]
 					},
 					{
 						title: '1-Overview',
 						children: [
-							'1-Overview/1-What is IoTDB',
-							'1-Overview/2-Architecture',
-							'1-Overview/3-Scenario',
-							'1-Overview/4-Features'
+							['1-Overview/1-What is IoTDB','What is IoTDB'],
+							['1-Overview/2-Architecture','Architecture'],
+							['1-Overview/3-Scenario','Scenario'],
+							['1-Overview/4-Features','Features']
 						]
 					},
 					{
 						title: '2-Concept',
 						children: [
-							'2-Concept/1-Data Model and Terminology',
-							'2-Concept/2-Data Type',
-							'2-Concept/3-Encoding',
-							'2-Concept/4-Compression'
+							['2-Concept/1-Data Model and Terminology','Data Model and Terminology'],
+							['2-Concept/2-Data Type','Data Type'],
+							['2-Concept/3-Encoding','Encoding'],
+							['2-Concept/4-Compression','Compression']
 						]
 					},
 					{
 						title: '3-Server',
 						children: [
-							'3-Server/1-Download',
-							'3-Server/2-Single Node Setup',
-							'3-Server/3-Cluster Setup',
-							'3-Server/4-Config Manual',
-							'3-Server/5-Docker Image',
+							['3-Server/1-Download','Download'],
+							['3-Server/2-Single Node Setup','Single Node Setup'],
+							['3-Server/3-Cluster Setup','Cluster Setup'],
+							['3-Server/4-Config Manual','Config Manual'],
+							['3-Server/5-Docker Image','Docker Image']
 						]
 					},
 					{
 						title: '4-Client',
 						children: [
-							'4-Client/1-Command Line Interface',
-							'4-Client/2-Programming - JDBC',
-							'4-Client/3-Programming - Session',
-							'4-Client/4-Programming - Other Languages',
-							'4-Client/5-Programming - TsFile API',
+							['4-Client/1-Command Line Interface','Command Line Interface'],
+							['4-Client/2-Programming - JDBC','JDBC'],
+							['4-Client/3-Programming - Session','Session'],
+							['4-Client/4-Programming - Other Languages','Other Languages'],
+							['4-Client/5-Programming - TsFile API','TsFile API']
 						]
 					},
 					{
 						title: '5-Operation Manual',
 						children: [
-							'5-Operation Manual/1-DDL Data Definition Language',
-							'5-Operation Manual/2-DML Data Manipulation Language',
-							'5-Operation Manual/3-Account Management Statements',
-							'5-Operation Manual/4-SQL Reference',
+							['5-Operation Manual/1-DDL Data Definition Language','DDL (Data Definition Language)'],
+							['5-Operation Manual/2-DML Data Manipulation Language','DML (Data Manipulation Language)'],
+							['5-Operation Manual/3-Account Management Statements','Account Management Statements'],
+							['5-Operation Manual/4-SQL Reference','SQL Reference']
 						]
 					},
 					{
 						title: '6-System Tools',
 						children: [
-							'6-System Tools/1-Sync Tool',
-							'6-System Tools/2-Memory Estimation Tool',
-							'6-System Tools/3-JMX Tool',
-							'6-System Tools/4-Watermark Tool',
-							'6-System Tools/5-Log Visualizer',
-							'6-System Tools/6-Query History Visualization Tool',
-							'6-System Tools/7-Monitor and Log Tools',
-							'6-System Tools/8-Load External Tsfile',
+							['6-System Tools/1-Sync Tool','Sync Tool'],
+							['6-System Tools/2-Memory Estimation Tool','Memory Estimation Tool'],
+							['6-System Tools/3-JMX Tool','JMX Tool'],
+							['6-System Tools/4-Watermark Tool','Watermark Tool'],
+							['6-System Tools/5-Log Visualizer','Log Visualizer'],
+							['6-System Tools/6-Query History Visualization Tool','Query History Visualization Tool'],
+							['6-System Tools/7-Monitor and Log Tools','Monitor and Log Tools'],
+							['6-System Tools/8-Load External Tsfile','Load External Tsfile']
 						]
 					},
 					{
 						title: '7-Ecosystem Integration',
 						children: [
-							'7-Ecosystem Integration/1-Grafana',
-							'7-Ecosystem Integration/2-MapReduce TsFile',
-							'7-Ecosystem Integration/3-Spark TsFile',
-							'7-Ecosystem Integration/4-Spark IoTDB',
-							'7-Ecosystem Integration/5-Hive TsFile',
+							['7-Ecosystem Integration/1-Grafana','Grafana'],
+							['7-Ecosystem Integration/2-MapReduce TsFile','MapReduce TsFile'],
+							['7-Ecosystem Integration/3-Spark TsFile','Spark TsFile'],
+							['7-Ecosystem Integration/4-Spark IoTDB','Spark IoTDB'],
+							['7-Ecosystem Integration/5-Hive TsFile','Hive TsFile']
 						]
 					},
 					{
 						title: '8-System Design',
 						children: [
-							'8-System Design/1-Hierarchy',
-							'8-System Design/2-Files',
-							'8-System Design/3-Writing Data on HDFS',
-							'8-System Design/4-Shared Nothing Cluster',
+							['8-System Design/1-Hierarchy','Hierarchy'],
+							['8-System Design/2-Files','Files'],
+							['8-System Design/3-Writing Data on HDFS','Writing Data on HDFS'],
+							['8-System Design/4-Shared Nothing Cluster','Shared Nothing Cluster'],
 						]
 					},
 				],
-				'/UserGuide/master/': [
+				'/UserGuide/Master/': [
 					{
-						title:'User Guide(In progress)',
+						title:'IoTDB User Guide (In progress)',
 						collapsable: false,
 					},
 					{
 						title: '0-Get Started',
 						children: [
-							'0-Get Started/1-QuickStart',
-							'0-Get Started/2-Frequently asked questions',
-							'0-Get Started/3-Publication'
+							['0-Get Started/1-QuickStart','QuickStart'],
+							['0-Get Started/2-Frequently asked questions','Frequently asked questions'],
+							['0-Get Started/3-Publication','Research Papers']
 						]
 					},
 					{
 						title: '1-Overview',
 						children: [
-							'1-Overview/1-What is IoTDB',
-							'1-Overview/2-Architecture',
-							'1-Overview/3-Scenario',
-							'1-Overview/4-Features'
+							['1-Overview/1-What is IoTDB','What is IoTDB'],
+							['1-Overview/2-Architecture','Architecture'],
+							['1-Overview/3-Scenario','Scenario'],
+							['1-Overview/4-Features','Features']
 						]
 					},
 					{
 						title: '2-Concept',
 						children: [
-							'2-Concept/1-Data Model and Terminology',
-							'2-Concept/2-Data Type',
-							'2-Concept/3-Encoding',
-							'2-Concept/4-Compression'
+							['2-Concept/1-Data Model and Terminology','Data Model and Terminology'],
+							['2-Concept/2-Data Type','Data Type'],
+							['2-Concept/3-Encoding','Encoding'],
+							['2-Concept/4-Compression','Compression']
 						]
 					},
 					{
 						title: '3-Server',
 						children: [
-							'3-Server/1-Download',
-							'3-Server/2-Single Node Setup',
-							'3-Server/3-Cluster Setup',
-							'3-Server/4-Config Manual',
-							'3-Server/5-Docker Image',
+							['3-Server/1-Download','Download'],
+							['3-Server/2-Single Node Setup','Single Node Setup'],
+							['3-Server/3-Cluster Setup','Cluster Setup'],
+							['3-Server/4-Config Manual','Config Manual'],
+							['3-Server/5-Docker Image','Docker Image']
 						]
 					},
 					{
 						title: '4-Client',
 						children: [
-							'4-Client/1-Command Line Interface',
-							'4-Client/2-Programming - Native API',
-							'4-Client/3-Programming - JDBC',
-							'4-Client/4-Programming - Other Languages',
-							'4-Client/5-Programming - TsFile API',
-							'4-Client/6-Programming - MQTT',
-							'4-Client/7-Status Codes',
+							['4-Client/1-Command Line Interface','Command Line Interface'],
+							['4-Client/2-Programming - Native API','Native API'],
+							['4-Client/3-Programming - JDBC','JDBC'],
+							['4-Client/4-Programming - Other Languages','Other Languages'],
+							['4-Client/5-Programming - TsFile API','TsFile API'],
+							['4-Client/6-Programming - MQTT','MQTT'],
+							['4-Client/7-Status Codes','Status Codes']
 						]
 					},
 					{
 						title: '5-Operation Manual',
 						children: [
-							'5-Operation Manual/1-DDL Data Definition Language',
-							'5-Operation Manual/2-DML Data Manipulation Language',
-							'5-Operation Manual/3-Account Management Statements',
-							'5-Operation Manual/4-SQL Reference',
+							['5-Operation Manual/1-DDL Data Definition Language','DDL (Data Definition Language)'],
+							['5-Operation Manual/2-DML Data Manipulation Language','DML (Data Manipulation Language)'],
+							['5-Operation Manual/3-Account Management Statements','Account Management Statements'],
+							['5-Operation Manual/4-SQL Reference','SQL Reference']
 						]
 					},
 					{
 						title: '6-System Tools',
 						children: [
-							'6-System Tools/1-Sync Tool',
-							'6-System Tools/2-Memory Estimation Tool',
-							'6-System Tools/3-JMX Tool',
-							'6-System Tools/4-Watermark Tool',
-							'6-System Tools/5-Log Visualizer',
-							'6-System Tools/6-Query History Visualization Tool',
-							'6-System Tools/7-Monitor and Log Tools',
-							'6-System Tools/8-Load External Tsfile',
+							['6-System Tools/1-Sync Tool','Sync Tool'],
+							['6-System Tools/2-Memory Estimation Tool','Memory Estimation Tool'],
+							['6-System Tools/3-JMX Tool','JMX Tool'],
+							['6-System Tools/4-Watermark Tool','Watermark Tool'],
+							['6-System Tools/5-Log Visualizer','Log Visualizer'],
+							['6-System Tools/6-Query History Visualization Tool','Query History Visualization Tool'],
+							['6-System Tools/7-Monitor and Log Tools','Monitor and Log Tools'],
+							['6-System Tools/8-Load External Tsfile','Load External Tsfile']
 						]
 					},
 					{
 						title: '7-Ecosystem Integration',
 						children: [
-							'7-Ecosystem Integration/1-Grafana',
-							'7-Ecosystem Integration/2-MapReduce TsFile',
-							'7-Ecosystem Integration/3-Spark TsFile',
-							'7-Ecosystem Integration/4-Spark IoTDB',
-							'7-Ecosystem Integration/5-Hive TsFile',
+							['7-Ecosystem Integration/1-Grafana','Grafana'],
+							['7-Ecosystem Integration/2-MapReduce TsFile','MapReduce TsFile'],
+							['7-Ecosystem Integration/3-Spark TsFile','Spark TsFile'],
+							['7-Ecosystem Integration/4-Spark IoTDB','Spark IoTDB'],
+							['7-Ecosystem Integration/5-Hive TsFile','Hive TsFile']
 						]
 					},
 					{
 						title: '8-Architecture',
 						children: [
-							'8-Architecture/1-Files',
-							'8-Architecture/2-Writing Data on HDFS',
-							'8-Architecture/3-Shared Nothing Cluster',
+							['8-Architecture/1-Files','Files'],
+							['8-Architecture/2-Writing Data on HDFS','Writing Data on HDFS'],
+							['8-Architecture/3-Shared Nothing Cluster','Shared Nothing Cluster']
 						]
 					},
 				],
@@ -383,68 +393,68 @@ var config = {
 					{
 						title: '0-Architecture',
 						children: [
-							'0-Architecture/1-Architecture',
+							['0-Architecture/1-Architecture','Architecture']
 						]
 					},
 					{
 						title: '1-TsFile',
 						children: [
-							'1-TsFile/1-TsFile',
-							'1-TsFile/2-Format',
-							'1-TsFile/3-Write',
-							'1-TsFile/4-Read',
+							['1-TsFile/1-TsFile','TsFile'],
+							['1-TsFile/2-Format','Format'],
+							['1-TsFile/3-Write','Write'],
+							['1-TsFile/4-Read','Read']
 						]
 					},
 					{
 						title: '2-QueryEngine',
 						children: [
-							'2-QueryEngine/1-QueryEngine',
-							'2-QueryEngine/2-Planner',
-							'2-QueryEngine/3-PlanExecutor',
+							['2-QueryEngine/1-QueryEngine','QueryEngine'],
+							['2-QueryEngine/2-Planner','Planner'],
+							['2-QueryEngine/3-PlanExecutor','PlanExecutor']
 						]
 					},
 					{
 						title: '3-SchemaManager',
 						children: [
-							'3-SchemaManager/1-SchemaManager',
+							['3-SchemaManager/1-SchemaManager','SchemaManager'],
 						]
 					},
 					{
 						title: '4-StorageEngine',
 						children: [
-							'4-StorageEngine/1-StorageEngine',
-							'4-StorageEngine/2-WAL',
-							'4-StorageEngine/3-FlushManager',
-							'4-StorageEngine/4-MergeManager',
-							'4-StorageEngine/5-DataPartition',
-							'4-StorageEngine/6-DataManipulation',
+							['4-StorageEngine/1-StorageEngine','StorageEngine'],
+							['4-StorageEngine/2-WAL','WAL'],
+							['4-StorageEngine/3-FlushManager','FlushManager'],
+							['4-StorageEngine/4-MergeManager','MergeManager'],
+							['4-StorageEngine/5-DataPartition','DataPartition'],
+							['4-StorageEngine/6-DataManipulation','DataManipulation']
 						]
 					},
 					{
 						title: '5-DataQuery',
 						children: [
-							'5-DataQuery/1-DataQuery',
-							'5-DataQuery/2-SeriesReader',
-							'5-DataQuery/3-RawDataQuery',
-							'5-DataQuery/4-AggregationQuery',
-							'5-DataQuery/5-GroupByQuery',
-							'5-DataQuery/6-LastQuery',
-							'5-DataQuery/7-AlignByDeviceQuery',
-							'5-DataQuery/8-ModificationHandle',
+							['5-DataQuery/1-DataQuery','DataQuery'],
+							['5-DataQuery/2-SeriesReader','SeriesReader'],
+							['5-DataQuery/3-RawDataQuery','RawDataQuery'],
+							['5-DataQuery/4-AggregationQuery','AggregationQuery'],
+							['5-DataQuery/5-GroupByQuery','GroupByQuery'],
+							['5-DataQuery/6-LastQuery','LastQuery'],
+							['5-DataQuery/7-AlignByDeviceQuery','AlignByDeviceQuery'],
+							['5-DataQuery/8-ModificationHandle','ModificationHandle']
 						]
 					},
 					{
 						title: '6-Tools',
 						children: [
-							'6-Tools/1-Sync',
+							['6-Tools/1-Sync','Sync']
 						]
 					},
 					{
 						title: '7-Connector',
 						children: [
-							'7-Connector/2-Hive-TsFile',
-							'7-Connector/3-Spark-TsFile',
-							'7-Connector/4-Spark-IOTDB',
+							['7-Connector/2-Hive-TsFile','Hive-TsFile'],
+							['7-Connector/3-Spark-TsFile','Spark-TsFile'],
+							['7-Connector/4-Spark-IOTDB','Spark-IOTDB']
 						]
 					},
 				],
@@ -471,7 +481,7 @@ var config = {
 				 {
 					text: '文档',
 					items: [
-					  { text: 'In progress', link: '/zh/UserGuide/master/0-Get Started/1-QuickStart' },
+					  { text: 'In progress', link: '/zh/UserGuide/Master/0-Get Started/1-QuickStart' },
 					  { text: 'V0.9.x', link: '/zh/UserGuide/V0.9.x/0-Get Started/1-QuickStart' },
 					  { text: 'V0.8.x', link: '/zh/UserGuide/V0.8.x/0-Get Started/1-QuickStart'},
 					]
@@ -487,8 +497,7 @@ var config = {
 				  {
 					text: '社区',
 					items: [
-						{ text: 'ASF', link: '/zh/Community/ASF'},
-						{ text: 'Wiki', link: '/zh/Community/Wiki'},
+						{ text: 'Wiki', link: 'https://cwiki.apache.org/confluence/display/iotdb'},
 					    { text: '开发人员', link: '/zh/Community/Community-Project Committers'},
 					    { text: '技术支持', link: '/zh/Community/Community-Powered By'},
 					]
@@ -502,276 +511,288 @@ var config = {
 					  { text: 'RPC变更清单', link: '/zh/Development/rpc-changelist'},
 					]
 				  },
+				  {
+					text: 'ASF',
+					items: [
+					  { text: '基金会', link: 'http://www.apache.org/'},
+					  { text: '许可证', link: 'http://www.apache.org/licenses/'},
+					  { text: '安全', link: 'http://www.apache.org/security/'},
+					  { text: '赞助', link: 'http://www.apache.org/foundation/sponsorship.html'},
+					  { text: '致谢', link: 'http://www.apache.org/foundation/thanks.html'},
+					  { text: '活动', link: 'http://www.apache.org/events/current-event'},
+					]
+				  },
 			],
 			sidebar: {
 				'/zh/UserGuide/V0.8.x/': [
 					{
-						title: '用户手册(V0.8.x)',
+						title: 'IoTDB用户手册 (V0.8.x)',
 						collapsable: false,
 					},
 					{
 						title: '0-开始使用',
 						children: [
-							'0-Get Started/1-QuickStart',
-							'0-Get Started/2-Frequently asked questions',
-							'0-Get Started/3-Publication'
+							['0-Get Started/1-QuickStart','快速入门'],
+							['0-Get Started/2-Frequently asked questions','经常问的问题'],
+							['0-Get Started/3-Publication','调查报告']
 						]
 					},
 					{
 						title: '1-概述',
 						children: [
-							'1-Overview/1-What is IoTDB',
-							'1-Overview/2-Architecture',
-							'1-Overview/3-Scenario',
-							'1-Overview/4-Features'
+							['1-Overview/1-What is IoTDB','什么是IoTDB'],
+							['1-Overview/2-Architecture','架构'],
+							['1-Overview/3-Scenario','应用场景'],
+							['1-Overview/4-Features','特征']
 						]
 					},
 					{
 						title: '2-基本概念',
 						children: [
-							'2-Concept Key Concepts and Terminology/1-Key Concepts and Terminology',
-							'2-Concept Key Concepts and Terminology/2-Data Type',
-							'2-Concept Key Concepts and Terminology/3-Encoding',
-							'2-Concept Key Concepts and Terminology/4-Compression'
+							['2-Concept Key Concepts and Terminology/1-Key Concepts and Terminology','主要概念及术语'],
+							['2-Concept Key Concepts and Terminology/2-Data Type','数据类型'],
+							['2-Concept Key Concepts and Terminology/3-Encoding','编码方式'],
+							['2-Concept Key Concepts and Terminology/4-Compression','压缩方式']
 						]
 					},
 					{
 						title: '3-操作指南',
 						children: [
-							'3-Operation Manual/1-Sample Data',
-							'3-Operation Manual/2-Data Model Selection',
-							'3-Operation Manual/3-Data Import',
-							'3-Operation Manual/4-Data Query',
-							'3-Operation Manual/5-Data Maintenance',
-							'3-Operation Manual/6-Priviledge Management',
+							['3-Operation Manual/1-Sample Data','样例数据'],
+							['3-Operation Manual/2-Data Model Selection','数据模型选用与创建'],
+							['3-Operation Manual/3-Data Import','数据接入'],
+							['3-Operation Manual/4-Data Query','数据查询'],
+							['3-Operation Manual/5-Data Maintenance','数据维护'],
+							['3-Operation Manual/6-Priviledge Management','权限管理']
 						]
 					},
 					{
 						title: '4-系统部署与管理',
 						children: [
-							'4-Deployment and Management/1-Deployment',
-							'4-Deployment and Management/2-Configuration',
-							'4-Deployment and Management/3-System Monitor',
-							'4-Deployment and Management/4-Performance Monitor',
-							'4-Deployment and Management/5-System log',
-							'4-Deployment and Management/6-Data Management',
-							'4-Deployment and Management/7-Build and use IoTDB by Dockerfile',
+							['4-Deployment and Management/1-Deployment','系统部署'],
+							['4-Deployment and Management/2-Configuration','系统配置'],
+							['4-Deployment and Management/3-System Monitor','系统监控'],
+							['4-Deployment and Management/4-Performance Monitor','性能监控'],
+							['4-Deployment and Management/5-System log','系统日志'],
+							['4-Deployment and Management/6-Data Management','数据管理'],
+							['4-Deployment and Management/7-Build and use IoTDB by Dockerfile','通过Dockerfile构建和使用IoTDB']
 						]
 					},
 					{
-						title: '5-SQL文档',
+						title: '5-IoTDB SQL文档',
 						children: [
-							'5-IoTDB SQL Documentation/1-IoTDB Query Statement',
-							'5-IoTDB SQL Documentation/2-Reference',
+							['5-IoTDB SQL Documentation/1-IoTDB Query Statement','IoTDB查询语句'],
+							['5-IoTDB SQL Documentation/2-Reference','参考']
 						]
 					},
 					{
 						title: '6-JDBC API',
 						children: [
-							'6-JDBC API/1-JDBC API',
+							['6-JDBC API/1-JDBC API','JDBC API']
 						]
 					},
 					{
 						title: '7-TsFile',
 						children: [
-							'7-TsFile/1-Installation',
-							'7-TsFile/2-Usage',
-							'7-TsFile/3-Hierarchy',
+							['7-TsFile/1-Installation','安装'],
+							['7-TsFile/2-Usage','用法'],
+							['7-TsFile/3-Hierarchy','TsFile层次结构']
 						]
 					},
 					{
 						title: '8-系统工具',
 						children: [
-							'8-System Tools/1-Sync',
-							'8-System Tools/2-Memory Estimation Tool',
+							['8-System Tools/1-Sync','同步工具'],
+							['8-System Tools/2-Memory Estimation Tool','内存预估工具']
 						]
-					},				   
+					},		   
 				],
 				'/zh/UserGuide/V0.9.x/': [
 					{
-						title: '用户手册(V0.9.x)',
+						title: 'IoTDB用户手册 (V0.9.x)',
 						collapsable: false,
 					},
 					{
 						title: '0-开始',
 						children: [
-							'0-Get Started/1-QuickStart',
-							'0-Get Started/2-Frequently asked questions',
-							'0-Get Started/3-Publication'
+							['0-Get Started/1-QuickStart','快速入门'],
+							['0-Get Started/2-Frequently asked questions','常见问题'],
+							['0-Get Started/3-Publication','研究论文']
 						]
 					},
 					{
 						title: '1-概览',
 						children: [
-							'1-Overview/1-What is IoTDB',
-							'1-Overview/2-Architecture',
-							'1-Overview/3-Scenario',
-							'1-Overview/4-Features'
+							['1-Overview/1-What is IoTDB','什么是IoTDB'],
+							['1-Overview/2-Architecture','架构'],
+							['1-Overview/3-Scenario','场景'],
+							['1-Overview/4-Features','特征']
 						]
 					},
 					{
 						title: '2-概念',
 						children: [
-							'2-Concept/1-Data Model and Terminology',
-							'2-Concept/2-Data Type',
-							'2-Concept/3-Encoding',
-							'2-Concept/4-Compression'
+							['2-Concept/1-Data Model and Terminology','数据模型与技术'],
+							['2-Concept/2-Data Type','数据类型'],
+							['2-Concept/3-Encoding','编码方式'],
+							['2-Concept/4-Compression','压缩方式']
 						]
 					},
 					{
 						title: '3-服务器端',
 						children: [
-							'3-Server/1-Download',
-							'3-Server/2-Single Node Setup',
-							'3-Server/3-Cluster Setup',
-							'3-Server/4-Config Manual',
-							'3-Server/5-Docker Image',
+							['3-Server/1-Download','下载'],
+							['3-Server/2-Single Node Setup','单节点设置'],
+							['3-Server/3-Cluster Setup','集群设置'],
+							['3-Server/4-Config Manual','系统配置'],
+							['3-Server/5-Docker Image','Docker镜像']
 						]
 					},
 					{
 						title: '4-客户端',
 						children: [
-							'4-Client/1-Command Line Interface',
-							'4-Client/2-Programming - JDBC',
-							'4-Client/3-Programming - Session',
-							'4-Client/4-Programming - Other Languages',
-							'4-Client/5-Programming - TsFile API',
+							['4-Client/1-Command Line Interface','命令行接口 (CLI)'],
+							['4-Client/2-Programming - JDBC','JDBC'],
+							['4-Client/3-Programming - Session','Session'],
+							['4-Client/4-Programming - Other Languages','其他语言'],
+							['4-Client/5-Programming - TsFile API','TsFile API']
 						]
 					},
 					{
 						title: '5-操作指南',
 						children: [
-							'5-Operation Manual/1-DDL Data Definition Language',
-							'5-Operation Manual/2-DML Data Manipulation Language',
-							'5-Operation Manual/3-Account Management Statements',
-							'5-Operation Manual/4-SQL Reference',
+							['5-Operation Manual/1-DDL Data Definition Language','DDL (数据定义语言)'],
+							['5-Operation Manual/2-DML Data Manipulation Language','DML (数据操作语言)'],
+							['5-Operation Manual/3-Account Management Statements','账户管理语句'],
+							['5-Operation Manual/4-SQL Reference','SQL 参考文档']
 						]
 					},
 					{
 						title: '6-系统工具',
 						children: [
-							'6-System Tools/1-Sync Tool',
-							'6-System Tools/2-Memory Estimation Tool',
-							'6-System Tools/3-JMX Tool',
-							'6-System Tools/4-Watermark Tool',
-							'6-System Tools/5-Log Visualizer',
-							'6-System Tools/6-Query History Visualization Tool',
-							'6-System Tools/7-Monitor and Log Tools',
-							'6-System Tools/8-Load External Tsfile',
+							['6-System Tools/1-Sync Tool','同步工具'],
+							['6-System Tools/2-Memory Estimation Tool','内存预估'],
+							['6-System Tools/3-JMX Tool','JMX工具'],
+							['6-System Tools/4-Watermark Tool','水印工具'],
+							['6-System Tools/5-Log Visualizer','日志可视化工具'],
+							['6-System Tools/6-Query History Visualization Tool','查询历史可视化工具'],
+							['6-System Tools/7-Monitor and Log Tools','监控与日志工具'],
+							['6-System Tools/8-Load External Tsfile','加载外部tsfile文件']
 						]
 					},
 					{
 						title: '7-生态集成',
 						children: [
-							'7-Ecosystem Integration/1-Grafana',
-							'7-Ecosystem Integration/2-MapReduce TsFile',
-							'7-Ecosystem Integration/3-Spark TsFile',
-							'7-Ecosystem Integration/4-Spark IoTDB',
-							'7-Ecosystem Integration/5-Hive TsFile',
+							['7-Ecosystem Integration/1-Grafana','Grafana'],
+							['7-Ecosystem Integration/2-MapReduce TsFile','MapReduce TsFile'],
+							['7-Ecosystem Integration/3-Spark TsFile','Spark TsFile'],
+							['7-Ecosystem Integration/4-Spark IoTDB','Spark IoTDB'],
+							['7-Ecosystem Integration/5-Hive TsFile','Hive TsFile']
 						]
 					},
 					{
 						title: '8-系统设计',
 						children: [
-							'8-System Design/1-Hierarchy',
-							'8-System Design/2-Files',
-							'8-System Design/3-Writing Data on HDFS',
-							'8-System Design/4-Shared Nothing Cluster',
+							['8-System Design/1-Hierarchy','层次结构'],
+							['8-System Design/2-Files','文件'],
+							['8-System Design/3-Writing Data on HDFS','使用HDFS存储数据'],
+							['8-System Design/4-Shared Nothing Cluster','Shared-nothing 架构']
 						]
 					},
 				],
-				'/zh/UserGuide/master/': [
+				'/zh/UserGuide/Master/': [
 					{
-						title: '用户手册(In progress)',
+						title: 'IoTDB用户手册 (In progress)',
 						collapsable: false,
 					},
 					{
 						title: '0-开始',
 						children: [
-							'0-Get Started/1-QuickStart',
-							'0-Get Started/2-Frequently asked questions',
-							'0-Get Started/3-Publication'
+							['0-Get Started/1-QuickStart','快速入门'],
+							['0-Get Started/2-Frequently asked questions','经常问的问题'],
+							['0-Get Started/3-Publication','调查报告']
 						]
 					},
 					{
 						title: '1-概述',
 						children: [
-							'1-Overview/1-What is IoTDB',
-							'1-Overview/2-Architecture',
-							'1-Overview/3-Scenario',
-							'1-Overview/4-Features'
+							['1-Overview/1-What is IoTDB','什么是IoTDB'],
+							['1-Overview/2-Architecture','架构'],
+							['1-Overview/3-Scenario','场景'],
+							['1-Overview/4-Features','特征']
 						]
 					},
 					{
 						title: '2-概念',
 						children: [
-							'2-Concept/1-Data Model and Terminology',
-							'2-Concept/2-Data Type',
-							'2-Concept/3-Encoding',
-							'2-Concept/4-Compression'
+							['2-Concept/1-Data Model and Terminology','数据模型与技术'],
+							['2-Concept/2-Data Type','数据类型'],
+							['2-Concept/3-Encoding','编码方式'],
+							['2-Concept/4-Compression','压缩方式']
 						]
 					},
 					{
 						title: '3-服务器端',
 						children: [
-							'3-Server/1-Download',
-							'3-Server/2-Single Node Setup',
-							'3-Server/3-Cluster Setup',
-							'3-Server/4-Config Manual',
-							'3-Server/5-Docker Image',
+							['3-Server/1-Download','下载'],
+							['3-Server/2-Single Node Setup','单节点安装'],
+							['3-Server/3-Cluster Setup','集群设置'],
+							['3-Server/4-Config Manual','配置手册'],
+							['3-Server/5-Docker Image','Docker镜像']
 						]
 					},
 					{
 						title: '4-客户端',
 						children: [
-							'4-Client/1-Command Line Interface',
-							'4-Client/2-Programming - Native API',
-							'4-Client/3-Programming - JDBC',
-							'4-Client/4-Programming - Other Languages',
-							'4-Client/5-Programming - TsFile API',
-							'4-Client/6-Status Codes',
+							['4-Client/1-Command Line Interface','命令行接口(CLI)'],
+							['4-Client/2-Programming - Native API','原生接口'],
+							['4-Client/3-Programming - JDBC','JDBC'],
+							['4-Client/4-Programming - Other Languages','其他语言'],
+							['4-Client/5-Programming - TsFile API','TsFile API'],
+							['4-Client/6-Programming - MQTT','MQTT'],
+							['4-Client/7-Status Codes','状态码']
 						]
 					},
 					{
 						title: '5-操作指南',
 						children: [
-							'5-Operation Manual/1-DDL Data Definition Language',
-							'5-Operation Manual/2-DML Data Manipulation Language',
-							'5-Operation Manual/3-Account Management Statements',
-							'5-Operation Manual/4-SQL Reference',
+							['5-Operation Manual/1-DDL Data Definition Language','DDL (数据定义语言)'],
+							['5-Operation Manual/2-DML Data Manipulation Language','DML (数据操作语言)'],
+							['5-Operation Manual/3-Account Management Statements','账户管理语句'],
+							['5-Operation Manual/4-SQL Reference','SQL 参考文档']
 						]
 					},
 					{
 						title: '6-系统工具',
 						children: [
-							'6-System Tools/1-Sync Tool',
-							'6-System Tools/2-Memory Estimation Tool',
-							'6-System Tools/3-JMX Tool',
-							'6-System Tools/4-Watermark Tool',
-							'6-System Tools/5-Log Visualizer',
-							'6-System Tools/6-Query History Visualization Tool',
-							'6-System Tools/7-Monitor and Log Tools',
-							'6-System Tools/8-Load External Tsfile',
+							['6-System Tools/1-Sync Tool','同步工具'],
+							['6-System Tools/2-Memory Estimation Tool','内存预估'],
+							['6-System Tools/3-JMX Tool','JMX工具'],
+							['6-System Tools/4-Watermark Tool','水印工具'],
+							['6-System Tools/5-Log Visualizer','日志可视化工具'],
+							['6-System Tools/6-Query History Visualization Tool','查询历史可视化工具'],
+							['6-System Tools/7-Monitor and Log Tools','监控与日志工具'],
+							['6-System Tools/8-Load External Tsfile','加载外部tsfile文件']
 						]
 					},
 					{
 						title: '7-生态集成',
 						children: [
-							'7-Ecosystem Integration/1-Grafana',
-							'7-Ecosystem Integration/2-MapReduce TsFile',
-							'7-Ecosystem Integration/3-Spark TsFile',
-							'7-Ecosystem Integration/4-Spark IoTDB',
-							'7-Ecosystem Integration/5-Hive TsFile',
+							['7-Ecosystem Integration/1-Grafana','Grafana'],
+							['7-Ecosystem Integration/2-MapReduce TsFile','MapReduce TsFile'],
+							['7-Ecosystem Integration/3-Spark TsFile','Spark TsFile'],
+							['7-Ecosystem Integration/4-Spark IoTDB','Spark IoTDB'],
+							['7-Ecosystem Integration/5-Hive TsFile','Hive TsFile']
 						]
 					},
 					{
 						title: '8-系统设计',
 						children: [
-							'8-Architecture/1-Files',
-							'8-Architecture/2-Writing Data on HDFS',
-							'8-Architecture/3-Shared Nothing Cluster',
+							['8-Architecture/1-Files','文件'],
+							['8-Architecture/2-Writing Data on HDFS','使用HDFS存储数据'],
+							['8-Architecture/3-Shared Nothing Cluster','Shared-nothing 架构']
 						]
-					},
+					}
 				],
 				'/zh/SystemDesign/': [
 					{
@@ -781,68 +802,68 @@ var config = {
 					{
 						title: '0-应用概览',
 						children: [
-							'0-Architecture/1-Architecture',
+							['0-Architecture/1-Architecture','应用概览']
 						]
 					},
 					{
 						title: '1-TsFile',
 						children: [
-							'1-TsFile/1-TsFile',
-							'1-TsFile/2-Format',
-							'1-TsFile/3-Write',
-							'1-TsFile/4-Read',
+							['1-TsFile/1-TsFile','TsFile'],
+							['1-TsFile/2-Format','格式'],
+							['1-TsFile/3-Write','写流程'],
+							['1-TsFile/4-Read','读流程']
 						]
 					},
 					{
 						title: '2-查询引擎',
 						children: [
-							'2-QueryEngine/1-QueryEngine',
-							'2-QueryEngine/2-Planner',
-							'2-QueryEngine/3-PlanExecutor',
+							['2-QueryEngine/1-QueryEngine','查询引擎'],
+							['2-QueryEngine/2-Planner','执行计划生成器'],
+							['2-QueryEngine/3-PlanExecutor','计划执行器']
 						]
 					},
 					{
 						title: '3-元数据管理',
 						children: [
-							'3-SchemaManager/1-SchemaManager',
+							['3-SchemaManager/1-SchemaManager','元数据管理']
 						]
 					},
 					{
 						title: '4-存储引擎',
 						children: [
-							'4-StorageEngine/1-StorageEngine',
-							'4-StorageEngine/2-WAL',
-							'4-StorageEngine/3-FlushManager',
-							'4-StorageEngine/4-MergeManager',
-							'4-StorageEngine/5-DataPartition',
-							'4-StorageEngine/6-DataManipulation',
+							['4-StorageEngine/1-StorageEngine','存储引擎'],
+							['4-StorageEngine/2-WAL','写前日志'],
+							['4-StorageEngine/3-FlushManager','FlushManager'],
+							['4-StorageEngine/4-MergeManager','文件合并机制'],
+							['4-StorageEngine/5-DataPartition','数据分区'],
+							['4-StorageEngine/6-DataManipulation','数据增删改']
 						]
 					},
 					{
 						title: '5-数据查询',
 						children: [
-							'5-DataQuery/1-DataQuery',
-							'5-DataQuery/2-SeriesReader',
-							'5-DataQuery/3-RawDataQuery',
-							'5-DataQuery/4-AggregationQuery',
-							'5-DataQuery/5-GroupByQuery',
-							'5-DataQuery/6-LastQuery',
-							'5-DataQuery/7-AlignByDeviceQuery',
-							'5-DataQuery/8-ModificationHandle',
+							['5-DataQuery/1-DataQuery','数据查询'],
+							['5-DataQuery/2-SeriesReader','查询基础组件'],
+							['5-DataQuery/3-RawDataQuery','原始数据查询'],
+							['5-DataQuery/4-AggregationQuery','聚合查询'],
+							['5-DataQuery/5-GroupByQuery','降采样查询'],
+							['5-DataQuery/6-LastQuery','最近时间戳 Last 查询'],
+							['5-DataQuery/7-AlignByDeviceQuery','按设备对齐查询'],
+							['5-DataQuery/8-ModificationHandle','查询中的数据修改处理']
 						]
 					},
 					{
 						title: '6-工具',
 						children: [
-							'6-Tools/1-Sync',
+							['6-Tools/1-Sync','同步工具']
 						]
 					},
 					{
 						title: '7-连接器',
 						children: [
-							'7-Connector/2-Hive-TsFile',
-							'7-Connector/3-Spark-TsFile',
-							'7-Connector/4-Spark-IOTDB',
+							['7-Connector/2-Hive-TsFile','Hive-TsFile'],
+							['7-Connector/3-Spark-TsFile','Spark-TsFile'],
+							['7-Connector/4-Spark-IOTDB','Spark-IOTDB']
 						]
 					},
 				],
@@ -865,4 +886,4 @@ var config = {
   }
   
   module.exports = config
-  
+  
\ No newline at end of file
diff --git a/site/src/main/.vuepress/enhanceApp.js b/site/src/main/.vuepress/enhanceApp.js
index 6ffe4c4..1c1a704 100644
--- a/site/src/main/.vuepress/enhanceApp.js
+++ b/site/src/main/.vuepress/enhanceApp.js
@@ -21,14 +21,10 @@
  */
 import Element from 'element-ui'
 import 'element-ui/lib/theme-chalk/index.css'
-import '../.vuepress/public/css/index.css'
 
  
 export default ({
-  Vue, // VuePress 正在使用的 Vue 构造函数
-  options, // 附加到根实例的一些选项
-  router, // 当前应用的路由实例
-  siteData // 站点元数据
+  Vue // VuePress 正在使用的 Vue 构造函数
 }) => {
   // ...做一些其他的应用级别的优化
   Vue.use(Element)
diff --git a/site/src/main/.vuepress/public/css/index.css b/site/src/main/.vuepress/public/css/index.css
deleted file mode 100644
index 7617450..0000000
--- a/site/src/main/.vuepress/public/css/index.css
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-  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.
- */
-
-/*滚动条的宽度*/
-
-::-webkit-scrollbar {
-    width:0px;
-    display: none;
-}
-
-/*外层轨道。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果*/
diff --git a/site/src/main/.vuepress/public/img/contributor-avatar/user.svg b/site/src/main/.vuepress/public/img/contributor-avatar/user.svg
index 01947d3..a8c7b6e 100644
--- a/site/src/main/.vuepress/public/img/contributor-avatar/user.svg
+++ b/site/src/main/.vuepress/public/img/contributor-avatar/user.svg
@@ -17,7 +17,7 @@
     specific language governing permissions and limitations
     under the License.
 -->
- 
+
 <svg width="107.56" height="107.56459" xmlns="http://www.w3.org/2000/svg">
  <metadata id="metadata1217">image/svg+xml</metadata>
 
diff --git a/site/src/main/.vuepress/styles/palette.styl b/site/src/main/.vuepress/styles/index.styl
similarity index 76%
copy from site/src/main/.vuepress/styles/palette.styl
copy to site/src/main/.vuepress/styles/index.styl
index e7aabf3..78f5182 100644
--- a/site/src/main/.vuepress/styles/palette.styl
+++ b/site/src/main/.vuepress/styles/index.styl
@@ -15,6 +15,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-$contentWidth = 2000px
-$sidebarWidth = 20rem
\ No newline at end of file
+@require '~vuepress-plugin-tabs/dist/themes/default.styl'
+@import 'https://fonts.googleapis.com/css?family=Raleway&display=swap.css';
+@import 'https://fonts.googleapis.com/css?family=Lato&display=swap.css';
+::-webkit-scrollbar{
+    display:none;
+}
\ No newline at end of file
diff --git a/site/src/main/.vuepress/styles/palette.styl b/site/src/main/.vuepress/styles/palette.styl
index e7aabf3..772eeed 100644
--- a/site/src/main/.vuepress/styles/palette.styl
+++ b/site/src/main/.vuepress/styles/palette.styl
@@ -15,6 +15,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
+$accentColor = #D513A5
+$textColor = #2c3e50
+$borderColor = #eaecef
+$codeBgColor = #282c34
 $contentWidth = 2000px
-$sidebarWidth = 20rem
\ No newline at end of file
+$secondaryColor = #182e04
\ No newline at end of file
diff --git a/site/src/main/.vuepress/theme/components/AlgoliaSearchBox.vue b/site/src/main/.vuepress/theme/components/AlgoliaSearchBox.vue
new file mode 100644
index 0000000..ecaeb85
--- /dev/null
+++ b/site/src/main/.vuepress/theme/components/AlgoliaSearchBox.vue
@@ -0,0 +1,172 @@
+/*
+* 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.
+*/
+<template>
+  <form
+    id="search-form"
+    class="algolia-search-wrapper search-box"
+    role="search"
+  >
+    <input
+      id="algolia-search-input"
+      class="search-query"
+    >
+  </form>
+</template>
+
+<script>
+export default {
+  props: ['options'],
+
+  mounted () {
+    this.initialize(this.options, this.$lang)
+  },
+
+  methods: {
+    initialize (userOptions, lang) {
+      Promise.all([
+        import(/* webpackChunkName: "docsearch" */ 'docsearch.js/dist/cdn/docsearch.min.js'),
+        import(/* webpackChunkName: "docsearch" */ 'docsearch.js/dist/cdn/docsearch.min.css')
+      ]).then(([docsearch]) => {
+        docsearch = docsearch.default
+        const { algoliaOptions = {}} = userOptions
+        docsearch(Object.assign(
+          {},
+          userOptions,
+          {
+            inputSelector: '#algolia-search-input',
+            // #697 Make docsearch work well at i18n mode.
+            algoliaOptions: Object.assign({
+              'facetFilters': [`lang:${lang}`].concat(algoliaOptions.facetFilters || [])
+            }, algoliaOptions)
+          }
+        ))
+      })
+    },
+
+    update (options, lang) {
+      this.$el.innerHTML = '<input id="algolia-search-input" class="search-query">'
+      this.initialize(options, lang)
+    }
+  },
+
+  watch: {
+    $lang (newValue) {
+      this.update(this.options, newValue)
+    },
+
+    options (newValue) {
+      this.update(newValue, this.$lang)
+    }
+  }
+}
+</script>
+
+<style lang="stylus">
+.algolia-search-wrapper
+  & > span
+    vertical-align middle
+  .algolia-autocomplete
+    line-height normal
+    .ds-dropdown-menu
+      background-color #fff
+      border 1px solid #999
+      border-radius 4px
+      font-size 16px
+      margin 6px 0 0
+      padding 4px
+      text-align left
+      &:before
+        border-color #999
+      [class*=ds-dataset-]
+        border none
+        padding 0
+      .ds-suggestions
+        margin-top 0
+      .ds-suggestion
+        border-bottom 1px solid $borderColor
+    .algolia-docsearch-suggestion--highlight
+      color #2c815b
+    .algolia-docsearch-suggestion
+      border-color $borderColor
+      padding 0
+      .algolia-docsearch-suggestion--category-header
+        padding 5px 10px
+        margin-top 0
+        background $accentColor
+        color #fff
+        font-weight 600
+        .algolia-docsearch-suggestion--highlight
+          background rgba(255, 255, 255, 0.6)
+      .algolia-docsearch-suggestion--wrapper
+        padding 0
+      .algolia-docsearch-suggestion--title
+        font-weight 600
+        margin-bottom 0
+        color $textColor
+      .algolia-docsearch-suggestion--subcategory-column
+        vertical-align top
+        padding 5px 7px 5px 5px
+        border-color $borderColor
+        background #f1f3f5
+        &:after
+          display none
+      .algolia-docsearch-suggestion--subcategory-column-text
+        color #555
+    .algolia-docsearch-footer
+      border-color $borderColor
+    .ds-cursor .algolia-docsearch-suggestion--content
+      background-color #e7edf3 !important
+      color $textColor
+
+@media (min-width: $MQMobile)
+  .algolia-search-wrapper
+    .algolia-autocomplete
+      .algolia-docsearch-suggestion
+        .algolia-docsearch-suggestion--subcategory-column
+          float none
+          width 150px
+          min-width 150px
+          display table-cell
+        .algolia-docsearch-suggestion--content
+          float none
+          display table-cell
+          width 100%
+          vertical-align top
+        .ds-dropdown-menu
+          min-width 515px !important
+
+@media (max-width: $MQMobile)
+  .algolia-search-wrapper
+    .ds-dropdown-menu
+      min-width calc(100vw - 4rem) !important
+      max-width calc(100vw - 4rem) !important
+    .algolia-docsearch-suggestion--wrapper
+      padding 5px 7px 5px 5px !important
+    .algolia-docsearch-suggestion--subcategory-column
+      padding 0 !important
+      background white !important
+    .algolia-docsearch-suggestion--subcategory-column-text:after
+      content " > "
+      font-size 10px
+      line-height 14.4px
+      display inline-block
+      width 5px
+      margin -3px 3px 0
+      vertical-align middle
+
+</style>
diff --git a/site/src/main/.vuepress/theme/components/DropdownLink.vue b/site/src/main/.vuepress/theme/components/DropdownLink.vue
new file mode 100644
index 0000000..b771dc9
--- /dev/null
+++ b/site/src/main/.vuepress/theme/components/DropdownLink.vue
@@ -0,0 +1,196 @@
+/*
+* 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.
+*/
+<template>
+  <div
+    class="dropdown-wrapper"
+    :class="{ open }"
+  >
+    <a
+      class="dropdown-title"
+      @click="toggle"
+    >
+      <span class="title">{{ item.text }}</span>
+      <span
+        class="arrow"
+        :class="open ? 'down' : 'right'"
+      ></span>
+    </a>
+
+    <DropdownTransition>
+      <ul
+        class="nav-dropdown"
+        v-show="open"
+      >
+        <li
+          class="dropdown-item"
+          :key="subItem.link || index"
+          v-for="(subItem, index) in item.items"
+        >
+          <h4 v-if="subItem.type === 'links'">{{ subItem.text }}</h4>
+
+          <ul
+            class="dropdown-subitem-wrapper"
+            v-if="subItem.type === 'links'"
+          >
+            <li
+              class="dropdown-subitem"
+              :key="childSubItem.link"
+              v-for="childSubItem in subItem.items"
+            >
+              <NavLink :item="childSubItem"/>
+            </li>
+          </ul>
+
+          <NavLink
+            v-else
+            :item="subItem"
+          />
+        </li>
+      </ul>
+    </DropdownTransition>
+  </div>
+</template>
+
+<script>
+import NavLink from '@theme/components/NavLink.vue'
+import DropdownTransition from '@theme/components/DropdownTransition.vue'
+
+export default {
+  components: { NavLink, DropdownTransition },
+
+  data () {
+    return {
+      open: false
+    }
+  },
+
+  props: {
+    item: {
+      required: true
+    }
+  },
+
+  methods: {
+    toggle () {
+      this.open = !this.open
+    }
+  }
+}
+</script>
+
+<style lang="stylus">
+.dropdown-wrapper
+  cursor pointer
+  .dropdown-title
+    display block
+    &:hover
+      border-color transparent
+    .arrow
+      vertical-align middle
+      margin-top -1px
+      margin-left 0.4rem
+  .nav-dropdown
+    .dropdown-item
+      color inherit
+      line-height 1.7rem
+      h4
+        margin 0.45rem 0 0
+        border-top 1px solid #eee
+        padding 0.45rem 1.5rem 0 1.25rem
+      .dropdown-subitem-wrapper
+        padding 0
+        list-style none
+        .dropdown-subitem
+          font-size 0.9em
+      a
+        display block
+        line-height 1.7rem
+        position relative
+        border-bottom none
+        font-weight 400
+        margin-bottom 0
+        padding 0 1.5rem 0 1.25rem
+        &:hover
+          color $accentColor
+        &.router-link-active
+          color $accentColor
+          &::after
+            content ""
+            width 0
+            height 0
+            border-left 5px solid $accentColor
+            border-top 3px solid transparent
+            border-bottom 3px solid transparent
+            position absolute
+            top calc(50% - 2px)
+            left 9px
+      &:first-child h4
+        margin-top 0
+        padding-top 0
+        border-top 0
+
+@media (max-width: $MQMobile)
+  .dropdown-wrapper
+    &.open .dropdown-title
+      margin-bottom 0.5rem
+    .nav-dropdown
+      transition height .1s ease-out
+      overflow hidden
+      .dropdown-item
+        h4
+          border-top 0
+          margin-top 0
+          padding-top 0
+        h4, & > a
+          font-size 15px
+          line-height 2rem
+        .dropdown-subitem
+          font-size 14px
+          padding-left 1rem
+
+@media (min-width: $MQMobile)
+  .dropdown-wrapper
+    height 1.8rem
+    &:hover .nav-dropdown
+      // override the inline style.
+      display block !important
+    .dropdown-title .arrow
+      // make the arrow always down at desktop
+      border-left 4px solid transparent
+      border-right 4px solid transparent
+      border-top 6px solid $arrowBgColor
+      border-bottom 0
+    .nav-dropdown
+      display none
+      // Avoid height shaked by clicking
+      height auto !important
+      box-sizing border-box;
+      max-height calc(100vh - 2.7rem)
+      overflow-y auto
+      position absolute
+      top 100%
+      right 0
+      background-color #fff
+      padding 0.6rem 0
+      border 1px solid #ddd
+      border-bottom-color #ccc
+      text-align left
+      border-radius 0.25rem
+      white-space nowrap
+      margin 0
+</style>
diff --git a/site/src/main/.vuepress/theme/components/DropdownTransition.vue b/site/src/main/.vuepress/theme/components/DropdownTransition.vue
new file mode 100644
index 0000000..669f4f5
--- /dev/null
+++ b/site/src/main/.vuepress/theme/components/DropdownTransition.vue
@@ -0,0 +1,50 @@
+/*
+* 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.
+*/
+<template>
+  <transition
+    name="dropdown"
+    @enter="setHeight"
+    @after-enter="unsetHeight"
+    @before-leave="setHeight"
+  >
+    <slot/>
+  </transition>
+</template>
+
+<script>
+export default {
+  name: 'DropdownTransition',
+
+  methods: {
+    setHeight (items) {
+      // explicitly set height so that it can be transitioned
+      items.style.height = items.scrollHeight + 'px'
+    },
+
+    unsetHeight (items) {
+      items.style.height = ''
+    }
+  }
+}
+</script>
+
+<style lang="stylus">
+.dropdown-enter, .dropdown-leave-to
+  height 0 !important
+
+</style>
diff --git a/site/src/main/.vuepress/theme/components/Home.vue b/site/src/main/.vuepress/theme/components/Home.vue
new file mode 100644
index 0000000..8185c59
--- /dev/null
+++ b/site/src/main/.vuepress/theme/components/Home.vue
@@ -0,0 +1,179 @@
+/*
+* 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.
+*/
+<template>
+  <main class="home" aria-labelledby="main-title">
+    <header class="hero">
+      <img
+        v-if="data.heroImage"
+        :src="$withBase(data.heroImage)"
+        :alt="data.heroAlt || 'hero'"
+      >
+
+      <h1 v-if="data.heroText !== null" id="main-title">{{ data.heroText || $title || 'Hello' }}</h1>
+
+      <p class="description">
+        {{ data.tagline || $description || 'Welcome to your VuePress site' }}
+      </p>
+
+      <p
+        class="action"
+        v-if="data.actionText && data.actionLink"
+      >
+        <NavLink
+          class="action-button"
+          :item="actionLink"
+        />
+      </p>
+    </header>
+
+    <div
+      class="features"
+      v-if="data.features && data.features.length"
+    >
+      <div
+        class="feature"
+        v-for="(feature, index) in data.features"
+        :key="index"
+      >
+        <h2>{{ feature.title }}</h2>
+        <p>{{ feature.details }}</p>
+      </div>
+    </div>
+
+    <Content class="custom"/>
+
+    <div
+      class="footer"
+      v-if="data.footer"
+    >
+      {{ data.footer }}
+    </div>
+  </main>
+</template>
+
+<script>
+import NavLink from '@theme/components/NavLink.vue'
+
+export default {
+  components: { NavLink },
+
+  computed: {
+    data () {
+      return this.$page.frontmatter
+    },
+
+    actionLink () {
+      return {
+        link: this.data.actionLink,
+        text: this.data.actionText
+      }
+    }
+  }
+}
+</script>
+
+<style lang="stylus">
+.home
+  padding $navbarHeight 2rem 0
+  max-width 960px
+  margin 0px auto
+  display block
+  .hero
+    text-align center
+    img
+      max-width: 100%
+      max-height 280px
+      display block
+      margin 3rem auto 1.5rem
+    h1
+      font-size 3rem
+    h1, .description, .action
+      margin 1.8rem auto
+    .description
+      max-width 35rem
+      font-size 1.6rem
+      line-height 1.3
+      color lighten($textColor, 40%)
+    .action-button
+      display inline-block
+      font-size 1.2rem
+      color #fff
+      background-color $accentColor
+      padding 0.8rem 1.6rem
+      border-radius 4px
+      transition background-color .1s ease
+      box-sizing border-box
+      border-bottom 1px solid darken($accentColor, 10%)
+      &:hover
+        background-color lighten($accentColor, 10%)
+  .features
+    border-top 1px solid $borderColor
+    padding 1.2rem 0
+    margin-top 2.5rem
+    display flex
+    flex-wrap wrap
+    align-items flex-start
+    align-content stretch
+    justify-content space-between
+  .feature
+    flex-grow 1
+    flex-basis 30%
+    max-width 30%
+    h2
+      font-size 1.4rem
+      font-weight 500
+      border-bottom none
+      padding-bottom 0
+      color lighten($textColor, 10%)
+    p
+      color lighten($textColor, 25%)
+  .footer
+    padding 2.5rem
+    border-top 1px solid $borderColor
+    text-align center
+    color lighten($textColor, 25%)
+
+@media (max-width: $MQMobile)
+  .home
+    .features
+      flex-direction column
+    .feature
+      max-width 100%
+      padding 0 2.5rem
+
+@media (max-width: $MQMobileNarrow)
+  .home
+    padding-left 1.5rem
+    padding-right 1.5rem
+    .hero
+      img
+        max-height 210px
+        margin 2rem auto 1.2rem
+      h1
+        font-size 2rem
+      h1, .description, .action
+        margin 1.2rem auto
+      .description
+        font-size 1.2rem
+      .action-button
+        font-size 1rem
+        padding 0.6rem 1.2rem
+    .feature
+      h2
+        font-size 1.25rem
+</style>
diff --git a/site/src/main/.vuepress/theme/components/NavLink.vue b/site/src/main/.vuepress/theme/components/NavLink.vue
new file mode 100644
index 0000000..54f8d73
--- /dev/null
+++ b/site/src/main/.vuepress/theme/components/NavLink.vue
@@ -0,0 +1,65 @@
+/*
+* 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.
+*/
+<template>
+  <router-link
+    class="nav-link"
+    :to="link"
+    v-if="!isExternal(link)"
+    :exact="exact"
+  >{{ item.text }}</router-link>
+  <a
+    v-else
+    :href="link"
+    class="nav-link external"
+    :target="item.target"
+  >
+    {{ item.text }}
+    <OutboundLink v-if="item.target=='_blank'"/>
+  </a>
+</template>
+
+<script>
+import { isExternal, isMailto, isTel, ensureExt } from '../util'
+
+export default {
+  props: {
+    item: {
+      required: true
+    }
+  },
+
+  computed: {
+    link () {
+      return ensureExt(this.item.link)
+    },
+
+    exact () {
+      if (this.$site.locales) {
+        return Object.keys(this.$site.locales).some(rootLink => rootLink === this.link)
+      }
+      return this.link === '/'
+    }
+  },
+
+  methods: {
+    isExternal,
+    isMailto,
+    isTel
+  }
+}
+</script>
diff --git a/site/src/main/.vuepress/theme/components/NavLinks.vue b/site/src/main/.vuepress/theme/components/NavLinks.vue
new file mode 100644
index 0000000..bef6b68
--- /dev/null
+++ b/site/src/main/.vuepress/theme/components/NavLinks.vue
@@ -0,0 +1,166 @@
+/*
+* 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.
+*/
+<template>
+  <nav
+    class="nav-links"
+    v-if="userLinks.length || repoLink"
+  >
+    <!-- user links -->
+    <div
+      class="nav-item"
+      v-for="item in userLinks"
+      :key="item.link"
+    >
+      <DropdownLink
+        v-if="item.type === 'links'"
+        :item="item"
+      />
+      <NavLink
+        v-else
+        :item="item"
+      />
+    </div>
+
+    <!-- repo link -->
+    <a
+      v-if="repoLink"
+      :href="repoLink"
+      class="repo-link"
+      target="_blank"
+      rel="noopener noreferrer"
+    >
+      {{ repoLabel }}
+      <OutboundLink/>
+    </a>
+  </nav>
+</template>
+
+<script>
+import DropdownLink from '@theme/components/DropdownLink.vue'
+import { resolveNavLinkItem } from '../util'
+import NavLink from '@theme/components/NavLink.vue'
+
+export default {
+  components: { NavLink, DropdownLink },
+
+  computed: {
+    userNav () {
+      return this.$themeLocaleConfig.nav || this.$site.themeConfig.nav || []
+    },
+
+    nav () {
+      const { locales } = this.$site
+      if (locales && Object.keys(locales).length > 1) {
+        const currentLink = this.$page.path
+        const routes = this.$router.options.routes
+        const themeLocales = this.$site.themeConfig.locales || {}
+        const languageDropdown = {
+          text: this.$themeLocaleConfig.selectText || 'Languages',
+          items: Object.keys(locales).map(path => {
+            const locale = locales[path]
+            const text = themeLocales[path] && themeLocales[path].label || locale.lang
+            let link
+            // Stay on the current page
+            if (locale.lang === this.$lang) {
+              link = currentLink
+            } else {
+              // Try to stay on the same page
+              link = currentLink.replace(this.$localeConfig.path, path)
+              // fallback to homepage
+              if (!routes.some(route => route.path === link)) {
+                link = path
+              }
+            }
+            return { text, link }
+          })
+        }
+        return [...this.userNav, languageDropdown]
+      }
+      return this.userNav
+    },
+
+    userLinks () {
+      return (this.nav || []).map(link => {
+        return Object.assign(resolveNavLinkItem(link), {
+          items: (link.items || []).map(resolveNavLinkItem)
+        })
+      })
+    },
+
+    repoLink () {
+      const { repo } = this.$site.themeConfig
+      if (repo) {
+        return /^https?:/.test(repo)
+          ? repo
+          : `https://github.com/${repo}`
+      }
+    },
+
+    repoLabel () {
+      if (!this.repoLink) return
+      if (this.$site.themeConfig.repoLabel) {
+        return this.$site.themeConfig.repoLabel
+      }
+
+      const repoHost = this.repoLink.match(/^https?:\/\/[^/]+/)[0]
+      const platforms = ['GitHub', 'GitLab', 'Bitbucket']
+      for (let i = 0; i < platforms.length; i++) {
+        const platform = platforms[i]
+        if (new RegExp(platform, 'i').test(repoHost)) {
+          return platform
+        }
+      }
+
+      return 'Source'
+    }
+  }
+}
+</script>
+
+<style lang="stylus">
+.nav-links
+  display inline-block
+  a
+    line-height 1.4rem
+    color inherit
+    &:hover, &.router-link-active
+      color $accentColor
+  .nav-item
+    position relative
+    display inline-block
+    margin-left 1.5rem
+    line-height 2rem
+    &:first-child
+      margin-left 0
+  .repo-link
+    margin-left 1.5rem
+
+@media (max-width: $MQMobile)
+  .nav-links
+    .nav-item, .repo-link
+      margin-left 0
+
+@media (min-width: $MQMobile)
+  .nav-links a
+    &:hover, &.router-link-active
+      color $textColor
+  .nav-item > a:not(.external)
+    &:hover, &.router-link-active
+      margin-bottom -2px
+      border-bottom 2px solid lighten($accentColor, 8%)
+</style>
diff --git a/site/src/main/.vuepress/theme/components/Navbar.vue b/site/src/main/.vuepress/theme/components/Navbar.vue
new file mode 100644
index 0000000..478707b
--- /dev/null
+++ b/site/src/main/.vuepress/theme/components/Navbar.vue
@@ -0,0 +1,139 @@
+/*
+* 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.
+*/
+<template>
+  <header class="navbar">
+    <SidebarButton @toggle-sidebar="$emit('toggle-sidebar')"/>
+
+    <router-link
+      :to="$localePath"
+      class="home-link"
+    >
+      <img
+        class="logo"
+        v-if="$site.themeConfig.logo"
+        :src="$withBase($site.themeConfig.logo)"
+        :alt="$siteTitle"
+      >
+    </router-link>
+
+    <div
+      class="links"
+      :style="linksWrapMaxWidth ? {
+        'max-width': linksWrapMaxWidth + 'px'
+      } : {}"
+    >
+      <AlgoliaSearchBox
+        v-if="isAlgoliaSearch"
+        :options="algolia"
+      />
+      <SearchBox v-else-if="$site.themeConfig.search !== false && $page.frontmatter.search !== false"/>
+      <NavLinks class="can-hide"/>
+    </div>
+  </header>
+</template>
+
+<script>
+import AlgoliaSearchBox from '@AlgoliaSearchBox'
+import SearchBox from '@SearchBox'
+import SidebarButton from '@theme/components/SidebarButton.vue'
+import NavLinks from '@theme/components/NavLinks.vue'
+
+export default {
+  components: { SidebarButton, NavLinks, SearchBox, AlgoliaSearchBox },
+
+  data () {
+    return {
+      linksWrapMaxWidth: null
+    }
+  },
+
+  mounted () {
+    const MOBILE_DESKTOP_BREAKPOINT = 719 // refer to config.styl
+    const NAVBAR_VERTICAL_PADDING = parseInt(css(this.$el, 'paddingLeft')) + parseInt(css(this.$el, 'paddingRight'))
+    const handleLinksWrapWidth = () => {
+      if (document.documentElement.clientWidth < MOBILE_DESKTOP_BREAKPOINT) {
+        this.linksWrapMaxWidth = null
+      } else {
+        this.linksWrapMaxWidth = this.$el.offsetWidth - NAVBAR_VERTICAL_PADDING
+          - (this.$refs.siteName && this.$refs.siteName.offsetWidth || 0)
+      }
+    }
+    handleLinksWrapWidth()
+    window.addEventListener('resize', handleLinksWrapWidth, false)
+  },
+
+  computed: {
+    algolia () {
+      return this.$themeLocaleConfig.algolia || this.$site.themeConfig.algolia || {}
+    },
+
+    isAlgoliaSearch () {
+      return this.algolia && this.algolia.apiKey && this.algolia.indexName
+    }
+  }
+}
+
+function css (el, property) {
+  // NOTE: Known bug, will return 'auto' if style value is 'auto'
+  const win = el.ownerDocument.defaultView
+  // null means not to return pseudo styles
+  return win.getComputedStyle(el, null)[property]
+}
+</script>
+
+<style lang="stylus">
+$navbar-vertical-padding = 0.7rem
+$navbar-horizontal-padding = 1.5rem
+
+.navbar
+  padding $navbar-vertical-padding $navbar-horizontal-padding
+  line-height $navbarHeight - 1.4rem
+  a, span, img
+    display inline-block
+  .logo
+    height $navbarHeight - 1.4rem
+    min-width $navbarHeight - 1.4rem
+    margin-right 0.8rem
+    vertical-align top
+  .site-name
+    font-size 1.3rem
+    font-weight bold
+    color $textColor
+    position relative
+  .links
+    padding-left 1.5rem
+    box-sizing border-box
+    background-color white
+    white-space nowrap
+    font-size 0.9rem
+    position absolute
+    right $navbar-horizontal-padding
+    top $navbar-vertical-padding
+    display flex
+    .search-box
+      flex: 0 0 auto
+      vertical-align top
+
+@media (max-width: $MQMobile)
+  .navbar
+    padding-left 4rem
+    .can-hide
+      display none
+    .links
+      padding-left 1.5rem
+</style>
diff --git a/site/src/main/.vuepress/theme/components/Page.vue b/site/src/main/.vuepress/theme/components/Page.vue
new file mode 100644
index 0000000..5850ffa
--- /dev/null
+++ b/site/src/main/.vuepress/theme/components/Page.vue
@@ -0,0 +1,278 @@
+/*
+* 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.
+*/
+<template>
+  <main class="page">
+    <slot name="top"/>
+
+    <Content class="content" />
+
+    <!-- <footer class="page-edit">
+      <blockquote>
+        <p>
+          Anything unclear or missing?
+          <a :href="commentLink" target="_blank" rel="noopener noreferrer">
+            Leave a comment
+          </a>
+          <OutboundLink/> or <a
+            :href="editLink"
+            target="_blank"
+            rel="noopener noreferrer"
+          >{{ editLinkText }}</a>
+          <OutboundLink/>
+        </p>
+        <small>
+          <span class="prefix">{{ lastUpdatedText }}: </span>
+          <span class="time">{{ lastUpdated }}</span>
+        </small>
+        
+      </blockquote>
+    </footer> -->
+
+    <div class="page-nav" v-if="prev || next">
+      <p class="inner">
+        <span
+          v-if="prev"
+          class="prev"
+        >
+          ←
+          <router-link
+            v-if="prev"
+            class="prev"
+            :to="prev.path"
+          >
+            {{ prev.title || prev.path }}
+          </router-link>
+        </span>
+
+        <span
+          v-if="next"
+          class="next"
+        >
+          <router-link
+            v-if="next"
+            :to="next.path"
+          >
+            {{ next.title || next.path }}
+          </router-link>
+          →
+        </span>
+      </p>
+    </div>
+
+    <!-- <slot name="bottom"/> -->
+    <p style="text-align: center;">Copyright © 2020 The Apache Software Foundation.<br>
+       Apache and the Apache feather logo are trademarks of The Apache Software Foundation</p>
+    <p style="text-align:justify!important;paddingLeft:10px;paddingRight:10px;">
+        Disclaimer: Apache IoTDB (incubating) (Database for Internet of Things) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the complet [...]
+    </p>
+  </main>
+</template>
+
+<script>
+import { resolvePage, outboundRE, endingSlashRE } from '../util'
+
+export default {
+  props: ['sidebarItems'],
+
+  computed: {
+    lastUpdated () {
+      return this.$page.lastUpdated
+    },
+
+    lastUpdatedText () {
+      if (typeof this.$themeLocaleConfig.lastUpdated === 'string') {
+        return this.$themeLocaleConfig.lastUpdated
+      }
+      if (typeof this.$site.themeConfig.lastUpdated === 'string') {
+        return this.$site.themeConfig.lastUpdated
+      }
+      return 'Last Updated'
+    },
+
+    prev () {
+      const prev = this.$page.frontmatter.prev
+      if (prev === false) {
+        return
+      } else if (prev) {
+        return resolvePage(this.$site.pages, prev, this.$route.path)
+      } else {
+        return resolvePrev(this.$page, this.sidebarItems)
+      }
+    },
+
+    next () {
+      const next = this.$page.frontmatter.next
+      if (next === false) {
+        return
+      } else if (next) {
+        return resolvePage(this.$site.pages, next, this.$route.path)
+      } else {
+        return resolveNext(this.$page, this.sidebarItems)
+      }
+    },
+
+    editLink () {
+      if (this.$page.frontmatter.editLink === false) {
+        return
+      }
+      const {
+        repo,
+        editLinks,
+        docsDir = '',
+        docsBranch = 'master',
+        docsRepo = repo
+      } = this.$site.themeConfig
+
+      if (docsRepo && editLinks && this.$page.relativePath) {
+        return this.createEditLink(repo, docsRepo, docsDir, docsBranch, this.$page.relativePath)
+      }
+    },
+
+    commentLink () {
+      const {
+        repo,
+        docsRepo = repo
+      } = this.$site.themeConfig
+
+      return (outboundRE.test(docsRepo)
+        ? docsRepo
+        : `https://github.com/${docsRepo}`) +
+        `/issues/new?title=Comment: ${this.$page.title} (${this.$page.relativePath})`
+    },
+
+    editLinkText () {
+      return (
+        this.$themeLocaleConfig.editLinkText
+        || this.$site.themeConfig.editLinkText
+        || `Edit this page`
+      )
+    }
+  },
+
+  methods: {
+    createEditLink (repo, docsRepo, docsDir, docsBranch, path) {
+      const bitbucket = /bitbucket.org/
+      if (bitbucket.test(repo)) {
+        const base = outboundRE.test(docsRepo)
+          ? docsRepo
+          : repo
+        return (
+          base.replace(endingSlashRE, '')
+           + `/src`
+           + `/${docsBranch}/`
+           + (docsDir ? docsDir.replace(endingSlashRE, '') + '/' : '')
+           + path
+           + `?mode=edit&spa=0&at=${docsBranch}&fileviewer=file-view-default`
+        )
+      }
+
+      const base = outboundRE.test(docsRepo)
+        ? docsRepo
+        : `https://github.com/${docsRepo}`
+      return (
+        base.replace(endingSlashRE, '')
+        + `/edit`
+        + `/${docsBranch}/`
+        + (docsDir ? docsDir.replace(endingSlashRE, '') + '/' : '')
+        + path
+      )
+    }
+  }
+}
+
+function resolvePrev (page, items) {
+  return find(page, items, -1)
+}
+
+function resolveNext (page, items) {
+  return find(page, items, 1)
+}
+
+function find (page, items, offset) {
+  const res = []
+  flatten(items, res)
+  for (let i = 0; i < res.length; i++) {
+    const cur = res[i]
+    if (cur.type === 'page' && cur.path === decodeURIComponent(page.path)) {
+      return res[i + offset]
+    }
+  }
+}
+
+function flatten (items, res) {
+  for (let i = 0, l = items.length; i < l; i++) {
+    if (items[i].type === 'group') {
+      flatten(items[i].children || [], res)
+    } else {
+      res.push(items[i])
+    }
+  }
+}
+
+</script>
+
+<style lang="stylus">
+@require '../styles/wrapper.styl'
+
+.page
+  padding-bottom 2rem
+  display block
+
+.page-edit
+  @extend $wrapper
+  padding-top 0
+  padding-bottom 1rem
+  overflow auto
+  .edit-link
+    display inline-block
+    a
+      color lighten($textColor, 25%)
+      margin-right 0.25rem
+  .last-updated
+    float right
+    font-size 0.9em
+    .prefix
+      font-weight 500
+      color lighten($textColor, 25%)
+    .time
+      font-weight 400
+      color #aaa
+
+.page-nav
+  @extend $wrapper
+  padding-top 1rem
+  padding-bottom 0
+  .inner
+    min-height 2rem
+    margin-top 0
+    border-top 1px solid $borderColor
+    padding-top 1rem
+    overflow auto // clear float
+  .next
+    float right
+
+@media (max-width: $MQMobile)
+  .page-edit
+    .edit-link
+      margin-bottom .5rem
+    .last-updated
+      font-size .8em
+      float none
+      text-align left
+
+</style>
diff --git a/site/src/main/.vuepress/theme/components/Sidebar.vue b/site/src/main/.vuepress/theme/components/Sidebar.vue
new file mode 100644
index 0000000..f89f825
--- /dev/null
+++ b/site/src/main/.vuepress/theme/components/Sidebar.vue
@@ -0,0 +1,76 @@
+/*
+* 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.
+*/
+<template>
+  <aside class="sidebar">
+    <NavLinks/>
+    <slot name="top"/>
+    <SidebarLinks :depth="0" :items="items"/>
+    <slot name="bottom"/>
+  </aside>
+</template>
+
+<script>
+import SidebarLinks from '@theme/components/SidebarLinks.vue'
+import NavLinks from '@theme/components/NavLinks.vue'
+
+export default {
+  name: 'Sidebar',
+
+  components: { SidebarLinks, NavLinks },
+
+  props: ['items']
+}
+</script>
+
+<style lang="stylus">
+.sidebar
+  ul
+    padding 0
+    margin 0
+    list-style-type none
+  a
+    display inline-block
+  .nav-links
+    display none
+    border-bottom 1px solid $borderColor
+    padding 0.5rem 0 0.75rem 0
+    a
+      font-weight 600
+    .nav-item, .repo-link
+      display block
+      line-height 1.25rem
+      font-size 1.1em
+      padding 0.5rem 0 0.5rem 1.5rem
+  & > .sidebar-links
+    padding 1.5rem 0
+    & > li > a.sidebar-link
+      font-size 1.1em
+      line-height 1.7
+      font-weight bold
+    & > li:not(:first-child)
+      margin-top .75rem
+
+@media (max-width: $MQMobile)
+  .sidebar
+    .nav-links
+      display block
+      .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active::after
+        top calc(1rem - 2px)
+    & > .sidebar-links
+      padding 1rem 0
+</style>
diff --git a/site/src/main/.vuepress/theme/components/SidebarButton.vue b/site/src/main/.vuepress/theme/components/SidebarButton.vue
new file mode 100644
index 0000000..5994ca2
--- /dev/null
+++ b/site/src/main/.vuepress/theme/components/SidebarButton.vue
@@ -0,0 +1,44 @@
+/*
+* 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.
+*/
+<template>
+  <div class="sidebar-button" @click="$emit('toggle-sidebar')">
+    <svg class="icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512">
+      <path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z" class=""></path>
+    </svg>
+  </div>
+</template>
+
+<style lang="stylus">
+.sidebar-button
+  cursor pointer
+  display none
+  width 1.25rem
+  height 1.25rem
+  position absolute
+  padding 0.6rem
+  top 0.6rem
+  left 1rem
+  .icon
+    display block
+    width 1.25rem
+    height 1.25rem
+
+@media (max-width: $MQMobile)
+  .sidebar-button
+    display block
+</style>
diff --git a/site/src/main/.vuepress/theme/components/SidebarGroup.vue b/site/src/main/.vuepress/theme/components/SidebarGroup.vue
new file mode 100644
index 0000000..ce897fc
--- /dev/null
+++ b/site/src/main/.vuepress/theme/components/SidebarGroup.vue
@@ -0,0 +1,146 @@
+/*
+* 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.
+*/
+<template>
+  <section
+    class="sidebar-group"
+    :class="[
+      {
+        collapsable,
+        'is-sub-group': depth !== 0
+      },
+      `depth-${depth}`
+    ]"
+  >
+    <router-link
+      v-if="item.path"
+      class="sidebar-heading clickable"
+      :class="{
+        open,
+        'active': isActive($route, item.path)
+      }"
+      :to="item.path"
+      @click.native="$emit('toggle')"
+    >
+      <span>{{ item.title }}</span>
+      <span
+        class="arrow"
+        v-if="collapsable"
+        :class="open ? 'down' : 'right'">
+      </span>
+    </router-link>
+
+    <p
+      v-else
+      class="sidebar-heading"
+      :class="{ open }"
+      @click="$emit('toggle')"
+    >
+      <span>{{ item.title }}</span>
+      <span
+        class="arrow"
+        v-if="collapsable"
+        :class="open ? 'down' : 'right'">
+      </span>
+    </p>
+
+    <DropdownTransition>
+      <SidebarLinks
+        class="sidebar-group-items"
+        :items="item.children"
+        v-if="open || !collapsable"
+        :sidebarDepth="item.sidebarDepth"
+        :depth="depth + 1"
+      />
+    </DropdownTransition>
+  </section>
+</template>
+
+<script>
+import { isActive } from '../util'
+import DropdownTransition from '@theme/components/DropdownTransition.vue'
+
+export default {
+  name: 'SidebarGroup',
+  props: ['item', 'open', 'collapsable', 'depth'],
+  components: { DropdownTransition },
+  // ref: https://vuejs.org/v2/guide/components-edge-cases.html#Circular-References-Between-Components
+  beforeCreate () {
+    this.$options.components.SidebarLinks = require('./SidebarLinks.vue').default
+  },
+  methods: { isActive }
+}
+</script>
+
+<style lang="stylus">
+.sidebar-group
+  .sidebar-group
+    padding-left 0.5em
+  &:not(.collapsable)
+    .sidebar-heading:not(.clickable)
+      cursor auto
+      color inherit
+  // refine styles of nested sidebar groups
+  &.is-sub-group
+    padding-left 0
+    & > .sidebar-heading
+      font-size 0.95em
+      line-height 1.4
+      font-weight normal
+      padding-left 2rem
+      &:not(.clickable)
+        opacity 0.5
+    & > .sidebar-group-items
+      padding-left 1rem
+      & > li > .sidebar-link
+        font-size: 0.95em;
+        border-left none
+  &.depth-2
+    & > .sidebar-heading
+      border-left none
+
+.sidebar-heading
+  color $textColor
+  transition color .15s ease
+  cursor pointer
+  font-size 1.1em
+  font-weight bold
+  // text-transform uppercase
+  padding 0.35rem 1.5rem 0.35rem 1.25rem
+  width 100%
+  box-sizing border-box
+  margin 0
+  border-left 0.25rem solid transparent
+  &.open, &:hover
+    color inherit
+  .arrow
+    position relative
+    top -0.12em
+    left 0.5em
+  &.clickable
+    &.active
+      font-weight 600
+      color $accentColor
+      border-left-color $accentColor
+    &:hover
+      color $accentColor
+
+.sidebar-group-items
+  transition height .1s ease-out
+  font-size 0.95em
+  overflow hidden
+</style>
diff --git a/site/src/main/.vuepress/theme/components/SidebarLink.vue b/site/src/main/.vuepress/theme/components/SidebarLink.vue
new file mode 100644
index 0000000..a98e213
--- /dev/null
+++ b/site/src/main/.vuepress/theme/components/SidebarLink.vue
@@ -0,0 +1,126 @@
+/*
+* 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.
+*/
+<script>
+import { isActive, hashRE, groupHeaders } from '../util'
+
+export default {
+  functional: true,
+
+  props: ['item', 'sidebarDepth'],
+
+  render (h,
+    {
+      parent: {
+        $page,
+        $site,
+        $route,
+        $themeConfig,
+        $themeLocaleConfig
+      },
+      props: {
+        item,
+        sidebarDepth
+      }
+    }) {
+    // use custom active class matching logic
+    // due to edge case of paths ending with / + hash
+    const selfActive = isActive($route, item.path)
+    // for sidebar: auto pages, a hash link should be active if one of its child
+    // matches
+    const active = item.type === 'auto'
+      ? selfActive || item.children.some(c => isActive($route, item.basePath + '#' + c.slug))
+      : selfActive
+    const link = renderLink(h, item.path, item.title || item.path, active)
+
+    const configDepth = $page.frontmatter.sidebarDepth
+      || sidebarDepth
+      || $themeLocaleConfig.sidebarDepth
+      || $themeConfig.sidebarDepth
+
+    const maxDepth = configDepth == null ? 1 : configDepth
+
+    const displayAllHeaders = $themeLocaleConfig.displayAllHeaders
+      || $themeConfig.displayAllHeaders
+
+    if (item.type === 'auto') {
+      return [link, renderChildren(h, item.children, item.basePath, $route, maxDepth)]
+    } else if ((active || displayAllHeaders) && item.headers && !hashRE.test(item.path)) {
+      const children = groupHeaders(item.headers)
+      return [link, renderChildren(h, children, item.path, $route, maxDepth)]
+    } else {
+      return link
+    }
+  }
+}
+
+function renderLink (h, to, text, active) {
+  return h('router-link', {
+    props: {
+      to,
+      activeClass: '',
+      exactActiveClass: ''
+    },
+    class: {
+      active,
+      'sidebar-link': true
+    }
+  }, text)
+}
+
+function renderChildren (h, children, path, route, maxDepth, depth = 1) {
+  if (!children || depth > maxDepth) return null
+  return h('ul', { class: 'sidebar-sub-headers' }, children.map(c => {
+    const active = isActive(route, path + '#' + c.slug)
+    return h('li', { class: 'sidebar-sub-header' }, [
+      renderLink(h, path + '#' + c.slug, c.title, active),
+      renderChildren(h, c.children, path, route, maxDepth, depth + 1)
+    ])
+  }))
+}
+</script>
+
+<style lang="stylus">
+.sidebar .sidebar-sub-headers
+  padding-left 1rem
+  font-size 0.95em
+
+a.sidebar-link
+  font-size 1em
+  font-weight 400
+  display inline-block
+  color $textColor
+  border-left 0.25rem solid transparent
+  padding 0.35rem 1rem 0.35rem 1.25rem
+  line-height 1.4
+  width: 100%
+  box-sizing: border-box
+  &:hover
+    color $accentColor
+  &.active
+    font-weight 600
+    color $accentColor
+    border-left-color $accentColor
+  .sidebar-group &
+    padding-left 2rem
+  .sidebar-sub-headers &
+    padding-top 0.25rem
+    padding-bottom 0.25rem
+    border-left none
+    &.active
+      font-weight 500
+</style>
diff --git a/site/src/main/.vuepress/theme/components/SidebarLinks.vue b/site/src/main/.vuepress/theme/components/SidebarLinks.vue
new file mode 100644
index 0000000..d3748ac
--- /dev/null
+++ b/site/src/main/.vuepress/theme/components/SidebarLinks.vue
@@ -0,0 +1,103 @@
+/*
+* 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.
+*/
+<template>
+  <ul
+    class="sidebar-links"
+    v-if="items.length"
+  >
+    <li v-for="(item, i) in items" :key="i">
+      <SidebarGroup
+        v-if="item.type === 'group'"
+        :item="item"
+        :open="i === openGroupIndex"
+        :collapsable="item.collapsable || item.collapsible"
+        :depth="depth"
+        @toggle="toggleGroup(i)"
+      />
+      <SidebarLink
+        v-else
+        :sidebarDepth="sidebarDepth"
+        :item="item"
+      />
+    </li>
+  </ul>
+</template>
+
+<script>
+import SidebarGroup from '@theme/components/SidebarGroup.vue'
+import SidebarLink from '@theme/components/SidebarLink.vue'
+import { isActive } from '../util'
+
+export default {
+  name: 'SidebarLinks',
+
+  components: { SidebarGroup, SidebarLink },
+
+  props: [
+    'items',
+    'depth',  // depth of current sidebar links
+    'sidebarDepth' // depth of headers to be extracted
+  ],
+
+  data () {
+    return {
+      openGroupIndex: 0
+    }
+  },
+
+  created () {
+    this.refreshIndex()
+  },
+
+  watch: {
+    '$route' () {
+      this.refreshIndex()
+    }
+  },
+
+  methods: {
+    refreshIndex () {
+      const index = resolveOpenGroupIndex(
+        this.$route,
+        this.items
+      )
+      if (index > -1) {
+        this.openGroupIndex = index
+      }
+    },
+
+    toggleGroup (index) {
+      this.openGroupIndex = index === this.openGroupIndex ? -1 : index
+    },
+
+    isActive (page) {
+      return isActive(this.$route, page.regularPath)
+    }
+  }
+}
+
+function resolveOpenGroupIndex (route, items) {
+  for (let i = 0; i < items.length; i++) {
+    const item = items[i]
+    if (item.type === 'group' && item.children.some(c => c.type === 'page' && isActive(route, c.path))) {
+      return i
+    }
+  }
+  return -1
+}
+</script>
diff --git a/site/src/main/.vuepress/theme/global-components/Badge.vue b/site/src/main/.vuepress/theme/global-components/Badge.vue
new file mode 100644
index 0000000..e61e232
--- /dev/null
+++ b/site/src/main/.vuepress/theme/global-components/Badge.vue
@@ -0,0 +1,61 @@
+/*
+* 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.
+*/
+<script>
+export default {
+  functional: true,
+  props: {
+    type: {
+      type: String,
+      default: 'tip'
+    },
+    text: String,
+    vertical: {
+      type: String,
+      default: 'top'
+    }
+  },
+  render (h, { props, slots }) {
+    return h('span', {
+      class: ['badge', props.type],
+      style: {
+        verticalAlign: props.vertical
+      }
+    }, props.text || slots().default)
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.badge
+  display inline-block
+  font-size 14px
+  height 18px
+  line-height 18px
+  border-radius 3px
+  padding 0 6px
+  color white
+  background-color #42b983
+  &.tip, &.green
+    background-color #42b983
+  &.error
+    background-color #DA5961 //#f66
+  &.warning, &.warn, &.yellow
+    background-color darken(#ffe564, 35%)
+  & + &
+    margin-left 5px
+</style>
diff --git a/site/src/main/.vuepress/components/Contributor.vue b/site/src/main/.vuepress/theme/global-components/Contributor.vue
similarity index 100%
rename from site/src/main/.vuepress/components/Contributor.vue
rename to site/src/main/.vuepress/theme/global-components/Contributor.vue
diff --git a/site/src/main/.vuepress/components/Home.vue b/site/src/main/.vuepress/theme/global-components/IoTDB.vue
similarity index 99%
rename from site/src/main/.vuepress/components/Home.vue
rename to site/src/main/.vuepress/theme/global-components/IoTDB.vue
index e417d01..9580e61 100644
--- a/site/src/main/.vuepress/components/Home.vue
+++ b/site/src/main/.vuepress/theme/global-components/IoTDB.vue
@@ -165,7 +165,7 @@
 
 <script>
 export default {
-  name: "Home",
+  name: "IoTDB",
   data() {
     return {
       msg: "Welcome to Home Page",
diff --git a/site/src/main/.vuepress/components/Home_zh.vue b/site/src/main/.vuepress/theme/global-components/IoTDBZH.vue
similarity index 99%
rename from site/src/main/.vuepress/components/Home_zh.vue
rename to site/src/main/.vuepress/theme/global-components/IoTDBZH.vue
index c6fbd62..28edeae 100644
--- a/site/src/main/.vuepress/components/Home_zh.vue
+++ b/site/src/main/.vuepress/theme/global-components/IoTDBZH.vue
@@ -159,7 +159,7 @@ Apache IoTDB(孵化中)(物联网数据库)是一个集成数据专为
 
 <script>
 export default {
-  name: "Home",
+  name: "IoTDBZH",
   data() {
     return {
       msg: "Welcome to Home Page",
diff --git a/site/src/main/.vuepress/theme/index.js b/site/src/main/.vuepress/theme/index.js
new file mode 100644
index 0000000..7dd9ac8
--- /dev/null
+++ b/site/src/main/.vuepress/theme/index.js
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+const path = require('path')
+
+// Theme API.
+module.exports = (options, ctx) => ({
+  alias () {
+    const { themeConfig, siteConfig } = ctx
+    // resolve algolia
+    const isAlgoliaSearch = (
+      themeConfig.algolia
+      || Object.keys(siteConfig.locales && themeConfig.locales || {})
+        .some(base => themeConfig.locales[base].algolia)
+    )
+    return {
+      '@AlgoliaSearchBox': isAlgoliaSearch
+        ? path.resolve(__dirname, 'components/AlgoliaSearchBox.vue')
+        : path.resolve(__dirname, 'noopModule.js')
+    }
+  },
+
+  plugins: [
+    ['@vuepress/active-header-links', options.activeHeaderLinks],
+    '@vuepress/search',
+    '@vuepress/plugin-nprogress',
+    ['container', {
+      type: 'tip',
+      defaultTitle: {
+        '/zh/': '提示'
+      }
+    }],
+    ['container', {
+      type: 'warning',
+      defaultTitle: {
+        '/zh/': '注意'
+      }
+    }],
+    ['container', {
+      type: 'danger',
+      defaultTitle: {
+        '/zh/': '警告'
+      }
+    }],
+    '@vuepress/last-updated',
+    [ '@dovyp/vuepress-plugin-clipboard-copy', true ],
+    'tabs'
+  ]
+})
diff --git a/site/src/main/.vuepress/theme/layouts/404.vue b/site/src/main/.vuepress/theme/layouts/404.vue
new file mode 100644
index 0000000..c489e14
--- /dev/null
+++ b/site/src/main/.vuepress/theme/layouts/404.vue
@@ -0,0 +1,43 @@
+/*
+* 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.
+*/
+<template>
+  <div class="theme-container">
+    <div class="content">
+      <h1>404</h1>
+      <blockquote>{{ getMsg() }}</blockquote>
+      <router-link to="/">Take me home.</router-link>
+    </div>
+  </div>
+</template>
+
+<script>
+const msgs = [
+  `There's nothing here.`,
+  `How did we get here?`,
+  `That's a Four-Oh-Four.`,
+  `Looks like we've got some broken links.`
+]
+
+export default {
+  methods: {
+    getMsg () {
+      return msgs[Math.floor(Math.random() * msgs.length)]
+    }
+  }
+}
+</script>
diff --git a/site/src/main/.vuepress/theme/layouts/Layout.vue b/site/src/main/.vuepress/theme/layouts/Layout.vue
new file mode 100644
index 0000000..da487ff
--- /dev/null
+++ b/site/src/main/.vuepress/theme/layouts/Layout.vue
@@ -0,0 +1,166 @@
+/*
+* 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.
+*/
+<template>
+  <div
+    class="theme-container"
+    :class="pageClasses"
+    @touchstart="onTouchStart"
+    @touchend="onTouchEnd"
+  >
+    <Navbar
+      v-if="shouldShowNavbar"
+      @toggle-sidebar="toggleSidebar"
+    />
+
+    <div
+      class="sidebar-mask"
+      @click="toggleSidebar(false)"
+    ></div>
+
+    <Sidebar
+      :items="sidebarItems"
+      @toggle-sidebar="toggleSidebar"
+    >
+      <slot
+        name="sidebar-top"
+        slot="top"
+      />
+      <slot
+        name="sidebar-bottom"
+        slot="bottom"
+      />
+    </Sidebar>
+
+    <Home v-if="$page.frontmatter.home"/>
+
+    <Page
+      v-else
+      :sidebar-items="sidebarItems"
+    >
+      <slot
+        name="page-top"
+        slot="top"
+      />
+      <slot
+        name="page-bottom"
+        slot="bottom"
+      />
+    </Page>
+  </div>
+</template>
+
+<script>
+import Home from '@theme/components/Home.vue'
+import Navbar from '@theme/components/Navbar.vue'
+import Page from '@theme/components/Page.vue'
+import Sidebar from '@theme/components/Sidebar.vue'
+import { resolveSidebarItems } from '../util'
+
+export default {
+  components: { Home, Page, Sidebar, Navbar },
+
+  data () {
+    return {
+      isSidebarOpen: false
+    }
+  },
+
+  computed: {
+    shouldShowNavbar () {
+      const { themeConfig } = this.$site
+      const { frontmatter } = this.$page
+      if (
+        frontmatter.navbar === false
+        || themeConfig.navbar === false) {
+        return false
+      }
+      return (
+        this.$title
+        || themeConfig.logo
+        || themeConfig.repo
+        || themeConfig.nav
+        || this.$themeLocaleConfig.nav
+      )
+    },
+
+    shouldShowSidebar () {
+      const { frontmatter } = this.$page
+      return (
+        !frontmatter.home
+        && frontmatter.sidebar !== false
+        && this.sidebarItems.length
+      )
+    },
+
+    sidebarItems () {
+      return resolveSidebarItems(
+        this.$page,
+        this.$page.regularPath,
+        this.$site,
+        this.$localePath
+      )
+    },
+
+    pageClasses () {
+      const userPageClass = this.$page.frontmatter.pageClass
+      return [
+        {
+          'no-navbar': !this.shouldShowNavbar,
+          'sidebar-open': this.isSidebarOpen,
+          'no-sidebar': !this.shouldShowSidebar
+        },
+        userPageClass
+      ]
+    }
+  },
+
+  mounted () {
+    this.$router.afterEach(() => {
+      this.isSidebarOpen = false
+    })
+  },
+
+  methods: {
+    toggleSidebar (to) {
+      this.isSidebarOpen = typeof to === 'boolean' ? to : !this.isSidebarOpen
+    },
+
+    // side swipe
+    onTouchStart (e) {
+      this.touchStart = {
+        x: e.changedTouches[0].clientX,
+        y: e.changedTouches[0].clientY
+      }
+    },
+
+    onTouchEnd (e) {
+      const dx = e.changedTouches[0].clientX - this.touchStart.x
+      const dy = e.changedTouches[0].clientY - this.touchStart.y
+      if (Math.abs(dx) > Math.abs(dy) && Math.abs(dx) > 40) {
+        if (dx > 0 && this.touchStart.x <= 80) {
+          this.toggleSidebar(true)
+        } else {
+          this.toggleSidebar(false)
+        }
+      }
+    }
+  }
+}
+</script>
+
+<style src="prismjs/themes/prism-tomorrow.css"></style>
diff --git a/site/src/main/.vuepress/override.styl b/site/src/main/.vuepress/theme/noopModule.js
similarity index 94%
copy from site/src/main/.vuepress/override.styl
copy to site/src/main/.vuepress/theme/noopModule.js
index e7aabf3..e705a6e 100644
--- a/site/src/main/.vuepress/override.styl
+++ b/site/src/main/.vuepress/theme/noopModule.js
@@ -15,6 +15,4 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-$contentWidth = 2000px
-$sidebarWidth = 20rem
\ No newline at end of file
+export default {}
diff --git a/site/src/main/.vuepress/styles/palette.styl b/site/src/main/.vuepress/theme/styles/arrow.styl
similarity index 58%
copy from site/src/main/.vuepress/styles/palette.styl
copy to site/src/main/.vuepress/theme/styles/arrow.styl
index e7aabf3..fcabe9a 100644
--- a/site/src/main/.vuepress/styles/palette.styl
+++ b/site/src/main/.vuepress/theme/styles/arrow.styl
@@ -15,6 +15,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+@require './config'
 
-$contentWidth = 2000px
-$sidebarWidth = 20rem
\ No newline at end of file
+.arrow
+  display inline-block
+  width 0
+  height 0
+  &.up
+    border-left 4px solid transparent
+    border-right 4px solid transparent
+    border-bottom 6px solid $arrowBgColor
+  &.down
+    border-left 4px solid transparent
+    border-right 4px solid transparent
+    border-top 6px solid $arrowBgColor
+  &.right
+    border-top 4px solid transparent
+    border-bottom 4px solid transparent
+    border-left 6px solid $arrowBgColor
+  &.left
+    border-top 4px solid transparent
+    border-bottom 4px solid transparent
+    border-right 6px solid $arrowBgColor
diff --git a/site/src/main/.vuepress/theme/styles/code.styl b/site/src/main/.vuepress/theme/styles/code.styl
new file mode 100644
index 0000000..60848ca
--- /dev/null
+++ b/site/src/main/.vuepress/theme/styles/code.styl
@@ -0,0 +1,166 @@
+/*
+ * 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.
+ */
+.code-copy {
+  top: 20px !important;
+}
+
+.content
+  code
+    color #476582
+    padding 0.25rem 0.5rem
+    margin 0
+    font-size 0.85em
+    background-color rgba(27,31,35,.05)
+    border-radius 3px
+    .token
+      &.deleted
+        color #EC5975
+      &.inserted
+        color lighten($accentColor, 20%)
+      &.keyword
+        color lighten($accentColor, 20%)
+      &.string
+        color complement($accentColor)
+      &.function, &.class-name, &.property
+        color darken($secondaryColor, 20%)
+
+.content
+  pre, pre[class*="language-"]
+    line-height 1.4
+    padding 1.25rem 1.5rem
+    margin 0.85rem 0
+    background-color $codeBgColor
+    border-radius 6px
+    overflow auto
+    code
+      // color lighten($textColor, 20%)
+      color #fff
+      padding 0
+      background-color transparent
+      border-radius 0
+
+div[class*="language-"]
+  position relative
+  background-color $codeBgColor
+  border-radius 6px
+  .highlight-lines
+    user-select none
+    padding-top 1.3rem
+    position absolute
+    top 0
+    left 0
+    width 100%
+    line-height 1.4
+    .highlighted
+      background-color rgba(0, 0, 0, 66%)
+  pre, pre[class*="language-"]
+    background transparent
+    position relative
+    z-index 1
+  &::before
+    position absolute
+    z-index 3
+    top 0.8em
+    right 1em
+    font-size 0.75rem
+    color rgba(255, 255, 255, 0.4)
+  &:not(.line-numbers-mode)
+    .line-numbers-wrapper
+      display none
+  &.line-numbers-mode
+    .highlight-lines .highlighted
+        position relative
+        &:before
+          content ' '
+          position absolute
+          z-index 3
+          left 0
+          top 0
+          display block
+          width $lineNumbersWrapperWidth
+          height 100%
+          background-color rgba(0, 0, 0, 66%)
+    pre
+      padding-left $lineNumbersWrapperWidth + 1 rem
+      vertical-align middle
+    .line-numbers-wrapper
+      position absolute
+      top 0
+      width $lineNumbersWrapperWidth
+      text-align center
+      color rgba(255, 255, 255, 0.3)
+      padding 1.25rem 0
+      line-height 1.4
+      br
+        user-select none
+      .line-number
+        position relative
+        z-index 4
+        user-select none
+        font-size 0.85em
+    &::after
+      content ''
+      position absolute
+      z-index 2
+      top 0
+      left 0
+      width $lineNumbersWrapperWidth
+      height 100%
+      border-radius 6px 0 0 6px
+      border-right 1px solid rgba(0, 0, 0, 66%)
+      background-color $codeBgColor
+
+
+for lang in $codeLang
+  div{'[class~="language-' + lang + '"]'}
+    &:before
+      content ('' + lang)
+
+div[class~="language-javascript"]
+  &:before
+    content "js"
+
+div[class~="language-typescript"]
+  &:before
+    content "ts"
+
+div[class~="language-markup"]
+  &:before
+    content "html"
+
+div[class~="language-markdown"]
+  &:before
+    content "md"
+
+div[class~="language-json"]:before
+  content "json"
+
+div[class~="language-ruby"]:before
+  content "rb"
+
+div[class~="language-python"]:before
+  content "py"
+
+div[class~="language-bash"]:before
+  content "sh"
+
+div[class~="language-php"]:before
+  content "php"
+
+div[class*="language-"] pre .code-copy
+  opacity: 0.5
diff --git a/site/src/main/.vuepress/enhanceApp.js b/site/src/main/.vuepress/theme/styles/custom-blocks.styl
similarity index 54%
copy from site/src/main/.vuepress/enhanceApp.js
copy to site/src/main/.vuepress/theme/styles/custom-blocks.styl
index 6ffe4c4..785e4bf 100644
--- a/site/src/main/.vuepress/enhanceApp.js
+++ b/site/src/main/.vuepress/theme/styles/custom-blocks.styl
@@ -15,21 +15,33 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+.custom-block
+  .custom-block-title
+    font-weight 600
+    margin-bottom -0.4rem
+  &.tip, &.warning, &.danger
+    padding .1rem 1.5rem
+    border-left-width .5rem
+    border-left-style solid
+    margin 1rem 0
+  &.tip
+    background-color #f3f5f7
+    border-color #42b983
+  &.warning
+    background-color rgba(255,229,100,.3)
+    border-color darken(#ffe564, 35%)
+    color darken(#ffe564, 70%)
+    .custom-block-title
+      color darken(#ffe564, 50%)
+    a
+      color $textColor
+  &.danger
+    background-color #ffe6e6
+    border-color darken(red, 20%)
+    color darken(red, 70%)
+    .custom-block-title
+      color darken(red, 40%)
+    a
+      color $textColor
 
-/**
- * 扩展 VuePress 应用
- */
-import Element from 'element-ui'
-import 'element-ui/lib/theme-chalk/index.css'
-import '../.vuepress/public/css/index.css'
 
- 
-export default ({
-  Vue, // VuePress 正在使用的 Vue 构造函数
-  options, // 附加到根实例的一些选项
-  router, // 当前应用的路由实例
-  siteData // 站点元数据
-}) => {
-  // ...做一些其他的应用级别的优化
-  Vue.use(Element)
-}
\ No newline at end of file
diff --git a/site/src/main/.vuepress/theme/styles/index.styl b/site/src/main/.vuepress/theme/styles/index.styl
new file mode 100644
index 0000000..f8ef6ed
--- /dev/null
+++ b/site/src/main/.vuepress/theme/styles/index.styl
@@ -0,0 +1,227 @@
+/*
+ * 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.
+ */
+@require './code'
+@require './custom-blocks'
+@require './arrow'
+@require './wrapper'
+@require './toc'
+
+html, body
+  padding 0
+  margin 0
+  background-color #fff
+
+body
+  font-family -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif
+  -webkit-font-smoothing antialiased
+  -moz-osx-font-smoothing grayscale
+  font-size 16px
+  color $textColor
+
+.page
+  padding-left $sidebarWidth
+
+.navbar
+  font-family -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif
+  position fixed
+  z-index 20
+  top 0
+  left 0
+  right 0
+  height $navbarHeight
+  background-color #fff
+  box-sizing border-box
+  border-bottom 1px solid $borderColor
+
+.sidebar-mask
+  position fixed
+  z-index 9
+  top 0
+  left 0
+  width 100vw
+  height 100vh
+  display none
+
+.sidebar
+  font-family -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif
+  font-size 16px
+  background-color #fff
+  width $sidebarWidth
+  position fixed
+  z-index 10
+  margin 0
+  top $navbarHeight
+  left 0
+  bottom 0
+  box-sizing border-box
+  border-right 1px solid $borderColor
+  overflow-y auto
+
+.content:not(.custom)
+  @extend $wrapper
+  > *:first-child
+    margin-top $navbarHeight
+  a:hover
+    text-decoration underline
+  p.demo
+    padding 1rem 1.5rem
+    border 1px solid #ddd
+    border-radius 4px
+  img
+    max-width 100%
+
+.content.custom
+  padding 0
+  margin 0
+  img
+    max-width 100%
+
+a
+  font-weight 500
+  color $accentColor
+  text-decoration none
+
+p a code
+  font-weight 400
+  color $accentColor
+
+kbd
+  background #eee
+  border solid 0.15rem #ddd
+  border-bottom solid 0.25rem #ddd
+  border-radius 0.15rem
+  padding 0 0.15em
+
+blockquote
+  font-size .9rem
+  color #999
+  border-left .5rem solid #dfe2e5
+  margin 0.5rem 0
+  padding .25rem 0 .25rem 1rem
+  & > p
+    margin 0
+
+ul, ol
+  padding-left 1.2em
+
+strong
+  font-weight 600
+
+h1, h2, h3, h4, h5, h6
+  font-family 'Raleway', 'Helvetica Neue', 'Helvetica', 'Arial', 'Lucida Grande', sans-serif
+  font-weight 600
+  line-height 1.25
+  .content:not(.custom) > &
+    margin-top (0.5rem - $navbarHeight)
+    padding-top ($navbarHeight + 1rem)
+    margin-bottom 0
+    &:first-child
+      margin-top -1.5rem
+      margin-bottom 1rem
+      + p, + pre, + .custom-block
+        margin-top 2rem
+  &:hover .header-anchor
+    opacity: 1
+
+h1
+  font-size 2.2rem
+  color: $secondaryColor
+
+h2
+  font-size 1.65rem
+  padding-bottom .3rem
+  border-bottom 1px solid $borderColor
+
+h3
+  font-size 1.35rem
+
+a.header-anchor
+  font-size 0.85em
+  float left
+  margin-left -0.87em
+  padding-right 0.23em
+  margin-top 0.125em
+  opacity 0
+  &:hover
+    text-decoration none
+
+code, kbd, .line-number
+  font-family source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace
+
+p, ul, ol
+  line-height 1.7
+
+hr
+  border 0
+  border-top 1px solid $borderColor
+
+table
+  border-collapse collapse
+  margin 1rem 0
+  display: block
+  overflow-x: auto
+
+tr
+  border-top 1px solid #dfe2e5
+  &:nth-child(2n)
+    background-color #f6f8fa
+
+th, td
+  border 1px solid #dfe2e5
+  padding .6em 1em
+
+.theme-container
+  &.sidebar-open
+    .sidebar-mask
+      display: block
+  &.no-navbar
+    .content:not(.custom) > h1, h2, h3, h4, h5, h6
+        margin-top 1.5rem
+        padding-top 0
+    .sidebar
+      top 0
+
+pre
+  background-color $codeBgColor
+  color lighten($textColor, 40%)
+
+code
+  background-color $codeBgColor
+  color lighten($textColor, 40%)
+
+@media (min-width: ($MQMobile + 1px))
+  .theme-container.no-sidebar
+    .sidebar
+      display none
+    .page
+      padding-left 0
+
+@require 'mobile.styl'
+
+footer.page-edit blockquote
+  border-left: 0.5rem solid $secondaryColor
+  background-color: lighten($secondaryColor, 85%)
+  padding: 1em
+  
+  p
+    color: $textColor
+  
+  small
+    padding-top: 1em
+    display: block
+    text-align: right
\ No newline at end of file
diff --git a/site/src/main/.vuepress/enhanceApp.js b/site/src/main/.vuepress/theme/styles/mobile.styl
similarity index 52%
copy from site/src/main/.vuepress/enhanceApp.js
copy to site/src/main/.vuepress/theme/styles/mobile.styl
index 6ffe4c4..ff40f25 100644
--- a/site/src/main/.vuepress/enhanceApp.js
+++ b/site/src/main/.vuepress/theme/styles/mobile.styl
@@ -15,21 +15,40 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+@require './config'
 
-/**
- * 扩展 VuePress 应用
- */
-import Element from 'element-ui'
-import 'element-ui/lib/theme-chalk/index.css'
-import '../.vuepress/public/css/index.css'
+$mobileSidebarWidth = $sidebarWidth * 0.82
+
+// narrow desktop / iPad
+@media (max-width: $MQNarrow)
+  .sidebar
+    font-size 15px
+    width $mobileSidebarWidth
+  .page
+    padding-left $mobileSidebarWidth
+
+// wide mobile
+@media (max-width: $MQMobile)
+  .sidebar
+    top 0
+    padding-top $navbarHeight
+    transform translateX(-100%)
+    transition transform .2s ease
+  .page
+    padding-left 0
+  .theme-container
+    &.sidebar-open
+      .sidebar
+        transform translateX(0)
+    &.no-navbar
+      .sidebar
+        padding-top: 0
 
- 
-export default ({
-  Vue, // VuePress 正在使用的 Vue 构造函数
-  options, // 附加到根实例的一些选项
-  router, // 当前应用的路由实例
-  siteData // 站点元数据
-}) => {
-  // ...做一些其他的应用级别的优化
-  Vue.use(Element)
-}
\ No newline at end of file
+// narrow mobile
+@media (max-width: $MQMobileNarrow)
+  h1
+    font-size 1.9rem
+  .content
+    div[class*="language-"]
+      margin 0.85rem -1.5rem
+      border-radius 0
diff --git a/site/src/main/.vuepress/override.styl b/site/src/main/.vuepress/theme/styles/toc.styl
similarity index 93%
rename from site/src/main/.vuepress/override.styl
rename to site/src/main/.vuepress/theme/styles/toc.styl
index e7aabf3..251abbe 100644
--- a/site/src/main/.vuepress/override.styl
+++ b/site/src/main/.vuepress/theme/styles/toc.styl
@@ -15,6 +15,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-$contentWidth = 2000px
-$sidebarWidth = 20rem
\ No newline at end of file
+.table-of-contents
+  .badge
+    vertical-align middle
diff --git a/site/src/main/.vuepress/styles/palette.styl b/site/src/main/.vuepress/theme/styles/wrapper.styl
similarity index 81%
copy from site/src/main/.vuepress/styles/palette.styl
copy to site/src/main/.vuepress/theme/styles/wrapper.styl
index e7aabf3..7736ebc 100644
--- a/site/src/main/.vuepress/styles/palette.styl
+++ b/site/src/main/.vuepress/theme/styles/wrapper.styl
@@ -15,6 +15,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+$wrapper
+  max-width $contentWidth
+  margin 0 auto
+  padding 2rem 2.5rem
+  @media (max-width: $MQNarrow)
+    padding 2rem
+  @media (max-width: $MQMobileNarrow)
+    padding 1.5rem
 
-$contentWidth = 2000px
-$sidebarWidth = 20rem
\ No newline at end of file
diff --git a/site/src/main/.vuepress/theme/util/index.js b/site/src/main/.vuepress/theme/util/index.js
new file mode 100644
index 0000000..e3bde79
--- /dev/null
+++ b/site/src/main/.vuepress/theme/util/index.js
@@ -0,0 +1,256 @@
+/*
+ * 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.
+ */
+export const hashRE = /#.*$/
+export const extRE = /\.(md|html)$/
+export const endingSlashRE = /\/$/
+export const outboundRE = /^(https?:|mailto:|tel:)/
+
+export function normalize (path) {
+  return decodeURI(path)
+    .replace(hashRE, '')
+    .replace(extRE, '')
+}
+
+export function getHash (path) {
+  const match = path.match(hashRE)
+  if (match) {
+    return match[0]
+  }
+}
+
+export function isExternal (path) {
+  return outboundRE.test(path)
+}
+
+export function isMailto (path) {
+  return /^mailto:/.test(path)
+}
+
+export function isTel (path) {
+  return /^tel:/.test(path)
+}
+
+export function ensureExt (path) {
+  if (isExternal(path)) {
+    return path
+  }
+  const hashMatch = path.match(hashRE)
+  const hash = hashMatch ? hashMatch[0] : ''
+  const normalized = normalize(path)
+
+  if (endingSlashRE.test(normalized)) {
+    return path
+  }
+  return normalized + '.html' + hash
+}
+
+export function isActive (route, path) {
+  const routeHash = route.hash
+  const linkHash = getHash(path)
+  if (linkHash && routeHash !== linkHash) {
+    return false
+  }
+  const routePath = normalize(route.path)
+  const pagePath = normalize(path)
+  return routePath === pagePath
+}
+
+export function resolvePage (pages, rawPath, base) {
+  if (base) {
+    rawPath = resolvePath(rawPath, base)
+  }
+  const path = normalize(rawPath)
+  for (let i = 0; i < pages.length; i++) {
+    if (normalize(pages[i].regularPath) === path) {
+      return Object.assign({}, pages[i], {
+        type: 'page',
+        path: ensureExt(pages[i].path)
+      })
+    }
+  }
+  console.error(`[vuepress] No matching page found for sidebar item "${rawPath}"`)
+  return {}
+}
+
+function resolvePath (relative, base, append) {
+  const firstChar = relative.charAt(0)
+  if (firstChar === '/') {
+    return relative
+  }
+
+  if (firstChar === '?' || firstChar === '#') {
+    return base + relative
+  }
+
+  const stack = base.split('/')
+
+  // remove trailing segment if:
+  // - not appending
+  // - appending to trailing slash (last segment is empty)
+  if (!append || !stack[stack.length - 1]) {
+    stack.pop()
+  }
+
+  // resolve relative path
+  const segments = relative.replace(/^\//, '').split('/')
+  for (let i = 0; i < segments.length; i++) {
+    const segment = segments[i]
+    if (segment === '..') {
+      stack.pop()
+    } else if (segment !== '.') {
+      stack.push(segment)
+    }
+  }
+
+  // ensure leading slash
+  if (stack[0] !== '') {
+    stack.unshift('')
+  }
+
+  return stack.join('/')
+}
+
+/**
+ * @param { Page } page
+ * @param { string } regularPath
+ * @param { SiteData } site
+ * @param { string } localePath
+ * @returns { SidebarGroup }
+ */
+export function resolveSidebarItems (page, regularPath, site, localePath) {
+  const { pages, themeConfig } = site
+
+  const localeConfig = localePath && themeConfig.locales
+    ? themeConfig.locales[localePath] || themeConfig
+    : themeConfig
+
+  const pageSidebarConfig = page.frontmatter.sidebar || localeConfig.sidebar || themeConfig.sidebar
+  if (pageSidebarConfig === 'auto') {
+    return resolveHeaders(page)
+  }
+
+  const sidebarConfig = localeConfig.sidebar || themeConfig.sidebar
+  if (!sidebarConfig) {
+    return []
+  } else {
+    const { base, config } = resolveMatchingConfig(regularPath, sidebarConfig)
+    return config
+      ? config.map(item => resolveItem(item, pages, base))
+      : []
+  }
+}
+
+/**
+ * @param { Page } page
+ * @returns { SidebarGroup }
+ */
+function resolveHeaders (page) {
+  const headers = groupHeaders(page.headers || [])
+  return [{
+    type: 'group',
+    collapsable: false,
+    title: page.title,
+    path: null,
+    children: headers.map(h => ({
+      type: 'auto',
+      title: h.title,
+      basePath: page.path,
+      path: page.path + '#' + h.slug,
+      children: h.children || []
+    }))
+  }]
+}
+
+export function groupHeaders (headers) {
+  // group h3s under h2
+  headers = headers.map(h => Object.assign({}, h))
+  let lastH2
+  headers.forEach(h => {
+    if (h.level === 2) {
+      lastH2 = h
+    } else if (lastH2) {
+      (lastH2.children || (lastH2.children = [])).push(h)
+    }
+  })
+  return headers.filter(h => h.level === 2)
+}
+
+export function resolveNavLinkItem (linkItem) {
+  return Object.assign(linkItem, {
+    type: linkItem.items && linkItem.items.length ? 'links' : 'link'
+  })
+}
+
+/**
+ * @param { Route } route
+ * @param { Array<string|string[]> | Array<SidebarGroup> | [link: string]: SidebarConfig } config
+ * @returns { base: string, config: SidebarConfig }
+ */
+export function resolveMatchingConfig (regularPath, config) {
+  if (Array.isArray(config)) {
+    return {
+      base: '/',
+      config: config
+    }
+  }
+  for (const base in config) {
+    if (ensureEndingSlash(regularPath).indexOf(encodeURI(base)) === 0) {
+      return {
+        base,
+        config: config[base]
+      }
+    }
+  }
+  return {}
+}
+
+function ensureEndingSlash (path) {
+  return /(\.html|\/)$/.test(path)
+    ? path
+    : path + '/'
+}
+
+function resolveItem (item, pages, base, groupDepth = 1) {
+  if (typeof item === 'string') {
+    return resolvePage(pages, item, base)
+  } else if (Array.isArray(item)) {
+    return Object.assign(resolvePage(pages, item[0], base), {
+      title: item[1]
+    })
+  } else {
+    if (groupDepth > 3) {
+      console.error(
+        '[vuepress] detected a too deep nested sidebar group.'
+      )
+    }
+    const children = item.children || []
+    if (children.length === 0 && item.path) {
+      return Object.assign(resolvePage(pages, item.path, base), {
+        title: item.title
+      })
+    }
+    return {
+      type: 'group',
+      path: item.path,
+      title: item.title,
+      sidebarDepth: item.sidebarDepth,
+      children: children.map(child => resolveItem(child, pages, base, groupDepth + 1)),
+      collapsable: item.collapsable !== false
+    }
+  }
+}
diff --git a/site/src/main/package.json b/site/src/main/package.json
index 50b0934..3b9e3f8 100644
--- a/site/src/main/package.json
+++ b/site/src/main/package.json
@@ -26,15 +26,18 @@
     "url": "https://github.com/apache/incubator-iotdb"
   },
   "homepage": "https://iotdb.apache.org",
-  "devDependencies": {
-    "gh-pages": "^2.0.1",
-    "vuepress": "^0.14.9"
-  },
+  "directories": {},
   "dependencies": {
-    "element-ui": "^2.13.0",
-    "highlight.js": "^9.18.1",
-    "leancloud-storage": "^3.11.1",
-    "valine": "^1.3.4",
-    "vue-github-buttons": "^3.1.0"
+    "element-ui": "^2.13.0"
+  },
+  "devDependencies": {
+    "@dovyp/vuepress-plugin-clipboard-copy": "^1.0.0-alpha.7",
+    "remark": "^11.0.2",
+    "remark-validate-links": "^9.2.0",
+    "unified-engine": "^7.0.0",
+    "vfile-reporter": "^6.0.1",
+    "vue-tabs-component": "^1.5.0",
+    "vuepress": "^1.3.1",
+    "vuepress-plugin-tabs": "^0.3.0"
   }
 }