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

xxyu pushed a commit to branch doc5.0
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 8ab848ed25e017ebfc6c0b40c55ea94438f2e40f
Author: Mukvin <boyboys...@163.com>
AuthorDate: Fri Aug 12 15:41:31 2022 +0800

    KYLIN-5221, add deploy mode
---
 .../deployment/deploy_mode/cluster_deployment.md   |  86 +++++++++++++++
 .../deploy_mode/images/cluster_20191231.png        | Bin 0 -> 199821 bytes
 website/docs/deployment/deploy_mode/intro.md       |  18 ++++
 .../docs/deployment/deploy_mode/rw_separation.md   |  90 ++++++++++++++++
 .../deployment/deploy_mode/service_discovery.md    |  36 +++++++
 .../rdbms_metastore/{ => mysql}/install_mysql.md   |   6 +-
 .../docs/deployment/rdbms_metastore/mysql/intro.md |  20 ++++
 .../rdbms_metastore/mysql/mysql_metastore.md       | 118 +++++++++++++++++++++
 .../{ => postgresql}/default_metastore.md          |   0
 .../{ => postgresql}/install_postgresql.md         |   4 +-
 .../deployment/rdbms_metastore/postgresql/intro.md |  20 ++++
 website/docs/intro.md                              |  14 ++-
 website/docs/modeling/intro.md                     |  25 +++--
 website/docs/operations/intro.md                   |  26 +++--
 website/docs/restapi/intro.md                      |  25 +++--
 website/sidebars.js                                |  86 +++++++++++++--
 16 files changed, 530 insertions(+), 44 deletions(-)

diff --git a/website/docs/deployment/deploy_mode/cluster_deployment.md 
b/website/docs/deployment/deploy_mode/cluster_deployment.md
new file mode 100644
index 0000000000..18b5d4b0ae
--- /dev/null
+++ b/website/docs/deployment/deploy_mode/cluster_deployment.md
@@ -0,0 +1,86 @@
+---
+title: Cluster Deployment
+language: en
+sidebar_label: Cluster Deployment
+pagination_label: Cluster Deployment
+toc_min_heading_level: 2
+toc_max_heading_level: 6
+pagination_prev: null
+pagination_next: null
+keywords:
+    - cluster deployment
+    - cluster
+draft: true
+last_update:
+    date: 12/08/2022
+---
+
+All Kylin state information instance is stored in a RDBMS database, so running 
Kylin on multiple nodes in a cluster is good practice for better load balance 
and higher availability. Currently, we only support deployment with one `all` 
node and multiple `query` nodes.
+
+[comment]: <#TODO> (![Deployment 
Architecture]&#40;images/cluster_20191231.png&#41;)
+
+In the above diagram, the components which require user deployment are below:
+
+- RDBMS as Metastore(PostgreSQL/MySQL)
+- Time-Series Database (InfluxDB)
+- Kylin nodes
+- Load Balancer
+
+We will go through each one of them:
+
+### RDBMS and Time-Series Database Introduction
+
+Kylin uses RDBMS to store metadata, please refer to [Use RDBMS as 
Metastore](../rdbms_metastore/intro.md).
+
+Kylin uses Time-series database to store metrics (mostly for monitor purpose), 
please refer to [Use InfluxDB as Time-Series 
Database](../../operations/monitoring/influxdb/influxdb.md). 
+
+### Kylin Nodes Introduction
+
+Currently, Kylin supports multiple nodes deployment. Queries will be 
distributed through all nodes and jobs can be submitted by all types of nodes. 
However, the building jobs will be submitted to job engine node ( `all` node 
and `job` node).
+
+- `query` node: You can submit queries or building jobs on `query` nodes but 
the jobs cannot be executed.
+- `job` node: This node can execute jobs and metadata operations
+- `all` node: `all` node can perform all the work of `query` and `job` node.
+
+### Kylin Instance Configuration
+
+**Note**: 
+
+- Please deploy Kylin nodes in the same Hadoop cluster. If you need to deploy 
a read/write separation environment, please refer to [Read/Write Separation 
Deployment](rw_separation.md) chapter.
+- It is recommended not to start multiple `all` nodes at the same time.
+
+### Kylin Multi-Active Job Engines
+
+Kylin job engine is used to execute building jobs, schedule jobs and metadata 
operations. Normally, users will configure one or more node as job engine in 
the cluster deployment.
+
+Since Kylin 5.0, Kylin works "Multi-Active" mode, which meanings every healthy 
`all` and `job` node can execute building tasks. When one job engine is 
stopped, the other job engines will take over the running task on it. That will 
ensure the high availability of Kylin services.
+
+It should be noted that, due to the existence of project locks, when jobs are 
allocated to nodes, the project is the smallest unit of allocation, that is, 
all jobs in a project can only be executed on one job engine. Different 
projects and jobs can be executed on different job engines.
+
+If you want to enable this function, add `kylin.server.mode=all` or 
`kylin.server.mode=job` into `$KYLIN_HOME/conf/kylin.properties` for more than 
one node.
+
+The related config items are shown below:
+```properties
+kylin.server.leader-race.heart-beat-timeout=60
+kylin.server.leader-race.heart-beat-interval=30
+kylin.job.ssh-username=username
+kylin.job.ssh-password=password
+```
+`kylin.server.leader-race.heart-beat-timeout` stands for heart beat 
timeout,default value is 60, in seconds. When an job engine node didn't send 
heartbeat for more than this value, this node will be marked as unavailable.
+`kylin.server.leader-race.heart-beat-interval` stands for heart beating's time 
interval,default value is 30, in seconds, which means each job engine node will 
send heartbeat for every 30 seconds.
+`kylin.job.ssh-username` stands for ssh login username between Kylin nodes, if 
passwordless is not configured.
+`kylin.job.ssh-password` stands for ssh login password between Kylin nodes, if 
passwordless is not configured.
+
+
+**Known Limitations**
+
+1. Enable session sharing is required when using Kylin HA. Add 
`spring.session.store-type=jdbc` into `$KYLIN_HOME/conf/kylin.properties` for 
each node.
+2. Please make sure there is no clock skew in the cluster. You can use `ntp` 
service to sync the clock in the cluster.
+3. When a Kylin job engine node is down, may lead to all projects owned by 
this node send metadata related requests, the hint is: `System is trying to 
recover, please try again later.`
+4. When all Kylin job engine nodes are down, you may see the hint when you 
trying to send metadata related requests in the `query` node: `There is no 
active All node, please contact to your administrator to check and fix.`.
+5. It is necessary to configure password-free login between each node, or 
ensure that the ssh login information between each node is consistent.
+
+**Note:**
+
+- The "Multi-Active" mode is enabled by default. If there is only one `all` or 
`job` node, this mode should be turned off because of performance 
considerations. If you want to disable this feature, please add 
`kylin.server.leader-race.enabled=false` in `$KYLIN_HOME/conf/kylin.properties` 
for the `all` or `job` node.
+- If you want to enable it again, please update the relationship between 
projects and the job engines. After that, you need call Rest API to update the 
data. For details, please refer to [Project Settings 
API](../../restapi/project_api.md)
diff --git a/website/docs/deployment/deploy_mode/images/cluster_20191231.png 
b/website/docs/deployment/deploy_mode/images/cluster_20191231.png
new file mode 100644
index 0000000000..0d13c43390
Binary files /dev/null and 
b/website/docs/deployment/deploy_mode/images/cluster_20191231.png differ
diff --git a/website/docs/deployment/deploy_mode/intro.md 
b/website/docs/deployment/deploy_mode/intro.md
new file mode 100644
index 0000000000..27ef9f3b86
--- /dev/null
+++ b/website/docs/deployment/deploy_mode/intro.md
@@ -0,0 +1,18 @@
+---
+title: Deployment Mode
+language: en
+sidebar_label: Deployment Mode
+pagination_label: Deployment Mode
+toc_min_heading_level: 2
+toc_max_heading_level: 6
+pagination_prev: null
+pagination_next: null
+keywords:
+    - deployment mode
+draft: false
+last_update:
+    date: 12/08/2022
+---
+
+This chapter introduces the different Kylin deployment modes and options to 
achieve high performance, high stability, and high availability.
+
diff --git a/website/docs/deployment/deploy_mode/rw_separation.md 
b/website/docs/deployment/deploy_mode/rw_separation.md
new file mode 100644
index 0000000000..2f2dbb1fc1
--- /dev/null
+++ b/website/docs/deployment/deploy_mode/rw_separation.md
@@ -0,0 +1,90 @@
+---
+title: Read/Write Separation Deployment
+language: en
+sidebar_label: Read/Write Separation Deployment
+pagination_label: Read/Write Separation Deployment
+toc_min_heading_level: 2
+toc_max_heading_level: 6
+pagination_prev: null
+pagination_next: null
+keywords:
+   - read/write separation
+   - separation
+draft: false
+last_update:
+   date: 12/08/2022
+---
+
+Kylin's tasks based on Hadoop are mainly divided into two types: build and 
query. If these two tasks use the same set of Hadoop resources, resource 
preemption may occur between the build and the query, which makes them not 
stable and fast.
+
+Kylin allows you to finish building and query tasks on different Hadoop 
clusters. There are many write operations in the former, known as the **Build 
Cluster**, while the latter is dominated by read-only operations, called 
**Query Cluster**. The build task will be sent to the build cluster. After the 
build is completed, the system will send the data into the query cluster so as 
to executing query tasks.
+
+With a read/write separation deployment, you can completely isolate both build 
and query workloads, allowing them to run independently, avoiding improper 
interactions between them and possible performance instability.
+
+### Prerequisites
+
+Due to the involvement of two Hadoop environments, please read and comply with 
the following environmental checks.
+
+1. Please confirm the Hadoop versions of build cluster and query cluster are 
identical, and they're supported version by Kylin.
+
+2. Please confirm that the Hadoop client of build cluster and query cluster is 
installed and configured on the **Kylin server**. Check commands like 
`hdfs`、`hive` are all working properly and can access cluster resources.
+
+3. If the two clusters have enabled the HDFS NameNode HA, please check and 
make sure their HDFS nameservice names are different. If they are the same, 
please change one of them to avoid conflict.
+
+4. Please check the two clusters can access each other without manually 
inputting any user credential.
+
+   > **Tips**: As a test, on any build cluster try to copy some HDFS files 
from/to the query cluster. The copy must succeed without any extra manual 
interaction.
+
+5. Please make sure the network latency between the two clusters is low 
enough, as there will be a large number of data moved back and forth during 
model build process.
+
+6. If Kerberos is enabled, please check the following:
+
+   - The build cluster and the query cluster belong to different realms.
+   - The cross-realm trust between the two clusters is configured properly.
+
+### Install and Configure Read/Write Separation Deployment
+
+You can follow the below instructions to finish Kylin read/write separation 
deployment based on hadoop clusters.
+
+1. First of all, on **Kylin server**, uncompress Kylin software package to the 
same location. This location will be referenced as `$KYLIN_HOME` later.
+
+2. Secondly, you should prepare the hadoop conf file of the two clusters. The 
hadoop configuration of query cluster should be put into 
`$KYLIN_HOME/hadoop_conf` directory, while that of build query will be put into 
`$KYLIN_HOME/write_hadoop_conf` directory. What's more, the `hive-site.xml` of 
the build cluster should be put into the above two directories, make two copies 
of hive-site.xml and name them hiveserver2-site.xml and hivemetastore-site.xml 
respectively. 
+   
+   If Kerberos authentication enabled, you need to copy the krb5.conf file of 
build cluster to the `$KYLIN_HOME/write_hadoop_conf` directory and copy the 
krb5.conf file of query cluster to the `$KYLIN_HOME/hadoop_conf` directory.
+
+3. Set the configuration:
+
+   ```properties
+   kylin.engine.submit-hadoop-conf-dir=$KYLIN_HOME/write_hadoop_conf
+
+   ## Working path of Kylin instance on HDFS. Please replace {working_dir} 
with the real working path, and use the absolute path, such as hdfs://kylin
+   kylin.env.hdfs-working-dir={working_dir}
+   ```
+
+4. If Kerberos is enabled, you will need to do additional configuration:
+
+   ```properties
+   
kylin.storage.columnar.spark-conf.spark.yarn.access.hadoopFileSystems=hdfs://readcluster,hdfs://writecluster
+   
kylin.engine.spark-conf.spark.yarn.access.hadoopFileSystems=hdfs://readcluster,hdfs://writecluster
+   ```
+5. If the Kerberos authentication mechanism enabled, the following checks need 
to be done to avoid errors in the segment build job:
+   
+   ```
+   java.lang.IllegalArgumentException: Can't get Kerberos realm
+   ...
+   Caused by: KrbException: Cannot locate default realm
+   ```
+   
+   1. Make sure the `keytab` file and `krb5.conf` file required for 
authentication exist in the directory `$KYLIN_HOME/conf`
+   2. If the directory `$KYLIN_HOME/hadoop_conf` exists, make sure there is a 
`krb5.conf` file in this directory
+   3. If the directory `$KYLIN_HOME/write_hadoop_conf` exists, make sure there 
is a `krb5.conf` file in this directory
+
+Now read/write separation deployment is configured. 
+
+**Note:**
+
+* `$KYLIN_HOME/bin/check-env.sh` and `$KYLIN_HOME/bin/sample.sh` are not 
available in this deployment mode.
+
+* In this mode, `kylin.engine.spark-conf.spark.yarn.queue` in 
`kylin.properties` should be configured as the queue of the build cluster.
+
+
diff --git a/website/docs/deployment/deploy_mode/service_discovery.md 
b/website/docs/deployment/deploy_mode/service_discovery.md
new file mode 100644
index 0000000000..a08758deff
--- /dev/null
+++ b/website/docs/deployment/deploy_mode/service_discovery.md
@@ -0,0 +1,36 @@
+---
+title: Service Discovery
+language: en
+sidebar_label: Service Discovery
+pagination_label: Service Discovery
+toc_min_heading_level: 2
+toc_max_heading_level: 6
+pagination_prev: null
+pagination_next: null
+keywords:
+    - service discovery
+    - ha
+draft: false
+last_update:
+    date: 12/08/2022
+---
+
+Multiple Kylin instances can work together as a cluster. When a Kylin instance 
is started, stopped, or lost, other instances in the cluster will be updated 
automatically. Kylin has a new implementation based on Apache Curator 
framework, which is more convenient and more stable. 
+
+If you want to enable service discovery, please set the correct ZooKeeper 
address in the configuration file `$KYLIN_HOME/conf/kylin.properties`. For 
example: 
+
+```properties
+kylin.env.zookeeper-connect-string=host1:2181,host2:2181,host3:2181
+```
+
+After the configuration, please restart Kylin. Each Kylin instance will 
register itself in ZooKeeper, and each one will discover other instances from 
ZooKeeper. 
+
+By default, Kylin will use hostname as the node name. If the cluster you run 
Kylin on cannot parses the host name to IP address through DNS and other 
services, you could set an additional configuration in  
`$KYLIN_HOME/conf/kylin.properties` as below (this can avoid communication 
errors between Kylin servers). For example:
+
+```properties
+spring.cloud.zookeeper.discovery.instance-host=10.1.2.3
+```
+
+This config enforces Kylin to use IP address for service registry, making sure 
that other instances can find it by IP address instead of hostname. In case you 
use this config, please specify this config for **each of the Kylin instance** 
in `kylin.properties`. 
+
+**Note:** Please replace the IP address with actual IP address on each server.
diff --git a/website/docs/deployment/rdbms_metastore/install_mysql.md 
b/website/docs/deployment/rdbms_metastore/mysql/install_mysql.md
similarity index 97%
rename from website/docs/deployment/rdbms_metastore/install_mysql.md
rename to website/docs/deployment/rdbms_metastore/mysql/install_mysql.md
index b3bced9cd6..d3464debea 100644
--- a/website/docs/deployment/rdbms_metastore/install_mysql.md
+++ b/website/docs/deployment/rdbms_metastore/mysql/install_mysql.md
@@ -8,7 +8,9 @@ toc_max_heading_level: 6
 pagination_prev: null
 pagination_next: null
 keywords:
-   - postgresql
+   - mysql
+   - install mysql
+   - install
 draft: true
 last_update:
    date: 11/08/2022
@@ -21,7 +23,7 @@ last_update:
    - MySQL 5.1 to 5.7, MySQL 5.7 is recommended
    - MySQL 8
 
-2. JDBC driver of MySQL is needed in the Kyligence Enterprise running 
environment.
+2. JDBC driver of MySQL is needed in the Kylin running environment.
 
 3. You can download the JDBC driver jar package of MySQL 8 via the link below, 
that compatible with the version after 5.6:
 
diff --git a/website/docs/deployment/rdbms_metastore/mysql/intro.md 
b/website/docs/deployment/rdbms_metastore/mysql/intro.md
new file mode 100644
index 0000000000..fd0cf7a152
--- /dev/null
+++ b/website/docs/deployment/rdbms_metastore/mysql/intro.md
@@ -0,0 +1,20 @@
+---
+title: MySQL
+language: en
+sidebar_label: MySQL
+pagination_label: MySQL
+toc_min_heading_level: 2
+toc_max_heading_level: 6
+pagination_prev: null
+pagination_next: null
+keywords:
+    - mysql
+draft: false
+last_update:
+    date: 11/08/2022
+---
+
+Kylin supports to use MySQL as Metastore, this chapter will discuss how to:
+
+- [Install MySQL](install_mysql.md)
+- [Use MySQL as Metastore](mysql_metastore.md)
diff --git a/website/docs/deployment/rdbms_metastore/mysql/mysql_metastore.md 
b/website/docs/deployment/rdbms_metastore/mysql/mysql_metastore.md
new file mode 100644
index 0000000000..408edf4ceb
--- /dev/null
+++ b/website/docs/deployment/rdbms_metastore/mysql/mysql_metastore.md
@@ -0,0 +1,118 @@
+---
+title: Use MySQL as Metastore
+language: en
+sidebar_label: Use MySQL as Metastore
+pagination_label: Use MySQL as Metastore
+toc_min_heading_level: 2
+toc_max_heading_level: 6
+pagination_prev: null
+pagination_next: null
+keywords:
+   - mysql
+   - mysql metastore
+   - metastore
+draft: false
+last_update:
+   date: 11/08/2022
+---
+
+
+### <span id ="Prerequisite">Prerequisite</span>
+
+1. Please install MySQL, If the MySQL has not been installed, please refer to 
[Insatall MySQL](install_mysql.md) for more details. 
+
+### <span id ="ConfigurationSteps">Configuration Steps</span>
+
+The following steps illustrate how to connect MySQL as metastore. Here is an 
example for MySQL 5.7 .
+
+1. Create database `kylin` in MySQL
+
+2. Set configuration item `kylin.metadata.url = {metadata_name}@jdbc` in 
`$KYLIN_HOME/conf/kylin.properties`,
+   please replace `{metadata_name}` with your metadata name in MySQL, for 
example, `kylin_default_instance@jdbc`, the maximum length of `{metadata_name}` 
allowed is 29.
+
+   > **Note**: If the metadata name doesn't exist, it will be automatically 
created in MySQL. Otherwise, Kylin will use the existing one.
+
+   For example: 
+
+   ```properties
+   
kylin.metadata.url={metadata_name}@jdbc,driverClassName=com.mysql.jdbc.Driver,url=jdbc:mysql://{host}:{port}/kylin?useUnicode=true&characterEncoding=utf8,username={user},password={password},maxTotal=50,maxIdle=8
+   ```
+   
+   The meaning of each parameter is as below, `url`, `username`, and 
`password` are required parameters. For others, default values will be used if 
they are not indicated.
+       
+   * **driverClassName**: JDBC's driver class name, default value is 
`com.mysql.jdbc.Driver`;
+   * **url**: JDBC's url;
+     * **host**:MySQL ip address, whose default value is `localhost`;
+     * **port**:MySQL port, whose default value is `3306`. Please use the 
actual port to replace. 
+     * **kylin**: Metabase name. Make sure this database `kylin` has been 
created in MySQL;
+   * **username**: JDBC's username; 
+   * **password**: JDBC's password;
+   * **maxTotal**: max number of database's connection number, default value 
is 50; 
+   * **maxIdle**: max number of database's waiting connection number, default 
value is 8;
+   
+> **Note**:  if your query SQL contains chinese, please configure the 
character encoding to utf8 in kylin.metadata.url to avoid confusing query 
history: useunicode = true & character encoding = utf8
+
+3. Encrypt JDBC password
+
+   If you need to encrypt JDBC's password, you can do it like this:
+   
+   **i.** run following commands in ${KYLIN_HOME}, it will print encrypted 
password
+   ```shell
+   ./bin/kylin.sh org.apache.kylin.tool.general.CryptTool -e AES -s <password>
+   ```
+
+   **ii.** config properties kylin.metadata.url's password like this
+   ```properties
+   password=ENC('${encrypted_password}')
+   ```
+
+   For example, the following assumes that the JDBC password is kylin:
+
+   First, we need to encrypt kylin using the following command
+   ```shell
+   ${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.tool.general.CryptTool -e AES 
-s kylin
+   AES encrypted password is: 
+   YeqVr9MakSFbgxEec9sBwg==
+   ```
+   Then, config kylin.metadata.url like this:
+   ```properties
+   
kylin.metadata.url={metadata_name}@jdbc,driverClassName=com.mysql.jdbc.Driver,url=jdbc:mysql://{host}:{port}/kylin?useUnicode=true&characterEncoding=utf8,username={user},password=ENC('YeqVr9MakSFbgxEec9sBwg=='),maxTotal=20,maxIdle=20
+   ```
+
+4. If you need to use MySQL cluster deployment, please add `replication` or 
`loadbalance` in url with `"`. For example:
+
+   ```properties
+   #use replication in cluster deployment       
+   
kylin.metadata.url=kylin_default_instance@jdbc,driverClassName=com.mysql.jdbc.Driver,url="jdbc:mysql:replication://localhost:3306,localhost:3307/kylin?useUnicode=true&characterEncoding=utf8",username=root,password=,maxTotal=20,maxIdle=20
+      
+   #use loadbalance in cluster deployment
+   
kylin.metadata.url=kylin_default_instance@jdbc,driverClassName=com.mysql.jdbc.Driver,url="jdbc:mysql:loadbalance://localhost:3306,localhost:3307/kylin?useUnicode=true&characterEncoding=utf8",username=root,password=,maxTotal=20,maxIdle=20
+   ```
+5. Make sure that the storage engine used with MySQL is **InnoDB** is not 
**MyISAM** and that the default storage engine is modified as follows:
+
+   ```Properties
+   [mysqld]
+   default-storage-engine=InnoDB
+   ```
+
+### <span id="faq">FAQ</span>
+
+**Q: After the JDK is upgraded to jdk 8u261, the startup of Kylin fails, 
indicating that the creation of the admin user failed, what should I do? **
+
+A: When you use JDK 8u261 and use MySQL 5.6 or 5.7 as metastore. Since the 
version before TLS 1.2 has been disabled since the JDK 8u261, and MySQL 5.6 and 
5.7 use TLS 1.0 or TLS 1.1 by default, and MySQL must establish an SSL 
connection by default, which causes conflicts with the TLS protocol, resulting 
in the startup of Kylin fails, you will see the error message on the terminal 
as `Create Admin user failed`.
+
+ You have 2 solutions:
+
+Method 1: Modify the metadata configuration parameters and add `useSSL=false`
+
+```properties
+kylin.metadata.url={metadata_name}@jdbc,driverClassName=com.mysql.jdbc.Driver,url=jdbc:mysql://{host}:{port}/kylin?useSSL=false,useUnicode=true&characterEncoding=utf8,username={user},password={password},maxTotal=50,maxIdle=8
+```
+
+Method 2: Modify the java security file `java.security`, find the following 
configuration, delete TLSv1, TLSv1.1
+
+```sh
+#  jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
+jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, DH 
keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, include 
jdk.disabled.namedCurves
+```
+
diff --git a/website/docs/deployment/rdbms_metastore/default_metastore.md 
b/website/docs/deployment/rdbms_metastore/postgresql/default_metastore.md
similarity index 100%
rename from website/docs/deployment/rdbms_metastore/default_metastore.md
rename to 
website/docs/deployment/rdbms_metastore/postgresql/default_metastore.md
diff --git a/website/docs/deployment/rdbms_metastore/install_postgresql.md 
b/website/docs/deployment/rdbms_metastore/postgresql/install_postgresql.md
similarity index 98%
rename from website/docs/deployment/rdbms_metastore/install_postgresql.md
rename to 
website/docs/deployment/rdbms_metastore/postgresql/install_postgresql.md
index 392c4987d0..17d47f61d8 100644
--- a/website/docs/deployment/rdbms_metastore/install_postgresql.md
+++ b/website/docs/deployment/rdbms_metastore/postgresql/install_postgresql.md
@@ -125,7 +125,7 @@ last_update:
 
    **v.** <span id="metadata">Run `\l` to check if the database was created 
successfully. If you see picture as below, you have just created a database 
named `kylin`.</span>
 
-   ![check kylin database](./images/installation_create_postgresqldb.jpg)
+   ![check kylin database](../images/installation_create_postgresqldb.jpg)
 
    
 
@@ -162,7 +162,7 @@ The following example is that Linux user `abc` installs and 
configures PostgreSQ
 
    As the picture shows below, input password after run the command above, the 
password is the password for user `postgres`, say the password is `kylin`.
 
-   ![initialize postgresql](./images/install_initialize_postgresql.png)
+   ![initialize postgresql](../images/install_initialize_postgresql.png)
 
    **ii.** Edit configuration file
 
diff --git a/website/docs/deployment/rdbms_metastore/postgresql/intro.md 
b/website/docs/deployment/rdbms_metastore/postgresql/intro.md
new file mode 100644
index 0000000000..b84ad6905a
--- /dev/null
+++ b/website/docs/deployment/rdbms_metastore/postgresql/intro.md
@@ -0,0 +1,20 @@
+---
+title: PostgreSQL
+language: en
+sidebar_label: PostgreSQL
+pagination_label: PostgreSQL
+toc_min_heading_level: 2
+toc_max_heading_level: 6
+pagination_prev: null
+pagination_next: null
+keywords:
+    - postgresql
+draft: false
+last_update:
+    date: 11/08/2022
+---
+
+Kylin supports to use PostgreSQL as Metastore, this chapter will discuss how 
to:
+
+- [Install PostgreSQL](install_postgresql.md)
+- [Use PostgreSQL as Metastore](default_metastore.md)
diff --git a/website/docs/intro.md b/website/docs/intro.md
index e29e6b6094..e17893a55f 100644
--- a/website/docs/intro.md
+++ b/website/docs/intro.md
@@ -1,5 +1,17 @@
 ---
-sidebar_position: 0
+title: Intro to Kylin 5.0
+language: en
+sidebar_label: Intro to Kylin 5.0
+pagination_label: Intro to Kylin 5.0
+toc_min_heading_level: 2
+toc_max_heading_level: 6
+pagination_prev: null
+pagination_next: null
+keywords:
+    - rest api
+draft: false
+last_update:
+    date: 12/08/2022
 ---
 
 # Intro to Kylin 5.0
diff --git a/website/docs/modeling/intro.md b/website/docs/modeling/intro.md
index ccf4259219..533404ab92 100644
--- a/website/docs/modeling/intro.md
+++ b/website/docs/modeling/intro.md
@@ -1,14 +1,17 @@
 ---
-sidebar_position: 1
+title: Model
+language: en
+sidebar_label: Model
+pagination_label: Model
+toc_min_heading_level: 2
+toc_max_heading_level: 6
+pagination_prev: null
+pagination_next: null
+keywords:
+    - model
+draft: false
+last_update:
+    date: 12/08/2022
 ---
 
-# Tutorial Intro
-
-Let's discover ** Kylin 5.0 in than 15 minutes **.
-
-## Getting Started
-
-```shell
-
-docker pull apachekylin/apache-kylin-standalone:5.0.0
-```
+This chapter introduces the core concepts of Kylin: model and index design 
basics, advanced measures and load data.
diff --git a/website/docs/operations/intro.md b/website/docs/operations/intro.md
index ccf4259219..e8feeac788 100644
--- a/website/docs/operations/intro.md
+++ b/website/docs/operations/intro.md
@@ -1,14 +1,18 @@
 ---
-sidebar_position: 1
+title: Operation and Maintenance Guide
+language: en
+sidebar_label: Operation and Maintenance Guide
+pagination_label: Operation and Maintenance Guide
+toc_min_heading_level: 2
+toc_max_heading_level: 6
+pagination_prev: null
+pagination_next: null
+keywords:
+    - operation
+    - maintenance
+draft: false
+last_update:
+    date: 12/08/2022
 ---
 
-# Tutorial Intro
-
-Let's discover ** Kylin 5.0 in than 15 minutes **.
-
-## Getting Started
-
-```shell
-
-docker pull apachekylin/apache-kylin-standalone:5.0.0
-```
+This Operation and Maintenance Guide will introduce a suite of capabilities 
that can help you to manage your Kylin projects, do system maintenance, work 
with logs.
diff --git a/website/docs/restapi/intro.md b/website/docs/restapi/intro.md
index ccf4259219..cc09056c66 100644
--- a/website/docs/restapi/intro.md
+++ b/website/docs/restapi/intro.md
@@ -1,14 +1,17 @@
 ---
-sidebar_position: 1
+title: Rest API
+language: en
+sidebar_label: Rest API
+pagination_label: Rest API
+toc_min_heading_level: 2
+toc_max_heading_level: 6
+pagination_prev: null
+pagination_next: null
+keywords:
+    - rest api
+draft: false
+last_update:
+    date: 12/08/2022
 ---
 
-# Tutorial Intro
-
-Let's discover ** Kylin 5.0 in than 15 minutes **.
-
-## Getting Started
-
-```shell
-
-docker pull apachekylin/apache-kylin-standalone:5.0.0
-```
+Kylin provides various REST APIs, which can be used to execute queries, 
trigger a build job and so on. With those APIs, the third-party system could 
integrate with Kylin system seamlessly.  
diff --git a/website/sidebars.js b/website/sidebars.js
index 0fddf1a701..b216a05067 100644
--- a/website/sidebars.js
+++ b/website/sidebars.js
@@ -81,18 +81,64 @@ const sidebars = {
                       type: 'doc',
                       id: 'deployment/rdbms_metastore/intro',
                   },
+                  items: [
+                      {
+                          type: 'category',
+                          label: 'MySQL',
+                          link: {
+                              type: 'doc',
+                              id: 'deployment/rdbms_metastore/mysql/intro',
+                          },
+                          items: [
+                              {
+                                  type: 'doc',
+                                  id: 
'deployment/rdbms_metastore/mysql/install_mysql'
+                              },
+                              {
+                                  type: 'doc',
+                                  id: 
'deployment/rdbms_metastore/mysql/mysql_metastore'
+                              },
+                          ],
+                      },
+                      {
+                          type: 'category',
+                          label: 'PostgreSQL',
+                          link: {
+                              type: 'doc',
+                              id: 
'deployment/rdbms_metastore/postgresql/intro',
+                          },
+                          items: [
+                              {
+                                  type: 'doc',
+                                  id: 
'deployment/rdbms_metastore/postgresql/install_postgresql'
+                              },
+                              {
+                                  type: 'doc',
+                                  id: 
'deployment/rdbms_metastore/postgresql/default_metastore'
+                              },
+                          ],
+                      },
+                  ]
+              },
+              {
+                  type: 'category',
+                  label: 'Deployment Mode',
+                  link: {
+                      type: 'doc',
+                      id: 'deployment/deploy_mode/intro',
+                  },
                   items: [
                       {
                           type: 'doc',
-                          id: 'deployment/rdbms_metastore/default_metastore'
+                          id: 'deployment/deploy_mode/cluster_deployment'
                       },
                       {
                           type: 'doc',
-                          id: 'deployment/rdbms_metastore/install_postgresql'
+                          id: 'deployment/deploy_mode/service_discovery'
                       },
                       {
                           type: 'doc',
-                          id: 'deployment/rdbms_metastore/install_mysql'
+                          id: 'deployment/deploy_mode/rw_separation'
                       },
                   ]
               }
@@ -130,11 +176,39 @@ const sidebars = {
       },
       {
           type: 'category',
-          label: 'Operations',
+          label: 'Operation and Maintenance Guide',
+          link: {
+              type: 'doc',
+              id: 'operations/intro',
+          },
           items: [
               {
-                  type: 'doc',
-                  id: 'operations/intro'
+                  type: 'category',
+                  label: 'Monitoring',
+                  link: {
+                      type: 'doc',
+                      id: 'operations/monitoring/intro',
+                  },
+                  items: [
+                      {
+                          type: 'category',
+                          label: 'InfluxDB',
+                          link: {
+                              type: 'doc',
+                              id: 'operations/monitoring/influxdb/intro',
+                          },
+                          items: [
+                              {
+                                  type: 'doc',
+                                  id: 'operations/monitoring/influxdb/influxdb'
+                              },
+                              {
+                                  type: 'doc',
+                                  id: 
'operations/monitoring/influxdb/influxdb_maintenance'
+                              },
+                          ],
+                      },
+                  ],
               },
           ],
       },

Reply via email to