- Java API
- 5.0.0-beta
- ShardingSphere-4.x
- ShardingSphere-3.x
- ShardingSphere-2.x
- ShardingSphere-1.x
Java API
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. 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. 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 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 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 |
Please refer to Built-in Load Balance Algorithm List for more details about type of 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 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 |
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.ClusterPersistRepositoryConfiguration
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 | Sharding rule list |
bindingTableGroups (?) | Collection | Binding table rule list |
broadcastTables (?) | Collection | 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 | 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, its value is (2^n)-1 |
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 | 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 | Table rule configuration |
bindingTableGroups (?) | Collection | Binding table groups |
broadcastTables (?) | Collection | 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 | 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 | 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.
Supported
- Provides a readwrite-splitting configuration with one master and multiple slaves, which can be used independently or with sub-databases and sub-meters.
- Independent use of readwrite-splitting to support SQL transparent transmission.
- 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.
- Spring namespace.
- Hint-based mandatory main library routing.
Unsupported
- Data synchronization between the master library and the slave library.
- Data inconsistency caused by the data synchronization delay of the master library and the slave library.
- Double writing or multiple writing in the main library.
Code development example
only readwrite-splitting
// 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
// 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.
Supported
- Provides a readwrite-splitting configuration with one master and multiple slaves, which can be used independently or with sub-databases and sub-meters.
- 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.
- Spring namespace.
- Hint-based mandatory main library routing.
Unsupported
- Data synchronization between the master library and the slave library.
- Data inconsistency caused by the data synchronization delay of the master library and the slave library.
- Double writing or multiple writing in the main library.
Code development example
// 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);