diff --git a/document/cn/content/06-sharding-jdbc/configuration/config-java.md b/document/cn/content/06-sharding-jdbc/configuration/config-java.md
index 36ac8d5621533da041f693b041abaa6daead5e30..897f120ad02c0885a6122048f6ad9c33dce7c770 100644
--- a/document/cn/content/06-sharding-jdbc/configuration/config-java.md
+++ b/document/cn/content/06-sharding-jdbc/configuration/config-java.md
@@ -4,22 +4,10 @@ title = "Java配置"
weight = 1
+++
-## JAVA配置
+## 配置示例
-### 引入maven依赖
+### 数据分片
-```xml
-
-
- io.shardingjdbc
- sharding-jdbc-core
- ${latest.release.version}
-
-```
-
-### 配置示例
-
-#### 分库分表
```java
DataSource getShardingDataSource() throws SQLException {
ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
@@ -27,23 +15,23 @@ weight = 1
shardingRuleConfig.getTableRuleConfigs().add(getOrderItemTableRuleConfiguration());
shardingRuleConfig.getBindingTableGroups().add("t_order, t_order_item");
shardingRuleConfig.setDefaultDatabaseShardingStrategyConfig(new InlineShardingStrategyConfiguration("user_id", "demo_ds_${user_id % 2}"));
- shardingRuleConfig.setDefaultTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("order_id", ModuloShardingTableAlgorithm.class.getName()));
+ shardingRuleConfig.setDefaultTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("order_id", new ModuloShardingTableAlgorithm()));
return ShardingDataSourceFactory.createDataSource(createDataSourceMap(), shardingRuleConfig);
}
TableRuleConfiguration getOrderTableRuleConfiguration() {
- TableRuleConfiguration orderTableRuleConfig = new TableRuleConfiguration();
- orderTableRuleConfig.setLogicTable("t_order");
- orderTableRuleConfig.setActualDataNodes("demo_ds_${0..1}.t_order_${0..1}");
- orderTableRuleConfig.setKeyGeneratorColumnName("order_id");
- return orderTableRuleConfig;
+ TableRuleConfiguration result = new TableRuleConfiguration();
+ result.setLogicTable("t_order");
+ result.setActualDataNodes("demo_ds_${0..1}.t_order_${0..1}");
+ result.setKeyGeneratorColumnName("order_id");
+ return result;
}
TableRuleConfiguration getOrderItemTableRuleConfiguration() {
- TableRuleConfiguration orderItemTableRuleConfig = new TableRuleConfiguration();
- orderItemTableRuleConfig.setLogicTable("t_order_item");
- orderItemTableRuleConfig.setActualDataNodes("demo_ds_${0..1}.t_order_item_${0..1}");
- return orderItemTableRuleConfig;
+ TableRuleConfiguration result = new TableRuleConfiguration();
+ result.setLogicTable("t_order_item");
+ result.setActualDataNodes("demo_ds_${0..1}.t_order_item_${0..1}");
+ return result;
}
Map createDataSourceMap() {
@@ -54,7 +42,8 @@ weight = 1
}
```
-#### 读写分离
+### 读写分离
+
```java
DataSource getMasterSlaveDataSource() throws SQLException {
MasterSlaveRuleConfiguration masterSlaveRuleConfig = new MasterSlaveRuleConfiguration();
@@ -65,7 +54,7 @@ weight = 1
}
Map createDataSourceMap() {
- final Map result = new HashMap<>();
+ Map result = new HashMap<>();
result.put("demo_ds_master", DataSourceUtil.createDataSource("demo_ds_master"));
result.put("demo_ds_slave_0", DataSourceUtil.createDataSource("demo_ds_slave_0"));
result.put("demo_ds_slave_1", DataSourceUtil.createDataSource("demo_ds_slave_1"));
@@ -73,7 +62,7 @@ weight = 1
}
```
-#### 分库分表 + 读写分离
+### 数据分片 + 读写分离
```java
DataSource getShardingDataSource() throws SQLException {
@@ -88,18 +77,18 @@ weight = 1
}
TableRuleConfiguration getOrderTableRuleConfiguration() {
- TableRuleConfiguration orderTableRuleConfig = new TableRuleConfiguration();
- orderTableRuleConfig.setLogicTable("t_order");
- orderTableRuleConfig.setActualDataNodes("ds_${0..1}.t_order_${[0, 1]}");
- orderTableRuleConfig.setKeyGeneratorColumnName("order_id");
- return orderTableRuleConfig;
+ TableRuleConfiguration result = new TableRuleConfiguration();
+ result.setLogicTable("t_order");
+ result.setActualDataNodes("ds_${0..1}.t_order_${[0, 1]}");
+ result.setKeyGeneratorColumnName("order_id");
+ return result;
}
TableRuleConfiguration getOrderItemTableRuleConfiguration() {
- TableRuleConfiguration orderItemTableRuleConfig = new TableRuleConfiguration();
- orderItemTableRuleConfig.setLogicTable("t_order_item");
- orderItemTableRuleConfig.setActualDataNodes("ds_${0..1}.t_order_item_${[0, 1]}");
- return orderItemTableRuleConfig;
+ TableRuleConfiguration result = new TableRuleConfiguration();
+ result.setLogicTable("t_order_item");
+ result.setActualDataNodes("ds_${0..1}.t_order_item_${[0, 1]}");
+ return result;
}
List getMasterSlaveRuleConfigurations() {
@@ -107,7 +96,7 @@ weight = 1
masterSlaveRuleConfig1.setName("ds_0");
masterSlaveRuleConfig1.setMasterDataSourceName("demo_ds_master_0");
masterSlaveRuleConfig1.setSlaveDataSourceNames(Arrays.asList("demo_ds_master_0_slave_0", "demo_ds_master_0_slave_1"));
-
+
MasterSlaveRuleConfiguration masterSlaveRuleConfig2 = new MasterSlaveRuleConfiguration();
masterSlaveRuleConfig2.setName("ds_1");
masterSlaveRuleConfig2.setMasterDataSourceName("demo_ds_master_1");
@@ -116,168 +105,240 @@ weight = 1
}
Map createDataSourceMap() {
- final Map result = new HashMap<>();
+ Map result = new HashMap<>();
+
result.put("demo_ds_master_0", DataSourceUtil.createDataSource("demo_ds_master_0"));
result.put("demo_ds_master_0_slave_0", DataSourceUtil.createDataSource("demo_ds_master_0_slave_0"));
result.put("demo_ds_master_0_slave_1", DataSourceUtil.createDataSource("demo_ds_master_0_slave_1"));
result.put("demo_ds_master_1", DataSourceUtil.createDataSource("demo_ds_master_1"));
result.put("demo_ds_master_1_slave_0", DataSourceUtil.createDataSource("demo_ds_master_1_slave_0"));
result.put("demo_ds_master_1_slave_1", DataSourceUtil.createDataSource("demo_ds_master_1_slave_1"));
-
+
MasterSlaveRuleConfiguration masterSlaveRuleConfig1 = new MasterSlaveRuleConfiguration();
masterSlaveRuleConfig1.setName("ds_0");
masterSlaveRuleConfig1.setMasterDataSourceName("demo_ds_master_0");
masterSlaveRuleConfig1.setSlaveDataSourceNames(Arrays.asList("demo_ds_master_0_slave_0", "demo_ds_master_0_slave_1"));
-
+
MasterSlaveRuleConfiguration masterSlaveRuleConfig2 = new MasterSlaveRuleConfiguration();
masterSlaveRuleConfig2.setName("ds_1");
masterSlaveRuleConfig2.setMasterDataSourceName("demo_ds_master_1");
masterSlaveRuleConfig2.setSlaveDataSourceNames(Arrays.asList("demo_ds_master_1_slave_0", "demo_ds_master_1_slave_1"));
+
+ return result;
+ }
+```
+
+### 使用Zookeeper的数据治理配置示例
+
+```java
+ DataSource dataSource = OrchestrationShardingDataSourceFactory.createDataSource(
+ createDataSourceMap(), createShardingRuleConfig(), new HashMap(), new Properties(),
+ new OrchestrationConfiguration("orchestration-sharding-data-source", getRegistryCenterConfiguration(), false));
+ private RegistryCenterConfiguration getRegistryCenterConfiguration() {
+ ZookeeperConfiguration result = new ZookeeperConfiguration();
+ result.setServerLists("localhost:2181");
+ result.setNamespace("orchestration-demo");
return result;
}
```
-##### 配置项说明
+### 使用Etcd的数据治理配置示例
-##### 分库分表
+```java
+ DataSource dataSource = OrchestrationShardingDataSourceFactory.createDataSource(
+ createDataSourceMap(), createShardingRuleConfig(), new HashMap(), new Properties(),
+ new OrchestrationConfiguration("orchestration-sharding-data-source", getRegistryCenterConfiguration(), false));
+
+ private RegistryCenterConfiguration getRegistryCenterConfiguration() {
+ EtcdConfiguration result = new EtcdConfiguration();
+ result.setServerLists("http://localhost:2379");
+ return result;
+ }
+```
-##### ShardingDataSourceFactory
+## 配置项说明
-| *名称* | *数据类型* | *必填* | *说明* |
-| ----------------------------- | --------- | ------ | -------------- |
-| dataSourceMap | Map\ | 是 | 数据源与其名称的映射 |
-| shardingRuleConfig | ShardingRuleConfiguration | 是 | 分库分表配置规则 |
-| configMap? | Map\ | 否 | 配置映射关系|
-| props? | Properties | 否 | 相关属性配置 |
+### 数据分片
-##### ShardingRuleConfiguration
+#### ShardingDataSourceFactory
-| *名称* | *数据类型* | *必填* | *说明* |
-| ------------------------------- | ---------- | ------ | --------------------------------------------------------------------- |
-| defaultDataSourceName? | String | 否 | 默认数据源名称,未配置分片规则的表将通过默认数据源定位 |
-| defaultDatabaseShardingStrategyConfig? | ShardingStrategyConfiguration | 否 | 默认分库策略 |
-| defaultTableShardingStrategyConfig? | ShardingStrategyConfiguration | 否 | 默认分表策略 |
-| defaultKeyGenerator? | KeyGenerator |否|自增列值生成类名
-| tableRuleConfigs | Collection\ | 是 | 分片规则列表 |
-| bindingTableGroups? | Collection\ | 否| 绑定表规则|
-| masterSlaveRuleConfigs? | Collection\|否|读写分离配置|
+数据分片的数据源创建工厂。
+| *名称* | *数据类型* | *说明* |
+| ------------------ | ------------------------ | ------------------ |
+| dataSourceMap | Map\ | 数据源与其名称的映射 |
+| shardingRuleConfig | ShardingRuleConfiguration | 分库分表配置规则 |
+| configMap (?) | Map\ | 配置映射关系 |
+| props (?) | Properties | 相关属性配置 |
-##### TableRuleConfiguration
+#### ShardingRuleConfiguration
-| *名称* | *数据类型* | *必填* | *说明* |
-| -------------------- | ---------- | ------ | ------- |
-| logicTable | String | 是 | 逻辑表名 |
-| actualDataNodes? | String | 否 | 真实数据节点|
-| databaseShardingStrategyConfig? | ShardingStrategyConfiguration | 否 | 分库策略 |
-| tableShardingStrategyConfig? | ShardingStrategyConfiguration | 否 | 分表策略 |
-| logicIndex? | String | 否 | 逻辑索引名称,对于分表的Oracle/PostgreSQL数据库中DROP INDEX XXX语句,需要通过配置逻辑索引名称定位所执行SQL的真实分表 |
-| keyGeneratorColumnName? | String | 否 | 自增列名|
-| keyGenerator? | KeyGenerator | 否| 自增列值生成类|
+分片规则配置对象。
+| *名称* | *数据类型* | *说明* |
+| ----------------------------------------- | ------------------------------------------ | ----------------------------------------------- |
+| defaultDataSourceName (?) | String | 默认数据源名称,未配置分片规则的表将通过默认数据源定位 |
+| defaultDatabaseShardingStrategyConfig (?) | ShardingStrategyConfiguration | 默认分库策略 |
+| defaultTableShardingStrategyConfig (?) | ShardingStrategyConfiguration | 默认分表策略 |
+| defaultKeyGenerator (?) | KeyGenerator | 默认自增列值生成器 |
+| tableRuleConfigs | Collection\ | 分片规则列表 |
+| bindingTableGroups (?) | Collection\ | 绑定表规则列表 |
+| masterSlaveRuleConfigs (?) | Collection\ | 读写分离规则,不填写表示不使用读写分离 |
-##### StandardShardingStrategyConfiguration
+#### TableRuleConfiguration
-标准分片策略,用于单分片键的场景
+表分片规则配置对象。
-| *名称* | *数据类型* | *必填* | *说明* |
-| ------------------------------ | ---------- | ------ | --------------------------------------------------------------------- |
-| shardingColumn | String | 是 | 分片列名 |
-| preciseShardingAlgorithm | PreciseShardingAlgorithm | 是 | 精确的分片算法类名称,用于=和IN。该类需使用默认的构造器或者提供无参数的构造器 |
-| rangeShardingAlgorithm? | RangeShardingAlgorithm | 否 | 范围的分片算法类名称,用于BETWEEN。该类需使用默认的构造器或者提供无参数的构造器 |
+| *名称* | *数据类型* | *说明* |
+| ---------------------------------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------- |
+| logicTable | String | 逻辑表名称 |
+| actualDataNodes (?) | String | 真实数据节点名称,不填写表示不分表 |
+| databaseShardingStrategyConfig (?) | ShardingStrategyConfiguration | 分库策略,不填写表示使用默认分库策略 |
+| tableShardingStrategyConfig (?) | ShardingStrategyConfiguration | 分表策略,不填写表示使用默认分表策略 |
+| logicIndex (?) | String | 逻辑索引名称,对于分表的Oracle/PostgreSQL数据库中DROP INDEX XXX语句,需要通过配置逻辑索引名称定位所执行SQL的真实分表 |
+| keyGeneratorColumnName (?) | String | 自增列名称,不填写表示不使用自增主键生成器 |
+| keyGenerator (?) | KeyGenerator | 自增列值生成器,如果填写了keyGeneratorColumnName,不填写keyGenerator,表示使用默认自增主键生成器 |
+#### StandardShardingStrategyConfiguration
-##### ComplexShardingStrategyConfiguration
+ShardingStrategyConfiguration的实现类,用于配置标准分片策略。
-复合分片策略,用于多分片键的场景
+| *名称* | *数据类型* | *说明* |
+| -------------------------- | ------------------------ | --------------------------------------------------------------------- |
+| shardingColumn | String | 分片列名 |
+| preciseShardingAlgorithm | PreciseShardingAlgorithm | 精确的分片算法类名称,用于=和IN。该类需使用默认的构造器或者提供无参数的构造器 |
+| rangeShardingAlgorithm (?) | RangeShardingAlgorithm | 范围的分片算法类名称,用于BETWEEN。该类需使用默认的构造器或者提供无参数的构造器 |
-| *名称* | *数据类型* | *必填* | *说明* |
-| ------------------------------ | ---------- | ------ | --------------------------------------------------- |
-| shardingColumns | String | 是 | 分片列名,多个列以逗号分隔 |
-| shardingAlgorithm | ComplexKeysShardingAlgorithm | 是 | 分片算法全类名,该类需使用默认的构造器或者提供无参数的构造器 |
+#### ComplexShardingStrategyConfiguration
-##### InlineShardingStrategyConfiguration
+ShardingStrategyConfiguration的实现类,用于配置复合分片策略。
-inline表达式分片策略
+| *名称* | *数据类型* | *说明* |
+| ----------------- | ---------------------------- | ----------------------------------------------------- |
+| shardingColumns | String | 分片列名,多个列以逗号分隔 |
+| shardingAlgorithm | ComplexKeysShardingAlgorithm | 分片算法全类名,该类需使用默认的构造器或者提供无参数的构造器 |
-| *名称* | *数据类型* | *必填* | *说明* |
-| ------------------------------- | ---------- | ------ | ------------ |
-| shardingColumn | String | 是 | 分片列名 |
-| algorithmExpression | String | 是 | 分片算法表达式 |
+#### InlineShardingStrategyConfiguration
-##### HintShardingStrategyConfiguration
+ShardingStrategyConfiguration的实现类,用于配置行表达式分片策略。
-Hint方式分片策略
+| *名称* | *数据类型* | *说明* |
+| ------------------- | ----------- | ------------ |
+| shardingColumn | String | 分片列名 |
+| algorithmExpression | String | 分片算法表达式 |
-| *名称* | *数据类型* | *必填* | *说明* |
-| ------------------------------- | ---------- | ------ | --------------------------------------------------- |
-| shardingAlgorithm | HintShardingAlgorithm | 是 | 分片算法全类名,该类需使用默认的构造器或者提供无参数的构造器 |
+#### HintShardingStrategyConfiguration
-##### NoneShardingStrategyConfiguration
+ShardingStrategyConfiguration的实现类,用于配置Hint方式分片策略。
-不分片的策略
+| *名称* | *数据类型* | *说明* |
+| ----------------- | --------------------- | ---------------------------------------------------- |
+| shardingAlgorithm | HintShardingAlgorithm | 分片算法全类名,该类需使用默认的构造器或者提供无参数的构造器 |
-##### ShardingPropertiesConstant
+#### NoneShardingStrategyConfiguration
-| *名称* | *数据类型* | *必填* | *说明* |
-| ------------------------------------- | ---------- | ----- | ----------------------------------- |
-| sql.show | boolean | 是 | 是否开启SQL显示,默认为false不开启 |
-| executor.size? | int | 否 | 最大工作线程数量 |
+ShardingStrategyConfiguration的实现类,用于配置不分片的策略。
-##### configMap
+#### ShardingPropertiesConstant
-##### 读写分离
+属性配置项,可以为以下属性。
-##### MasterSlaveDataSourceFactory
+| *名称* | *数据类型* | *说明* |
+| ----------------- | --------- | ------------------------------- |
+| sql.show (?) | boolean | 是否开启SQL显示,默认为false不开启 |
+| executor.size (?) | int | 最大工作线程数量 |
-| *名称* | *数据类型* | *必填* | *说明* |
-| ------------------------------ | --------- | ------ | ---------------------------------------- |
-| dataSourceMap | Map\ | 是 | 数据源与其名称的映射 |
-| shardingRuleConfig | ShardingRuleConfiguration | 是 | 分库分表规则配置 |
-| configMap? | Map\ | 否 | 配置映射关系|
+#### configMap
+为用户提供的自定义透传的配置项。
-##### MasterSlaveRuleConfiguration
+### 读写分离
-| *名称* | *数据类型* | *必填* | *说明* |
-| ------------------------------ | --------- | ------ | ---------------------------------------- |
-| name | String | 是 | 读写分离配置名称 |
-| masterDataSourceName | String | 是 | 主库数据源 |
-| slaveDataSourceNames | Collection\ | 是 | 从库数据源列表 |
-| loadBalanceAlgorithm? | MasterSlaveLoadBalanceAlgorithm | 否 | 主从库访问策略 |
+#### MasterSlaveDataSourceFactory
-##### configMap
+读写分离的数据源创建工厂。
+| *名称* | *数据类型* | *说明* |
+| --------------------- | ---------------------------- | ------------------ |
+| dataSourceMap | Map\ | 数据源与其名称的映射 |
+| masterSlaveRuleConfig | MasterSlaveRuleConfiguration | 读写分离规则 |
+| configMap (?) | Map\ | 配置映射关系 |
-#### 编排治理配置
+#### MasterSlaveRuleConfiguration
-##### Zookeeper配置示例
+读写分离规则配置对象。
-```java
- DataSource dataSource = OrchestrationShardingDataSourceFactory.createDataSource(
- createDataSourceMap(), createShardingRuleConfig(), new ConcurrentHashMap(), new Properties(),
- new OrchestrationConfiguration("orchestration-sharding-data-source", getRegistryCenterConfiguration(), false));
-
- private static RegistryCenterConfiguration getRegistryCenterConfiguration() {
- ZookeeperConfiguration result = new ZookeeperConfiguration();
- result.setServerLists("localhost:2181");
- result.setNamespace("orchestration-demo");
- return result;
- }
-```
+| *名称* | *数据类型* | *说明* |
+| ------------------------ | ------------------------------- | -------------- |
+| name | String | 读写分离配置名称 |
+| masterDataSourceName | String | 主库数据源 |
+| slaveDataSourceNames | Collection\ | 从库数据源列表 |
+| loadBalanceAlgorithm (?) | MasterSlaveLoadBalanceAlgorithm | 主从库访问策略 |
-##### Etcd配置示例
+#### configMap
-```java
- DataSource dataSource = OrchestrationShardingDataSourceFactory.createDataSource(
- createDataSourceMap(), createShardingRuleConfig(), new ConcurrentHashMap(), new Properties(),
- new OrchestrationConfiguration("orchestration-sharding-data-source", getRegistryCenterConfiguration(), false));
-
- private static RegistryCenterConfiguration getRegistryCenterConfiguration() {
- EtcdConfiguration result = new EtcdConfiguration();
- result.setServerLists("http://localhost:2379");
- return result;
- }
-```
+为用户提供的自定义透传的配置项。
+
+### 数据治理
+
+#### OrchestrationShardingDataSourceFactory
+
+数据分片 + 数据治理的数据源创建工厂。
+
+| *名称* | *数据类型* | *说明* |
+| ------------------- | ------------------------- | --------------------------- |
+| dataSourceMap | Map\ | 同ShardingDataSourceFactory |
+| shardingRuleConfig | ShardingRuleConfiguration | 同ShardingDataSourceFactory |
+| configMap (?) | Map\ | 同ShardingDataSourceFactory |
+| props (?) | Properties | 同ShardingDataSourceFactory |
+| orchestrationConfig | OrchestrationConfiguration | 数据治理规则配置 |
+
+#### OrchestrationMasterSlaveDataSourceFactory
+
+读写分离 + 数据治理的数据源创建工厂。
+
+| *名称* | *数据类型* | *说明* |
+| --------------------- | ---------------------------- | ------------------ |
+| dataSourceMap | Map\ | 数据源与其名称的映射 |
+| masterSlaveRuleConfig | MasterSlaveRuleConfiguration | 读写分离规则 |
+| configMap (?) | Map\ | 配置映射关系 |
+| orchestrationConfig | OrchestrationConfiguration | 数据治理规则配置 |
+
+#### OrchestrationConfiguration
+
+数据治理规则配置对象。
+
+| *名称* | *数据类型* | *说明* |
+| --------------- | --------------------------- | -------------------------------------- |
+| name | String | 数据治理实例名称 |
+| regCenterConfig | RegistryCenterConfiguration | 注册中心配置 |
+| overwrite | boolean | 本地配置是否覆盖注册中心配置 |
+| type | String | 数据源类型,可选值:sharding,masterslave |
+
+#### ZookeeperConfiguration
+
+RegistryCenterConfiguration的实现类,用于配置Zookeeper注册中心。
+
+| *名称* | *数据类型* | *说明* |
+| ----------------------------- | ---------- | ------------------------------------------------------------------------- |
+| serverLists | String | Zookeeper连接地址,多个Zookeeper用逗号分隔,如:localhost:2181,localhost:3181 |
+| namespace | String | Zookeeper的命名空间 |
+| baseSleepTimeMilliseconds (?) | int | 连接失败的初始等待毫秒数,默认1000毫秒 |
+| maxSleepTimeMilliseconds (?) | int | 连接失败的最大等待毫秒数,默认3000毫秒 |
+| maxRetries (?) | int | 连接失败后的最大重试次数,默认3次 |
+| sessionTimeoutMilliseconds | int | 会话超时毫秒数 |
+| connectionTimeoutMilliseconds | int | 连接超时毫秒数 |
+| digest (?) | String | 连接凭证 |
+
+#### EtcdConfiguration
+
+RegistryCenterConfiguration的实现类,用于配置Etcd注册中心。
+| *名称* | *数据类型* | *说明* |
+| ----------------------------- | ---------- | --------------------------------------------------------------- |
+| serverLists | String | Etcd连接地址,多个Etcd用逗号分隔,如:localhost:2379,localhost:3379 |
+| timeToLiveSeconds (?) | int | 数据存活秒数,默认60秒 |
+| timeoutMilliseconds (?) | int | 请求超时毫秒数,默认500毫秒 |
+| retryIntervalMilliseconds (?) | int | 重试间隔毫秒数,默认200毫秒 |
+| maxRetries (?) | int | 请求失败后的最大重试次数,默认3次 |