This is an automated email from the ASF dual-hosted git repository.
menghaoran 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 bbd2e1d Issue #10980 (#11624)
bbd2e1d is described below
commit bbd2e1d6ebacd0db3ab4c341f14d7d6b8b376798
Author: yx9o <[email protected]>
AuthorDate: Wed Aug 4 11:40:45 2021 +0800
Issue #10980 (#11624)
---
.../shardingsphere-jdbc/yaml-configuration.en.md | 586 +++++++++++++++++++++
1 file changed, 586 insertions(+)
diff --git
a/docs/document/content/others/api-change-history/shardingsphere-jdbc/yaml-configuration.en.md
b/docs/document/content/others/api-change-history/shardingsphere-jdbc/yaml-configuration.en.md
new file mode 100644
index 0000000..577cb8b
--- /dev/null
+++
b/docs/document/content/others/api-change-history/shardingsphere-jdbc/yaml-configuration.en.md
@@ -0,0 +1,586 @@
++++
+title = "YAML configuration"
+weight = 1
++++
+
+## 5.0.0-alpha
+
+### Data Sharding
+
+#### Configuration Item Explanation
+
+```yaml
+dataSources: # Omit the data source configuration, please refer to the usage
+
+rules:
+- !SHARDING
+ tables: # Sharding table configuration
+ <logic-table-name> (+): # Logic table name
+ actualDataNodes (?): # Describe data source names and actual tables
(refer to Inline syntax rules)
+ databaseStrategy (?): # Databases sharding strategy, use default
databases sharding strategy if absent. sharding strategy below can choose only
one.
+ standard: # For single sharding column scenario
+ shardingColumn: # Sharding column name
+ shardingAlgorithmName: # Sharding algorithm name
+ complex: # For multiple sharding columns scenario
+ shardingColumns: # Sharding column names, multiple columns separated
with comma
+ shardingAlgorithmName: # Sharding algorithm name
+ hint: # Sharding by hint
+ shardingAlgorithmName: # Sharding algorithm name
+ none: # Do not sharding
+ tableStrategy: # Tables sharding strategy, same as database sharding
strategy
+ keyGenerateStrategy: # Key generator strategy
+ column: # Column name of key generator
+ keyGeneratorName: # Key generator name
+ autoTables: # Auto Sharding table configuration
+ t_order_auto: # Logic table name
+ actualDataSources (?): # Data source names
+ shardingStrategy: # Sharding strategy
+ standard: # For single sharding column scenario
+ shardingColumn: # Sharding column name
+ shardingAlgorithmName: # Auto sharding algorithm name
+ bindingTables (+): # Binding tables
+ - <logic_table_name_1, logic_table_name_2, ...>
+ - <logic_table_name_1, logic_table_name_2, ...>
+ broadcastTables (+): # Broadcast tables
+ - <table-name>
+ - <table-name>
+ defaultDatabaseStrategy: # Default strategy for database sharding
+ defaultTableStrategy: # Default strategy for table sharding
+ defaultKeyGenerateStrategy: # Default Key generator strategy
+
+ # Sharding algorithm configuration
+ shardingAlgorithms:
+ <sharding-algorithm-name> (+): # Sharding algorithm name
+ type: # Sharding algorithm type
+ props: # Sharding algorithm properties
+ # ...
+
+ # Key generate algorithm configuration
+ keyGenerators:
+ <key-generate-algorithm-name> (+): # Key generate algorithm name
+ type: # Key generate algorithm type
+ props: # Key generate algorithm properties
+ # ...
+
+props:
+ # ...
+```
+
+### Replica Query
+
+#### Configuration Item Explanation
+
+```yaml
+dataSources: # Omit the data source configuration, please refer to the usage
+
+rules:
+- !REPLICA_QUERY
+ dataSources:
+ <data-source-name> (+): # Logic data source name of replica query
+ primaryDataSourceName: # Primary data source name
+ replicaDataSourceNames:
+ - <replica-data_source-name> (+) # Replica data source name
+ loadBalancerName: # Load balance algorithm name
+
+ # Load balance algorithm configuration
+ loadBalancers:
+ <load-balancer-name> (+): # Load balance algorithm name
+ type: # Load balance algorithm type
+ props: # Load balance algorithm properties
+ # ...
+
+props:
+ # ...
+```
+
+Please refer to [Built-in Load Balance Algorithm
List](/en/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/load-balance)
for more details about type of algorithm.
+
+### Encryption
+
+#### Configuration Item Explanation
+
+```yaml
+dataSource: # Omit the data source configuration, please refer to the usage
+
+rules:
+- !ENCRYPT
+ tables:
+ <table-name> (+): # Encrypt table name
+ columns:
+ <column-name> (+): # Encrypt logic column name
+ cipherColumn: # Cipher column name
+ assistedQueryColumn (?): # Assisted query column name
+ plainColumn (?): # Plain column name
+ encryptorName: # Encrypt algorithm name
+
+ # Encrypt algorithm configuration
+ encryptors:
+ <encrypt-algorithm-name> (+): # Encrypt algorithm name
+ type: # Encrypt algorithm type
+ props: # Encrypt algorithm properties
+ # ...
+
+ queryWithCipherColumn: # Whether query with cipher column for data encrypt.
User you can use plaintext to query if have
+```
+
+Please refer to [Built-in Encrypt Algorithm
List](/en/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/encrypt)
for more details about type of algorithm.
+
+### Shadow DB
+
+#### Configuration Item Explanation
+
+```yaml
+dataSources: # Omit the data source configuration, please refer to the usage
+
+rules:
+- !SHADOW
+ column: # Shadow column name
+ sourceDataSourceNames: # Source Data Source names
+ # ...
+ shadowDataSourceNames: # Shadow Data Source names
+ # ...
+
+props:
+ # ...
+```
+
+### Governance
+
+#### Configuration Item Explanation
+
+```yaml
+governance:
+ name: # Governance name
+ registryCenter: # Registry center
+ type: # Governance instance type. Example:Zookeeper, etcd
+ serverLists: # The list of servers that connect to governance instance,
including IP and port number; use commas to separate
+ overwrite: # Whether to overwrite local configurations with config center
configurations; if it can, each initialization should refer to local
configurations
+```
+
+## ShardingSphere-4.x
+
+### Data Sharding
+
+#### Configuration Item Explanation
+
+```yaml
+dataSources:
+ ds0: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: com.mysql.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/ds0
+ username: root
+ password:
+ ds1: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: com.mysql.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/ds1
+ username: root
+ password:
+
+shardingRule:
+ tables:
+ t_order:
+ actualDataNodes: ds${0..1}.t_order${0..1}
+ databaseStrategy:
+ inline:
+ shardingColumn: user_id
+ algorithmExpression: ds${user_id % 2}
+ tableStrategy:
+ inline:
+ shardingColumn: order_id
+ algorithmExpression: t_order${order_id % 2}
+ keyGenerator:
+ type: SNOWFLAKE
+ column: order_id
+ t_order_item:
+ actualDataNodes: ds${0..1}.t_order_item${0..1}
+ databaseStrategy:
+ inline:
+ shardingColumn: user_id
+ algorithmExpression: ds${user_id % 2}
+ tableStrategy:
+ inline:
+ shardingColumn: order_id
+ algorithmExpression: t_order_item${order_id % 2}
+ bindingTables:
+ - t_order,t_order_item
+ broadcastTables:
+ - t_config
+
+ defaultDataSourceName: ds0
+ defaultTableStrategy:
+ none:
+ defaultKeyGenerator:
+ type: SNOWFLAKE
+ column: order_id
+
+props:
+ sql.show: true
+```
+
+### Read-Write Split
+
+#### Configuration Item Explanation
+
+```yaml
+dataSources:
+ ds_master: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: com.mysql.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/ds_master
+ username: root
+ password:
+ ds_slave0: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: com.mysql.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/ds_slave0
+ username: root
+ password:
+ ds_slave1: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: com.mysql.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/ds_slave1
+ username: root
+ password:
+
+masterSlaveRule:
+ name: ds_ms
+ masterDataSourceName: ds_master
+ slaveDataSourceNames: [ds_slave0, ds_slave1]
+
+props:
+ sql.show: true
+```
+
+Create a `DataSource` through the `YamlMasterSlaveDataSourceFactory` factory
class:
+
+```java
+DataSource dataSource =
YamlMasterSlaveDataSourceFactory.createDataSource(yamlFile);
+```
+
+### Data Masking
+
+#### Configuration Item Explanation
+
+```yaml
+dataSource: !!org.apache.commons.dbcp2.BasicDataSource
+ driverClassName: com.mysql.jdbc.Driver
+ url: jdbc:mysql://127.0.0.1:3306/encrypt?serverTimezone=UTC&useSSL=false
+ username: root
+ password:
+
+encryptRule:
+ encryptors:
+ encryptor_aes:
+ type: aes
+ props:
+ aes.key.value: 123456abc
+ encryptor_md5:
+ type: md5
+ tables:
+ t_encrypt:
+ columns:
+ user_id:
+ plainColumn: user_plain
+ cipherColumn: user_cipher
+ encryptor: encryptor_aes
+ order_id:
+ cipherColumn: order_cipher
+ encryptor: encryptor_md5
+props:
+ query.with.cipher.column: true # use ciphertext column query
+```
+
+### Orchestration
+
+#### Configuration Item Explanation
+
+```yaml
+# Omit data sharding, Read-Write split, and Data masking configuration.
+
+orchestration:
+ name: orchestration_ds
+ overwrite: true
+ registry:
+ type: zookeeper
+ namespace: orchestration
+ serverLists: localhost:2181
+```
+
+## ShardingSphere-3.x
+
+### Data Sharding
+
+#### Configuration Item Explanation
+
+```yaml
+dataSources:
+ ds0: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: com.mysql.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/ds0
+ username: root
+ password:
+ ds1: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: com.mysql.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/ds1
+ username: root
+ password:
+
+shardingRule:
+ tables:
+ t_order:
+ actualDataNodes: ds${0..1}.t_order${0..1}
+ databaseStrategy:
+ inline:
+ shardingColumn: user_id
+ algorithmExpression: ds${user_id % 2}
+ tableStrategy:
+ inline:
+ shardingColumn: order_id
+ algorithmExpression: t_order${order_id % 2}
+ keyGeneratorColumnName: order_id
+ t_order_item:
+ actualDataNodes: ds${0..1}.t_order_item${0..1}
+ databaseStrategy:
+ inline:
+ shardingColumn: user_id
+ algorithmExpression: ds${user_id % 2}
+ tableStrategy:
+ inline:
+ shardingColumn: order_id
+ algorithmExpression: t_order_item${order_id % 2}
+ bindingTables:
+ - t_order,t_order_item
+ broadcastTables:
+ - t_config
+
+ defaultDataSourceName: ds0
+ defaultTableStrategy:
+ none:
+ defaultKeyGeneratorClassName:
io.shardingsphere.core.keygen.DefaultKeyGenerator
+
+props:
+ sql.show: true
+```
+
+### Read-Write Split
+
+#### Configuration Item Explanation
+
+```yaml
+dataSources:
+ ds_master: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: com.mysql.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/ds_master
+ username: root
+ password:
+ ds_slave0: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: com.mysql.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/ds_slave0
+ username: root
+ password:
+ ds_slave1: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: com.mysql.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/ds_slave1
+ username: root
+ password:
+
+masterSlaveRule:
+ name: ds_ms
+ masterDataSourceName: ds_master
+ slaveDataSourceNames: [ds_slave0, ds_slave1]
+ props:
+ sql.show: true
+ configMap:
+ key1: value1
+```
+
+Create a `DataSource` through the `YamlMasterSlaveDataSourceFactory` factory
class:
+
+```java
+DataSource dataSource =
MasterSlaveDataSourceFactory.createDataSource(yamlFile);
+```
+
+### Orchestration
+
+#### Configuration Item Explanation
+
+```yaml
+# Omit data sharding, Read-Write split configuration.
+
+orchestration:
+ name: orchestration_ds
+ overwrite: true
+ registry:
+ namespace: orchestration
+ serverLists: localhost:2181
+```
+
+## ShardingSphere-2.x
+
+### Data Sharding
+
+#### Configuration Item Explanation
+
+```yaml
+dataSources:
+ db0: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: org.h2.Driver
+ url: jdbc:h2:mem:db0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
+ username: sa
+ password:
+ maxActive: 100
+ db1: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: org.h2.Driver
+ url: jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
+ username: sa
+ password:
+ maxActive: 100
+
+shardingRule:
+ tables:
+ config:
+ actualDataNodes: db${0..1}.t_config
+ t_order:
+ actualDataNodes: db${0..1}.t_order_${0..1}
+ databaseStrategy:
+ standard:
+ shardingColumn: user_id
+ preciseAlgorithmClassName:
io.shardingjdbc.core.yaml.fixture.SingleAlgorithm
+ tableStrategy:
+ inline:
+ shardingColumn: order_id
+ algorithmInlineExpression: t_order_${order_id % 2}
+ keyGeneratorColumnName: order_id
+ keyGeneratorClass:
io.shardingjdbc.core.yaml.fixture.IncrementKeyGenerator
+ t_order_item:
+ actualDataNodes: db${0..1}.t_order_item_${0..1}
+ # The strategy of binding the rest of the tables in the table is the
same as the strategy of the first table
+ databaseStrategy:
+ standard:
+ shardingColumn: user_id
+ preciseAlgorithmClassName:
io.shardingjdbc.core.yaml.fixture.SingleAlgorithm
+ tableStrategy:
+ inline:
+ shardingColumn: order_id
+ algorithmInlineExpression: t_order_item_${order_id % 2}
+ bindingTables:
+ - t_order,t_order_item
+ # Default database sharding strategy
+ defaultDatabaseStrategy:
+ none:
+ defaultTableStrategy:
+ complex:
+ shardingColumns: id, order_id
+ algorithmClassName: io.shardingjdbc.core.yaml.fixture.MultiAlgorithm
+ props:
+ sql.show: true
+```
+
+### Read-Write Split
+
+#### concept
+
+In order to relieve the pressure on the database, the write and read
operations are separated into different data sources. The write library is
called the master library, and the read library is called the slave library.
One master library can be configured with multiple slave libraries.
+
+#### Support item
+
+1. Provides a read-write separation configuration with one master and multiple
slaves, which can be used independently or with sub-databases and sub-meters.
+2. Independent use of read-write separation to support SQL transparent
transmission.
+3. In the same thread and the same database connection, if there is a write
operation, subsequent read operations will be read from the main library to
ensure data consistency.
+4. Spring namespace.
+5. Hint-based mandatory main library routing.
+
+#### Unsupported item
+
+1. Data synchronization between the master library and the slave library.
+2. Data inconsistency caused by the data synchronization delay of the master
library and the slave library.
+3. Double writing or multiple writing in the main library.
+
+#### rule configuration
+
+```yaml
+dataSources:
+ db_master: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: org.h2.Driver
+ url:
jdbc:h2:mem:db_master;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
+ username: sa
+ password:
+ maxActive: 100
+ db_slave_0: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: org.h2.Driver
+ url:
jdbc:h2:mem:db_slave_0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
+ username: sa
+ password:
+ maxActive: 100
+ db_slave_1: !!org.apache.commons.dbcp.BasicDataSource
+ driverClassName: org.h2.Driver
+ url:
jdbc:h2:mem:db_slave_1;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
+ username: sa
+ password:
+ maxActive: 100
+
+masterSlaveRule:
+ name: db_ms
+ masterDataSourceName: db_master
+ slaveDataSourceNames: [db_slave_0, db_slave_1]
+ configMap:
+ key1: value1
+```
+
+Create a `DataSource` through the `MasterSlaveDataSourceFactory` factory class:
+
+```java
+DataSource dataSource =
MasterSlaveDataSourceFactory.createDataSource(yamlFile);
+```
+
+### Orchestration
+
+#### Configuration Item Explanation
+
+Zookeeper sharding table and database Orchestration Configuration Item
Explanation
+
+```yaml
+dataSources: Data sources configuration
+
+shardingRule: Sharding rule configuration
+
+orchestration: Zookeeper Orchestration Configuration
+ name: Orchestration name
+ overwrite: Whether to overwrite local configurations with config center
configurations; if it can, each initialization should refer to local
configurations
+ zookeeper: Registry center Configuration
+ namespace: Registry center namespace
+ serverLists: The list of servers that connect to governance instance,
including IP and port number, use commas to separate, such as:
host1:2181,host2:2181
+ baseSleepTimeMilliseconds: The initial millisecond value of the interval
to wait for retry
+ maxSleepTimeMilliseconds: The maximum millisecond value of the interval to
wait for retry
+ maxRetries: The maximum retry count
+ sessionTimeoutMilliseconds: The session timeout milliseconds
+ connectionTimeoutMilliseconds: The connecton timeout milliseconds
+ digest: Permission token to connect to Zookeeper. default no authorization
is required
+```
+
+Etcd sharding table and database Orchestration Configuration Item Explanation
+
+```yaml
+dataSources: Data sources configuration
+
+shardingRule: Sharding rule configuration
+
+orchestration: Etcd Orchestration Configuration
+ name: Orchestration name
+ overwrite: Whether to overwrite local configurations with config center
configurations; if it can, each initialization should refer to local
configurations
+ etcd: Registry center Configuration
+ serverLists: The list of servers that connect to governance instance,
including IP and port number, use commas to separate, such as:
http://host1:2379,http://host2:2379
+ timeToLiveSeconds: Time to live seconds for ephemeral nodes
+ timeoutMilliseconds: The request timeout milliseconds
+ maxRetries: The maximum retry count
+ retryIntervalMilliseconds: The retry interval milliseconds
+```
+
+Sharding table and database Data source construction method
+
+```java
+DataSource dataSource =
OrchestrationShardingDataSourceFactory.createDataSource(yamlFile);
+```
+
+Read-Write split Data source construction method
+
+```java
+DataSource dataSource =
OrchestrationMasterSlaveDataSourceFactory.createDataSource(yamlFile);
+```