tristaZero opened a new issue #9964:
URL: https://github.com/apache/shardingsphere/issues/9964


   Hi,
   
   Although we have finished the basic process for these rules, there are more 
reasonable and expressive distributed-SQL. Here is the new draft for them.
   
   ## RESOURCE
   
   1. Add
   ```sql
   ADD RESOURCE resource0 (
   HOST=127.0.0.1,
   PORT=3306,
   DB=db0,
   USER=root,
   (PASSWORD=root)?
   )
   ```
   
   2. Drop resource
   ```sql
   DROP RESOURCE resource0, resource1
   ```
   
   4. Show resources
   ```sql
   SHOW RESOURCES (FROM schemaName)?
   ```
   
   ## DB_DISCOVERY
   
   1. Create
   ```sql
   CREATE DB_DISCOVERY RULE ha_group_0 (
   RESOURCES(resource0,resource1),
   TYPE(NAME=mgr,PROPERTIES(groupName="92504d5b-6dec",keepAliveCron=""),
   PROPERTIES(connectionTimeout=10)
   )
   ```
   
   2. Alter
   ```sql
   ALTER DB_DISCOVERY RULE ha_group_0 (
   RESOURCES(resource0,resource1),
   TYPE(NAME=mgr,PROPERTIES(groupName="92504d5b-6dec" ,keepAliveCron=""),
   PROPERTIES(connectionTimeout=100)
   )
   ```
   
   3. Drop
   ```sql
   DROP DB_DISCOVERY RULE ha_group_0, ha_group_1
   ```
   
   4. Show
   ```sql
   SHOW DB_DISCOVERY RULES (FROM schemaName)?
   ```
   
   ## READ_WRITE_SPLITTING
   
   1. Create
   ```sql
   // Static
   CREATE READ_WRITE_SPLITTING RULE ms_group_0 (
   WRITE_RESOURCE=primary_ds,
   READ_RESOURCES(replica_ds_0,replica_ds_1),
   TYPE(NAME=random)
   )
   
   // Dynamic, joining with DB_DISCOVERY RULE
   CREATE READ_WRITE_SPLITTING RULE ms_group_1 (
   AUTO_AWARE_RESOURCE=group_0,
   TYPE(NAME=random,PROPERTIES(read_weight=2:1))
   )
   ```
   
   2. Alter 
   ```sql
   ALTER READ_WRITE_SPLITTING RULE ms_group_1 (
   WRITE_RESOURCE=primary_ds,
   READ_RESOURCES(replica_ds_0,replica_ds_1,replica_ds_2),
   TYPE(NAME=random PROPERTIES(read_weight=2:0))
   )
   ```
   
   3. Drop  
   ```sql
   DROP READ_WRITE_SPLITTING RULE ms_group_1
   ```
   
   4. Show  
   ```sql
   SHOW READ_WRITE_SPLITTING RULES (FROM schemaName)?
   ```
   
   ## SHARDING
   
   1. Create
   
   ```sql
   CREATE SHARDING TABLE RULE t_order (
   RESOURCES(ms_group_0,ms_group_1),
   SHARDING_COLUMN=order_id,
   TYPE(NAME=hash_mod,PROPERTIES(sharding-count=4)),
   
GENERATED_KEY(COLUMN=another_id,TYPE(NAME=snowflake,PROPERTIES(worker-id=123))
   )
   
   CREATE SHARDING TABLE RULE t_order_item (
   SHARDING_COLUMN=item_id,
   TYPE(NAME=mod,PROPERTIES(sharding-count=10))
   )
   
   CREATE SHARDING BINDING TABLE RULES (
   binding_rule_1(t_order,t_order_item),
   binding_rule_2(t_1,t_2)
   )
   
   CREATE SHARDING BROADCAST TABLE RULES (t_b,t_a)
   ```
   
   2. Alter
   ```sql
   ALTER SHARDING TABLE RULE t_order (
   RESOURCES(ds0,ds1,ds2),
   SHARDING_COLUMN(order_id),
   TYPE(NAME=hash_mod,PROPERTIES(sharding-count=40)),
   
GENERATED_KEY(COLUMN=another_id,TYPE(NAME=snowflake,PROPERTIES(worker-id=123))
   )
   
   ALTER SHARDING BINDING TABLE RULES (
   MODIFY binding_rule_1(t_order,t_order_item,t_3),
   DROP binding_rule_2
   )
   
   ALTER SHARDING BROADCAST TABLE RULES (t_b,t_a,t_3)
   ```
   
   3. Drop
   ```sql
   DROP SHARDING TABLE RULE t_order
   
   DROP SHARDING BINDING TABLE RULES
   
   DROP SHARDING BROADCAST TABLE RULES
   
   ```
   
   4. Show
   ```sql
   
   SHOW SHARDING TABLE RULES (FROM schemaName)
   
   SHOW SHARDING TABLE RULE t_order
   
   SHOW SHARDING BINDING TABLE RULES
   
   SHOW SHARDING BROADCAST TABLE RULES
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to