This is an automated email from the ASF dual-hosted git repository.
panjuan 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 05ce9b8 Move change history in java api to others (#11651)
05ce9b8 is described below
commit 05ce9b8fa9cd45d464ba49025f6f35ba0a0bb85f
Author: Swastika Gupta <[email protected]>
AuthorDate: Tue Aug 10 18:48:55 2021 +0530
Move change history in java api to others (#11651)
* issue 10976
* updated
* completed
* updated
---
.../shardingsphere-jdbc/java-api.en.md | 780 +++++++++++++++++++++
.../configuration/java-api/change-history.en.md | 224 ------
2 files changed, 780 insertions(+), 224 deletions(-)
diff --git
a/docs/document/content/others/api-change-history/shardingsphere-jdbc/java-api.en.md
b/docs/document/content/others/api-change-history/shardingsphere-jdbc/java-api.en.md
new file mode 100644
index 0000000..c6a669f
--- /dev/null
+++
b/docs/document/content/others/api-change-history/shardingsphere-jdbc/java-api.en.md
@@ -0,0 +1,780 @@
++++
+title = "Change History"
+weight = 2
++++
+
+## 5.0.0-beta
+
+### Sharding
+
+#### Root Configuration
+
+Class name:
org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration
+
+Attributes:
+
+| *Name* | *DataType*
| *Description* | *Default Value*
|
+| ----------------------------------- |
--------------------------------------------------- |
---------------------------------------------- | --------------- |
+| tables (+) |
Collection\<ShardingTableRuleConfiguration\> | Sharding table rules
| - |
+| autoTables (+) |
Collection\<ShardingAutoTableRuleConfiguration\> | Sharding automatic table
rules | - |
+| bindingTableGroups (*) | Collection\<String\>
| Binding table rules | Empty
|
+| broadcastTables (*) | Collection\<String\>
| Broadcast table rules | Empty
|
+| defaultDatabaseShardingStrategy (?) | ShardingStrategyConfiguration
| Default database sharding strategy | Not sharding
|
+| defaultTableShardingStrategy (?) | ShardingStrategyConfiguration
| Default table sharding strategy | Not sharding
|
+| defaultKeyGenerateStrategy (?) | KeyGeneratorConfiguration
| Default key generator | Snowflake
|
+| shardingAlgorithms (+) | Map\<String,
ShardingSphereAlgorithmConfiguration\> | Sharding algorithm name and
configurations | None |
+| keyGenerators (?) | Map\<String,
ShardingSphereAlgorithmConfiguration\> | Key generate algorithm name and
configurations | None |
+
+#### Sharding Table Configuration
+
+Class name:
org.apache.shardingsphere.sharding.api.config.ShardingTableRuleConfiguration
+
+Attributes:
+
+| *Name* | *DataType* | *Description*
| *Default Value*
|
+| ---------------------------- | ----------------------------- |
-------------------------------------------------------------------------------------------------------------------------------------
| ------------------------------------------ |
+| logicTable | String | Name of
sharding logic table
| -
|
+| actualDataNodes (?) | String | Describe data
source names and actual tables, delimiter as point.<br /> Multiple data nodes
split by comma, support inline expression | Broadcast table or databases
sharding only |
+| databaseShardingStrategy (?) | ShardingStrategyConfiguration | Databases
sharding strategy
| Use default databases sharding
strategy |
+| tableShardingStrategy (?) | ShardingStrategyConfiguration | Tables
sharding strategy
| Use default tables sharding
strategy |
+| keyGenerateStrategy (?) | KeyGeneratorConfiguration | Key generator
configuration
| Use default key generator
|
+
+#### Sharding Automatic Table Configuration
+
+Class name:
org.apache.shardingsphere.sharding.api.config.ShardingAutoTableRuleConfiguration
+
+Attributes:
+
+| *Name* | *DataType* | *Description*
| *Default Value* |
+| ----------------------- | ----------------------------- |
----------------------------------------------------------- |
------------------------------- |
+| logicTable | String | Name of sharding
logic table | - |
+| actualDataSources (?) | String | Data source
names.<br /> Multiple data nodes split by comma | Use all configured data
sources |
+| shardingStrategy (?) | ShardingStrategyConfiguration | Sharding strategy
| Use default sharding strategy |
+| keyGenerateStrategy (?) | KeyGeneratorConfiguration | Key generator
configuration | Use default key generator
|
+
+#### Sharding Strategy Configuration
+
+##### Standard Sharding Strategy Configuration
+
+Class name:
org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration
+
+Attributes:
+
+| *Name* | *DataType* | *Description* |
+| --------------------- | ---------- | ----------------------- |
+| shardingColumn | String | Sharding column name |
+| shardingAlgorithmName | String | Sharding algorithm name |
+
+##### Complex Sharding Strategy Configuration
+
+Class name:
org.apache.shardingsphere.sharding.api.config.strategy.sharding.ComplexShardingStrategyConfiguration
+
+Attributes:
+
+| *Name* | *DataType* | *Description*
|
+| --------------------- | ---------- |
----------------------------------------- |
+| shardingColumns | String | Sharding column name, separated by
commas |
+| shardingAlgorithmName | String | Sharding algorithm name
|
+
+##### Hint Sharding Strategy Configuration
+
+Class name:
org.apache.shardingsphere.sharding.api.config.strategy.sharding.HintShardingStrategyConfiguration
+
+Attributes:
+
+| *Name* | *DataType* | *Description* |
+| --------------------- | ---------- | ----------------------- |
+| shardingAlgorithmName | String | Sharding algorithm name |
+
+##### None Sharding Strategy Configuration
+
+Class name:
org.apache.shardingsphere.sharding.api.config.strategy.sharding.NoneShardingStrategyConfiguration
+
+Attributes: None
+
+Please refer to [Built-in Sharding Algorithm
List](/en/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/sharding)
for more details about type of algorithm.
+
+##### Key Generate Strategy Configuration
+
+Class name:
org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration
+
+Attributes:
+
+| *Name* | *DataType* | *Description* |
+| ---------------- | ---------- | --------------------------- |
+| column | String | Column name of key generate |
+| keyGeneratorName | String | key generate algorithm name |
+
+Please refer to [Built-in Key Generate Algorithm
List](/en/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/keygen)
for more details about type of algorithm.
+
+### Readwrite-splitting
+
+#### Root Configuration
+
+Class name: ReadwriteSplittingRuleConfiguration
+
+Attributes:
+
+| *Name* | *DataType* |
*Description* |
+| ----------------- | ----------------------------------------------------- |
---------------------------------------------------------------------- |
+| dataSources (+) |
Collection\<ReadwriteSplittingDataSourceRuleConfiguration\> | Data sources of
write and reads |
+| loadBalancers (*) | Map\<String, ShardingSphereAlgorithmConfiguration\> |
Load balance algorithm name and configurations of replica data sources |
+
+#### Readwrite-splitting Data Source Configuration
+
+Class name: ReadwriteSplittingDataSourceRuleConfiguration
+
+Attributes:
+
+| *Name* | *DataType* | *Description*
| *Default Value* |
+| -------------------------- | -------------------- |
---------------------------------------------- |
---------------------------------- |
+| name | String | Readwrite-splitting data
source name | - |
+| writeDataSourceName | String | Write sources source
name | - |
+| readDataSourceNames (+) | Collection\<String\> | Read sources source name
list | - |
+| loadBalancerName (?) | String | Load balance algorithm
name of replica sources | Round robin load balance algorithm |
+
+### Encryption
+
+#### Root Configuration
+
+Class name:
org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration
+
+Attributes:
+
+| *Name* | *DataType*
| *Description*
| *Default Value* |
+| ------------------------- |
--------------------------------------------------- |
----------------------------------------------------------------------------------------------
| --------------- |
+| tables (+) | Collection\<EncryptTableRuleConfiguration\>
| Encrypt table rule configurations
| |
+| encryptors (+) | Map\<String,
ShardingSphereAlgorithmConfiguration\> | Encrypt algorithm name and
configurations |
|
+| queryWithCipherColumn (?) | boolean
| Whether query with cipher column for data encrypt. User you can use
plaintext to query if have | true |
+
+#### Encrypt Table Rule Configuration
+
+Class name:
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration
+
+Attributes:
+
+| *Name* | *DataType* | *Description*
|
+| ----------- | -------------------------------------------- |
---------------------------------- |
+| name | String | Table name
|
+| columns (+) | Collection\<EncryptColumnRuleConfiguration\> | Encrypt column
rule configurations |
+
+#### Encrypt Column Rule Configuration
+
+Class name:
org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnRuleConfiguration
+
+Attributes:
+
+| *Name* | *DataType* | *Description* |
+| ----------------------- | ---------- | -------------------------- |
+| logicColumn | String | Logic column name |
+| cipherColumn | String | Cipher column name |
+| assistedQueryColumn (?) | String | Assisted query column name |
+| plainColumn (?) | String | Plain column name |
+| encryptorName | String | Encrypt algorithm name |
+
+#### Encrypt Algorithm Configuration
+
+Class name:
org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration
+
+Attributes:
+
+| *Name* | *DataType* | *Description* |
+| ---------- | ---------- | ---------------------------- |
+| name | String | Encrypt algorithm name |
+| type | String | Encrypt algorithm type |
+| properties | Properties | Encrypt algorithm properties |
+
+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
+
+#### Root Configuration
+
+Class name: org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration
+
+Attributes:
+
+| *Name* | *DataType* | *Description*
|
+| --------------- | --------------------- |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
+| column | String | Shadow field name in SQL, SQL with
a value of true will be routed to the shadow database for execution
|
+| sourceDataSourceNames | List\<String\> | Source data source names |
+| shadowDataSourceNames | List\<String\> | Shadow data source names |
+
+Please refer to [Built-in Load Balance Algorithm
List](/docs/document/content/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/load-balance.en.md)
for more details about type of algorithm.
+
+### Governance
+
+#### Configuration Item Explanation
+
+##### Management
+
+*Configuration Entrance*
+
+Class name:
org.apache.shardingsphere.governance.repository.api.config.GovernanceConfiguration
+
+Attributes:
+
+| *Name* | *Data Type* | *Description*
|
+| --------------------------- | ---------------------------- |
------------------------- |
+| name | String | Governance
instance name |
+| registryCenterConfiguration | RegistryCenterConfiguration | Config of
registry-center |
+
+The type of registryCenter could be Zookeeper or Etcd.
+
+*Governance Instance Configuration*
+
+Class name:
org.apache.shardingsphere.governance.repository.api.config.RegistryCenterConfiguration
+
+Attributes:
+
+| *Name* | *Data Type* | *Description*
|
+| ----------- | ----------- |
---------------------------------------------------------------------------------------------------------------------------------------------
|
+| type | String | Governance instance type, such as: Zookeeper,
etcd
|
+| serverLists | String | The list of servers that connect to governance
instance, including IP and port number, use commas to separate, such as:
host1:2181,host2:2181 |
+| props | Properties | Properties for center instance config, such as
options of zookeeper
|
+| overwrite | boolean | Local configurations overwrite config center
configurations or not; if they overwrite, each start takes reference of local
configurations |
+
+ZooKeeper Properties Configuration
+
+| *Name* | *Data Type* | *Description*
| *Default Value* |
+| -------------------------------- | ----------- |
---------------------------------------------- | --------------------- |
+| digest (?) | String | Connect to authority tokens
in registry center | No need for authority |
+| operationTimeoutMilliseconds (?) | int | The operation timeout
milliseconds | 500 milliseconds |
+| maxRetries (?) | int | The maximum retry count
| 3 |
+| retryIntervalMilliseconds (?) | int | The retry interval
milliseconds | 500 milliseconds |
+| timeToLiveSeconds (?) | int | Time to live seconds for
ephemeral nodes | 60 seconds |
+
+
+Etcd Properties Configuration
+
+| *Name* | *Data Type* | *Description*
| *Default Value* |
+| --------------------- | ----------- | -------------------------------------
| --------------- |
+| timeToLiveSeconds (?) | long | Time to live seconds for data persist
| 30 seconds |
+
+## ShardingSphere-4.x
+
+### Sharding
+
+#### ShardingDataSourceFactory
+
+| *Name* | *DataType* | *Explanation*
|
+| :-------------------- | :--------------------------- |
:---------------------------------- |
+| dataSourceMap | Map<String, DataSource> | Data sources
configuration |
+| shardingRuleConfig | ShardingRuleConfiguration | Data sharding
configuration rule |
+| props (?) | Properties | Property
configurations |
+
+#### ShardingRuleConfiguration
+
+| *Name* | *DataType* | *Explanation*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| tableRuleConfigs | Collection<TableRuleConfiguration> | Sharding
rule list |
+| bindingTableGroups (?) | Collection<String> | Binding table
rule list |
+| broadcastTables (?) | Collection<String> | Broadcast table
rule list |
+| defaultDataSourceName (?)| String |Tables not
configured with sharding rules will locate according to default data sources |
+| defaultDatabaseShardingStrategyConfig (?) | ShardingStrategyConfiguration
| Default database sharding strategy |
+| defaultTableShardingStrategyConfig (?) | ShardingStrategyConfiguration |
Default table sharding strategy |
+| defaultKeyGeneratorConfig (?) | KeyGeneratorConfiguration | Default key
generator configuration, use user-defined ones or built-in ones, e.g.
SNOWFLAKE/UUID. Default key generator is
`org.apache.shardingsphere.core.keygen.generator.impl.SnowflakeKeyGenerator`|
+| masterSlaveRuleConfigs (?) | Collection<MasterSlaveRuleConfiguration> |
Read-write split rules, default indicates not using read-write split |
+
+#### TableRuleConfiguration
+
+| *Name* | *DataType* | *Explanation*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| logicTable | String | Name of
logic table |
+| actualDataNodes (?) | String | Describe
data source names and actual tables, delimiter as point, multiple data nodes
split by comma, support inline expression. Absent means sharding databases
only. Example: ds${0..7}.tbl${0..7} |
+| databaseShardingStrategyConfig (?) | ShardingStrategyConfiguration |
Databases sharding strategy, use default databases sharding strategy if absent |
+| tableShardingStrategyConfig (?) | ShardingStrategyConfiguration | Tables
sharding strategy, use default databases sharding strategy if absent |
+| keyGeneratorConfig (?) | KeyGeneratorConfiguration | Key generator
configuration, use default key generator if absent |
+| encryptorConfiguration (?) | EncryptorConfiguration | Encrypt generator
configuration |
+
+#### StandardShardingStrategyConfiguration
+
+##### Subclass of ShardingStrategyConfiguration.
+
+| *Name* | *DataType* | *Explanation*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| shardingColumn | String | Sharding
column name |
+| preciseShardingAlgorithm | PreciseShardingAlgorithm | Precise
sharding algorithm used in `=` and `IN` |
+| rangeShardingAlgorithm (?) | RangeShardingAlgorithm | Range sharding
algorithm used in `BETWEEN` |
+
+##### ComplexShardingStrategyConfiguration
+The implementation class of `ShardingStrategyConfiguration`, used in complex
sharding situations with multiple sharding keys.
+
+| *Name* | *DataType* | *Explanation*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| shardingColumns | String | Sharding
column name, separated by commas |
+| shardingAlgorithm | ComplexKeysShardingAlgorithm | Complex
sharding algorithm |
+
+##### InlineShardingStrategyConfiguration
+The implementation class of `ShardingStrategyConfiguration`, used in sharding
strategy of inline expression.
+
+| *Name* | *DataType* | *Explanation*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| shardingColumns | String | Sharding
column name, separated by commas |
+| algorithmExpression | String | Inline
expression of sharding strategies, should conform to groovy syntax; refer to
Inline expression for more details |
+
+##### HintShardingStrategyConfiguration
+The implementation class of `ShardingStrategyConfiguration`, used to configure
hint sharding strategies.
+
+| *Name* | *DataType* | *Description*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| shardingAlgorithm | HintShardingAlgorithm | Hint
sharding algorithm |
+
+##### NoneShardingStrategyConfiguration
+The implementation class of `ShardingStrategyConfiguration`, used to configure
none-sharding strategies.
+KeyGeneratorConfiguration
+
+| *Name* | *DataType* | *Description*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| column | String | Column name of
key generator |
+| type | String | Type of key
generator, use user-defined ones or built-in ones, e.g. SNOWFLAKE, UUID |
+| props | Properties | The
Property configuration of key generators |
+
+#### Properties
+
+Property configuration that can include these properties of these key
generators.
+
+SNOWFLAKE
+
+| *Name* | *Data Type* | *Explanation*
|
+| :--------------------------------- | :---------- |
:----------------------------------------------------------- |
+| worker.id (?) | long | The unique id for
working machine, the default value is `0` |
+| max.tolerate.time.difference.milliseconds (?) | long | The max tolerate time
for different server’s time difference in milliseconds, the default value is
`10` |
+| max.vibration.offset (?) | int | The max upper limit value of vibrate
number, range `[0, 4096)`, the default value is `1`. Notice: To use the
generated value of this algorithm as sharding value, it is recommended to
configure this property. The algorithm generates key mod `2^n` (`2^n` is
usually the sharding amount of tables or databases) in different milliseconds
and the result is always `0` or `1`. To prevent the above sharding problem, it
is recommended to configure this property, i [...]
+
+### Readwrite-splitting
+
+#### MasterSlaveDataSourceFactory
+
+| *Name* | *DataType* | *Explanation*
|
+| :-------------------- | :--------------------------- |
:---------------------------------- |
+| dataSourceMap | Map<String, DataSource> | Mapping of data
source and its name |
+| masterSlaveRuleConfig | MasterSlaveRuleConfiguration | Master slave rule
configuration |
+| props (?) | Properties | Property
configurations |
+
+#### MasterSlaveRuleConfiguration
+
+| *Name* | *DataType* | *Explanation*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| name | String |
Readwrite-splitting data source name |
+| masterDataSourceName | String | Master database
source name |
+| slaveDataSourceNames | Collection<String> | Slave database
source name list |
+| loadBalanceAlgorithm (?) | MasterSlaveLoadBalanceAlgorithm | Slave database
load balance |
+
+#### Properties
+
+Property configuration items, can be of the following properties.
+
+| *Name* | *Data Type* | *Explanation*
|
+| :--------------------------------- | :---------- |
:----------------------------------------------------------- |
+| sql.show (?) | boolean | Print SQL parse and
rewrite log or not, default value: false |
+| executor.size (?) | int | Be used in work thread
number implemented by SQL; no limits if it is 0. default value: 0 |
+| max.connections.size.per.query (?) | int | The maximum connection
number allocated by each query of each physical database, default value: 1 |
+| check.table.metadata.enabled (?) | boolean | Check meta-data
consistency or not in initialization, default value: false |
+
+### Data Masking
+
+#### EncryptDataSourceFactory
+
+| *Name* | *DataType* | *Explanation*
|
+| :-------------------- | :--------------------------- |
:---------------------------------- |
+| dataSource | DataSource | Data source
|
+| encryptRuleConfig | EncryptRuleConfiguration | encrypt rule
configuration |
+| props (?) | Properties | Property
configurations |
+
+#### EncryptRuleConfiguration
+
+| *Name* | *DataType* | *Explanation*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| encryptors | Map<String, EncryptorRuleConfiguration> | Encryptor
names and encryptors |
+| tables | Map<String, EncryptTableRuleConfiguration> | Encrypt table
names and encrypt tables |
+
+#### Properties
+
+Property configuration items, can be of the following properties.
+
+| *Name* | *Data Type* | *Explanation*
|
+| :--------------------------------- | :---------- |
:----------------------------------------------------------- |
+| sql.show (?) | boolean | Print SQL parse and
rewrite log or not, default value: false |
+| query.with.cipher.column (?) | boolean | When there is a
plainColumn, use cipherColumn or not to query, default value: true |
+
+### Orchestration
+
+#### OrchestrationShardingDataSourceFactory
+
+| *Name* | *DataType* | *Explanation*
|
+| :-------------------- | :--------------------------- |
:---------------------------------- |
+| dataSourceMap | Map<String, DataSource> | Same as
`ShardingDataSourceFactory` |
+| shardingRuleConfig | ShardingRuleConfiguration | Same as
`ShardingDataSourceFactory` |
+| props (?) | Properties | Same as
`ShardingDataSourceFactory` |
+| orchestrationConfig | OrchestrationConfiguration | Orchestration rule
configurations |
+
+#### OrchestrationMasterSlaveDataSourceFactory
+
+| *Name* | *DataType* | *Explanation*
|
+| :-------------------- | :--------------------------- |
:---------------------------------- |
+| dataSourceMap | Map<String, DataSource> | Same as
`MasterSlaveDataSourceFactory` |
+| masterSlaveRuleConfig | MasterSlaveRuleConfiguration | Same as
`MasterSlaveDataSourceFactory` |
+| configMap (?) | Map<String, Object> | Same as
`MasterSlaveDataSourceFactory` |
+| props (?) | Properties | Same as
`ShardingDataSourceFactory` |
+| orchestrationConfig | OrchestrationConfiguration | Orchestration rule
configurations |
+
+#### OrchestrationEncryptDataSourceFactory
+
+| *Name* | *DataType* | *Explanation*
|
+| :-------------------- | :--------------------------- |
:---------------------------------- |
+| dataSource | DataSource | Same as
`EncryptDataSourceFactory` |
+| encryptRuleConfig | EncryptRuleConfiguration | Same as
`EncryptDataSourceFactory` |
+| props (?) | Properties | Same as
`EncryptDataSourceFactory` |
+| orchestrationConfig | OrchestrationConfiguration | Orchestration rule
configurations |
+
+#### OrchestrationConfiguration
+
+| *Name* | *DataType* | *Explanation*
|
+| :-------------------- | :--------------------------- |
:---------------------------------- |
+| instanceConfigurationMap | Map<String, CenterConfiguration> |
config map of config-center®istry-center,the key is center’s name,the value
is the config-center/registry-center |
+
+#### CenterConfiguration
+
+| *Name* | *DataType* | *Explanation*
|
+| :-------------------- | :--------------------------- |
:---------------------------------- |
+| type | String | The type of center
instance(zookeeper/etcd/apollo/nacos)
+| properties | String | Properties for center instance config, such
as options of zookeeper |
+| orchestrationType | String | The type of orchestration center:
config-center or registry-center, if both, use
“setOrchestrationType(“registry_center,config_center”);” |
+| serverLists | String | Connect to server lists in center, including
IP address and port number; addresses are separated by commas, such as
`host1:2181,host2:2181` |
+| namespace (?) | String | Namespace of center instance |
+
+#### Properties
+
+Property configuration items, can be of the following properties.
+
+| *Name* | *Data Type* | *Explanation*
|
+| :--------------------------------- | :---------- |
:----------------------------------------------------------- |
+| overwrite | boolean | Local configurations overwrite center
configurations or not; if they overwrite, each start takes reference of local
configurations |
+
+If type of center is `zookeeper` with config-center®istry-center,
properties could be set with the follow options:
+
+| *Name* | *Data Type* | *Explanation*
|
+| :--------------------------------- | :---------- |
:----------------------------------------------------------- |
+| digest (?) | String | Connect to authority tokens in registry center;
default indicates no need for authority |
+| operationTimeoutMilliseconds (?) | int | The operation timeout
millisecond number, default to be 500 milliseconds |
+| maxRetries (?) | int | The maximum retry count, default to be 3
times |
+| retryIntervalMilliseconds (?) | int | The retry interval
millisecond number, default to be 500 milliseconds |
+| timeToLiveSeconds (?) | int | The living time for temporary nodes,
default to be 60 seconds |
+
+If type of center is `etcd` with config-center®istry-center, properties
could be set with the follow options:
+
+| *Name* | *Data Type* | *Explanation*
|
+| :--------------------------------- | :---------- |
:----------------------------------------------------------- |
+| timeToLiveSeconds (?) | long | The etcd TTL in
seconds, default to be 30 seconds |
+
+If type of center is `apollo` with config-center®istry-center, properties
could be set with the follow options:
+
+| *Name* | *Data Type* | *Explanation*
|
+| :--------------------------------- | :---------- |
:----------------------------------------------------------- |
+| appId (?) | String | Apollo appId, default to be
“APOLLO_SHARDINGSPHERE” |
+| env (?) | String | Apollo env, default to be “DEV” |
+| clusterName (?) | String | Apollo clusterName, default to be “default” |
+| administrator (?) | String | Apollo administrator, default to be "” |
+| token (?) | String | Apollo token, default to be "” |
+| portalUrl (?) | String | Apollo portalUrl, default to be "” |
+| connectTimeout (?) | int | Apollo connectTimeout, default to be 1000
milliseconds |
+| readTimeout (?) | int | Apollo readTimeout, default to be 5000
milliseconds |
+
+If type of center is `nacos` with config-center®istry-center, properties
could be set with the follow options:
+
+| *Name* | *Data Type* | *Explanation*
|
+| :--------------------------------- | :---------- |
:----------------------------------------------------------- |
+| group (?) | String | Nacos group,
“SHARDING_SPHERE_DEFAULT_GROUP” in default |
+| timeout (?) | long | Nacos timeout, default to
be 3000 milliseconds |
+
+## ShardingSphere-3.x
+
+### Sharding
+
+#### ShardingDataSourceFactory
+
+| *Name* | *DataType* | *Explanation*
|
+| :-------------------- | :--------------------------- |
:---------------------------------- |
+| dataSourceMap | Map<String, DataSource> | Data sources
configuration |
+| shardingRuleConfig | ShardingRuleConfiguration | Data sharding
configuration rule |
+| configMap (?) | Map<String, Object> | Config map
|
+| props (?) | Properties | Property
configurations |
+
+#### ShardingRuleConfiguration
+
+| *Name* | *DataType* | *Explanation*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| tableRuleConfigs | Collection<TableRuleConfiguration> | Table rule
configuration |
+| bindingTableGroups (?) | Collection<String> | Binding table
groups |
+| broadcastTables (?) | Collection<String> | Broadcast table
groups |
+| defaultDataSourceName (?)| String |Tables not
configured with sharding rules will locate according to default data sources |
+| defaultDatabaseShardingStrategyConfig (?) | ShardingStrategyConfiguration
| Default database sharding strategy |
+| defaultTableShardingStrategyConfig (?) | ShardingStrategyConfiguration |
Default table sharding strategy |
+| defaultKeyGeneratorConfig (?) | KeyGenerator | Default key generator,
default value is `io.shardingsphere.core.keygen.DefaultKeyGenerator`|
+| masterSlaveRuleConfigs (?) | Collection<MasterSlaveRuleConfiguration> |
Read-write splitting rule configuration |
+
+#### TableRuleConfiguration
+
+| *Name* | *DataType* | *Explanation*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| logicTable | String | Name of
logic table |
+| actualDataNodes (?) | String | Describe
data source names and actual tables, delimiter as point, multiple data nodes
split by comma, support inline expression. Absent means sharding databases
only. Example: ds${0..7}.tbl${0..7} |
+| databaseShardingStrategyConfig (?) | ShardingStrategyConfiguration |
Databases sharding strategy, use default databases sharding strategy if absent |
+| tableShardingStrategyConfig (?) | ShardingStrategyConfiguration | Tables
sharding strategy, use default databases sharding strategy if absent |
+| logicIndex (?) | String | Name if logic index. If use DROP
INDEX XXX SQL in Oracle/PostgreSQL, This property needs to be set for finding
the actual tables |
+| keyGeneratorConfig (?) | String | Key generator column name, do not use Key
generator if absent |
+| keyGenerator (?) | KeyGenerator | Key generator, use default key
generator if absent |
+
+#### StandardShardingStrategyConfiguration
+
+Subclass of ShardingStrategyConfiguration.
+
+| *Name* | *DataType* | *Explanation*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| shardingColumn | String | Sharding
column name |
+| preciseShardingAlgorithm | PreciseShardingAlgorithm | Precise
sharding algorithm used in `=` and `IN` |
+| rangeShardingAlgorithm (?) | RangeShardingAlgorithm | Range sharding
algorithm used in `BETWEEN` |
+
+##### ComplexShardingStrategyConfiguration
+
+Subclass of ShardingStrategyConfiguration.
+
+| *Name* | *DataType* | *Explanation*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| shardingColumns | String | Sharding
column name, separated by commas |
+| shardingAlgorithm | ComplexKeysShardingAlgorithm | Complex
sharding algorithm |
+
+##### InlineShardingStrategyConfiguration
+
+Subclass of ShardingStrategyConfiguration.
+
+| *Name* | *DataType* | *Explanation*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| shardingColumns | String | Sharding
column name, separated by commas |
+| algorithmExpression | String | Inline
expression of sharding strategies, should conform to groovy syntax; refer to
Inline expression for more details |
+
+##### HintShardingStrategyConfiguration
+
+Subclass of ShardingStrategyConfiguration.
+
+| *Name* | *DataType* | *Description*
|
+| :----------------------- | :------------------------------ |
:----------------------------------- |
+| shardingAlgorithm | HintShardingAlgorithm | Hint
sharding algorithm |
+
+##### NoneShardingStrategyConfiguration
+
+Subclass of ShardingStrategyConfiguration.
+
+#### Properties
+
+Enumeration of properties.
+
+| *Name* | *Data Type* | *Explanation*
|
+| :--------------------------------- | :---------- |
:----------------------------------------------------------- |
+| sql.show (?) | boolean | Print SQL parse and rewrite log, default
value: false |
+| executor.size (?) | int | The number of SQL execution threads, zero
means no limit. default value: 0 |
+| max.connections.size.per.query (?) | int | Max connection size for every
query to every actual database. default value: 1 |
+| check.table.metadata.enabled (?) | boolean | Check the metadata
consistency of all the tables, default value : false |
+
+#### configMap
+
+User-defined arguments.
+
+### Readwrite-splitting
+
+#### MasterSlaveDataSourceFactory
+
+| *Name* | *DataType* | *Description*
|
+| :-------------------- | :--------------------------- |
:---------------------------------- |
+| dataSourceMap | Map<String, DataSource> | Map of data sources
and their names |
+| masterSlaveRuleConfig | MasterSlaveRuleConfiguration | Master slave rule
configuration |
+| configMap (?) | Map<String, Object> | Config map
|
+| props (?) | Properties | Properties
|
+
+#### MasterSlaveRuleConfiguration
+
+| *Name* | *DataType* | *Description*
|
+| :----------------------- | :------------------------------ |
:------------------------------- |
+| name | String | Name of master
slave data source |
+| masterDataSourceName | String | Name of master
data source |
+| slaveDataSourceNames | Collection<String> | Names of Slave
data sources |
+| loadBalanceAlgorithm (?) | MasterSlaveLoadBalanceAlgorithm | Load balance
algorithm |
+
+#### configMap
+
+User-defined arguments.
+
+#### PropertiesConstant
+
+Enumeration of properties.
+
+| *Name* | *DataType* | *Description*
|
+| :--------------------------------- | :--------- |
:----------------------------------------------------------- |
+| sql.show (?) | boolean | To show SQLS or not,
default value: false |
+| executor.size (?) | int | The number of working
threads, default value: CPU count |
+| max.connections.size.per.query (?) | int | Max connection size for
every query to every actual database. default value: 1 |
+| check.table.metadata.enabled (?) | boolean | Check the metadata
consistency of all the tables, default value : false |
+
+### Orchestration
+
+#### OrchestrationShardingDataSourceFactory
+
+| *Name* | *DataType* | *Explanation*
|
+| :-------------------- | :--------------------------- |
:---------------------------------- |
+| dataSourceMap | Map<String, DataSource> | Same as
`ShardingDataSourceFactory` |
+| shardingRuleConfig | ShardingRuleConfiguration | Same as
`ShardingDataSourceFactory` |
+| configMap (?) | Map<String, Object> | Same with
`ShardingDataSourceFactory` |
+| props (?) | Properties | Same as
`ShardingDataSourceFactory` |
+| orchestrationConfig | OrchestrationConfiguration | Orchestration rule
configurations |
+
+#### OrchestrationMasterSlaveDataSourceFactory
+
+| *Name* | *DataType* | *Explanation*
|
+| :-------------------- | :--------------------------- |
:---------------------------------- |
+| dataSourceMap | Map<String, DataSource> | Same as
`MasterSlaveDataSourceFactory` |
+| masterSlaveRuleConfig | MasterSlaveRuleConfiguration | Same as
`MasterSlaveDataSourceFactory` |
+| configMap (?) | Map<String, Object> | Same as
`MasterSlaveDataSourceFactory` |
+| props (?) | Properties | Same as
`ShardingDataSourceFactory` |
+| orchestrationConfig | OrchestrationConfiguration | Orchestration
configurations |
+
+#### OrchestrationConfiguration
+
+| *Name* | *DataType* | *Explanation*
|
+| :-------------------- | :--------------------------- |
:---------------------------------- |
+| name | String | Name of
orchestration instance |
+| overwrite | boolean | Use local
configuration to overwrite registry center or not |
+| regCenterConfig | RegistryCenterConfiguration | Registry center
configuration |
+
+#### RegistryCenterConfiguration
+
+| *Name* | *DataType* | *Explanation*
|
+| :-------------------- | :--------------------------- |
:---------------------------------- |
+| serverLists | String | Registry servers list, multiple split as
comma. Example: host1:2181,host2:2181 |
+| namespace (?) | String | Namespace of registry |
+| digest (?) | String | Digest for registry. Default is not need
digest. |
+| operationTimeoutMilliseconds (?) | int | Operation timeout time in
milliseconds. Default value is 500 milliseconds. |
+| maxRetries (?) | int | Max number of times to retry. Default value
is 3 |
+| retryIntervalMilliseconds (?) | int | Time interval in milliseconds
on each retry. Default value is 500 milliseconds. |
+| timeToLiveSeconds (?) | int | Time to live in seconds of ephemeral
keys. Default value is 60 seconds. |
+
+## ShardingSphere-2.x
+
+### Readwrite-splitting
+
+#### 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 readwrite-splitting configuration with one master and multiple
slaves, which can be used independently or with sub-databases and sub-meters.
+2. Independent use of readwrite-splitting 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.
+
+#### Code development example
+
+##### only readwrite-splitting
+
+```java
+// Constructing a readwrite-splitting data source, the readwrite-splitting
data source implements the DataSource interface, which can be directly
processed as a data source. masterDataSource, slaveDataSource0,
slaveDataSource1, etc. are real data sources configured using connection pools
such as DBCP
+Map<String, DataSource> dataSourceMap = new HashMap<>();
+dataSourceMap.put("masterDataSource", masterDataSource);
+dataSourceMap.put("slaveDataSource0", slaveDataSource0);
+dataSourceMap.put("slaveDataSource1", slaveDataSource1);
+
+// Constructing readwrite-splitting configuration
+MasterSlaveRuleConfiguration masterSlaveRuleConfig = new
MasterSlaveRuleConfiguration();
+masterSlaveRuleConfig.setName("ms_ds");
+masterSlaveRuleConfig.setMasterDataSourceName("masterDataSource");
+masterSlaveRuleConfig.getSlaveDataSourceNames().add("slaveDataSource0");
+masterSlaveRuleConfig.getSlaveDataSourceNames().add("slaveDataSource1");
+
+DataSource dataSource =
MasterSlaveDataSourceFactory.createDataSource(dataSourceMap,
masterSlaveRuleConfig);
+```
+
+##### sharding table and database + readwrite-splitting
+
+```java
+// Constructing a readwrite-splitting data source, the readwrite-splitting
data source implements the DataSource interface, which can be directly
processed as a data source. masterDataSource, slaveDataSource0,
slaveDataSource1, etc. are real data sources configured using connection pools
such as DBCP
+Map<String, DataSource> dataSourceMap = new HashMap<>();
+dataSourceMap.put("masterDataSource0", masterDataSource0);
+dataSourceMap.put("slaveDataSource00", slaveDataSource00);
+dataSourceMap.put("slaveDataSource01", slaveDataSource01);
+
+dataSourceMap.put("masterDataSource1", masterDataSource1);
+dataSourceMap.put("slaveDataSource10", slaveDataSource10);
+dataSourceMap.put("slaveDataSource11", slaveDataSource11);
+
+// Constructing readwrite-splitting configuration
+MasterSlaveRuleConfiguration masterSlaveRuleConfig0 = new
MasterSlaveRuleConfiguration();
+masterSlaveRuleConfig0.setName("ds_0");
+masterSlaveRuleConfig0.setMasterDataSourceName("masterDataSource0");
+masterSlaveRuleConfig0.getSlaveDataSourceNames().add("slaveDataSource00");
+masterSlaveRuleConfig0.getSlaveDataSourceNames().add("slaveDataSource01");
+
+MasterSlaveRuleConfiguration masterSlaveRuleConfig1 = new
MasterSlaveRuleConfiguration();
+masterSlaveRuleConfig1.setName("ds_1");
+masterSlaveRuleConfig1.setMasterDataSourceName("masterDataSource1");
+masterSlaveRuleConfig1.getSlaveDataSourceNames().add("slaveDataSource10");
+masterSlaveRuleConfig1.getSlaveDataSourceNames().add("slaveDataSource11");
+
+// Continue to create ShardingDataSource through ShardingSlaveDataSourceFactory
+ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
+shardingRuleConfig.getMasterSlaveRuleConfigs().add(masterSlaveRuleConfig0);
+shardingRuleConfig.getMasterSlaveRuleConfigs().add(masterSlaveRuleConfig1);
+
+DataSource dataSource =
ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig);
+```
+
+## ShardingSphere-1.x
+
+### Readwrite-splitting
+
+#### 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 readwrite-splitting configuration with one master and multiple
slaves, which can be used independently or with sub-databases and sub-meters.
+2. 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.
+3. Spring namespace.
+4. 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.
+
+#### Code development example
+
+```java
+// Constructing a readwrite-splitting data source, the readwrite-splitting
data source implements the DataSource interface, which can be directly
processed as a data source. masterDataSource, slaveDataSource0,
slaveDataSource1, etc. are real data sources configured using connection pools
such as DBCP
+Map<String, DataSource> slaveDataSourceMap0 = new HashMap<>();
+slaveDataSourceMap0.put("slaveDataSource00", slaveDataSource00);
+slaveDataSourceMap0.put("slaveDataSource01", slaveDataSource01);
+// You can choose the master-slave library load balancing strategy, the
default is ROUND_ROBIN, and there is RANDOM to choose from, or customize the
load strategy
+DataSource masterSlaveDs0 =
MasterSlaveDataSourceFactory.createDataSource("ms_0", "masterDataSource0",
masterDataSource0, slaveDataSourceMap0,
MasterSlaveLoadBalanceStrategyType.ROUND_ROBIN);
+
+Map<String, DataSource> slaveDataSourceMap1 = new HashMap<>();
+slaveDataSourceMap1.put("slaveDataSource10", slaveDataSource10);
+slaveDataSourceMap1.put("slaveDataSource11", slaveDataSource11);
+DataSource masterSlaveDs1 =
MasterSlaveDataSourceFactory.createDataSource("ms_1", "masterDataSource1",
masterDataSource1, slaveDataSourceMap1,
MasterSlaveLoadBalanceStrategyType.ROUND_ROBIN);
+
+// Constructing readwrite-splitting configuration
+Map<String, DataSource> dataSourceMap = new HashMap<>();
+dataSourceMap.put("ms_0", masterSlaveDs0);
+dataSourceMap.put("ms_1", masterSlaveDs1);
+
+// Continue to create ShardingDataSource through ShardingSlaveDataSourceFactory
+```
\ No newline at end of file
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/change-history.en.md
b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/change-history.en.md
deleted file mode 100644
index d952948..0000000
---
a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/change-history.en.md
+++ /dev/null
@@ -1,224 +0,0 @@
-+++
-title = "Change History"
-weight = 7
-+++
-
-## 5.0.0-alpha
-
-### Replica Query
-
-#### Root Configuration
-
-Class name: ReplicaQueryRuleConfiguration
-
-Attributes:
-
-| *Name* | *DataType* |
*Description* |
-| ----------------- | ----------------------------------------------------- |
---------------------------------------------------------------------- |
-| dataSources (+) | Collection\<ReplicaQueryDataSourceRuleConfiguration\> |
Data sources of primary and replicas |
-| loadBalancers (*) | Map\<String, ShardingSphereAlgorithmConfiguration\> |
Load balance algorithm name and configurations of replica data sources |
-
-#### Replica Query Data Source Configuration
-
-Class name: ReplicaQueryDataSourceRuleConfiguration
-
-Attributes:
-
-| *Name* | *DataType* | *Description*
| *Default Value* |
-| -------------------------- | -------------------- |
---------------------------------------------- |
---------------------------------- |
-| name | String | Replica query data
source name | - |
-| primaryDataSourceName | String | Primary sources source
name | - |
-| replicaDataSourceNames (+) | Collection\<String\> | Replica sources source
name list | - |
-| loadBalancerName (?) | String | Load balance algorithm
name of replica sources | Round robin load balance algorithm |
-
-Please refer to [Built-in Load Balance Algorithm
List](/docs/document/content/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/load-balance.en.md)
for more details about type of algorithm.
-
-## ShardingSphere-4.x
-
-### Readwrite-splitting
-
-#### MasterSlaveDataSourceFactory
-
-| *Name* | *DataType* | *Explanation*
|
-| :-------------------- | :--------------------------- |
:---------------------------------- |
-| dataSourceMap | Map<String, DataSource> | Mapping of data
source and its name |
-| masterSlaveRuleConfig | MasterSlaveRuleConfiguration | Master slave rule
configuration |
-| props (?) | Properties | Property
configurations |
-
-#### MasterSlaveRuleConfiguration
-
-| *Name* | *DataType* | *Explanation*
|
-| :----------------------- | :------------------------------ |
:----------------------------------- |
-| name | String |
Readwrite-splitting data source name |
-| masterDataSourceName | String | Master database
source name |
-| slaveDataSourceNames | Collection<String> | Slave database
source name list |
-| loadBalanceAlgorithm (?) | MasterSlaveLoadBalanceAlgorithm | Slave database
load balance |
-
-#### Properties
-
-Property configuration items, can be of the following properties.
-
-| *Name* | *Data Type* | *Explanation*
|
-| :--------------------------------- | :---------- |
:----------------------------------------------------------- |
-| sql.show (?) | boolean | Print SQL parse and
rewrite log or not, default value: false |
-| executor.size (?) | int | Be used in work thread
number implemented by SQL; no limits if it is 0. default value: 0 |
-| max.connections.size.per.query (?) | int | The maximum connection
number allocated by each query of each physical database, default value: 1 |
-| check.table.metadata.enabled (?) | boolean | Check meta-data
consistency or not in initialization, default value: false |
-
-## ShardingSphere-3.x
-
-### Readwrite-splitting
-
-#### MasterSlaveDataSourceFactory
-
-| *Name* | *DataType* | *Description*
|
-| :-------------------- | :--------------------------- |
:---------------------------------- |
-| dataSourceMap | Map<String, DataSource> | Map of data sources
and their names |
-| masterSlaveRuleConfig | MasterSlaveRuleConfiguration | Master slave rule
configuration |
-| configMap (?) | Map<String, Object> | Config map
|
-| props (?) | Properties | Properties
|
-
-#### MasterSlaveRuleConfiguration
-
-| *Name* | *DataType* | *Description*
|
-| :----------------------- | :------------------------------ |
:------------------------------- |
-| name | String | Name of master
slave data source |
-| masterDataSourceName | String | Name of master
data source |
-| slaveDataSourceNames | Collection<String> | Names of Slave
data sources |
-| loadBalanceAlgorithm (?) | MasterSlaveLoadBalanceAlgorithm | Load balance
algorithm |
-
-#### configMap
-
-User-defined arguments.
-
-#### PropertiesConstant
-
-Enumeration of properties.
-
-| *Name* | *DataType* | *Description*
|
-| :--------------------------------- | :--------- |
:----------------------------------------------------------- |
-| sql.show (?) | boolean | To show SQLS or not,
default value: false |
-| executor.size (?) | int | The number of working
threads, default value: CPU count |
-| max.connections.size.per.query (?) | int | Max connection size for
every query to every actual database. default value: 1 |
-| check.table.metadata.enabled (?) | boolean | Check the metadata
consistency of all the tables, default value : false |
-
-## ShardingSphere-2.x
-
-### Readwrite-splitting
-
-#### 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 readwrite-splitting configuration with one master and multiple
slaves, which can be used independently or with sub-databases and sub-meters.
-2. Independent use of readwrite-splitting 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.
-
-#### Code development example
-
-##### only readwrite-splitting
-
-```java
-// Constructing a readwrite-splitting data source, the readwrite-splitting
data source implements the DataSource interface, which can be directly
processed as a data source. masterDataSource, slaveDataSource0,
slaveDataSource1, etc. are real data sources configured using connection pools
such as DBCP
-Map<String, DataSource> dataSourceMap = new HashMap<>();
-dataSourceMap.put("masterDataSource", masterDataSource);
-dataSourceMap.put("slaveDataSource0", slaveDataSource0);
-dataSourceMap.put("slaveDataSource1", slaveDataSource1);
-
-// Constructing readwrite-splitting configuration
-MasterSlaveRuleConfiguration masterSlaveRuleConfig = new
MasterSlaveRuleConfiguration();
-masterSlaveRuleConfig.setName("ms_ds");
-masterSlaveRuleConfig.setMasterDataSourceName("masterDataSource");
-masterSlaveRuleConfig.getSlaveDataSourceNames().add("slaveDataSource0");
-masterSlaveRuleConfig.getSlaveDataSourceNames().add("slaveDataSource1");
-
-DataSource dataSource =
MasterSlaveDataSourceFactory.createDataSource(dataSourceMap,
masterSlaveRuleConfig);
-```
-
-##### sharding table and database + readwrite-splitting
-
-```java
-// Constructing a readwrite-splitting data source, the readwrite-splitting
data source implements the DataSource interface, which can be directly
processed as a data source. masterDataSource, slaveDataSource0,
slaveDataSource1, etc. are real data sources configured using connection pools
such as DBCP
-Map<String, DataSource> dataSourceMap = new HashMap<>();
-dataSourceMap.put("masterDataSource0", masterDataSource0);
-dataSourceMap.put("slaveDataSource00", slaveDataSource00);
-dataSourceMap.put("slaveDataSource01", slaveDataSource01);
-
-dataSourceMap.put("masterDataSource1", masterDataSource1);
-dataSourceMap.put("slaveDataSource10", slaveDataSource10);
-dataSourceMap.put("slaveDataSource11", slaveDataSource11);
-
-// Constructing readwrite-splitting configuration
-MasterSlaveRuleConfiguration masterSlaveRuleConfig0 = new
MasterSlaveRuleConfiguration();
-masterSlaveRuleConfig0.setName("ds_0");
-masterSlaveRuleConfig0.setMasterDataSourceName("masterDataSource0");
-masterSlaveRuleConfig0.getSlaveDataSourceNames().add("slaveDataSource00");
-masterSlaveRuleConfig0.getSlaveDataSourceNames().add("slaveDataSource01");
-
-MasterSlaveRuleConfiguration masterSlaveRuleConfig1 = new
MasterSlaveRuleConfiguration();
-masterSlaveRuleConfig1.setName("ds_1");
-masterSlaveRuleConfig1.setMasterDataSourceName("masterDataSource1");
-masterSlaveRuleConfig1.getSlaveDataSourceNames().add("slaveDataSource10");
-masterSlaveRuleConfig1.getSlaveDataSourceNames().add("slaveDataSource11");
-
-// Continue to create ShardingDataSource through ShardingSlaveDataSourceFactory
-ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
-shardingRuleConfig.getMasterSlaveRuleConfigs().add(masterSlaveRuleConfig0);
-shardingRuleConfig.getMasterSlaveRuleConfigs().add(masterSlaveRuleConfig1);
-
-DataSource dataSource =
ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig);
-```
-
-## ShardingSphere-1.x
-
-### Readwrite-splitting
-
-#### 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 readwrite-splitting configuration with one master and multiple
slaves, which can be used independently or with sub-databases and sub-meters.
-2. 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.
-3. Spring namespace.
-4. 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.
-
-#### Code development example
-
-```java
-// Constructing a readwrite-splitting data source, the readwrite-splitting
data source implements the DataSource interface, which can be directly
processed as a data source. masterDataSource, slaveDataSource0,
slaveDataSource1, etc. are real data sources configured using connection pools
such as DBCP
-Map<String, DataSource> slaveDataSourceMap0 = new HashMap<>();
-slaveDataSourceMap0.put("slaveDataSource00", slaveDataSource00);
-slaveDataSourceMap0.put("slaveDataSource01", slaveDataSource01);
-// You can choose the master-slave library load balancing strategy, the
default is ROUND_ROBIN, and there is RANDOM to choose from, or customize the
load strategy
-DataSource masterSlaveDs0 =
MasterSlaveDataSourceFactory.createDataSource("ms_0", "masterDataSource0",
masterDataSource0, slaveDataSourceMap0,
MasterSlaveLoadBalanceStrategyType.ROUND_ROBIN);
-
-Map<String, DataSource> slaveDataSourceMap1 = new HashMap<>();
-slaveDataSourceMap1.put("slaveDataSource10", slaveDataSource10);
-slaveDataSourceMap1.put("slaveDataSource11", slaveDataSource11);
-DataSource masterSlaveDs1 =
MasterSlaveDataSourceFactory.createDataSource("ms_1", "masterDataSource1",
masterDataSource1, slaveDataSourceMap1,
MasterSlaveLoadBalanceStrategyType.ROUND_ROBIN);
-
-// Constructing readwrite-splitting configuration
-Map<String, DataSource> dataSourceMap = new HashMap<>();
-dataSourceMap.put("ms_0", masterSlaveDs0);
-dataSourceMap.put("ms_1", masterSlaveDs1);
-
-// Continue to create ShardingDataSource through ShardingSlaveDataSourceFactory
-```
\ No newline at end of file