您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
ShardingSphere-JDBC——数据分片配置手册
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
ShardingSphere-JDBC——数据分片配置手册
Apache ShardingSphere
2021-01-21
IP归属:未知
33800浏览
# Java API ## 配置入口 类名称: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)。 # YAML 配置 ## 配置项说明 ```yaml dataSources: # 省略数据源配置,请参考使用手册 rules: - !SHARDING tables: # 数据分片规则配置 <logic-table-name> (+): # 逻辑表名称 actualDataNodes (?): # 由数据源名 + 表名组成(参考Inline语法规则) databaseStrategy (?): # 分库策略,缺省表示使用默认分库策略,以下的分片策略只能选其一 standard: # 用于单分片键的标准分片场景 shardingColumn: # 分片列名称 shardingAlgorithmName: # 分片算法名称 complex: # 用于多分片键的复合分片场景 shardingColumns: #分片列名称,多个列以逗号分隔 shardingAlgorithmName: # 分片算法名称 hint: # Hint 分片策略 shardingAlgorithmName: # 分片算法名称 none: # 不分片 tableStrategy: # 分表策略,同分库策略 keyGenerateStrategy: # 分布式序列策略 column: # 自增列名称,缺省表示不使用自增主键生成器 keyGeneratorName: # 分布式序列算法名称 autoTables: # 自动分片表规则配置 t_order_auto: # 逻辑表名称 actualDataSources (?): # 数据源名称 shardingStrategy: # 切分策略 standard: # 用于单分片键的标准分片场景 shardingColumn: # 分片列名称 shardingAlgorithmName: # 自动分片算法名称 bindingTables (+): # 绑定表规则列表 - <logic_table_name_1, logic_table_name_2, ...> - <logic_table_name_1, logic_table_name_2, ...> broadcastTables (+): # 广播表规则列表 - <table-name> - <table-name> defaultDatabaseStrategy: # 默认数据库分片策略 defaultTableStrategy: # 默认表分片策略 defaultKeyGenerateStrategy: # 默认的分布式序列策略 # 分片算法配置 shardingAlgorithms: <sharding-algorithm-name> (+): # 分片算法名称 type: # 分片算法类型 props: # 分片算法属性配置 # ... # 分布式序列算法配置 keyGenerators: <key-generate-algorithm-name> (+): # 分布式序列算法名称 type: # 分布式序列算法类型 props: # 分布式序列算法属性配置 # ... props: # ... ``` # SPRING BOOT STARTER 配置 ## 配置项说明 ```properties spring.shardingsphere.datasource.names= # 省略数据源配置,请参考使用手册 # 标准分片表配置 spring.shardingsphere.rules.sharding.tables.<table-name>.actual-data-nodes= # 由数据源名 + 表名组成,以小数点分隔。多个表以逗号分隔,支持inline表达式。缺省表示使用已知数据源与逻辑表名称生成数据节点,用于广播表(即每个库中都需要一个同样的表用于关联查询,多为字典表)或只分库不分表且所有库的表结构完全一致的情况 # 分库策略,缺省表示使用默认分库策略,以下的分片策略只能选其一 # 用于单分片键的标准分片场景 spring.shardingsphere.rules.sharding.tables.<table-name>.database-strategy.standard.<sharding-algorithm-name>.sharding-column= # 分片列名称 spring.shardingsphere.rules.sharding.tables.<table-name>.database-strategy.standard.<sharding-algorithm-name>.sharding-algorithm-name= # 分片算法名称 # 用于多分片键的复合分片场景 spring.shardingsphere.rules.sharding.tables.<table-name>.database-strategy.complex.<sharding-algorithm-name>.sharding-columns= # 分片列名称,多个列以逗号分隔 spring.shardingsphere.rules.sharding.tables.<table-name>.database-strategy.complex.<sharding-algorithm-name>.sharding-algorithm-name= # 分片算法名称 # 用于Hint 的分片策略 spring.shardingsphere.rules.sharding.tables.<table-name>.database-strategy.hint.<sharding-algorithm-name>.sharding-algorithm-name= # 分片算法名称 # 分表策略,同分库策略 spring.shardingsphere.rules.sharding.tables.<table-name>.table-strategy.xxx= # 省略 # 自动分片表配置 spring.shardingsphere.rules.sharding.auto-tables.<auto-table-name>.actual-data-sources= # 数据源名 spring.shardingsphere.rules.sharding.auto-tables.<auto-table-name>.sharding-strategy.standard.sharding-column= # 分片列名称 spring.shardingsphere.rules.sharding.auto-tables.<auto-table-name>.sharding-strategy.standard.sharding-algorithm= # 自动分片算法名称 # 分布式序列策略配置 spring.shardingsphere.rules.sharding.tables.<table-name>.key-generate-strategy.column= # 分布式序列列名称 spring.shardingsphere.rules.sharding.tables.<table-name>.key-generate-strategy.key-generator-name= # 分布式序列算法名称 spring.shardingsphere.rules.sharding.binding-tables[0]= # 绑定表规则列表 spring.shardingsphere.rules.sharding.binding-tables[1]= # 绑定表规则列表 spring.shardingsphere.rules.sharding.binding-tables[x]= # 绑定表规则列表 spring.shardingsphere.rules.sharding.broadcast-tables[0]= # 广播表规则列表 spring.shardingsphere.rules.sharding.broadcast-tables[1]= # 广播表规则列表 spring.shardingsphere.rules.sharding.broadcast-tables[x]= # 广播表规则列表 spring.shardingsphere.sharding.default-database-strategy.xxx= # 默认数据库分片策略 spring.shardingsphere.sharding.default-table-strategy.xxx= # 默认表分片策略 spring.shardingsphere.sharding.default-key-generate-strategy.xxx= # 默认分布式序列策略 # 分片算法配置 spring.shardingsphere.rules.sharding.sharding-algorithms.<sharding-algorithm-name>.type= # 分片算法类型 spring.shardingsphere.rules.sharding.sharding-algorithms.<sharding-algorithm-name>.props.xxx=# 分片算法属性配置 # 分布式序列算法配置 spring.shardingsphere.rules.sharding.key-generators.<key-generate-algorithm-name>.type= # 分布式序列算法类型 spring.shardingsphere.rules.sharding.key-generators.<key-generate-algorithm-name>.props.xxx= # 分布式序列算法属性配置 ``` 算法类型的详情,请参见[内置分片算法列表](/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/sharding)和[内置分布式序列算法列表](/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/keygen)。 ## 注意事项 行表达式标识符可以使用 `${...}` 或 `$->{...}`,但前者与 Spring 本身的属性文件占位符冲突,因此在 Spring 环境中使用行表达式标识符建议使用 `$->{...}`。 # SPRING 命名空间配置 ## 简介 ShardingSphere-JDBC 提供官方的 Spring 命名空间配置,使开发者可以非常便捷的整合 ShardingSphere-JDBC 和 Spring 框架。 ## Spring 命名空间配置项 ### 配置示例 ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:shardingsphere="http://shardingsphere.apache.org/schema/shardingsphere/datasource" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://shardingsphere.apache.org/schema/shardingsphere/datasource http://shardingsphere.apache.org/schema/shardingsphere/datasource/datasource.xsd "> <bean id="ds0" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/ds0" /> <property name="username" value="root" /> <property name="password" value="" /> </bean> <bean id="ds1" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/ds1" /> <property name="username" value="root" /> <property name="password" value="" /> </bean> <!-- 配置规则,更多详细配置请参见具体的规则配置部分。 --> <!-- ... --> <shardingsphere:data-source id="shardingDataSource" data-source-names="ds0,ds1" rule-refs="..." > <props> <prop key="xxx.xxx">${xxx.xxx}</prop> </props> </shardingsphere:data-source> </beans> ``` ### 配置项说明 命名空间:[http://shardingsphere.apache.org/schema/shardingsphere/datasource/datasource-5.0.0.xsd](http://shardingsphere.apache.org/schema/shardingsphere/datasource/datasource-5.0.0.xsd) \<shardingsphere:data-source /> | *名称* | *类型* | *说明* | | ----------------- | ----- | --------------------------- | | id | 属性 | Spring Bean Id | | data-source-names | 标签 | 数据源名称,多个数据源以逗号分隔 | | rule-refs | 标签 | 规则名称,多个规则以逗号分隔 | | props (?) | 标签 | 属性配置,详情请参见[属性配置](/cn/user-manual/shardingsphere-jdbc/configuration/props) |
原创文章,需联系作者,授权转载
上一篇:ShardingSphere-JDBC——读写分离配置手册
下一篇:ShardingSphere-JDBC——配置手册序章
Apache ShardingSphere
文章数
96
阅读量
231327
作者其他文章
01
突破关系型数据库桎梏:云原生数据库中间件核心剖析
数据库技术的发展与变革方兴未艾,NewSQL的出现,只是将各种所需技术组合在一起,而这些技术组合在一起所实现的核心功能,推动着云原生数据库的发展。 NewSQL的三种分类中,新架构和云数据库涉及了太多与数据库相关的底层实现,为了保证本文的范围不至太过发散,我们重点介绍透明化分片数据库中间件的核心功能与实现原理,另外两种类型的NewSQL在核心功能上类似,但实现原理会有所差别。
01
Apache ShardingSphere数据脱敏全解决方案详解(上)
Apache ShardingSphere针对新业务上线、旧业务改造分别提供了相应的全套脱敏解决方案。
01
Shardingsphere整合Narayana对XA分布式事务的支持(4)
ShardingSphere对于XA方案,提供了一套SPI解决方案,对Narayana进行了整合,Narayana初始化流程,开始事务流程,获取连接流程,提交事务流程,回滚事务流程。
01
从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
5.x 是 Apache ShardingSphere从分库分表中间件向分布式数据库生态转化的里程碑,从 4.x 版本后期开始打磨的可插拔架构在 5.x 版本已逐渐成型,项目的设计理念和 API 都进行了大幅提升。欢迎大家测试使用!
最新回复
丨
点赞排行
共0条评论
Apache ShardingSphere
文章数
96
阅读量
231327
作者其他文章
01
突破关系型数据库桎梏:云原生数据库中间件核心剖析
01
Apache ShardingSphere数据脱敏全解决方案详解(上)
01
Shardingsphere整合Narayana对XA分布式事务的支持(4)
01
从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号