# 策略
# 分表 table‐strategy
# 语法
spring.shardingsphere.sharding.tables.<逻辑表名称>.table‐strategy.<分片策略>.<分片策略属性名>= #分片策略属性值
spring.shardingsphere.sharding.tables.t_order.table-strategy.inline.sharding-column=order_id
# 分库 database‐strategy
# 语法
spring.shardingsphere.sharding.tables.<逻辑表名称>.database‐strategy.<分片策略>.<分片策略属性名>= #分片策略属性值
spring.shardingsphere.sharding.tables.t_order.database-strategy.inline.sharding-column=user_id
# 公共表(广播表)broadcast‐tables
# 语法
spring.shardingsphere.sharding.broadcast‐tables=具体表名
# 分片策略
- standard
- complex
- inline
- hint
- none
# standard
标准分片策略,对应StandardShardingStrategy。
提供对SQL语句中的 =, IN 和 BETWEEN AND 的分片操作支持。StandardShardingStrategy只支持单分片键,提供 PreciseShardingAlgorithm 和 RangeShardingAlgorithm 两个分片算法。
PreciseShardingAlgorithm是必选的,用于处理=和IN的分片。RangeShardingAlgorithm是可选的,用于处理BETWEEN AND分片,如果不配置RangeShardingAlgorithm,SQL中的BETWEEN AND将按照全库路由处理。
# complex
符合分片策略,对应ComplexShardingStrategy。复合分片策略。
提供对SQL语句中的 =, IN 和 BETWEEN AND的分片操作支持。
ComplexShardingStrategy支持多分片键,由于多分片键之间的关系复杂,因此并未进行过多的封装,而是直接将分片键值组合以及分片操作符透传至分片算法,完全由应用开发者实现,提供最大的灵活度。
# inline
行表达式分片策略,对应 InlineShardingStrategy 。使用Groovy的表达式,提供对SQL语句中的 = 和 IN 的分片操作支持,只支持单分片键。
对于简单的分片算法,可以通过简单的配置使用,从而避免繁琐的Java代码开发,如: t_user_$->{u_id % 8}
表示 t_user 表根据 u_id % 8,而分成8张表,表名称为 t_user_0 到t_user_7 。
# hint
Hint分片策略,对应HintShardingStrategy。通过Hint而非SQL解析的方式分片的策略。 对于分片字段非SQL决定,而由其他外置条件决定的场景,可使用SQL Hint灵活的注入分片字段。 例:内部系统,按照员工登录主键分库,而数据库中并无此字段。SQL Hint支持通过Java API和SQL注释(待实现)两种方式使用。
# none
不分片策略,对应NoneShardingStrategy。不分片的策略
# sharding-column
分片字段属性名称
# algorithm-expression
分片表达式
# 读写分离
ds0 不是固定的,自己定义的任意名称
# m0和s0,记得要配置数据源
spring.shardingsphere.sharding.master‐slave‐rules.ds0.master‐data‐source‐name=m0
spring.shardingsphere.sharding.master‐slave‐rules.ds0.slave‐data‐source‐names=s0
# 如果配置读写分离,那下面旧的需要替换成新的
# spring.shardingsphere.sharding.tables.t_order.actual-data-nodes=m$->{1..2}.t_order_$->{1..2}\
# 新
spring.shardingsphere.sharding.tables.t_user.actual‐data‐nodes = ds0.t_user