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

totalo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 7d9da0ef740 Update sharding sample in user manual (#20011)
7d9da0ef740 is described below

commit 7d9da0ef74074cfd9faf34e847b0ea6c2c723c1c
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Tue Aug 9 13:56:00 2022 +0800

    Update sharding sample in user manual (#20011)
    
    * Update sharding sample in user manual
    
    * Update sharding sample in user manual
---
 .../spring-namespace/rules/sharding.cn.md          | 58 +++++++++++------
 .../spring-namespace/rules/sharding.en.md          | 72 ++++++++++++++--------
 .../jdbc/JDBCDatabaseCommunicationEngine.java      |  2 +-
 .../vertx/VertxDatabaseCommunicationEngine.java    |  2 +-
 4 files changed, 87 insertions(+), 47 deletions(-)

diff --git 
a/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/sharding.cn.md
 
b/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/sharding.cn.md
index 5a089135c6b..916221af143 100644
--- 
a/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/sharding.cn.md
+++ 
b/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/sharding.cn.md
@@ -128,10 +128,10 @@ weight = 1
 ```xml
 <beans xmlns="http://www.springframework.org/schema/beans";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-       
xmlns:shardingsphere="http://shardingsphere.apache.org/schema/shardingsphere/datasource";
        xmlns:context="http://www.springframework.org/schema/context";
        xmlns:tx="http://www.springframework.org/schema/tx";
-       
xmlns:encrypt="http://shardingsphere.apache.org/schema/shardingsphere/encrypt";
+       
xmlns:shardingsphere="http://shardingsphere.apache.org/schema/shardingsphere/datasource";
+       
xmlns:sharding="http://shardingsphere.apache.org/schema/shardingsphere/sharding";
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                            
http://www.springframework.org/schema/beans/spring-beans.xsd 
                            http://www.springframework.org/schema/tx 
@@ -140,41 +140,61 @@ weight = 1
                            
http://www.springframework.org/schema/context/spring-context.xsd
                            
http://shardingsphere.apache.org/schema/shardingsphere/datasource
                            
http://shardingsphere.apache.org/schema/shardingsphere/datasource/datasource.xsd
-                           
http://shardingsphere.apache.org/schema/shardingsphere/encrypt
-                           
http://shardingsphere.apache.org/schema/shardingsphere/encrypt/encrypt.xsd 
+                           
http://shardingsphere.apache.org/schema/shardingsphere/sharding
+                           
http://shardingsphere.apache.org/schema/shardingsphere/sharding/sharding.xsd
                            ">
     <context:component-scan 
base-package="org.apache.shardingsphere.example.core.mybatis" />
     
-    <bean id="ds" class="com.zaxxer.hikari.HikariDataSource" 
destroy-method="close">
+    <bean id="demo_ds_0" class="com.zaxxer.hikari.HikariDataSource" 
destroy-method="close">
+        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
+        <property name="jdbcUrl" 
value="jdbc:mysql://localhost:3306/demo_ds_0?serverTimezone=UTC&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
+        <property name="username" value="root"/>
+        <property name="password" value=""/>
+    </bean>
+    
+    <bean id="demo_ds_1" class="com.zaxxer.hikari.HikariDataSource" 
destroy-method="close">
         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
-        <property name="jdbcUrl" 
value="jdbc:mysql://localhost:3306/demo_ds?serverTimezone=UTC&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
+        <property name="jdbcUrl" 
value="jdbc:mysql://localhost:3306/demo_ds_1?serverTimezone=UTC&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
         <property name="username" value="root"/>
         <property name="password" value=""/>
     </bean>
     
-    <encrypt:encrypt-algorithm id="name_encryptor" type="AES">
+    <sharding:standard-strategy id="databaseStrategy" 
sharding-column="user_id" algorithm-ref="inlineStrategyShardingAlgorithm" />
+
+    <sharding:sharding-algorithm id="inlineStrategyShardingAlgorithm" 
type="INLINE">
         <props>
-            <prop key="aes-key-value">123456</prop>
+            <prop key="algorithm-expression">demo_ds_${user_id % 2}</prop>
         </props>
-    </encrypt:encrypt-algorithm>
-    <encrypt:encrypt-algorithm id="pwd_encryptor" type="assistedTest" />
+    </sharding:sharding-algorithm>
+    
+    <sharding:key-generate-algorithm id="snowflakeAlgorithm" type="SNOWFLAKE">
+    </sharding:key-generate-algorithm>
+    
+    <sharding:key-generate-strategy id="orderKeyGenerator" column="order_id" 
algorithm-ref="snowflakeAlgorithm" />
+    <sharding:key-generate-strategy id="itemKeyGenerator" 
column="order_item_id" algorithm-ref="snowflakeAlgorithm" />
     
-    <encrypt:rule id="encryptRule">
-        <encrypt:table name="t_user">
-            <encrypt:column logic-column="username" cipher-column="username" 
plain-column="username_plain" encrypt-algorithm-ref="name_encryptor" />
-            <encrypt:column logic-column="pwd" cipher-column="pwd" 
assisted-query-column="assisted_query_pwd" 
encrypt-algorithm-ref="pwd_encryptor" />
-        </encrypt:table>
-    </encrypt:rule>
+    <sharding:rule id="shardingRule">
+        <sharding:table-rules>
+            <sharding:table-rule logic-table="t_order" 
database-strategy-ref="databaseStrategy" 
key-generate-strategy-ref="orderKeyGenerator" />
+            <sharding:table-rule logic-table="t_order_item" 
database-strategy-ref="databaseStrategy" 
key-generate-strategy-ref="itemKeyGenerator" />
+        </sharding:table-rules>
+        <sharding:binding-table-rules>
+            <sharding:binding-table-rule logic-tables="t_order,t_order_item"/>
+        </sharding:binding-table-rules>
+        <sharding:broadcast-table-rules>
+            <sharding:broadcast-table-rule table="t_address"/>
+        </sharding:broadcast-table-rules>
+    </sharding:rule>
     
-    <shardingsphere:data-source id="encryptDataSource" data-source-names="ds" 
rule-refs="encryptRule" />
+    <shardingsphere:data-source id="shardingDataSource" 
database-name="sharding-databases" data-source-names="demo_ds_0, demo_ds_1" 
rule-refs="shardingRule" />
     
     <bean id="transactionManager" 
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
-        <property name="dataSource" ref="encryptDataSource" />
+        <property name="dataSource" ref="shardingDataSource" />
     </bean>
     <tx:annotation-driven />
     
     <bean id="sqlSessionFactory" 
class="org.mybatis.spring.SqlSessionFactoryBean">
-        <property name="dataSource" ref="encryptDataSource"/>
+        <property name="dataSource" ref="shardingDataSource"/>
         <property name="mapperLocations" 
value="classpath*:META-INF/mappers/*.xml"/>
     </bean>
     
diff --git 
a/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/sharding.en.md
 
b/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/sharding.en.md
index d42caf030a9..a689702fd93 100644
--- 
a/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/sharding.en.md
+++ 
b/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/sharding.en.md
@@ -128,10 +128,10 @@ Please refer to [Built-in Sharding Algorithm 
List](/en/user-manual/shardingspher
 ```xml
 <beans xmlns="http://www.springframework.org/schema/beans";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-       
xmlns:shardingsphere="http://shardingsphere.apache.org/schema/shardingsphere/datasource";
        xmlns:context="http://www.springframework.org/schema/context";
        xmlns:tx="http://www.springframework.org/schema/tx";
-       
xmlns:encrypt="http://shardingsphere.apache.org/schema/shardingsphere/encrypt";
+       
xmlns:shardingsphere="http://shardingsphere.apache.org/schema/shardingsphere/datasource";
+       
xmlns:sharding="http://shardingsphere.apache.org/schema/shardingsphere/sharding";
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                            
http://www.springframework.org/schema/beans/spring-beans.xsd 
                            http://www.springframework.org/schema/tx 
@@ -140,44 +140,64 @@ Please refer to [Built-in Sharding Algorithm 
List](/en/user-manual/shardingspher
                            
http://www.springframework.org/schema/context/spring-context.xsd
                            
http://shardingsphere.apache.org/schema/shardingsphere/datasource
                            
http://shardingsphere.apache.org/schema/shardingsphere/datasource/datasource.xsd
-                           
http://shardingsphere.apache.org/schema/shardingsphere/encrypt
-                           
http://shardingsphere.apache.org/schema/shardingsphere/encrypt/encrypt.xsd 
+                           
http://shardingsphere.apache.org/schema/shardingsphere/sharding
+                           
http://shardingsphere.apache.org/schema/shardingsphere/sharding/sharding.xsd
                            ">
     <context:component-scan 
base-package="org.apache.shardingsphere.example.core.mybatis" />
-    
-    <bean id="ds" class="com.zaxxer.hikari.HikariDataSource" 
destroy-method="close">
+
+    <bean id="demo_ds_0" class="com.zaxxer.hikari.HikariDataSource" 
destroy-method="close">
         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
-        <property name="jdbcUrl" 
value="jdbc:mysql://localhost:3306/demo_ds?serverTimezone=UTC&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
+        <property name="jdbcUrl" 
value="jdbc:mysql://localhost:3306/demo_ds_0?serverTimezone=UTC&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
         <property name="username" value="root"/>
         <property name="password" value=""/>
     </bean>
-    
-    <encrypt:encrypt-algorithm id="name_encryptor" type="AES">
+
+    <bean id="demo_ds_1" class="com.zaxxer.hikari.HikariDataSource" 
destroy-method="close">
+        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
+        <property name="jdbcUrl" 
value="jdbc:mysql://localhost:3306/demo_ds_1?serverTimezone=UTC&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
+        <property name="username" value="root"/>
+        <property name="password" value=""/>
+    </bean>
+
+    <sharding:standard-strategy id="databaseStrategy" 
sharding-column="user_id" algorithm-ref="inlineStrategyShardingAlgorithm" />
+
+    <sharding:sharding-algorithm id="inlineStrategyShardingAlgorithm" 
type="INLINE">
         <props>
-            <prop key="aes-key-value">123456</prop>
+            <prop key="algorithm-expression">demo_ds_${user_id % 2}</prop>
         </props>
-    </encrypt:encrypt-algorithm>
-    <encrypt:encrypt-algorithm id="pwd_encryptor" type="assistedTest" />
-    
-    <encrypt:rule id="encryptRule">
-        <encrypt:table name="t_user">
-            <encrypt:column logic-column="username" cipher-column="username" 
plain-column="username_plain" encrypt-algorithm-ref="name_encryptor" />
-            <encrypt:column logic-column="pwd" cipher-column="pwd" 
assisted-query-column="assisted_query_pwd" 
encrypt-algorithm-ref="pwd_encryptor" />
-        </encrypt:table>
-    </encrypt:rule>
-    
-    <shardingsphere:data-source id="encryptDataSource" data-source-names="ds" 
rule-refs="encryptRule" />
-    
+    </sharding:sharding-algorithm>
+
+    <sharding:key-generate-algorithm id="snowflakeAlgorithm" type="SNOWFLAKE">
+    </sharding:key-generate-algorithm>
+
+    <sharding:key-generate-strategy id="orderKeyGenerator" column="order_id" 
algorithm-ref="snowflakeAlgorithm" />
+    <sharding:key-generate-strategy id="itemKeyGenerator" 
column="order_item_id" algorithm-ref="snowflakeAlgorithm" />
+
+    <sharding:rule id="shardingRule">
+        <sharding:table-rules>
+            <sharding:table-rule logic-table="t_order" 
database-strategy-ref="databaseStrategy" 
key-generate-strategy-ref="orderKeyGenerator" />
+            <sharding:table-rule logic-table="t_order_item" 
database-strategy-ref="databaseStrategy" 
key-generate-strategy-ref="itemKeyGenerator" />
+        </sharding:table-rules>
+        <sharding:binding-table-rules>
+            <sharding:binding-table-rule logic-tables="t_order,t_order_item"/>
+        </sharding:binding-table-rules>
+        <sharding:broadcast-table-rules>
+            <sharding:broadcast-table-rule table="t_address"/>
+        </sharding:broadcast-table-rules>
+    </sharding:rule>
+
+    <shardingsphere:data-source id="shardingDataSource" 
database-name="sharding-databases" data-source-names="demo_ds_0, demo_ds_1" 
rule-refs="shardingRule" />
+
     <bean id="transactionManager" 
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
-        <property name="dataSource" ref="encryptDataSource" />
+        <property name="dataSource" ref="shardingDataSource" />
     </bean>
     <tx:annotation-driven />
-    
+
     <bean id="sqlSessionFactory" 
class="org.mybatis.spring.SqlSessionFactoryBean">
-        <property name="dataSource" ref="encryptDataSource"/>
+        <property name="dataSource" ref="shardingDataSource"/>
         <property name="mapperLocations" 
value="classpath*:META-INF/mappers/*.xml"/>
     </bean>
-    
+
     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
         <property name="basePackage" 
value="org.apache.shardingsphere.example.core.mybatis.repository"/>
         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
index 1da7d87033f..804b862cd1e 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
@@ -123,7 +123,7 @@ public final class JDBCDatabaseCommunicationEngine extends 
DatabaseCommunication
             ResultSet resultSet = doExecuteFederation(logicSQL, 
metaDataContexts);
             return processExecuteFederation(resultSet, metaDataContexts);
         }
-        ExecutionContext executionContext = 
getKernelProcessor().generateExecutionContext(logicSQL, getDatabase(), 
metaDataContexts.getMetaData().getGlobalRuleMetaData(), 
+        ExecutionContext executionContext = 
getKernelProcessor().generateExecutionContext(logicSQL, getDatabase(), 
metaDataContexts.getMetaData().getGlobalRuleMetaData(),
                 metaDataContexts.getMetaData().getProps(), 
backendConnection.getConnectionSession().getSessionContext());
         if (executionContext.getExecutionUnits().isEmpty()) {
             return new 
UpdateResponseHeader(executionContext.getSqlStatementContext().getSqlStatement());
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/vertx/VertxDatabaseCommunicationEngine.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/vertx/VertxDatabaseCommunicationEngine.java
index d6af5272060..85d9dd5b70a 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/vertx/VertxDatabaseCommunicationEngine.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/vertx/VertxDatabaseCommunicationEngine.java
@@ -62,7 +62,7 @@ public final class VertxDatabaseCommunicationEngine extends 
DatabaseCommunicatio
             if (deciderContext.isUseSQLFederation()) {
                 return Future.failedFuture(new 
UnsupportedOperationException("Executing federated query by Vert.x is not 
supported yet."));
             }
-            ExecutionContext executionContext = 
getKernelProcessor().generateExecutionContext(getLogicSQL(), getDatabase(), 
metaData.getGlobalRuleMetaData(), 
+            ExecutionContext executionContext = 
getKernelProcessor().generateExecutionContext(getLogicSQL(), getDatabase(), 
metaData.getGlobalRuleMetaData(),
                     metaData.getProps(), 
getBackendConnection().getConnectionSession().getSessionContext());
             if (executionContext.getExecutionUnits().isEmpty()) {
                 return Future.succeededFuture(new 
UpdateResponseHeader(executionContext.getSqlStatementContext().getSqlStatement()));

Reply via email to