diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_01_overview_of_the_oceanbase_database/00_introduction.md b/docs/user_manual/quick_starts/en-US/chapter_01_overview_of_the_oceanbase_database/00_introduction.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_01_overview_of_the_oceanbase_database/00_introduction.md rename to docs/user_manual/quick_starts/en-US/chapter_01_overview_of_the_oceanbase_database/00_introduction.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_01_overview_of_the_oceanbase_database/01_overview.md b/docs/user_manual/quick_starts/en-US/chapter_01_overview_of_the_oceanbase_database/01_overview.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_01_overview_of_the_oceanbase_database/01_overview.md rename to docs/user_manual/quick_starts/en-US/chapter_01_overview_of_the_oceanbase_database/01_overview.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_01_overview_of_the_oceanbase_database/02_ecological-tools.md b/docs/user_manual/quick_starts/en-US/chapter_01_overview_of_the_oceanbase_database/02_ecological-tools.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_01_overview_of_the_oceanbase_database/02_ecological-tools.md rename to docs/user_manual/quick_starts/en-US/chapter_01_overview_of_the_oceanbase_database/02_ecological-tools.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_01_overview_of_the_oceanbase_database/_index.md b/docs/user_manual/quick_starts/en-US/chapter_01_overview_of_the_oceanbase_database/_index.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_01_overview_of_the_oceanbase_database/_index.md rename to docs/user_manual/quick_starts/en-US/chapter_01_overview_of_the_oceanbase_database/_index.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/00_introduction.md b/docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/00_introduction.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/00_introduction.md rename to docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/00_introduction.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/01_preparation_before_deployment.md b/docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/01_preparation_before_deployment.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/01_preparation_before_deployment.md rename to docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/01_preparation_before_deployment.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/02_deployment_components.md b/docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/02_deployment_components.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/02_deployment_components.md rename to docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/02_deployment_components.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment.md b/docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment.md similarity index 96% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment.md rename to docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment.md index f43603475..035358b3c 100755 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment.md +++ b/docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment.md @@ -408,7 +408,7 @@ If you have multiple servers available, you can run the `obd web` command to sta 2. Click **Try Now** to start the deployment process. - ![Start](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/001.png) + ![Start](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/001.png) > **Note** > @@ -416,29 +416,29 @@ If you have multiple servers available, you can run the `obd web` command to sta 3. Select **OceanBase and supporting tools** and click **OK**. - ![Select](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/002.png) + ![Select](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/002.png) 4. On the **Deployment Configuration** page, modify **Cluster Name** and select the components that you want to deploy. You can also retain the default configurations. By default, all components are deployed. - ![Deployment configuration](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/003.png) + ![Deployment configuration](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/003.png) Click **Next Step** to go to the **Node Configuration** page. 5. On the **Node Configuration** page, enter node IP addresses and the user password and then click **Next Step** to go to the **Cluster Configuration** page. - ![Node configuration](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/004.png) + ![Node configuration](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/004.png) 6. On the **Cluster Configuration** page, specify the deployment mode, password, directory, port, and other information about the cluster. You can also retain the default values. - ![Cluster configuration](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/005.png) + ![Cluster configuration](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/005.png) Click **Next Step** to go to the **Pre-check** page. 7. On the **Pre-check** page, verify the configuration information and then click **Pre-check**. - ![Precheck](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/006.png) + ![Precheck](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/006.png) - ![Precheck](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/007.png) + ![Precheck](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/007.png) If an error code is returned, you can click **Automatic Repair** to automatically repair the error, or click **Learn more** to go to the error code document and correct the error based on the reference document. After all the errors are corrected, click **Re-check** to perform a precheck again. @@ -447,10 +447,10 @@ If you have multiple servers available, you can run the `obd web` command to sta If the deployment is successful, the connection strings of the components are displayed. You can copy a connection string to access the corresponding component. - ![Deployment](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/008.png) + ![Deployment](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/008.png) 9. Click **Finish**. - ![Finish](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/009.png) + ![Finish](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/009.png) 10. Log on to OCP Express and create a user tenant. diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/04_deploy-production-environment.md b/docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/04_deploy-production-environment.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/04_deploy-production-environment.md rename to docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/04_deploy-production-environment.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/05_view-resources.md b/docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/05_view-resources.md similarity index 98% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/05_view-resources.md rename to docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/05_view-resources.md index dfd3c9e4c..d63a82ad6 100755 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/05_view-resources.md +++ b/docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/05_view-resources.md @@ -15,7 +15,7 @@ OceanBase Database is a single-process software solution. Its process is named ` As shown in the following figure, an OceanBase cluster can manage all resources allocated to the `observer` process in a centralized manner and allocate the resources to tenants. You can define the resource specifications for a tenant and adjust the resource specifications online. -![Resource allocation](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/05_view-resources/001.png) +![Resource allocation](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/05_view-resources/001.png) The resources for an OceanBase Database tenant include CPU, memory, and IOPS. At present, OceanBase Database supports the isolation of these resources. We recommend that you set the resource parameters based on the actual situation when you create resources. For example, the value of the parameter related to the disk space should not exceed the actual available disk space. Otherwise, load balancing is affected. diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/06_create-tenant.md b/docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/06_create-tenant.md similarity index 98% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/06_create-tenant.md rename to docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/06_create-tenant.md index f4a24503e..87553f961 100755 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/06_create-tenant.md +++ b/docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/06_create-tenant.md @@ -21,17 +21,17 @@ We recommend that you create a user tenant by referring to this topic for testin If no unit config is suitable, you can create one. After you create a unit config in OCP, it is not immediately recorded in the internal view `DBA_OB_UNIT_CONFIGS` of OceanBase Database, but rather in the `meta_database.ob_unit_spec` table of OCP. The unit config is actually created only when you create a tenant. - ![Configure the tenant](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/06_create-tenant/001.png) + ![Configure the tenant](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/06_create-tenant/001.png) 2. Configure the IP address allowlist and variables of the tenant. - ![Configure the tenant](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/06_create-tenant/002.png) + ![Configure the tenant](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/06_create-tenant/002.png) 3. View the tenant creation task. To learn about the task execution process, you can download the logs. - ![View logs](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/06_create-tenant/003.png) + ![View logs](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/06_create-tenant/003.png) You can learn from the logs that OCP will respectively name each unit and resource pool during tenant creation, which is not the case when you create a tenant in OceanBase Deployer (OBD). This practice brings the following benefits: diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/07_connecting-tenants.md b/docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/07_connecting-tenants.md similarity index 96% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/07_connecting-tenants.md rename to docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/07_connecting-tenants.md index 62bd1ad50..56485ebe7 100755 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/07_connecting-tenants.md +++ b/docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/07_connecting-tenants.md @@ -17,11 +17,11 @@ The procedure for connecting to OceanBase Database by using ODC is as follows. F 1. Create a connection. - ![Create a connection](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/07_connecting-tenants/001.png) + ![Create a connection](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/07_connecting-tenants/001.png) 2. Save and open the connection. - ![Open the connection](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/07_connecting-tenants/002.png) + ![Open the connection](/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/07_connecting-tenants/002.png) ## Connect to a tenant by using a MySQL client diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/08_set-parameters.md b/docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/08_set-parameters.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/08_set-parameters.md rename to docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/08_set-parameters.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/_index.md b/docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/_index.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/_index.md rename to docs/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/_index.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/00_introduction.md b/docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/00_introduction.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/00_introduction.md rename to docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/00_introduction.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/01_overview_of_test.md b/docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/01_overview_of_test.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/01_overview_of_test.md rename to docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/01_overview_of_test.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/02_influence_factor.md b/docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/02_influence_factor.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/02_influence_factor.md rename to docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/02_influence_factor.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/03_sysbench_test.md b/docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/03_sysbench_test.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/03_sysbench_test.md rename to docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/03_sysbench_test.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/04_tpcc_test.md b/docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/04_tpcc_test.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/04_tpcc_test.md rename to docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/04_tpcc_test.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/05_tpch_test.md b/docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/05_tpch_test.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/05_tpch_test.md rename to docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/05_tpch_test.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test.md b/docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test.md similarity index 81% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test.md rename to docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test.md index ccf1187e4..94a360668 100755 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test.md +++ b/docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test.md @@ -51,17 +51,17 @@ JMeter can run in the CLI or on the GUI. This section describes how to use JMete Run the `sh jmeter` command in the `apache-jmeter-xxx/bin/` directory to go to the GUI of JMeter. On the page shown in the following figure, create a test plan named `Oceanbase Test Plan`. -![Create a test plan](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/001.png) +![Create a test plan](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/001.png) In the left-side navigation pane, click **Oceanbase Test Plan** and choose **Add** > **Threads(Users)** > **Thread Group** to create a thread group. You can configure a variety of parameters when you use JMeter for testing. For more information about the parameters, see [Elements of a Test Plan](https://jmeter.apache.org/usermanual/test_plan.html) in JMeter Documentation. -![Create a thread group](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/002.png) +![Create a thread group](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/002.png) ### Add a JDBC connection Click **Thread Group** and choose **Add** > **Config Element** > **JDBC Connection Configuration** to create a JDBC configuration file. -![Add a JDBC connection](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/003.png) +![Add a JDBC connection](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/003.png) The attributes shown in the preceding figure are common parameters of a connection pool. For more information, see the experience in configuring Java connection pools shared on the Internet. @@ -87,37 +87,37 @@ Click **Thread Group** and choose **Add** > **Logic Controller** > **Transaction Click **Transaction Controller** and choose **Add** > **Pre Processors** > **User Parameters** to add variables as needed. This test involves three variables: `credit_id` (account A), `debit_id` (account B), and `trans_amount` (transferred amount). The account parameters and amounts are set to random numbers within the actual ranges of test data. - ![Configure transaction variables](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/004.png) + ![Configure transaction variables](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/004.png) * Start a transaction Click **Transaction Controller** and choose **Add** > **Sampler** > **JDBC Request** to create a JDBC request. Set **Query Type** to `AutoCommit(false)` to enable explicit transactions. - ![Start a transaction](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/005.png) + ![Start a transaction](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/005.png) * Create a JDBC request to deduct the transferred amount from the balance of account A Click **Transaction Controller** and choose **Add** > **Sampler** > **JDBC Request**, to create a JDBC request named `JDBC update credit account`. Then, add an SQL request to deduct the transferred amount from the balance of account A. - ![Deduct the transferred amount from the balance of account A](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/006.png) + ![Deduct the transferred amount from the balance of account A](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/006.png) * Add Post logic to obtain the return value of the JDBC request that deducts the transferred amount from the balance of account A Click **JDBC update credit account** and choose **Add** > **Post Processors** > **Regular Expression Extractor** to add Post logic to obtain the return value of the JDBC request that deducts the transferred amount from the balance of account A. - ![Processing logic for account A](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/007.png) + ![Processing logic for account A](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/007.png) * Create a JDBC request to increase the balance of account B Click **Transaction Controller** and choose **Add** > **Sampler** > **JDBC Request** to create a JDBC request named `JDBC update debit account`. Then, add an SQL request to increase the balance of account B. - ![Increase the balance of account B](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/008.png) + ![Increase the balance of account B](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/008.png) * Add Post logic to obtain the return value of the JDBC request that increases the balance of account B Click **JDBC update debit account** and choose **Add** > **Post Processors** > **Regular Expression Extractor** to add Post logic to obtain the return result of the JDBC request that increases the balance of account B. - ![Processing logic for account B](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/009.png) + ![Processing logic for account B](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/009.png) ### Judgment logic - process succeeded @@ -127,13 +127,13 @@ If the updates for both accounts are successful, the transaction is committed. Click **Transaction Controller** and choose **Add** > **Logic Controller** > **If Controller** to add an IF controller named `If success`. Then, add judgment conditions. - ![Add an IF controller](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/010.png) + ![Add an IF controller](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/010.png) * Add a commit action upon update success Click **If success** and choose **Add** > **Sampler** > **JDBC Request** to create a JDBC request. Set **Query Type** to `Commit`. - ![Commit a transaction](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/011.png) + ![Commit a transaction](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/011.png) ### Judgment logic - process failed @@ -143,20 +143,20 @@ If the update for either account fails, the transaction is rolled back. Click **Transaction Controller** and choose **Add** > **Logic Controller** > **If Controller** to create an IF controller named `If fail`. Then, add judgment conditions. - ![Add an IF controller](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/012.png) + ![Add an IF controller](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/012.png) * Add a commit action upon update failure Click **If fail** and choose **Add** > **Sampler** > **JDBC Request** to create a JDBC request. Set **Query Type** to `Rollback`. - ![Roll back a transaction](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/013.png) + ![Roll back a transaction](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/013.png) ### View the results Click **Thread-Group** and choose **Add** > **Listener** > **View Results Tree** to create a result tree file to view the test results. -![View the results](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/014.png) +![View the results](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/014.png) Click **Thread Group** and choose **Add** > **Listener** > **Aggregate Report** to create an aggregated report that aggregates the results. -![View the report](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/015.png) \ No newline at end of file +![View the report](/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/015.png) \ No newline at end of file diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/07_common_testing_points.md b/docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/07_common_testing_points.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/07_common_testing_points.md rename to docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/07_common_testing_points.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/_index.md b/docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/_index.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/_index.md rename to docs/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/_index.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/00_introduction.md b/docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/00_introduction.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/00_introduction.md rename to docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/00_introduction.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/01_compatibility_introduction.md b/docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/01_compatibility_introduction.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/01_compatibility_introduction.md rename to docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/01_compatibility_introduction.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization.md b/docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization.md similarity index 96% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization.md rename to docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization.md index 793d2cfce..aabf08312 100755 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization.md +++ b/docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization.md @@ -86,7 +86,7 @@ For more information, see the [introduction to Flink CDC](https://github.com/apa DataX is a tool for offline synchronization between heterogeneous data sources. You can use it to stably and efficiently synchronize data between many types of heterogeneous data sources, such as relational databases (like MySQL, Oracle, and OceanBase Database), HDFS, Hive, ODPS, HBase, and FTP. -![DataX architecture](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization/001.png) +![DataX architecture](/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization/001.png) To address issues of data synchronization between heterogeneous data sources in a complex mesh topology, DataX introduces the star topology and serves as the transmission hub that connects to various data sources. This way, you can connect a new data source to DataX and start synchronizing data between the new data source and the existing data sources right away. @@ -112,6 +112,6 @@ SeaTunnel is specifically developed for data integration and synchronization, an The following diagram describes the workflow of SeaTunnel. -![SeaTunnel workflow](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization/002.png) +![SeaTunnel workflow](/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization/002.png) For more information, see the [introduction to SeaTunnel](https://seatunnel.apache.org/docs/about/). diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/03_migration_and_synchronization_through_oms.md b/docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/03_migration_and_synchronization_through_oms.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/03_migration_and_synchronization_through_oms.md rename to docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/03_migration_and_synchronization_through_oms.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/04_incremental_log_proxy_service_through_oblogproxy.md b/docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/04_incremental_log_proxy_service_through_oblogproxy.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/04_incremental_log_proxy_service_through_oblogproxy.md rename to docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/04_incremental_log_proxy_service_through_oblogproxy.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/05_use-obdumper_and_obloader.md b/docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/05_use-obdumper_and_obloader.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/05_use-obdumper_and_obloader.md rename to docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/05_use-obdumper_and_obloader.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/06_migration_and_synchronization_through_sql.md b/docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/06_migration_and_synchronization_through_sql.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/06_migration_and_synchronization_through_sql.md rename to docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/06_migration_and_synchronization_through_sql.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools.md b/docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools.md similarity index 94% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools.md rename to docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools.md index b33024484..03966a793 100755 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools.md +++ b/docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools.md @@ -21,7 +21,7 @@ Flink CDC Connectors (Flink CDC for short) is a set of source connectors for Apa Flink CDC also supports data processing. You can use the SQL client of Flink CDC to associate, widen, and aggregate database data in real time, and write the results to various stores. -![Flink CDC](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/001.png) +![Flink CDC](/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/001.png) ### Supported connectors @@ -53,7 +53,7 @@ Canal is an open source product of Alibaba. It provides subscription and consump The following figure shows how Canal works. -![How Canal works](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/002.png) +![How Canal works](/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/002.png) * Canal disguises itself as a MySQL slave by simulating the communication protocol of the MySQL slave, and sends a dump request to the MySQL master. @@ -65,7 +65,7 @@ The following figure shows how Canal works. The following figure shows the architecture and components of Canal. -![Canal architecture ](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/003.png) +![Canal architecture ](/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/003.png) where @@ -95,7 +95,7 @@ For more information, see the following topics: DataX is the open source edition of DataWorks of Alibaba Cloud. It is an offline data synchronization tool/platform widely used in Alibaba Group. DataX efficiently synchronizes data between heterogeneous data sources such as MySQL, Oracle, SQL Server, PostgreSQL, Hadoop Distributed File System (HDFS), Hive, ADS, HBase, Table Store (OTS), MaxCompute (formerly known as ODPS), Distributed Relational Database Service (DRDS), and OceanBase Database. -![DataX topology](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/004.png) +![DataX topology](/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/004.png) To address issues of data synchronization between heterogeneous data sources in a complex mesh topology, DataX introduces the star topology and serves as the transmission hub that connects to various data sources. This way, you can connect a new data source to DataX and start synchronizing data between the new data source and the existing data sources right away. @@ -105,7 +105,7 @@ DataX has been widely used in Alibaba Group for six years with stable operation. DataX is an offline data synchronization framework that is designed based on the framework + plug-in architecture. Data source reads and writes are abstracted as the reader and writer plug-ins and are integrated into the entire framework. -![DataX architecture](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/005.png) +![DataX architecture](/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/005.png) * Reader: The reader plug-in is a data collection module that collects data from a data source and sends the data to the framework. @@ -263,7 +263,7 @@ Over years of development, DataX has supported a wide range of plug-ins for conn Open source DataX 3.0 supports data synchronization by multiple threads on a single server. The following sequence diagram describes how modules of DataX work with each other in handling a job. -![DataX modules](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/006.png) +![DataX modules](/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/006.png) **Core modules** diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/_index.md b/docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/_index.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/_index.md rename to docs/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/_index.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/00_introduction.md b/docs/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/00_introduction.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/00_introduction.md rename to docs/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/00_introduction.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/01_o_m_by_ocp.md b/docs/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/01_o_m_by_ocp.md similarity index 99% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/01_o_m_by_ocp.md rename to docs/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/01_o_m_by_ocp.md index e2739cdf7..8b0bc0577 100755 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/01_o_m_by_ocp.md +++ b/docs/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/01_o_m_by_ocp.md @@ -198,7 +198,7 @@ After you deploy the backup media, choose **Backup & Recovery** > **Backup** in The following figure shows the physical backup architecture of OceanBase Database. -![Data backup](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/01_o_m_by_ocp/001.png) +![Data backup](/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/01_o_m_by_ocp/001.png) Take note of the following considerations: @@ -240,7 +240,7 @@ OceanBase Database supports tenant-level restore, which allows you to create a t The following figure shows the physical restore architecture of OceanBase Database. -![Data restore](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/01_o_m_by_ocp/002.png) +![Data restore](/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/01_o_m_by_ocp/002.png) Take note of the following considerations: diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/02_o_m_by_obd.md b/docs/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/02_o_m_by_obd.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/02_o_m_by_obd.md rename to docs/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/02_o_m_by_obd.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator.md b/docs/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator.md similarity index 94% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator.md rename to docs/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator.md index ece87e1cd..c86b168e1 100755 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator.md +++ b/docs/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator.md @@ -75,7 +75,7 @@ For more information, see [High availability](https://en.oceanbase.com/docs/comm The O&M of an OceanBase cluster is implemented by modifying the cluster resources in Kubernetes. The current implementation logic is to deliver the cluster resource modifications to target resources. -![Cluster information](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/001.png) +![Cluster information](/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/001.png) ### Create a tenant @@ -134,7 +134,7 @@ spec: The following figure shows the GUI provided by Dashboard for creating a tenant. -![Create a tenant](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/002.png) +![Create a tenant](/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/002.png) ### Modify the resource specifications for a tenant @@ -185,9 +185,9 @@ spec: The following figures show the GUI provided by Dashboard for modifying the resource specifications for a tenant. -![Modify tenant resources](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/003.png) +![Modify tenant resources](/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/003.png) -![Modify tenant resources](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/004.png) +![Modify tenant resources](/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/004.png) ### Back up data @@ -236,7 +236,7 @@ Take note of the following considerations: The following figure shows the GUI provided by Dashboard for creating a backup strategy. -![Create a backup strategy](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/005.png) +![Create a backup strategy](/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/005.png) ### Restore data @@ -329,7 +329,7 @@ Take note of the following considerations: The following figure shows the GUI provided by Dashboard for adding a zone. -![Add a zone](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/006.png) +![Add a zone](/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/006.png) #### Scale up a cluster @@ -351,7 +351,7 @@ Take note of the following considerations: The following figure shows the GUI provided by Dashboard for adding OBServer nodes to a zone. -![Scale-up](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/007.png) +![Scale-up](/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/007.png) ### Scale in or scale down a cluster @@ -385,7 +385,7 @@ Take note of the following considerations: The following figure shows the GUI provided by Dashboard for deleting OBServer nodes from a zone. -![Scale-down](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/008.png) +![Scale-down](/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/008.png) ### Upgrade a cluster @@ -401,4 +401,4 @@ Take note of the following considerations: The following figure shows the GUI provided by Dashboard for upgrading a cluster. -![Upgrade](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/009.png) +![Upgrade](/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/009.png) diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/04_o_m_by_sql.md b/docs/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/04_o_m_by_sql.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/04_o_m_by_sql.md rename to docs/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/04_o_m_by_sql.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/_index.md b/docs/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/_index.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/_index.md rename to docs/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/_index.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/00_introduction.md b/docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/00_introduction.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/00_introduction.md rename to docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/00_introduction.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/01_using_mysql_for_database_development.md b/docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/01_using_mysql_for_database_development.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/01_using_mysql_for_database_development.md rename to docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/01_using_mysql_for_database_development.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development.md b/docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development.md similarity index 70% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development.md rename to docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development.md index 75c30a23c..48edd4061 100644 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development.md +++ b/docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development.md @@ -11,7 +11,7 @@ OceanBase Developer Center (ODC) is a GUI-based development tool and a collabora ### Features and architecture -![Features and architecture](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/001.png) +![Features and architecture](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/001.png) ## Limitations @@ -59,7 +59,7 @@ Client ODC focuses on database development. It is lightweight and easy to deploy A data source is a remote database environment, such as a standalone OceanBase cluster or an instance of another database system. -![Data sources](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/002.png) +![Data sources](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/002.png) #### Configure a data source @@ -81,7 +81,7 @@ A data source is a remote database environment, such as a standalone OceanBase c * The **Environment** parameter specifies the environment type of the data source, such as a development environment or production environment, to configure different control policies. -![Create data source](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/003.png) +![Create data source](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/003.png) #### Use ODC @@ -95,7 +95,7 @@ Manage databases * Assign a database to a project -![Database tab](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/004.png) +![Database tab](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/004.png) Manage the sessions of a data source @@ -109,7 +109,7 @@ Manage the sessions of a data source * End an ongoing query in a session. -![Session tab](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/005.png) +![Session tab](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/005.png) Use the recycle bin @@ -125,7 +125,7 @@ Use the recycle bin > > The recycle bin is a tenant-level feature. Enable it with caution. -![Recycle Bin tab](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/006.png) +![Recycle Bin tab](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/006.png) Use the command-line window @@ -133,7 +133,7 @@ Use the command-line window * You can perform the following operations on the tab: Connect to the data source by using OceanBase Client (OBClient). -![Command-line Window tab](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/007.png) +![Command-line Window tab](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/007.png) ### SQL development @@ -151,25 +151,25 @@ Use the command-line window Before formatting - ![Before formatting](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/008.png) + ![Before formatting](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/008.png) After formatting - ![After formatting](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/009.png) + ![After formatting](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/009.png) * Syntax prompts * ODC supports keyword prompts to minimize spelling errors. - ![Keyword prompt](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/010.png) + ![Keyword prompt](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/010.png) * ODC supports database object prompts. This allows you to quickly find the target from numerous database objects. - ![Object name prompt](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/011.png) + ![Object name prompt](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/011.png) * ODC supports column name prompts based on the table that you are dealing with. - ![Column name prompt](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/012.png) + ![Column name prompt](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/012.png) * SQL check @@ -183,11 +183,11 @@ Use the command-line window Built-in check rules: - ![Check rules](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/013.png) + ![Check rules](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/013.png) Perform an SQL check: - ![Perform a check](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/014.png) + ![Perform a check](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/014.png) * SQL scripts @@ -197,7 +197,7 @@ Use the command-line window * You can drag a snippet to the SQL editing area. The operation is easy and fast, saving you from memorizing all the SQL or PL statements. - ![Snippets](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/015.png) + ![Snippets](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/015.png) * SQL scripts @@ -205,7 +205,7 @@ Use the command-line window * You can use the saved scripts for efficient queries. - ![SQL scripts](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/016.png) + ![SQL scripts](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/016.png) #### Result sets @@ -213,15 +213,15 @@ Use the command-line window * Data can be displayed in row mode for you to have a global view. - ![Display in row mode](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/017.png) + ![Display in row mode](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/017.png) * Data can be displayed in column mode for you to focus on details. - ![Display in column mode](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/018.png) + ![Display in column mode](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/018.png) * Large object (LOB) data can be displayed in texts, hexadecimal values, or images. - ![LOB data displayed in image ](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/019.png) + ![LOB data displayed in image ](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/019.png) * Edit and export the result set @@ -239,7 +239,7 @@ Use the command-line window * Multiple encoding formats are supported. - ![Result set export](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/020.png) + ![Result set export](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/020.png) #### SQL execution details and plans @@ -253,7 +253,7 @@ Use the command-line window * The trace ID of each SQL statement is recorded for easier troubleshooting. - ![Execution duration](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/021.png) + ![Execution duration](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/021.png) * Execution details @@ -261,8 +261,8 @@ Use the command-line window * ODC displays the entire execution process of an SQL statement, from the driver to OceanBase Database Proxy (ODP) and OBServer node, making end-to-end diagnostics possible. - ![Execution details](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/022.png) - ![Execution details](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/023.png) + ![Execution details](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/022.png) + ![Execution details](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/023.png) #### Database objects diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table.md b/docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table.md similarity index 98% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table.md rename to docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table.md index 50e29b9a3..5119e89a2 100644 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table.md +++ b/docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table.md @@ -11,7 +11,7 @@ weight: 4 In OceanBase Database, partitioning allows you to decompose a table into multiple smaller and more manageable parts called partitions based on specific rules. Each partition is an independent object with its own name and may have its own storage features. For example, the following figure shows a table that consists of five partitions, which are distributed across two servers. -![Partitioned table](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table/001.png) +![Partitioned table](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table/001.png) An application that accesses a database logically accesses only one table or one index. However, the table may consist of multiple physical partitions. Each partition is an independent object and can be independently accessed or accessed as part of the table. The partitions are completely transparent to the application and do not affect the business logic of the application. @@ -361,7 +361,7 @@ Query OK, 0 rows affected Subpartitioning is a technique that partitions a table based on two dimensions. For example, it is frequently used in scenarios that involve bills. `HASH` partitioning by `user_id` is first performed, followed by `RANGE` partitioning based on bill creation time. -![Subpartitioning](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table/002.png) +![Subpartitioning](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table/002.png) OceanBase Database in MySQL mode supports the `HASH`, `RANGE`, `LIST`, `KEY`, `RANGE COLUMNS`, and `LIST COLUMNS` partitioning types, and a combination of any two partitioning types as the subpartitioning type. diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality.md b/docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality.md similarity index 97% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality.md rename to docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality.md index a533e5327..7e009f011 100644 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality.md +++ b/docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality.md @@ -11,27 +11,27 @@ weight: 5 MySQL Database supports only local indexes. Unlike a local index, the partitioning of a global index is independent of the partitioning of the table. You can specify the partitioning rules and the number of partitions for a global index. These rules and this number do not have to be the same as those of the table. -![Global index](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/001.png) +![Global index](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/001.png) ### Benefits Most indexes in a relational database are in a B+ Tree structure, where leaf nodes are stored in order by key values. Key values of an index correspond to the data in the table. When you specify the index conditions for data access, the database locates the target data by searching for the corresponding key value in the B+ Tree. -![B+ Tree](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/002.png) +![B+ Tree](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/002.png) If a table is split into multiple shards, or partitions in OceanBase Database, how to split the table index? In MySQL Database, the index is split with the table, and an index shard is used for retrieving data in the corresponding table shard. Such an index is known as a local index. You can also create a local index in OceanBase Database with ease by specifying a `local` keyword at the end of the `CREATE INDEX` statement. Local indexes cause some issues. First, if you use local indexes, you must specify the partitioning key in a query. Otherwise, the database does not know which partition contains the queried data, and will enumerate all the partitions, making the query inefficient. In the example as shown in the following figure, the partitioning key of the `employ` table is `emp_id`, and the partitioning key is not specified in the filter condition in the query statement. The result in the red box indicates that database has scanned all partitions. -![1](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/003.png) +![1](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/003.png) Another issue is that local indexes are created within partitions, so that index key values may not be globally unique. In the example as shown in the following figure, the key value `Edward` may exist in both local indexes of two partitions. Therefore, you must specify the partitioning key of partitions when you create a local index with a `UNIQUE` constraint in a database. -![2](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/004.png) +![2](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/004.png) To simplify the use of local indexes, OceanBase Database in MySQL mode allows you to create global indexes. The differences between global and local indexes are as follows: The structure of the global index for a table is independent of the table partitions. The key values of a global index may correspond to data in different partitions of the table. For example, in the index structure on the right side of the following figure, the key values `1`, `2`, and `5` correspond to the data in two partitions. This way, you no longer need to specify a partitioning key when you use a global index. In addition, the index key values will be globally unique because the structure of the global index is independent of the table. -![Global index](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/005.png) +![Global index](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/005.png) ### Sample statements @@ -505,7 +505,7 @@ Here is an example: After you add tables `t1` and `t2` to the table group, their partitions with identical data are stored on the same node, as shown in the following figure. -![tablegroup](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/006.png) +![tablegroup](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/006.png) If two partitions adopting the same partitioning rule exist on the same node, you can perform a `JOIN` operation on their partitioning keys without redistributing the partition data or using the network. The aforementioned special `JOIN` operation in OceanBase Database is called a partition-wise join, which significantly reduces the network overheads. @@ -979,7 +979,7 @@ The data structure of an auto-increment column in `NOORDER` mode consists of two * Cache: an auto-increment value range that exists in each OBServer node and is requested from the internal table. -![NOORDER mode](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/007.png) +![NOORDER mode](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/007.png) For an auto-increment column in `NOORDER` mode, OBServer nodes are independent of each other. Each OBServer node can obtain an auto-increment value range from the internal table and record the range in the server cache. Auto-increment values are obtained from the local cache without accessing the central node. @@ -989,7 +989,7 @@ This mode is implemented based on the centralized cache. Values in a sequence or The following figure shows the working principle of an auto-increment column in `ORDER` mode. -![ORDER mode](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/008.png) +![ORDER mode](/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/008.png) In `ORDER` mode, an auto-increment column will select the OBServer node that is the leader of the current cluster and where RootService is deployed to provide services. Other OBServer nodes that serve as followers must send an RPC request to apply for auto-increment values from the leader. The leader will request an auto-increment value range from the internal table and cache the value range. diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/_index.md b/docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/_index.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/_index.md rename to docs/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/_index.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/00_introduction.md b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/00_introduction.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/00_introduction.md rename to docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/00_introduction.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/01_overview_of_diagnosis_and_tuning.md b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/01_overview_of_diagnosis_and_tuning.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/01_overview_of_diagnosis_and_tuning.md rename to docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/01_overview_of_diagnosis_and_tuning.md diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route.md b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route.md similarity index 97% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route.md rename to docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route.md index 67c7145b0..925a8ae51 100644 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route.md +++ b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route.md @@ -11,7 +11,7 @@ OceanBase Database Proxy (ODP) is a dedicated proxy server for OceanBase Databas Although ODP adds a hop to the database access link, ODP serves as a proxy server that provides various features and benefits. The following figure shows a sample deployment architecture where ODP is used. -![ODP](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/001.png) +![ODP](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/001.png) As shown in the preceding figure, the application is a business application and is allocated with three ODP nodes that run obproxy processes. In actual deployment, a load balancer such as F5, LVS, or Nginx is deployed between the ODP nodes and the application to distribute requests to multiple ODP nodes, to which OBServer nodes are connected. Six OBServer nodes are deployed in the sample deployment architecture. @@ -75,7 +75,7 @@ Based on the routing feature, a query can be accurately routed to the OBServer n The following figure shows the routing logic. -![Routing logic](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/002.png) +![Routing logic](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/002.png) 1. Parse the SQL request and extract information. @@ -105,7 +105,7 @@ This section describes how to read data from a partition leader in strong consis All partition leaders involved in an SQL statement with a local plan are stored on the OBServer node where the current session resides. The OBServer node does not need to interact with other nodes during execution of the SQL statement. -![Local plan](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/003.png) +![Local plan](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/003.png) You can execute the `EXPLAIN` statement to query a local plan. The output is as follows: @@ -123,7 +123,7 @@ You can execute the `EXPLAIN` statement to query a local plan. The output is as All partition leaders involved in an SQL statement with a remote plan are stored on an OBServer node other than the one where the current session resides. The current OBServer node must forward the SQL statement or subplan. -![Remote plan](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/004.png) +![Remote plan](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/004.png) You can execute the `EXPLAIN` statement to query a remote plan, which contains `EXCHANGE REMOTE` operators. The output is as follows: @@ -153,7 +153,7 @@ A distributed plan does not define the relationship between partition leaders in A distributed plan is scheduled in parallel execution mode and divided into multiple steps during scheduling. Each step is called a data flow operation (DFO). -![Distributed plan](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/005.png) +![Distributed plan](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/005.png) You can execute the `EXPLAIN` statement to query a distributed plan, which contains `EXCHANGE DISTR` operators. The output is as follows: @@ -355,7 +355,7 @@ Cluster routing allows you to access different clusters. The key to cluster rout Note that the RootService list does not need to contain all the cluster servers. ODP obtains the list of servers in a cluster from a view. Generally, the RootService list contains servers where RootService is located. -![Cluster routing procedure](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/006.png) +![Cluster routing procedure](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/006.png) As can be seen from the preceding figure, OceanBase Cloud Platform (OCP) is a key module in cluster routing. If cluster routing issues occur in your production environment, check whether OCP operates properly. @@ -392,7 +392,7 @@ Unlike the routing information of the `sys` tenant, the routing information of a ODP does not obtain routing information of a user tenant from a unit-related table, but by using the special table name `__all_dummy`, which indicates a query for the tenant information. ODP obtains the server list of the tenant from the internal table `__all_virtual_proxy_schema`. For ODP to access the `__all_virtual_proxy_schema` table, you must specify the table name `__all_dummy` and the tenant name to obtain the node information of the tenant. -![Routing for a user tenant](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/007.png) +![Routing for a user tenant](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/007.png) ODP stores the obtained tenant information in the local memory and updates the cache information according to certain strategies. For the `sys` tenant, ODP initiates a pull task every 15 seconds to obtain the latest information. For user tenants, ODP refreshes the routing cache in accordance with the following strategies: diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/03_manage_connections.md b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/03_manage_connections.md similarity index 99% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/03_manage_connections.md rename to docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/03_manage_connections.md index c83d56bae..d014a07bb 100644 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/03_manage_connections.md +++ b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/03_manage_connections.md @@ -27,11 +27,11 @@ ODP provides the following connection management features: When you connect to a standalone database from a client, only one physical connection exists between your client and the database, as shown in the following figure. -![Standalone mapping](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/03_manage_connections/001.png) +![Standalone mapping](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/03_manage_connections/001.png) When you use ODP to connect to OceanBase Database, one physical connection exists between your client and ODP, and multiple physical connections can exist between ODP and OBServer nodes, as shown in the following figure. The connection between your client and ODP is called a client session, and those between ODP and OBServer nodes are called server sessions. -![Server session mapping](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/03_manage_connections/002.png) +![Server session mapping](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/03_manage_connections/002.png) If the data accessed by your client is stored on different OBServer nodes, ODP will create multiple physical connections to OceanBase Database. It will also manage and reuse these connections. However, your client perceives only one logical connection. This allows ODP to provide a wide range of features, such as primary/standby cluster separation, read/write splitting, data access request routing for partitioned tables, prepared statements in a distributed architecture, and backend exception shielding. diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/04_analyze_sql_monitoring_view.md b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/04_analyze_sql_monitoring_view.md similarity index 99% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/04_analyze_sql_monitoring_view.md rename to docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/04_analyze_sql_monitoring_view.md index d56aa6da4..945bed8de 100644 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/04_analyze_sql_monitoring_view.md +++ b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/04_analyze_sql_monitoring_view.md @@ -15,7 +15,7 @@ OceanBase Database V4.x provides a variety of views. You can obtain the basic in These views show you the internal architecture of OceanBase Database and details about the system operation status. Views allow you to learn about the system components of OceanBase Database, check their status in real time, and understand the relationships between them. Internal views are one of the best tools that help you get familiar with OceanBase Database. Corresponding data dictionary views are shown in the following figure. -![Views](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/04_analyze_sql_monitoring_view/001.jpeg) +![Views](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/04_analyze_sql_monitoring_view/001.jpeg) The data sources of metrics are internal dynamic performance views of OceanBase Database. All metrics can be queried by using SQL statements. Dynamic performance views are classified into `GV$` views and `V$` views. An external monitoring system, such as OceanBase Cloud Platform (OCP), deploys its agent process on each database server and regularly pulls local monitoring information (`V$` views) by using SQL APIs. Some global information, such as RootService-related information, is collected from the central node. All monitoring data is reported to the monitoring system database and aggregated by cluster, tenant, node, and resource unit, to display the metrics on the monitoring dashboard. diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/05_management_execution_plan.md b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/05_management_execution_plan.md similarity index 99% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/05_management_execution_plan.md rename to docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/05_management_execution_plan.md index ecdd553be..f733e7197 100644 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/05_management_execution_plan.md +++ b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/05_management_execution_plan.md @@ -36,7 +36,7 @@ dml_statement: | REPLACE statement ``` -![EXPLAIN](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/05_management_execution_plan/001.png) +![EXPLAIN](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/05_management_execution_plan/001.png) ### Parameters @@ -114,7 +114,7 @@ The `EXPLAIN` and `EXPLAIN EXTENDED_NOADDR` statements are most commonly used in In OceanBase Database, the first part of the output of `EXPLAIN` is the tree structure of the execution plan. The hierarchy of operations in the tree is represented by the indentation of the operators. Operators at the deepest level are executed first. Operators at the same level are executed in the specified execution order. The following figure shows the tree structure of the execution plan described in the preceding example: - ![Plan display](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/05_management_execution_plan/002.png) + ![Plan display](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/05_management_execution_plan/002.png) Operator 0 is a `HASH JOIN` operator and has two subnodes: Operators 1 and 2, which are `TABLE SCAN` operators. The execution logic of Operator 0 is as follows: diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/06_sql_tuning.md b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/06_sql_tuning.md similarity index 99% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/06_sql_tuning.md rename to docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/06_sql_tuning.md index d19c6abae..db5fc833d 100644 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/06_sql_tuning.md +++ b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/06_sql_tuning.md @@ -452,7 +452,7 @@ After receiving an SQL request, OceanBase Database uses the fast parser module t In most cases, obtaining an execution plan directly from the plan cache takes at least an order of magnitude less time than regenerating an execution plan, and thus makes the SQL response quicker. -![Plan cache](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/06_sql_tuning/001.png) +![Plan cache](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/06_sql_tuning/001.png) ### Bad case of the plan cache @@ -1024,7 +1024,7 @@ explain select count(*) from test; However, if you use an index when you query a large number of columns, table access by index primary key is required. You must query other columns from the primary table based on the primary key column contained in the index. The cost of table access by index primary key is very high. Generally, the performance of table access by index primary key is only 1/10 that of a full table scan. Especially, if the filter condition has poor selectivity, the cost of table access by index primary key is impossible to ignore. -![Index table](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/06_sql_tuning/002.png) +![Index table](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/06_sql_tuning/002.png) The following statement queries all rows of the `a` and `b` columns, with an index created on the `b` column. The `EST.TIME` value estimated by the optimizer for a full table scan without using the index is 2 µs. diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues.md b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues.md similarity index 97% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues.md rename to docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues.md index cd782be89..e779bae85 100644 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues.md +++ b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues.md @@ -29,11 +29,11 @@ Data is processed through the following link: `application server <-> OceanBase In the case of an end-to-end performance issue, such as long response time (RT) detected on the application server, you need to first find the component that has caused the issue on the database access link, and then troubleshoot the component. -![End-to-end tracing 01](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/001.png) +![End-to-end tracing 01](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/001.png) -![End-to-end tracing 02](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/002.png) +![End-to-end tracing 02](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/002.png) -![End-to-end tracing 03](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/003.png) +![End-to-end tracing 03](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/003.png) Two paths are involved in end-to-end tracing: @@ -328,23 +328,23 @@ Collect the information recorded by SQL plan monitor based on the trace ID. An HTML file is returned. You can open it to view the collected information. -![Sample information](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/004.png) +![Sample information](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/004.png) The preceding SQL statement is simple and has a simple execution plan that involves `COUNT` operations in two phases. In the first phase, three threads of Operator 3 perform `COUNT` operations separately. In the second phase, Operator 0 calculates the sum of count results from all threads. The following figure shows the sample information returned by SQL plan monitor. You can view the number of threads used by each operator and the number of rows returned by each operator. -![Example](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/005.png) +![Example](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/005.png) In the preceding figure, the granule count for the `PHY_GRANULE_ITERATOR` operator is highlighted in yellow. If multiple granules exist, one granule is distributed to each of the three threads at first. After a thread completes the granule distributed to it, it contends for other granules in the pool. You can move your pointer over the block highlighted in yellow to view the granule count. In the preceding figure, the job is divided into 12 granules. For more information about granules, see [Introduction to parallel execution](https://en.oceanbase.com/docs/common-oceanbase-database-10000000001378041). The `RESCAN` column in the following figure shows that the three threads have processed data of 1+2, 1+3, and 1+4 granules respectively. 1 indicates the granule originally distributed to each thread. 2, 3, and 4 indicate the granules that the threads subsequently contended for from the pool. -![Details](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/006.png) +![Details](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/006.png) In this example, the granules are almost evenly distributed because the amount of data is very small. When an operator involves a large amount of data, a large number of threads may be allocated to it. If only a few threads are working, you can collect the information recorded by SQL plan monitor and post it to the Q&A module in the OceanBase community or send it to OceanBase Technical Support. For example, in the following figure, a few threads of the `HASH JOIN` operator processed most of the data. -![image](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/007.png) +![image](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/007.png) ## Typical scenarios of SQL performance issues for OBServer nodes @@ -362,7 +362,7 @@ OceanBase Database provides a variety of internal tables and system logs for you The following figure shows the major types of OBServer node exceptions based on the preceding analysis: -![Performance jitter](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/008.png) +![Performance jitter](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/008.png) ### Execution issues @@ -370,7 +370,7 @@ The following figure shows the major types of OBServer node exceptions based on The execution process of an SQL query is divided into a compilation phase and an execution phase. An execution plan is generated in the compilation phase, which consists of several sub-phases such as lexical parsing, syntax parsing, syntax optimization, and code generation. Then, the execution plan is submitted to the executor for execution, and the result is returned. The process of parsing an SQL query to generate the execution plan is known as hard parsing. Hard parsing consumes considerable resources and affects the duration of SQL execution. Therefore, a generated execution plans is stored in the plan cache. When the same SQL query is received next time, the system first checks whether it hits the plan cache. If yes, the cached plan is extracted and submitted to the executor for execution. This process is defined as soft parsing. This way, it is unnecessary to perform hard parsing for each SQL query, thereby reducing resource consumption. Therefore, the key to performance tuning is to make sure that SQL queries hit the plan cache and the plan is optimal. -![Execution process](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/009.png) +![Execution process](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/009.png) The optimizer may generate suboptimal execution plans due to various reasons, such as missing indexes, outdated statistics, buffer tables, and cardinality. The execution of a suboptimal execution plan requires massive logical reads and scanning of a large amount of data. As a result, the time consumption increases and the throughput decreases. diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/08_performance_diagnosis_by_sql_diagnoser.md b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/08_performance_diagnosis_by_sql_diagnoser.md similarity index 97% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/08_performance_diagnosis_by_sql_diagnoser.md rename to docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/08_performance_diagnosis_by_sql_diagnoser.md index 6530991e7..874f80a30 100644 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/08_performance_diagnosis_by_sql_diagnoser.md +++ b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/08_performance_diagnosis_by_sql_diagnoser.md @@ -21,7 +21,7 @@ As shown in the following figure, SQL Diagnoser contains two diagnostic rule eng - The dynamic rule engine queries the internal performance views `gv$(ob_)sql_audit` and `gv$(ob_)plan_cache_plan_stat` of OceanBase Database as well as tables and indexes to analyze SQL statement exceptions. -![Architecture](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/08_performance_diagnosis_by_sql_diagnoser/001.png) +![Architecture](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/08_performance_diagnosis_by_sql_diagnoser/001.png) ## Use SQL Diagnoser diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag.md b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag.md similarity index 98% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag.md rename to docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag.md index bc29ca45a..bf9f2f691 100644 --- a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag.md +++ b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag.md @@ -11,7 +11,7 @@ You can use OceanBase Diagnostic Tool (obdiag) for diagnostics and analytics. In the native distributed database system OceanBase Database, root cause analysis for faults is complex because many factors may be involved, such as the server environment, parameters, and running load. Experts must collect and analyze extensive information during troubleshooting. Therefore, obdiag is introduced to help efficiently collect information scattered on various nodes and find their association. -![obdiag](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/001.png) +![obdiag](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/001.png) ### Benefits @@ -25,13 +25,13 @@ obdiag is an agile diagnostic tool designed for OceanBase Database. It provides - **High scalability**: The inspection, scenario-based information collection, and root cause analysis features of obdiag are all available as add-ons. You can add custom diagnostic scenarios at low costs. -![Benefits](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/002.png) +![Benefits](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/002.png) ### Features obdiag can scan, collect, analyze, and diagnose information such as the logs, SQL audit records, and the process stack information of OceanBase Database. You can use obdiag with ease, no matter whether your OceanBase cluster is deployed manually or by using OceanBase Cloud Platform (OCP) or OBD. obdiag has the following features: -![Features](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/003.png) +![Features](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/003.png) - **Cluster inspection**: You can use `obdiag check` commands to inspect the status of an OceanBase cluster. The inspection process analyzes the cluster from perspectives of the system kernel parameters and internal tables, identifies the causes of existing or possible exceptions, and provides O&M suggestions. @@ -873,4 +873,4 @@ Root cause analysis scenarios are recorded in Python files under the `~/.obdiag/ obdiag supports cluster inspection, diagnostic analysis, and information collection. You can easily inspect an OceanBase cluster and recover the cluster based on the diagnostics report. If a cluster encounters an unknown exception, obdiag allows you to analyze the logs to narrow the troubleshooting scope. If a cluster encounters a known exception, obdiag allows you to directly analyze the root cause based on the root cause analysis report. If the problem persists, you can collect diagnostic information and post it to the QA module in the OceanBase community or send it to OceanBase Technical Support. -![Overall process](/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/004.png) \ No newline at end of file +![Overall process](/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/004.png) \ No newline at end of file diff --git a/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/_index.md b/docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/_index.md similarity index 100% rename from docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/_index.md rename to docs/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/_index.md diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 1d05bb287..9f8cb2fde 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -1,294 +1,280 @@ -import { themes as prismThemes } from 'prism-react-renderer' -import type { Config } from '@docusaurus/types' import type * as Preset from '@docusaurus/preset-classic' +import type {Config} from '@docusaurus/types' +import {themes as prismThemes} from 'prism-react-renderer' -const prod_docs = [ - { - label: "OceanBase Documents", - href: "https://en.oceanbase.com/docs" - }, - { - label: 'OBDeployer', - href: "https://en.oceanbase.com/docs/community-obd-en-10000000001181553" - }, - { - label: 'ob-operator', - href: "https://oceanbase.github.io/ob-operator/" - }, -] +const prod_docs = + [ + {label: 'OceanBase Documents', href: 'https://en.oceanbase.com/docs'}, + { + label: 'OBDeployer', + href: 'https://en.oceanbase.com/docs/community-obd-en-10000000001181553' + }, + {label: 'ob-operator', href: 'https://oceanbase.github.io/ob-operator/'}, + ] -const user_manual = [ - { - label: "Quick Starts And Hands-On Practices (in English)", - to: '/docs/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_01_overview_of_the_oceanbase_database/overview' - }, - { - label: 'Quick Starts And Hands-On Practices (in Chinese)', - href: "https://www.oceanbase.com/docs/enterprise-tutorials-cn-1000000001390092" - }, - { - label: "Operation And Maintenance Manual (in Chinese)", - to: '/docs/user_manual/operation_and_maintenance/about_this_manual/overview' - } -] + const user_manual = + [ + { + label: 'Quick Starts And Hands-On Practices (in English)', + to: '/docs/user_manual/quick_starts/en-US/chapter_01_overview_of_the_oceanbase_database/overview' + }, + { + label: 'Quick Starts And Hands-On Practices (in Chinese)', + href: + 'https://www.oceanbase.com/docs/enterprise-tutorials-cn-1000000001390092' + }, + { + label: 'Operation And Maintenance Manual (in Chinese)', + to: '/docs/user_manual/operation_and_maintenance/about_this_manual/overview' + } + ] -const dev_manual = [ - { - label: "OceanBase Developer Guide", - href: "https://oceanbase.github.io/oceanbase/" - }, - { - label: "MiniOB Developer Guide", - href: "https://oceanbase.github.io/miniob", - } -] + const dev_manual = + [ + { + label: 'OceanBase Developer Guide', + href: 'https://oceanbase.github.io/oceanbase/' + }, + { + label: 'MiniOB Developer Guide', + href: 'https://oceanbase.github.io/miniob', + } + ] -const docs = [ - { - label: 'Product Docs', - href: "https://en.oceanbase.com/docs", - dropdownItems: prod_docs, - }, - { - label: 'User Manual', - href: "https://oceanbase.github.io", - dropdownItems: user_manual, - }, - { - label: 'Developer Manual', - href: "https://oceanbase.github.io/oceanbase/", - dropdownItems: dev_manual, - }, -] + const docs = + [ + { + label: 'Product Docs', + href: 'https://en.oceanbase.com/docs', + dropdownItems: prod_docs, + }, + { + label: 'User Manual', + href: 'https://oceanbase.github.io', + dropdownItems: user_manual, + }, + { + label: 'Developer Manual', + href: 'https://oceanbase.github.io/oceanbase/', + dropdownItems: dev_manual, + }, + ] -const sigs = [ - { - label: "AI", - to: "/docs/sig/AI/sig_intro" - }, - { - label: 'cloud-native', - to: "/docs/sig/cloud-native/sig_intro" - }, - { - label: 'compilation', - to: "/docs/sig/compilation/sig_intro" - }, - { - label: "develop-tools", - to: "/docs/sig/develop-tools/sig_intro" - }, - { - label: "MiniOB", - to: "/docs/sig/miniob/sig_intro" - }, - { - label: 'obdiag', - to: "/docs/sig/obdiag/sig_intro" - }, - { - label: "operation", - to: "/docs/sig/operation/sig_intro" - } -] + const sigs = + [ + {label: 'AI', to: '/docs/sig/AI/sig_intro'}, + {label: 'cloud-native', to: '/docs/sig/cloud-native/sig_intro'}, + {label: 'compilation', to: '/docs/sig/compilation/sig_intro'}, + {label: 'develop-tools', to: '/docs/sig/develop-tools/sig_intro'}, + {label: 'MiniOB', to: '/docs/sig/miniob/sig_intro'}, + {label: 'obdiag', to: '/docs/sig/obdiag/sig_intro'}, + {label: 'operation', to: '/docs/sig/operation/sig_intro'} + ] -const community = [ - { - label: 'Special Interest Group(SIG)', - href: "/docs/sig/overview/list", - }, - { - label: 'Community Honors', - href: "/docs/honor/overview", - }, - { - label: 'GitHub Discussion', - href: 'http://github.com/oceanbase/oceanbase/discussions', - }, - { - label: 'Slack', - href: 'https://join.slack.com/t/oceanbase/shared_invite/zt-1e25oz3ol-lJ6YNqPHaKwY_mhhioyEuw', - }, - { - label: 'Forum (in Chinese)', - href: 'https://ask.oceanbase.com/', - }, - { - label: 'Stack Overflow', - href: 'https://stackoverflow.com/questions/tagged/oceanbase', - }, -] + const community = + [ + { + label: 'Special Interest Group(SIG)', + href: '/docs/sig/overview/list', + }, + { + label: 'Community Honors', + href: '/docs/honor/overview', + }, + { + label: 'GitHub Discussion', + href: 'http://github.com/oceanbase/oceanbase/discussions', + }, + { + label: 'Slack', + href: + 'https://join.slack.com/t/oceanbase/shared_invite/zt-1e25oz3ol-lJ6YNqPHaKwY_mhhioyEuw', + }, + { + label: 'Forum (in Chinese)', + href: 'https://ask.oceanbase.com/', + }, + { + label: 'Stack Overflow', + href: 'https://stackoverflow.com/questions/tagged/oceanbase', + }, + ] -const config: Config = { - title: 'OceanBase', - tagline: 'OceanBase is an enterprise distributed relational database management system developed by Ant Group.', - favicon: 'img/favicon.ico', + const config: Config = { + title: 'OceanBase', + tagline: + 'OceanBase is an enterprise distributed relational database management system developed by Ant Group.', + favicon: 'img/favicon.ico', - // Set the production url of your site here - url: 'https://oceanbase.github.io', - // Set the // pathname under which your site is served - // For GitHub pages deployment, it is often '//' - baseUrl: '/', + // Set the production url of your site here + url: 'https://oceanbase.github.io', + // Set the // pathname under which your site is served + // For GitHub pages deployment, it is often '//' + baseUrl: '/', - // GitHub pages deployment config. - // If you aren't using GitHub pages, you don't need these. - organizationName: 'oceanbase', // Usually your GitHub org/user name. - projectName: 'oceanbase.github.io', // Usually your repo name. + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. + organizationName: 'oceanbase', // Usually your GitHub org/user name. + projectName: 'oceanbase.github.io', // Usually your repo name. - onBrokenLinks: 'throw', - onBrokenMarkdownLinks: 'warn', + onBrokenLinks: 'throw', + onBrokenMarkdownLinks: 'warn', - // Even if you don't use internationalization, you can use this field to set - // useful metadata like html lang. For example, if your site is Chinese, you - // may want to replace "en" with "zh-Hans". - i18n: { - defaultLocale: 'en', - locales: ['en'], - }, + // Even if you don't use internationalization, you can use this field to + // set useful metadata like html lang. For example, if your site is + // Chinese, you may want to replace "en" with "zh-Hans". + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, - presets: [ - [ - 'classic', - { - docs: { - sidebarPath: './sidebars.ts', - // Please change this to your repo. - // Remove this to remove the "edit this page" links. - editUrl: - 'https://github.com/oceanbase/oceanbase.github.io/tree/main/', - }, - theme: { - customCss: './src/css/custom.css', - }, - } satisfies Preset.Options, - ], - ], + presets: [ + [ + 'classic', + { + docs: { + sidebarPath: './sidebars.ts', + // Please change this to your repo. + // Remove this to remove the "edit this page" links. + editUrl: + 'https://github.com/oceanbase/oceanbase.github.io/tree/main/', + }, + theme: { + customCss: './src/css/custom.css', + }, + } satisfies Preset.Options, + ], + ], - trailingSlash: false, - themeConfig: { - algolia: { - appId: '6JQM9QDU5V', - apiKey: '75f5591a502e47777a08a02b96bc09a1', - indexName: 'oceanbaseio', - contextualSearch: false, - searchPagePath: false, - }, - // Replace with your project's social card - navbar: { - title: 'OceanBase', - logo: { - alt: 'OceanBase Logo', - src: 'img/logo.png', - }, - items: [ - { - position: "left", - label: "Blogs", - to: "docs/blogs/arch/all-in-one" - }, - { - type: 'dropdown', - label: 'Docs', - position: 'left', - items: docs, + trailingSlash: false, + themeConfig: { + algolia: { + appId: '6JQM9QDU5V', + apiKey: '75f5591a502e47777a08a02b96bc09a1', + indexName: 'oceanbaseio', + contextualSearch: false, + searchPagePath: false, }, - { - type: 'dropdown', - label: 'Community', - position: 'left', - items: community, - // to: "/docs/sig/obdiag/intro" - }, - { - label: 'Data + AI', - type: 'dropdown', - position: 'left', + // Replace with your project's social card + navbar: { + title: 'OceanBase', + logo: { + alt: 'OceanBase Logo', + src: 'img/logo.png', + }, items: [ { - label: 'AI Workshops', - href: 'https://oceanbase-devhub.github.io', - }, - { - label: 'RAG Bot', - href: 'https://oceanbase-devhub.github.io/ai-workshop-2024', + position: 'left', + label: 'Blogs', + to: 'docs/blogs/arch/all-in-one' }, { - label: 'Dify (MySQL Compatible)', - href: 'https://oceanbase-devhub.github.io/dify/dify@oceanbase-workshop', + type: 'dropdown', + label: 'Docs', + position: 'left', + items: docs, }, { - label: 'DB-GPT', - href: 'https://oceanbase-devhub.github.io/DB-GPT/docker/compose_examples/ob_dbgpt_tutorial', + type: 'dropdown', + label: 'Community', + position: 'left', + items: community, + // to: "/docs/sig/obdiag/intro" }, - ], - }, - { - label: 'Downloads', - position: 'left', - href: "https://en.oceanbase.com/softwarecenter" - }, - { - href: 'https://github.com/oceanbase', - label: 'GitHub', - position: 'right', - }, - ], - }, - footer: { - style: 'dark', - links: [ - { - title: 'Community', - items: [ { - label: 'GitHub Discussion', - href: 'http://github.com/oceanbase/oceanbase/discussions', + label: 'Data + AI', + type: 'dropdown', + position: 'left', + items: [ + { + label: 'AI Workshops', + href: 'https://oceanbase-devhub.github.io', + }, + { + label: 'RAG Bot', + href: 'https://oceanbase-devhub.github.io/ai-workshop-2024', + }, + { + label: 'Dify (MySQL Compatible)', + href: + 'https://oceanbase-devhub.github.io/dify/dify@oceanbase-workshop', + }, + { + label: 'DB-GPT', + href: + 'https://oceanbase-devhub.github.io/DB-GPT/docker/compose_examples/ob_dbgpt_tutorial', + }, + ], }, { - label: 'Slack', - href: 'https://join.slack.com/t/oceanbase/shared_invite/zt-1e25oz3ol-lJ6YNqPHaKwY_mhhioyEuw', + label: 'Downloads', + position: 'left', + href: 'https://en.oceanbase.com/softwarecenter' }, { - label: 'Stack Overflow', - href: 'https://stackoverflow.com/questions/tagged/oceanbase', - }, - { - label: 'Forum (in Chinese)', - href: 'https://ask.oceanbase.com/', + href: 'https://github.com/oceanbase', + label: 'GitHub', + position: 'right', }, ], }, - { - title: 'SIG', - items: sigs, - }, - { - title: 'More', - items: [ + footer: { + style: 'dark', + links: [ { - label: 'About OceanBase', - href: 'https://en.oceanbase.com/about', + title: 'Community', + items: [ + { + label: 'GitHub Discussion', + href: 'http://github.com/oceanbase/oceanbase/discussions', + }, + { + label: 'Slack', + href: + 'https://join.slack.com/t/oceanbase/shared_invite/zt-1e25oz3ol-lJ6YNqPHaKwY_mhhioyEuw', + }, + { + label: 'Stack Overflow', + href: 'https://stackoverflow.com/questions/tagged/oceanbase', + }, + { + label: 'Forum (in Chinese)', + href: 'https://ask.oceanbase.com/', + }, + ], }, { - label: 'Blogs', - to: 'docs/blogs/arch/all-in-one', + title: 'SIG', + items: sigs, }, { - label: 'GitHub', - href: 'https://github.com/oceanbase/oceanbase', + title: 'More', + items: [ + { + label: 'About OceanBase', + href: 'https://en.oceanbase.com/about', + }, + { + label: 'Blogs', + to: 'docs/blogs/arch/all-in-one', + }, + { + label: 'GitHub', + href: 'https://github.com/oceanbase/oceanbase', + }, + ], }, ], + copyright: `Copyright © ${ + new Date().getFullYear()} OceanBase, Inc. Built with Docusaurus.`, }, - ], - copyright: `Copyright © ${new Date().getFullYear()} OceanBase, Inc. Built with Docusaurus.`, - }, - prism: { - theme: prismThemes.github, - darkTheme: prismThemes.dracula, - }, - } satisfies Preset.ThemeConfig, -} + prism: { + theme: prismThemes.github, + darkTheme: prismThemes.dracula, + }, + } satisfies Preset.ThemeConfig, + } export default config diff --git a/sidebars.ts b/sidebars.ts index 25eb5b177..34eaafd9e 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -77,13 +77,13 @@ const sidebars: SidebarsConfig = { 'honor/star_year_2024', 'honor/company_2024' ], - quick_starts_and_hands_on_practices_in_englishSidebar: [ + quick_startsSidebar: [ { type: 'category', label: 'Overview of the Oceanbase database', items: [{ type: 'autogenerated', - dirName: 'user_manual/quick_starts_and_hands_on_practices_in_english/chapter_01_overview_of_the_oceanbase_database' + dirName: 'user_manual/quick_starts/en-US/chapter_01_overview_of_the_oceanbase_database' }] }, { @@ -91,7 +91,7 @@ const sidebars: SidebarsConfig = { label: 'Deploy Oceanbase database', items: [{ type: 'autogenerated', - dirName: 'user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database' + dirName: 'user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database' }] }, { @@ -99,7 +99,7 @@ const sidebars: SidebarsConfig = { label: 'Test Oceanbase database', items: [{ type: 'autogenerated', - dirName: 'user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database' + dirName: 'user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database' }] }, { @@ -107,7 +107,7 @@ const sidebars: SidebarsConfig = { label: 'Migrate and synchronize data', items: [{ type: 'autogenerated', - dirName: 'user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase' + dirName: 'user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase' }] }, { @@ -115,7 +115,7 @@ const sidebars: SidebarsConfig = { label: 'Operation and maintenance', items: [{ type: 'autogenerated', - dirName: 'user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance' + dirName: 'user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance' }] }, { @@ -123,7 +123,7 @@ const sidebars: SidebarsConfig = { label: 'Using Oceanbase for business development', items: [{ type: 'autogenerated', - dirName: 'user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development' + dirName: 'user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development' }] }, { @@ -131,7 +131,7 @@ const sidebars: SidebarsConfig = { label: 'Diagnosis_and_tuning', items: [{ type: 'autogenerated', - dirName: 'user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning' + dirName: 'user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning' }] }, ], diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/001.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/002.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/003.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/003.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/003.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/003.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/004.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/004.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/004.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/004.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/005.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/005.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/005.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/005.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/006.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/006.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/006.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/006.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/007.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/007.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/007.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/007.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/008.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/008.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/008.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/008.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/009.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/009.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/009.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/03_deploy_personal_environment/009.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/05_view-resources/001.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/05_view-resources/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/05_view-resources/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/05_view-resources/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/06_create-tenant/001.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/06_create-tenant/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/06_create-tenant/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/06_create-tenant/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/06_create-tenant/002.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/06_create-tenant/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/06_create-tenant/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/06_create-tenant/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/06_create-tenant/003.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/06_create-tenant/003.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/06_create-tenant/003.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/06_create-tenant/003.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/07_connecting-tenants/001.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/07_connecting-tenants/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/07_connecting-tenants/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/07_connecting-tenants/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/07_connecting-tenants/002.png b/static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/07_connecting-tenants/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_02_deploy_oceanbase_database/07_connecting-tenants/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_02_deploy_oceanbase_database/07_connecting-tenants/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/001.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/002.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/003.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/003.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/003.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/003.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/004.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/004.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/004.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/004.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/005.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/005.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/005.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/005.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/006.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/006.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/006.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/006.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/007.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/007.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/007.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/007.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/008.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/008.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/008.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/008.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/009.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/009.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/009.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/009.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/010.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/010.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/010.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/010.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/011.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/011.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/011.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/011.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/012.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/012.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/012.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/012.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/013.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/013.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/013.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/013.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/014.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/014.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/014.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/014.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/015.png b/static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/015.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_03_test_oceanbase_database/06_jmeter_test/015.png rename to static/img/user_manual/quick_starts/en-US/chapter_03_test_oceanbase_database/06_jmeter_test/015.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization/001.png b/static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization/002.png b/static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/02_ecological_tools_of_migration_synchronization/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/001.png b/static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/002.png b/static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/003.png b/static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/003.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/003.png rename to static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/003.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/004.png b/static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/004.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/004.png rename to static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/004.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/005.png b/static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/005.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/005.png rename to static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/005.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/006.png b/static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/006.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/006.png rename to static/img/user_manual/quick_starts/en-US/chapter_04_migration_and_synchronization_oceanbase/07_migration_and_synchronization_through_other_tools/006.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/01_o_m_by_ocp/001.png b/static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/01_o_m_by_ocp/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/01_o_m_by_ocp/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/01_o_m_by_ocp/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/01_o_m_by_ocp/002.png b/static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/01_o_m_by_ocp/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/01_o_m_by_ocp/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/01_o_m_by_ocp/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/001.png b/static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/002.png b/static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/003.png b/static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/003.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/003.png rename to static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/003.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/004.png b/static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/004.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/004.png rename to static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/004.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/005.png b/static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/005.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/005.png rename to static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/005.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/006.png b/static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/006.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/006.png rename to static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/006.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/007.png b/static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/007.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/007.png rename to static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/007.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/008.png b/static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/008.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/008.png rename to static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/008.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/009.png b/static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/009.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/009.png rename to static/img/user_manual/quick_starts/en-US/chapter_05_operation_and_maintenance/03_o_m_by_ob-operator/009.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/001.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/002.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/003.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/003.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/003.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/003.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/004.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/004.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/004.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/004.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/005.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/005.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/005.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/005.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/006.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/006.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/006.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/006.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/007.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/007.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/007.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/007.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/008.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/008.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/008.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/008.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/009.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/009.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/009.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/009.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/010.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/010.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/010.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/010.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/011.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/011.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/011.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/011.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/012.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/012.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/012.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/012.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/013.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/013.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/013.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/013.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/014.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/014.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/014.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/014.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/015.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/015.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/015.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/015.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/016.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/016.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/016.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/016.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/017.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/017.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/017.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/017.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/018.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/018.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/018.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/018.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/019.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/019.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/019.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/019.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/020.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/020.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/020.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/020.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/021.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/021.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/021.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/021.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/022.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/022.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/022.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/022.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/023.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/023.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/023.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/02_using_odc_for_sql_development/023.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table/001.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table/002.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/03_horizontal_splitting_using_partition_table/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/001.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/002.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/003.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/003.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/003.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/003.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/004.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/004.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/004.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/004.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/005.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/005.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/005.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/005.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/006.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/006.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/006.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/006.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/007.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/007.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/007.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/007.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/008.png b/static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/008.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_06_using_ob_for_business_development/04_extended_functionality/008.png rename to static/img/user_manual/quick_starts/en-US/chapter_06_using_ob_for_business_development/04_extended_functionality/008.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/001.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/002.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/003.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/003.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/003.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/003.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/004.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/004.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/004.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/004.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/005.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/005.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/005.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/005.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/006.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/006.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/006.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/006.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/007.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/007.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/02_odp_sql_route/007.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/02_odp_sql_route/007.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/03_manage_connections/001.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/03_manage_connections/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/03_manage_connections/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/03_manage_connections/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/03_manage_connections/002.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/03_manage_connections/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/03_manage_connections/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/03_manage_connections/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/04_analyze_sql_monitoring_view/001.jpeg b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/04_analyze_sql_monitoring_view/001.jpeg similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/04_analyze_sql_monitoring_view/001.jpeg rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/04_analyze_sql_monitoring_view/001.jpeg diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/05_management_execution_plan/001.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/05_management_execution_plan/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/05_management_execution_plan/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/05_management_execution_plan/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/05_management_execution_plan/002.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/05_management_execution_plan/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/05_management_execution_plan/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/05_management_execution_plan/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/06_sql_tuning/001.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/06_sql_tuning/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/06_sql_tuning/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/06_sql_tuning/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/06_sql_tuning/002.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/06_sql_tuning/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/06_sql_tuning/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/06_sql_tuning/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/001.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/002.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/003.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/003.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/003.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/003.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/004.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/004.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/004.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/004.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/005.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/005.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/005.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/005.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/006.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/006.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/006.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/006.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/007.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/007.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/007.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/007.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/008.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/008.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/008.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/008.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/009.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/009.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/009.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/07_troubleshooting_sql_performance_issues/009.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/08_performance_diagnosis_by_sql_diagnoser/001.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/08_performance_diagnosis_by_sql_diagnoser/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/08_performance_diagnosis_by_sql_diagnoser/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/08_performance_diagnosis_by_sql_diagnoser/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/001.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/001.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/001.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/001.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/002.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/002.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/002.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/002.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/003.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/003.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/003.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/003.png diff --git a/static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/004.png b/static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/004.png similarity index 100% rename from static/img/user_manual/quick_starts_and_hands_on_practices_in_english/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/004.png rename to static/img/user_manual/quick_starts/en-US/chapter_07_diagnosis_and_tuning/09_diagnose_and_analyze_through_obdiag/004.png