You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2021/08/24 04:00:43 UTC
[shardingsphere] branch master updated: Issue10979 (#11913)
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 1aa09f1 Issue10979 (#11913)
1aa09f1 is described below
commit 1aa09f11779510b1aa6586adf3405f0387d4e02d
Author: yx9o <ya...@163.com>
AuthorDate: Tue Aug 24 11:59:32 2021 +0800
Issue10979 (#11913)
* Issue10979
* Delete change-history.cn.md
---
.../shardingsphere-jdbc/java-api.cn.md | 783 +++++++++++++++++++++
.../shardingsphere-jdbc/java-api.en.md | 15 +-
.../configuration/java-api/change-history.cn.md | 232 ------
3 files changed, 792 insertions(+), 238 deletions(-)
diff --git a/docs/document/content/others/api-change-history/shardingsphere-jdbc/java-api.cn.md b/docs/document/content/others/api-change-history/shardingsphere-jdbc/java-api.cn.md
new file mode 100644
index 0000000..b367a8a
--- /dev/null
+++ b/docs/document/content/others/api-change-history/shardingsphere-jdbc/java-api.cn.md
@@ -0,0 +1,783 @@
++++
+title = "变更历史"
+weight = 2
++++
+
+## 5.0.0-beta
+
+### 数据分片
+
+#### 配置入口
+
+类名称:org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* | *默认值* |
+| ----------------------------------- | --------------------------------------------------- | -------------------- | ------- |
+| tables (+) | Collection\<ShardingTableRuleConfiguration\> | 分片表规则列表 | - |
+| autoTables (+) | Collection\<ShardingAutoTableRuleConfiguration\> | 自动化分片表规则列表 | - |
+| bindingTableGroups (*) | Collection\<String\> | 绑定表规则列表 | 无 |
+| broadcastTables (*) | Collection\<String\> | 广播表规则列表 | 无 |
+| defaultDatabaseShardingStrategy (?) | ShardingStrategyConfiguration | 默认分库策略 | 不分片 |
+| defaultTableShardingStrategy (?) | ShardingStrategyConfiguration | 默认分表策略 | 不分片 |
+| defaultKeyGenerateStrategy (?) | KeyGeneratorConfiguration | 默认自增列生成器配置 | 雪花算法 |
+| shardingAlgorithms (+) | Map\<String, ShardingSphereAlgorithmConfiguration\> | 分片算法名称和配置 | 无 |
+| keyGenerators (?) | Map\<String, ShardingSphereAlgorithmConfiguration\> | 自增列生成算法名称和配置 | 无 |
+
+#### 分片表配置
+
+类名称:org.apache.shardingsphere.sharding.api.config.ShardingTableRuleConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* | *默认值* |
+| ---------------------------- | ----------------------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
+| logicTable | String | 分片逻辑表名称 | - |
+| actualDataNodes (?) | String | 由数据源名 + 表名组成,以小数点分隔。<br /> 多个表以逗号分隔,支持行表达式 | 使用已知数据源与逻辑表名称生成数据节点,用于广播表或只分库不分表且所有库的表结构完全一致的情况 |
+| databaseShardingStrategy (?) | ShardingStrategyConfiguration | 分库策略 | 使用默认分库策略 |
+| tableShardingStrategy (?) | ShardingStrategyConfiguration | 分表策略 | 使用默认分表策略 |
+| keyGenerateStrategy (?) | KeyGeneratorConfiguration | 自增列生成器 | 使用默认自增主键生成器 |
+
+#### 自动分片表配置
+
+类名称:org.apache.shardingsphere.sharding.api.config.ShardingAutoTableRuleConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* | *默认值* |
+| ----------------------- | ----------------------------- | ---------------------------- | ------------------ |
+| logicTable | String | 分片逻辑表名称 | - |
+| actualDataSources (?) | String | 数据源名称,多个数据源以逗号分隔 | 使用全部配置的数据源 |
+| shardingStrategy (?) | ShardingStrategyConfiguration | 分片策略 | 使用默认分片策略 |
+| keyGenerateStrategy (?) | KeyGeneratorConfiguration | 自增列生成器 | 使用默认自增主键生成器 |
+
+#### 分片策略配置
+
+##### 标准分片策略配置
+
+类名称:org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* |
+| --------------------- | ---------- | ---------- |
+| shardingColumn | String | 分片列名称 |
+| shardingAlgorithmName | String | 分片算法名称 |
+
+##### 复合分片策略配置
+
+类名称:org.apache.shardingsphere.sharding.api.config.strategy.sharding.ComplexShardingStrategyConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* |
+| --------------------- | ---------- | ------------------------ |
+| shardingColumns | String | 分片列名称,多个列以逗号分隔 |
+| shardingAlgorithmName | String | 分片算法名称 |
+
+##### Hint 分片策略配置
+
+类名称:org.apache.shardingsphere.sharding.api.config.strategy.sharding.HintShardingStrategyConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* |
+| --------------------- | ---------- | ----------- |
+| shardingAlgorithmName | String | 分片算法名称 |
+
+##### 不分片策略配置
+
+类名称:org.apache.shardingsphere.sharding.api.config.strategy.sharding.NoneShardingStrategyConfiguration
+
+可配置属性:无
+
+算法类型的详情,请参见 [内置分片算法列表](/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/sharding)。
+
+##### 分布式序列策略配置
+
+类名称:org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* |
+| ---------------- | -------- | --------------- |
+| column | String | 分布式序列列名称 |
+| keyGeneratorName | String | 分布式序列算法名称 |
+
+算法类型的详情,请参见 [内置分布式序列算法列表](/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/keygen)。
+
+### 读写分离
+
+#### 配置入口
+
+类名称:ReadwriteSplittingRuleConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* |
+| ----------------- | ----------------------------------------------------------- | ----------------- |
+| dataSources (+) | Collection\<ReadwriteSplittingDataSourceRuleConfiguration\> | 读写数据源配置 |
+| loadBalancers (*) | Map\<String, ShardingSphereAlgorithmConfiguration\> | 从库负载均衡算法配置 |
+
+#### 读写分离数据源配置
+
+类名称:ReadwriteSplittingDataSourceRuleConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* | *默认值* |
+| -------------------------- | -------------------- | ----------------- | ------------ |
+| name | String | 读写分离数据源名称 | - |
+| writeDataSourceName | String | 写库数据源名称 | - |
+| readDataSourceNames (+) | Collection\<String\> | 读库数据源名称列表 | - |
+| loadBalancerName (?) | String | 读库负载均衡算法名称 | 轮询负载均衡算法 |
+
+算法类型的详情,请参见 [内置负载均衡算法列表](/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/load-balance)。
+
+### 数据加密
+
+#### 配置入口
+
+类名称:org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* | *默认值* |
+| ------------------------- | --------------------------------------------------- | ----------------------------------------------------- | ------- |
+| tables (+) | Collection\<EncryptTableRuleConfiguration\> | 加密表规则配置 | |
+| encryptors (+) | Map\<String, ShardingSphereAlgorithmConfiguration\> | 加解密算法名称和配置 | |
+| queryWithCipherColumn (?) | boolean | 是否使用加密列进行查询。在有原文列的情况下,可以使用原文列进行查询 | true |
+
+#### 加密表规则配置
+
+类名称:org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* |
+| ----------- | -------------------------------------------- | --------------- |
+| name | String | 表名称 |
+| columns (+) | Collection\<EncryptColumnRuleConfiguration\> | 加密列规则配置列表 |
+
+#### 加密列规则配置
+
+类名称:org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnRuleConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* |
+| ----------------------- | -------- | ------------- |
+| logicColumn | String | 逻辑列名称 |
+| cipherColumn | String | 密文列名称 |
+| assistedQueryColumn (?) | String | 查询辅助列名称 |
+| plainColumn (?) | String | 原文列名称 |
+| encryptorName | String | 加密算法名称 |
+
+#### 加解密算法配置
+
+类名称:org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration
+
+可配置属性:
+
+| *名称* |*数据类型* | *说明* |
+| ---------- | ---------- | ---------------- |
+| name | String | 加解密算法名称 |
+| type | String | 加解密算法类型 |
+| properties | Properties | 加解密算法属性配置 |
+
+算法类型的详情,请参见 [内置加密算法列表](/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/encrypt)。
+
+### 影子库
+
+#### 配置入口
+
+类名称:org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* |
+| --------------------- | --------------------- | ------------------------------------------------- |
+| column | String | SQL 中的影子字段名,该值为 true 的 SQL 会路由到影子库执行 |
+| sourceDataSourceNames | List\<String\> | 生产数据库名称 |
+| shadowDataSourceNames | List\<String\> | 影子数据库名称,与上面一一对应 |
+
+### 分布式治理
+
+#### 配置项说明
+
+##### 治理
+
+*配置入口*
+
+类名称:org.apache.shardingsphere.governance.repository.api.config.GovernanceConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* |
+| --------------------------- | --------------------------- | ------------------------------------------------------ |
+| name | String | 注册中心实例名称 |
+| registryCenterConfiguration | RegistryCenterConfiguration | 注册中心实例的配置 |
+| overwrite | boolean | 本地配置是否覆盖配置中心配置,如果可覆盖,每次启动都以本地配置为准 |
+
+注册中心的类型可以为 Zookeeper 或 etcd。
+
+*治理实例配置*
+
+类名称:org.apache.shardingsphere.governance.repository.api.config.RegistryCenterConfiguration
+
+可配置属性:
+
+| *名称* | *数据类型* | *说明* |
+| ------------- | ---------- | ----------------------------------------------------------------------- |
+| type | String | 治理实例类型,如:Zookeeper, etcd |
+| serverLists | String | 治理服务列表,包括 IP 地址和端口号,多个地址用逗号分隔,如: host1:2181,host2:2181 |
+| props | Properties | 配置本实例需要的其他参数,例如 ZooKeeper 的连接参数等 |
+| overwrite | boolean | 本地配置是否覆盖配置中心配置;如果覆盖,则每次启动都参考本地配置 |
+
+ZooKeeper 属性配置
+
+| *名称* | *数据类型* | *说明* | *默认值* |
+| -------------------------------- | --------- | -------------------- | ------- |
+| digest (?) | String | 连接注册中心的权限令牌 | 无需验证 |
+| operationTimeoutMilliseconds (?) | int | 操作超时的毫秒数 | 500 毫秒 |
+| maxRetries (?) | int | 连接失败后的最大重试次数 | 3 次 |
+| retryIntervalMilliseconds (?) | int | 重试间隔毫秒数 | 500 毫秒 |
+| timeToLiveSeconds (?) | int | 临时节点存活秒数 | 60 秒 |
+
+Etcd 属性配置
+
+| *名称* | *数据类型* | *说明* | *默认值* |
+| --------------------- | --------- | ---------- | ------ |
+| timeToLiveSeconds (?) | long | 数据存活秒数 | 30 秒 |
+
+## ShardingSphere-4.x
+
+### 数据分片
+
+#### ShardingDataSourceFactory
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :--------------------------- | :----------------- |
+| dataSourceMap | Map<String, DataSource> | 数据源配置 |
+| shardingRuleConfig | ShardingRuleConfiguration | 数据分片规则配置 |
+| props (?) | Properties | 属性配置 |
+
+#### ShardingRuleConfiguration
+
+| *名称* | *数据类型* | *说明* |
+| :---------------------------------------- | :--------------------------------------- | :--------------------------------- |
+| tableRuleConfigs | Collection<TableRuleConfiguration> | 分片规则列表 |
+| bindingTableGroups (?) | Collection<String> | 绑定表规则列表 |
+| broadcastTables (?) | Collection<String> | 广播表规则列表 |
+| defaultDataSourceName (?) | String | 未配置分片规则的表将根据默认数据源定位 |
+| defaultDatabaseShardingStrategyConfig (?) | ShardingStrategyConfiguration | 默认数据库分片策略 |
+| defaultTableShardingStrategyConfig (?) | ShardingStrategyConfiguration | 默认分表策略 |
+| defaultKeyGeneratorConfig (?) | KeyGeneratorConfiguration | 默认密钥生成器配置,使用用户定义的或内置的,例如 雪花/UUID。默认密钥生成器是 `org.apache.shardingsphere.core.keygen.generator.impl.SnowflakeKeyGenerator`|
+| masterSlaveRuleConfigs (?) | Collection<MasterSlaveRuleConfiguration> | 读写分离规则,默认值表示不使用读写分离 |
+
+#### TableRuleConfiguration
+
+| *名称* | *数据类型* | *说明* |
+| :--------------------------------- | :-------------------------------- | :------------------------------------------ |
+| logicTable | String | 逻辑表名称 |
+| actualDataNodes (?) | String | 描述数据源名称和实际表,分隔符为点,多个数据节点用逗号分割,支持内联表达式。不存在意味着仅分片数据库。示例:ds${0..7}.tbl${0..7} |
+| databaseShardingStrategyConfig (?) | ShardingStrategyConfiguration | 数据库分片策略,如果不存在则使用默认的数据库分片策略 |
+| tableShardingStrategyConfig (?) | ShardingStrategyConfiguration | 表分片策略,如果不存在则使用默认的数据库分片策略 |
+| keyGeneratorConfig (?) | KeyGeneratorConfiguration | 主键生成器配置,如果不存在则使用默认主键生成器 |
+| encryptorConfiguration (?) | EncryptorConfiguration | 加密生成器配置 |
+
+#### StandardShardingStrategyConfiguration
+
+ShardingStrategyConfiguration 的实现类
+
+| *名称* | *数据类型* | *说明* |
+| :------------------------- | :-------------------------- | :--------------------------- |
+| shardingColumn | String | 分片键 |
+| preciseShardingAlgorithm | PreciseShardingAlgorithm | `=` 和 `IN` 中使用的精确分片算法 |
+| rangeShardingAlgorithm (?) | RangeShardingAlgorithm | `BETWEEN` 中使用的范围分片算法 |
+
+#### ComplexShardingStrategyConfiguration
+
+`ShardingStrategyConfiguration` 的实现类,用于具有多个分片键的复杂分片情况。
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :----------------------------- | :---------------- |
+| shardingColumns | String | 分片键,以逗号分隔 |
+| shardingAlgorithm | ComplexKeysShardingAlgorithm | 复杂分片算法 |
+
+#### InlineShardingStrategyConfiguration
+
+`ShardingStrategyConfiguration` 的实现类,用于行表达式的分片策略。
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :------------ | :----------------------------------------------------------- |
+| shardingColumns | String | 分片列名,以逗号分隔 |
+| algorithmExpression | String | 行表达式的分片策略,应符合 groovy 语法;有关更多详细信息,请参阅行表达式 |
+
+#### HintShardingStrategyConfiguration
+
+`ShardingStrategyConfiguration` 的实现类,用于配置强制分片策略。
+
+| *名称* | *数据类型* | *说明* |
+| :----------------------- | :------------------------------ | :---------------------- |
+| shardingAlgorithm | HintShardingAlgorithm | 强制分片算法 |
+
+##### NoneShardingStrategyConfiguration
+
+`ShardingStrategyConfiguration` 的实现类,用于配置非分片策略。
+
+### 自增主键生成器
+
+| *名称* | *数据类型* | *说明* |
+| :----------------------- | :------------------------------ | :----------------------------------- |
+| column | String | 主键 |
+| type | String | 主键生成器的类型,使用用户定义的或内置的,例如 雪花,UUID |
+| props | Properties | 主键生成器的属性配置 |
+
+#### 属性配置
+
+属性配置项,可以是以下属性。
+
+SNOWFLAKE
+
+| *名称* | *数据类型* | *说明* |
+| :--------------------------------------------- | :---------- | :------------------------------------------------------- |
+| worker.id (?) | long | 工作机器唯一 id,默认为 0 |
+| max.tolerate.time.difference.milliseconds (?) | long | 最大容忍时钟回退时间,单位:毫秒。默认为 10 毫秒 |
+| max.vibration.offset (?) | int | 最大抖动上限值,范围 [0, 4096),默认为 1。<br/> 注:若使用此算法生成值作分片值,建议配置此属性。<br/> 此算法在不同毫秒内所生成的 key 取模 2^n (2^n 一般为分库或分表数) 之后结果总为 0 或 1。<br/> 为防止上述分片问题,建议将此属性值配置为 (2^n)-1 |
+
+### 读写分离
+
+#### MasterSlaveDataSourceFactory
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :--------------------------- | :--------------------- |
+| dataSourceMap | Map<String, DataSource> | 数据源及其名称的映射 |
+| masterSlaveRuleConfig | MasterSlaveRuleConfiguration | 读写分离规则配置 |
+| props (?) | Properties | 属性配置 |
+
+#### MasterSlaveRuleConfiguration
+
+| *名称* | *数据类型* | *说明* |
+| :----------------------- | :------------------------------ | :---------------------- |
+| name | String | 读写分离数据源名称 |
+| masterDataSourceName | String | 主数据库源名称 |
+| slaveDataSourceNames | Collection<String> | 从数据库源名称列表 |
+| loadBalanceAlgorithm (?) | MasterSlaveLoadBalanceAlgorithm | 从库负载均衡算法 |
+
+#### 属性配置
+
+属性配置项,可以是以下属性。
+
+| *名称* | *数据类型* | *说明* |
+| :--------------------------------- | :---------- | :------------------------------------------------ |
+| sql.show (?) | boolean | 是否打印 SQL 日志,默认值:false |
+| executor.size (?) | int | 用于 SQL 实现的工作线程号;如果为 0,则没有限制。默认值:0 |
+| max.connections.size.per.query (?) | int | 每个物理数据库每次查询分配的最大连接数,默认值:1 |
+| check.table.metadata.enabled (?) | boolean | 初始化时是否检查元数据的一致性,默认值:false |
+
+### 数据脱敏
+
+#### EncryptDataSourceFactory
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :--------------------------- | :------------------ |
+| dataSource | DataSource | 数据源 |
+| encryptRuleConfig | EncryptRuleConfiguration | 加密规则配置 |
+| props (?) | Properties | 属性配置 |
+
+#### EncryptRuleConfiguration
+
+| *名称* | *数据类型* | *说明* |
+| :---------------------- | :---------------------------------- | :--------------------- |
+| encryptors | Map<String, EncryptorRuleConfiguration> | 加密器名称和加密器 |
+| tables | Map<String, EncryptTableRuleConfiguration> | 加密表名和加密表 |
+
+#### 属性配置
+
+属性配置项,可以是以下属性。
+
+| *名称* | *数据类型* | *说明* |
+| :--------------------------------- | :---------- | :------------------------------------ |
+| sql.show (?) | boolean | 是否打印 SQL 日志,默认值:false |
+| query.with.cipher.column (?) | boolean | 有普通列时,是否使用加密列查询,默认值:true |
+
+### 编排
+
+#### OrchestrationShardingDataSourceFactory
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :--------------------------- | :--------------------------------- |
+| dataSourceMap | Map<String, DataSource> | 与 `ShardingDataSourceFactory` 相同 |
+| shardingRuleConfig | ShardingRuleConfiguration | 与 `ShardingDataSourceFactory` 相同 |
+| props (?) | Properties | 与 `ShardingDataSourceFactory` 相同 |
+| orchestrationConfig | OrchestrationConfiguration | 编排规则配置 |
+
+#### OrchestrationMasterSlaveDataSourceFactory
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :--------------------------- | :---------------------------------- |
+| dataSourceMap | Map<String, DataSource> | 与 `MasterSlaveDataSourceFactory` 相同 |
+| masterSlaveRuleConfig | MasterSlaveRuleConfiguration | 与 `MasterSlaveDataSourceFactory` 相同 |
+| configMap (?) | Map<String, Object> | 与 `MasterSlaveDataSourceFactory` 相同 |
+| props (?) | Properties | 与 `MasterSlaveDataSourceFactory` 相同 |
+| orchestrationConfig | OrchestrationConfiguration | 编排规则配置 |
+
+#### OrchestrationEncryptDataSourceFactory
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :--------------------------- | :--------------------------------- |
+| dataSource | DataSource | 与 `EncryptDataSourceFactory` 相同 |
+| encryptRuleConfig | EncryptRuleConfiguration | 与 `EncryptDataSourceFactory` 相同 |
+| props (?) | Properties | 与 `EncryptDataSourceFactory` 相同 |
+| orchestrationConfig | OrchestrationConfiguration | 编排规则配置 |
+
+#### OrchestrationConfiguration
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :--------------------------- | :---------------------------------- |
+| instanceConfigurationMap | Map<String, CenterConfiguration> | config-center®istry-center 的配置,key 是 center 的名称,value 是 config-center/registry-center |
+
+#### CenterConfiguration
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :--------------------------- | :---------------------------------- |
+| type | String | 注册中心类型 (zookeeper/etcd/apollo/nacos) |
+| properties | String | 注册中心的配置属性,例如zookeeper的配置属性 |
+| orchestrationType | String | 编排中心的类型:config-center 或 registry-center,如果两者都使用 `setOrchestrationType("registry_center,config_center");` |
+| serverLists | String | 注册中心服务列表,包括 IP 地址和端口号,多个地址用逗号分隔,如: host1:2181,host2:2181 |
+| namespace (?) | String | 命名空间 |
+
+#### 属性配置
+
+属性配置项,可以是以下属性。
+
+| *名称* | *数据类型* | *说明* |
+| :------------ | :---------- | :---------------------------------------------------- |
+| overwrite | boolean | 本地配置是否覆盖配置中心配置; 如果覆盖,则每次启动都参考本地配置 |
+
+如果注册中心类型是 `zookeeper`,则可以使用以下选项设置属性:
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------------------- | :---------- | :------------------------------------------ |
+| digest (?) | String | 连接注册中心的权限令牌;默认表示不需要权限 |
+| operationTimeoutMilliseconds (?) | int | 操作超时毫秒数,默认为 500 毫秒 |
+| maxRetries (?) | int | 最大重试次数,默认为 3 次 |
+| retryIntervalMilliseconds (?) | int | 重试间隔毫秒数,默认为 500 毫秒 |
+| timeToLiveSeconds (?) | int | 临时节点的存活时间,默认 60 秒 |
+
+如果注册中心类型是 `etcd`,则可以使用以下选项设置属性:
+
+| *名称* | *数据类型* | *说明* |
+| :--------------------------------- | :---------- | :---------------------- |
+| timeToLiveSeconds (?) | long | etcd TTL 秒,默认为 30 秒 |
+
+如果注册中心类型是 `apollo`,则可以使用以下选项设置属性:
+
+| *名称* | *数据类型* | *说明* |
+| :--------------------------------- | :---------- | :--------------------------- |
+| appId (?) | String | Apollo appId,默认为 `APOLLO_SHADINGSPHERE` |
+| env (?) | String | Apollo env,默认为 `DEV` |
+| clusterName (?) | String | Apollo clusterName,默认为 `default` |
+| administrator (?) | String | Apollo administrator,默认为 `` |
+| token (?) | String | Apollo token,默认为 `` |
+| portalUrl (?) | String | Apollo portalUrl,默认为 `` |
+| connectTimeout (?) | int | Apollo connectTimeout,默认为 1000 毫秒 |
+| readTimeout (?) | int | Apollo readTimeout,默认为 5000 毫秒 |
+
+如果注册中心类型是 `nacos`,则可以使用以下选项设置属性:
+
+| *名称* | *数据类型* | *说明* |
+| :--------------------------------- | :---------- | :------------------------------------------------ |
+| group (?) | String | Nacos 组,默认为 `SHADING_SPHERE_DEFAULT_GROUP` |
+| timeout (?) | long | Nacos 超时时间,默认为 3000 毫秒 |
+
+## ShardingSphere-3.x
+
+### 数据分片
+
+#### ShardingDataSourceFactory
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :--------------------------- | :------------------ |
+| dataSourceMap | Map<String, DataSource> | 数据源配置 |
+| shardingRuleConfig | ShardingRuleConfiguration | 数据分片规则配置 |
+| configMap (?) | Map<String, Object> | 用户自定义的参数 |
+| props (?) | Properties | 属性配置 |
+
+#### ShardingRuleConfiguration
+
+| *名称* | *数据类型* | *说明* |
+| :---------------------------------------- | :--------------------------------------- | :----------------------------------- |
+| tableRuleConfigs | Collection<TableRuleConfiguration> | 分片规则列表 |
+| bindingTableGroups (?) | Collection<String> | 绑定表规则列表 |
+| broadcastTables (?) | Collection<String> | 广播表规则列表 |
+| defaultDataSourceName (?) | String | 未配置分片规则的表将根据默认数据源定位 |
+| defaultDatabaseShardingStrategyConfig (?) | ShardingStrategyConfiguration | 默认数据库分片策略 |
+| defaultTableShardingStrategyConfig (?) | ShardingStrategyConfiguration | 默认分表策略 |
+| defaultKeyGeneratorConfig (?) | KeyGeneratorConfiguration | 默认密钥生成器配置,使用用户定义的或内置的,例如 雪花/UUID。默认密钥生成器是 `org.apache.shardingsphere.core.keygen.generator.impl.SnowflakeKeyGenerator`|
+| masterSlaveRuleConfigs (?) | Collection<MasterSlaveRuleConfiguration> | 读写分离规则,默认值表示不使用读写分离 |
+
+#### TableRuleConfiguration
+
+| *名称* | *数据类型* | *说明* |
+| :--------------------------------- | :---------------------------- | :------------------------------------------ |
+| logicTable | String | 逻辑表名称 |
+| actualDataNodes (?) | String | 描述数据源名称和实际表,分隔符为点,多个数据节点用逗号分割,支持内联表达式。不存在意味着仅分片数据库。示例:ds${0..7}.tbl${0..7} |
+| databaseShardingStrategyConfig (?) | ShardingStrategyConfiguration | 数据库分片策略,如果不存在则使用默认的数据库分片策略 |
+| tableShardingStrategyConfig (?) | ShardingStrategyConfiguration | 表分片策略,如果不存在则使用默认的数据库分片策略 |
+| logicIndex (?) | String | 逻辑索引,如果在 Oracle/PostgreSQL 中使用 DROP INDEX XXX SQL,则需要设置此属性以查找实际表 |
+| keyGeneratorConfig (?) | String | 主键列配置,如果不存在则使用默认主键列 |
+| keyGenerator (?) | KeyGenerator | 主键生成器配置,如果不存在则使用默认主键生成器 |
+
+#### StandardShardingStrategyConfiguration
+
+ShardingStrategyConfiguration 的实现类
+
+| *名称* | *数据类型* | *说明* |
+| :------------------------- | :---------------------------- | :--------------------------- |
+| shardingColumn | String | 分片键 |
+| preciseShardingAlgorithm | PreciseShardingAlgorithm | `=` 和 `IN` 中使用的精确分片算法 |
+| rangeShardingAlgorithm (?) | RangeShardingAlgorithm | `BETWEEN` 中使用的范围分片算法 |
+
+##### ComplexShardingStrategyConfiguration
+
+`ShardingStrategyConfiguration` 的实现类,用于具有多个分片键的复杂分片策略。
+
+| *名称* | *数据类型* | *说明* |
+| :---------------------- | :--------------------------- | :----------------- |
+| shardingColumns | String | 分片键,以逗号分隔 |
+| shardingAlgorithm | ComplexKeysShardingAlgorithm | 复杂分片算法 |
+
+##### InlineShardingStrategyConfiguration
+
+`ShardingStrategyConfiguration` 的实现类,用于行表达式的分片策略。
+
+| *名称* | *数据类型* | *说明* |
+| :------------------------ | :----------------------------- | :--------------------------------- |
+| shardingColumns | String | 分片列名,以逗号分隔 |
+| algorithmExpression | String | 行表达式的分片策略,应符合 groovy 语法;有关更多详细信息,请参阅行表达式 |
+
+##### HintShardingStrategyConfiguration
+
+`ShardingStrategyConfiguration` 的实现类,用于配置强制分片策略。
+
+| *名称* | *数据类型* | *说明* |
+| :----------------------- | :------------------------------ | :--------------------------- |
+| shardingAlgorithm | HintShardingAlgorithm | 强制分片算法 |
+
+##### NoneShardingStrategyConfiguration
+
+`ShardingStrategyConfiguration` 的实现类,用于配置非分片策略。
+
+#### 属性配置
+
+枚举属性
+
+| *名称* | *数据类型* | *说明* |
+| :------------------------------------ | :-------- | :------------------------------------------------ |
+| sql.show (?) | boolean | 是否打印 SQL 日志,默认值:false |
+| executor.size (?) | int | 用于 SQL 实现的工作线程号;如果为 0,则没有限制。默认值:0 |
+| max.connections.size.per.query (?) | int | 每个物理数据库每次查询分配的最大连接数,默认值:1 |
+| check.table.metadata.enabled (?) | boolean | 初始化时是否检查元数据的一致性,默认值:false |
+
+#### configMap
+
+用户定义的参数。
+
+### 读写分离
+
+#### MasterSlaveDataSourceFactory
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :--------------------------- | :--------------------- |
+| dataSourceMap | Map<String, DataSource> | 数据源及其名称的映射 |
+| masterSlaveRuleConfig | MasterSlaveRuleConfiguration | 读写分离规则配置 |
+| configMap (?) | Map<String, Object> | 用户自定义的参数 |
+| props (?) | Properties | 属性配置 |
+
+#### MasterSlaveRuleConfiguration
+
+| *名称* | *数据类型* | *说明* |
+| :----------------------- | :------------------------------ | :---------------------- |
+| name | String | 读写分离数据源名称 |
+| masterDataSourceName | String | 主数据库源名称 |
+| slaveDataSourceNames | Collection<String> | 从数据库源名称列表 |
+| loadBalanceAlgorithm (?) | MasterSlaveLoadBalanceAlgorithm | 从库负载均衡算法 |
+
+#### configMap
+
+用户定义的参数。
+
+#### PropertiesConstant
+
+枚举属性。
+
+| *名称* | *数据类型* | *说明* |
+| :------------------------------------ | :-------- | :------------------------------------------------ |
+| sql.show (?) | boolean | 是否打印 SQL 日志,默认值:false |
+| executor.size (?) | int | 用于 SQL 实现的工作线程号;如果为 0,则没有限制。默认值:0 |
+| max.connections.size.per.query (?) | int | 每个物理数据库每次查询分配的最大连接数,默认值:1 |
+| check.table.metadata.enabled (?) | boolean | 初始化时是否检查元数据的一致性,默认值:false |
+
+### 编排
+
+#### OrchestrationShardingDataSourceFactory
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :--------------------------- | :---------------------------------- |
+| dataSourceMap | Map<String, DataSource> | 与 `ShardingDataSourceFactory` 相同 |
+| shardingRuleConfig | ShardingRuleConfiguration | 与 `ShardingDataSourceFactory` 相同 |
+| configMap (?) | Map<String, Object> | 与 `ShardingDataSourceFactory` 相同 |
+| props (?) | Properties | 与 `ShardingDataSourceFactory` 相同 |
+| orchestrationConfig | OrchestrationConfiguration | 编排规则配置 |
+
+#### OrchestrationMasterSlaveDataSourceFactory
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :--------------------------- | :---------------------------------- |
+| dataSourceMap | Map<String, DataSource> | 与 `MasterSlaveDataSourceFactory` 相同 |
+| masterSlaveRuleConfig | MasterSlaveRuleConfiguration | 与 `MasterSlaveDataSourceFactory` 相同 |
+| configMap (?) | Map<String, Object> | 与 `MasterSlaveDataSourceFactory` 相同 |
+| props (?) | Properties | 与 `MasterSlaveDataSourceFactory` 相同 |
+| orchestrationConfig | OrchestrationConfiguration | 编排规则配置 |
+
+#### OrchestrationConfiguration
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------- | :--------------------------- | :----------------------------------------------------- |
+| name | String | 编排实例名称 |
+| overwrite | boolean | 本地配置是否覆盖配置中心配置; 如果覆盖,则每次启动都参考本地配置 |
+| regCenterConfig | RegistryCenterConfiguration | 注册中心配置 |
+
+#### RegistryCenterConfiguration
+
+| *名称* | *数据类型* | *说明* |
+| :-------------------------------- | :--------------------------- | :---------------------------------- |
+| serverLists | String | 注册中心服务列表,包括 IP 地址和端口号,多个地址用逗号分隔,如: host1:2181,host2:2181 |
+| namespace (?) | String | 命名空间 |
+| digest (?) | String | 连接注册中心的权限令牌;默认表示不需要权限 |
+| operationTimeoutMilliseconds (?) | int | 操作超时毫秒数,默认为 500 毫秒 |
+| maxRetries (?) | int | 最大重试次数,默认为 3 次 |
+| retryIntervalMilliseconds (?) | int | 重试间隔毫秒数,默认为 500 毫秒 |
+| timeToLiveSeconds (?) | int | 临时节点的存活时间,默认 60 秒 |
+
+## ShardingSphere-2.x
+
+### 读写分离
+
+#### 概念
+
+为了缓解数据库压力,将写入和读取操作分离为不同数据源,写库称为主库,读库称为从库,一主库可配置多从库。
+
+#### 支持项
+
+1. 提供了一主多从的读写分离配置,可独立使用,也可配合分库分表使用。
+2. 独立使用读写分离支持 SQL 透传。
+3. 同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。
+4. Spring 命名空间。
+5. 基于 Hint 的强制主库路由。
+
+#### 不支持项
+
+1. 主库和从库的数据同步。
+2. 主库和从库的数据同步延迟导致的数据不一致。
+3. 主库双写或多写。
+
+#### 代码开发示例
+
+##### 读写分离
+
+```java
+// 构造一个读写分离数据源,读写分离数据源实现了 DataSource 接口,可以直接作为数据源进行处理。 masterDataSource、slaveDataSource0、slaveDataSource1 等都是使用 DBCP 等连接池配置的真实数据源。
+Map<String, DataSource> dataSourceMap = new HashMap<>();
+dataSourceMap.put("masterDataSource", masterDataSource);
+dataSourceMap.put("slaveDataSource0", slaveDataSource0);
+dataSourceMap.put("slaveDataSource1", slaveDataSource1);
+
+// 构建读写分离配置
+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);
+```
+
+##### 分库分表 + 读写分离
+
+```java
+// 构造一个读写分离数据源,读写分离数据源实现了 DataSource 接口,可以直接作为数据源进行处理。 masterDataSource、slaveDataSource0、slaveDataSource1 等都是使用 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);
+
+// 构建读写分离配置
+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");
+
+// 继续通过 ShardingSlaveDataSourceFactory 创建 ShardingDataSource
+ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
+shardingRuleConfig.getMasterSlaveRuleConfigs().add(masterSlaveRuleConfig0);
+shardingRuleConfig.getMasterSlaveRuleConfigs().add(masterSlaveRuleConfig1);
+
+DataSource dataSource = ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig);
+```
+
+## ShardingSphere-1.x
+
+### 读写分离
+
+#### 概念
+
+为了缓解数据库压力,将写入和读取操作分离为不同数据源,写库称为主库,读库称为从库,一主库可配置多从库。
+
+#### 支持项
+
+1. 提供了一主多从的读写分离配置,可独立使用,也可配合分库分表使用。
+2. 同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。
+3. Spring 命名空间。
+4. 基于 Hint 的强制主库路由。
+
+#### 不支持项
+
+1. 主库和从库的数据同步。
+2. 主库和从库的数据同步延迟导致的数据不一致。
+3. 主库双写或多写。
+
+#### 代码开发示例
+
+```java
+// 构造一个读写分离数据源,读写分离数据源实现了 DataSource 接口,可以直接作为数据源进行处理。 masterDataSource、slaveDataSource0、slaveDataSource1 等都是使用 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);
+
+// 构建读写分离配置
+Map<String, DataSource> dataSourceMap = new HashMap<>();
+dataSourceMap.put("ms_0", masterSlaveDs0);
+dataSourceMap.put("ms_1", masterSlaveDs1);
+```
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
index 4e20e04..69982e8 100644
--- 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
@@ -133,6 +133,8 @@ Attributes:
| 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](/en/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/load-balance) for more details about type of algorithm.
+
### Encryption
#### Root Configuration
@@ -200,8 +202,6 @@ Attributes:
| 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
@@ -298,6 +298,7 @@ Etcd Properties Configuration
| 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* |
@@ -306,6 +307,7 @@ The implementation class of `ShardingStrategyConfiguration`, used in complex sha
| shardingAlgorithm | ComplexKeysShardingAlgorithm | Complex sharding algorithm |
##### InlineShardingStrategyConfiguration
+
The implementation class of `ShardingStrategyConfiguration`, used in sharding strategy of inline expression.
| *Name* | *DataType* | *Explanation* |
@@ -314,6 +316,7 @@ The implementation class of `ShardingStrategyConfiguration`, used in sharding st
| 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* |
@@ -321,8 +324,10 @@ The implementation class of `ShardingStrategyConfiguration`, used to configure h
| shardingAlgorithm | HintShardingAlgorithm | Hint sharding algorithm |
##### NoneShardingStrategyConfiguration
+
The implementation class of `ShardingStrategyConfiguration`, used to configure none-sharding strategies.
-KeyGeneratorConfiguration
+
+### KeyGeneratorConfiguration
| *Name* | *DataType* | *Description* |
| :----------------------- | :------------------------------ | :----------------------------------- |
@@ -775,6 +780,4 @@ DataSource masterSlaveDs1 = MasterSlaveDataSourceFactory.createDataSource("ms_1"
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.cn.md b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/change-history.cn.md
deleted file mode 100644
index 36cdcd2..0000000
--- a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/change-history.cn.md
+++ /dev/null
@@ -1,232 +0,0 @@
-+++
-title = "变更历史"
-weight = 7
-+++
-
-## ShardingSphere-5.0.0-alpha
-
-### 读写分离
-
-#### 配置入口
-
-类名称:ReplicaQueryRuleConfiguration
-
-可配置属性:
-
-| *名称* | *数据类型* | *说明* |
-| ----------------- | ----------------------------------------------------- | ----------------- |
-| dataSources (+) | Collection\<ReplicaQueryDataSourceRuleConfiguration\> | 主从数据源配置 |
-| loadBalancers (*) | Map\<String, ShardingSphereAlgorithmConfiguration\> | 从库负载均衡算法配置 |
-
-#### 主从数据源配置
-
-类名称:ReplicaQueryDataSourceRuleConfiguration
-
-可配置属性:
-
-| *名称* | *数据类型* | *说明* | *默认值* |
-| -------------------------- | -------------------- | ------------------ | ------------- |
-| name | String | 读写分离数据源名称 | - |
-| primaryDataSourceName | String | 主库数据源名称 | - |
-| replicaDataSourceNames (+) | Collection\<String\> | 从库数据源名称列表 | - |
-| loadBalancerName (?) | String | 从库负载均衡算法名称 | 轮询负载均衡算法 |
-
-算法类型的详情,请参见[内置负载均衡算法列表](/docs/document/content/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/load-balance.cn.md)。
-
-## ShardingSphere-4.x
-
-### 读写分离
-
-#### MasterSlaveDataSourceFactory
-
-读写分离的数据源创建工厂。
-
-| *名称* | *数据类型* | *说明* |
-| :-------------------- | :--------------------------- | :------------------- |
-| dataSourceMap | Map<String, DataSource> | 数据源与其名称的映射 |
-| masterSlaveRuleConfig | MasterSlaveRuleConfiguration | 读写分离规则 |
-| props (?) | Properties | 属性配置 |
-
-#### MasterSlaveRuleConfiguration
-
-读写分离规则配置对象。
-
-| *名称* | *数据类型* | *说明* |
-| :----------------------- | :------------------------------ | :----------------- |
-| name | String | 读写分离数据源名称 |
-| masterDataSourceName | String | 主库数据源名称 |
-| slaveDataSourceNames | Collection<String> | 从库数据源名称列表 |
-| loadBalanceAlgorithm (?) | MasterSlaveLoadBalanceAlgorithm | 从库负载均衡算法 |
-
-#### Properties
-
-属性配置项,可以为以下属性。
-
-| *名称* | *数据类型* | *说明* |
-| :--------------------------------- | :--------- | :----------------------------------------------------- |
-| sql.show (?) | boolean | 是否打印SQL解析和改写日志,默认值: false |
-| executor.size (?) | int | 用于SQL执行的工作线程数量,为零则表示无限制。默认值: 0 |
-| max.connections.size.per.query (?) | int | 每个物理数据库为每次查询分配的最大连接数量。默认值: 1 |
-| check.table.metadata.enabled (?) | boolean | 是否在启动时检查分表元数据一致性,默认值: false |
-
-## ShardingSphere-3.x
-
-### 读写分离
-
-#### MasterSlaveDataSourceFactory
-
-读写分离的数据源创建工厂。
-
-| *名称* | *数据类型* | *说明* |
-| :-------------------- | :--------------------------- | :------------------- |
-| dataSourceMap | Map<String, DataSource> | 数据源与其名称的映射 |
-| masterSlaveRuleConfig | MasterSlaveRuleConfiguration | 读写分离规则 |
-| configMap (?) | Map<String, Object> | 用户自定义配置 |
-| props (?) | Properties | 属性配置 |
-
-#### MasterSlaveRuleConfiguration
-
-读写分离规则配置对象。
-
-| *名称* | *数据类型* | *说明* |
-| :----------------------- | :------------------------------ | :----------------- |
-| name | String | 读写分离数据源名称 |
-| masterDataSourceName | String | 主库数据源名称 |
-| slaveDataSourceNames | Collection<String> | 从库数据源名称列表 |
-| loadBalanceAlgorithm (?) | MasterSlaveLoadBalanceAlgorithm | 从库负载均衡算法 |
-
-#### configMap
-
-用户自定义配置。
-
-#### PropertiesConstant
-
-属性配置项,可以为以下属性。
-
-| *名称* | *数据类型* | *说明* |
-| :--------------------------------- | :--------- | :----------------------------------------------------- |
-| sql.show (?) | boolean | 是否打印SQL解析和改写日志,默认值: false |
-| executor.size (?) | int | 用于SQL执行的工作线程数量,为零则表示无限制。默认值: 0 |
-| max.connections.size.per.query (?) | int | 每个物理数据库为每次查询分配的最大连接数量。默认值: 1 |
-| check.table.metadata.enabled (?) | boolean | 是否在启动时检查分表元数据一致性,默认值: false |
-
-## ShardingSphere-2.x
-
-### 读写分离
-
-#### 概念
-
-为了缓解数据库压力,将写入和读取操作分离为不同数据源,写库称为主库,读库称为从库,一主库可配置多从库。
-
-#### 支持项
-
-1. 提供了一主多从的读写分离配置,可独立使用,也可配合分库分表使用。
-2. 独立使用读写分离支持SQL透传。
-3. 同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。
-4. Spring命名空间。
-5. 基于Hint的强制主库路由。
-
-#### 不支持范围
-
-1. 主库和从库的数据同步。
-2. 主库和从库的数据同步延迟导致的数据不一致。
-3. 主库双写或多写。
-
-#### 代码开发示例
-
-##### 仅读写分离
-
-```java
-// 构建读写分离数据源, 读写分离数据源实现了DataSource接口, 可直接当做数据源处理. masterDataSource, slaveDataSource0, slaveDataSource1等为使用DBCP等连接池配置的真实数据源
-Map<String, DataSource> dataSourceMap = new HashMap<>();
-dataSourceMap.put("masterDataSource", masterDataSource);
-dataSourceMap.put("slaveDataSource0", slaveDataSource0);
-dataSourceMap.put("slaveDataSource1", slaveDataSource1);
-
-// 构建读写分离配置
-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);
-```
-
-##### 分库分表 + 读写分离
-
-```java
-// 构建读写分离数据源, 读写分离数据源实现了DataSource接口, 可直接当做数据源处理. masterDataSource0, slaveDataSource00, slaveDataSource01等为使用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);
-
-// 构建读写分离配置
-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");
-
-// 通过ShardingSlaveDataSourceFactory继续创建ShardingDataSource
-ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
-shardingRuleConfig.getMasterSlaveRuleConfigs().add(masterSlaveRuleConfig0);
-shardingRuleConfig.getMasterSlaveRuleConfigs().add(masterSlaveRuleConfig1);
-
-DataSource dataSource = ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig);
-```
-
-## ShardingSphere-1.x
-
-### 读写分离
-
-#### 概念
-
-为了缓解数据库压力,将写入和读取操作分离为不同数据源,写库称为主库,读库称为从库,一主库可配置多从库。
-
-#### 支持项
-
-1. 提供了一主多从的读写分离配置,可独立使用,也可配合分库分表使用。
-2. 同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。
-3. Spring命名空间。
-4. 基于Hint的强制主库路由。
-
-#### 不支持范围
-
-1. 主库和从库的数据同步。
-2. 主库和从库的数据同步延迟导致的数据不一致。
-3. 主库双写或多写。
-
-#### 代码开发示例
-
-```java
-// 构建读写分离数据源, 读写分离数据源实现了DataSource接口, 可直接当做数据源处理. masterDataSource0, slaveDataSource00, slaveDataSource01等为使用DBCP等连接池配置的真实数据源
-Map<String, DataSource> slaveDataSourceMap0 = new HashMap<>();
-slaveDataSourceMap0.put("slaveDataSource00", slaveDataSource00);
-slaveDataSourceMap0.put("slaveDataSource01", slaveDataSource01);
-// 可选择主从库负载均衡策略, 默认是ROUND_ROBIN, 还有RANDOM可以选择, 或者自定义负载策略
-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);
-
-// 构建分库分表数据源
-Map<String, DataSource> dataSourceMap = new HashMap<>();
-dataSourceMap.put("ms_0", masterSlaveDs0);
-dataSourceMap.put("ms_1", masterSlaveDs1);
-
-// 通过ShardingDataSourceFactory继续创建ShardingDataSource
-```
\ No newline at end of file