一、分⽚算法
通过分⽚算法将数据分⽚,⽀持通过 =、>=、<=、>、<、BETWEEN 和 IN 分⽚。分⽚算法需要应⽤⽅开发者⾃⾏实现,可实现的灵活度⾮常⾼。
⽬前提供 4 种分⽚算法。由于分⽚算法和业务实现紧密相关,因此并未提供内置分⽚算法,而是通过分⽚策略将各种场景提炼出来,提供更⾼层级的抽象,并提供接口让应⽤开发者⾃⾏实现分⽚算法。
- 标准分⽚算法
对应 StandardShardingAlgorithm,⽤于处理使⽤单⼀键作为分⽚键的 =、IN、BETWEEN AND、>、<、>=、
<= 进⾏分⽚的场景。需要配合 StandardShardingStrategy 使⽤。 - 复合分⽚算法
对应 ComplexKeysShardingAlgorithm,⽤于处理使⽤多键作为分⽚键进⾏分⽚的场景,包含多个分⽚键
的逻辑较复杂,需要应⽤开发者⾃⾏处理其中的复杂度。需要配合 ComplexShardingStrategy 使⽤。 - Hint 分⽚算法
对应 HintShardingAlgorithm,⽤于处理使⽤ Hint ⾏分⽚的场景。需要配合 HintShardingStrategy 使⽤。
分⽚策略
包含分⽚键和分⽚算法,由于分⽚算法的独⽴性,将其独⽴抽离。真正可⽤于分⽚操作的是分⽚键 + 分⽚算法,也就是分⽚策略。⽬前提供 5 种分⽚策略。
- 标准分⽚策略
对应 StandardShardingStrategy。提供对 SQ L 语句中的 =, >, <, >=, <=, IN 和 BETWEEN AND 的分⽚操作⽀持。
StandardShardingStrategy 只⽀持单分⽚键,提供 PreciseShardingAlgorithm 和 RangeShardingAlgorithm两个分⽚算法。PreciseShardingAlgorithm是必选的,⽤于处理=和IN的分⽚。RangeShardingAlgorithm 是可选的,⽤于处理 BETWEEN AND, >, <, >=, <= 分⽚,如果不配置 RangeShardingAlgorithm,SQL 中的 BETWEEN AND 将按照全库路由处理。 - 复合分⽚策略
对应 ComplexShardingStrategy。复合分⽚策略。提供对 SQL 语句中的 =, >, <, >=, <=, IN 和 BETWEEN AND 的分⽚操作⽀持。ComplexShardingStrategy ⽀持多分⽚键,由于多分⽚键之间的关系复杂,因此并未进⾏过多的封装,而是直接将分⽚键值组合以及分⽚操作符透传⾄分⽚算法,完全由应⽤开发者实现,提供最⼤的灵活度。 - Hint 分⽚策略
对应 HintShardingStrategy。通过 Hint 指定分⽚值而⾮从 SQL 中提取分⽚值的⽅式进⾏分⽚的策略。 - 不分⽚策略
对应 NoneShardingStrategy。不分⽚的策略。