+++ title = “数据分片” weight = 1 +++

配置入口

类名称:org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration

可配置属性:

名称数据类型说明默认值
tableRuleConfigs (+)Collection<TableRuleConfiguration>分片规则列表-
bindingTableGroups (*)Collection<String>绑定表规则列表
broadcastTables (*)Collection<String>广播表规则列表
defaultDatabaseShardingStrategyConfig (?)ShardingStrategyConfiguration默认分库策略不分片
defaultTableShardingStrategyConfig (?)ShardingStrategyConfiguration默认分表策略不分片
defaultKeyGeneratorConfig (?)KeyGeneratorConfiguration默认自增列生成器配置雪花算法

逻辑表配置

类名称:org.apache.shardingsphere.sharding.api.config.TableRuleConfiguration

可配置属性:

名称数据类型说明默认值
logicTableString逻辑表名称-
actualDataNodes (?)String由数据源名 + 表名组成,以小数点分隔。
多个表以逗号分隔,支持行表达式
使用已知数据源与逻辑表名称生成数据节点,用于广播表或只分库不分表且所有库的表结构完全一致的情况
databaseShardingStrategyConfig (?)ShardingStrategyConfiguration分库策略使用默认分库策略
tableShardingStrategyConfig (?)ShardingStrategyConfiguration分表策略使用默认分表策略
keyGeneratorConfig (?)KeyGeneratorConfiguration自增列生成器使用默认自增主键生成器

分片策略配置

标准分片策略配置

类名称:org.apache.shardingsphere.sharding.api.config.strategy.StandardShardingStrategyConfiguration

可配置属性:

名称数据类型说明
shardingColumnString分片列名称
shardingAlgorithmStandardShardingAlgorithm标准分片算法实现类

Apache ShardingSphere 内置的标准分片算法实现类包括:

行表达式分片算法

类名称:org.apache.shardingsphere.sharding.strategy.algorithm.sharding.inline.InlineShardingAlgorithm

可配置属性:

属性名称数据类型说明默认值
algorithm.expressionString分片算法的行表达式-
allow.range.query.with.inline.sharding (?)boolean是否允许范围查询。注意:范围查询会无视分片策略,进行全路由false

取模分片算法

类名称:org.apache.shardingsphere.sharding.strategy.algorithm.sharding.ModuloShardingAlgorithm

可配置属性:

属性名称数据类型说明
mod.valueint分片数量

哈希取模分片算法

类名称:org.apache.shardingsphere.sharding.strategy.algorithm.sharding.HashShardingAlgorithm

可配置属性:

属性名称数据类型说明
mod.valueint分片数量

固定容量范围分片算法

类名称:org.apache.shardingsphere.sharding.strategy.algorithm.sharding.range.StandardRangeShardingAlgorithm

可配置属性:

属性名称数据类型说明
partition.lowerlong范围下界,超过边界的数据会报错
partition.upperlong范围上界,超过边界的数据会报错
partition.volumelong分片容量

自定义边界范围分片算法

类名称:org.apache.shardingsphere.sharding.strategy.algorithm.sharding.range.CustomRangeShardingAlgorithm

可配置属性:

属性名称数据类型说明
partition.rangesString分片的范围边界,多个范围边界以逗号分隔

定长时间段分片算法

类名称:org.apache.shardingsphere.sharding.strategy.algorithm.sharding.DatetimeShardingAlgorithm

可配置属性:

属性名称数据类型说明
epochString分片时间的起始纪元,时间戳格式:yyyy-MM-dd HH:mm:ss
partition.secondslong单一分片所能承载的最大时间,单位:秒

自定义时间边界分片算法

类名称:org.apache.shardingsphere.sharding.strategy.algorithm.sharding.CustomDateTimeShardingAlgorithm

可配置属性:

属性名称数据类型说明
datetime.formatString时间戳格式,例如:yyyy-MM-dd HH:mm:ss
table.suffix.formatStringTODO
datetime.lowerStringTODO
datetime.upperStringTODO
datetime.step.unitStringTODO
datetime.step.amountStringTODO

复合分片策略配置

类名称:ComplexShardingStrategyConfiguration

可配置属性:

名称数据类型说明
shardingColumnsString分片列名称,多个列以逗号分隔
shardingAlgorithmComplexKeysShardingAlgorithm复合分片算法实现类

Apache ShardingSphere 暂无内置复合分片算法实现类。

Hint 分片策略配置

类名称:HintShardingStrategyConfiguration

可配置属性:

名称数据类型说明
shardingAlgorithmHintShardingAlgorithmHint分片算法

Apache ShardingSphere 暂无内置复合分片算法实现类。

不分片策略配置

类名称:NoneShardingStrategyConfiguration

可配置属性:无

自增主键策略配置

类名称:KeyGeneratorConfiguration

可配置属性:

名称数据类型说明
columnString自增列名称
keyGenerateAlgorithmKeyGenerateAlgorithm自增主键算法实现类

Apache ShardingSphere 内置的自增主键算法实现类包括:

雪花算法

类名称:org.apache.shardingsphere.sharding.strategy.algorithm.keygen.SnowflakeKeyGenerateAlgorithm

可配置属性:

属性名称数据类型说明默认值
worker.id (?)long工作机器唯一标识0
max.vibration.offset (?)int最大抖动上限值,范围[0, 4096)。注:若使用此算法生成值作分片值,建议配置此属性。此算法在不同毫秒内所生成的 key 取模 2^n (2^n一般为分库或分表数) 之后结果总为 0 或 1。为防止上述分片问题,建议将此属性值配置为 (2^n)-11
max.tolerate.time.difference.milliseconds (?)long最大容忍时钟回退时间,单位:毫秒10 毫秒

UUID

类名称:org.apache.shardingsphere.sharding.strategy.algorithm.keygen.UUIDKeyGenerateAlgorithm

可配置属性:无