ShardingJDBC 配置-数据分片

188 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

ShardingJDBC 分库分表中间件,前面提到了主要是做分库分表的,为什么需要分库分表, 水平拆分和垂直拆分,拆分之后多个库事务怎么保证,原来单库单表直接用Spring的事务注解直接就搞定了,现在分为多个库多张表如何保证事务呢? 在提升了复杂度之后,又会带来服务治理的一系列问题?

没关系ShardingJDBC都有对应的解决方案。

image.png

数据分片

image.png

分片规则配置

Sharding-JDBC的分片逻辑非常灵活,支持:

  • 分片策略自定义
  • 复数分片键
  • 多运算符分片等。

比如电商中常见的按照用户ID分表,分为1024张表,按照ID取模等。 Sharding-JDBC除了支持 = 运算符进行分片,还支持IN/BETWEEN运算符分片和按照分片算法进行自定义分片。

分片算法

目前提供4种分片算法。这四种分片的算法基本上可以满足覆盖大部分的业务场景。

  • 精确分片算法

    对应PreciseShardingAlgorithm,用于处理使用单一键作为分片键的=与IN进行分片的场景。需要配合StandardShardingStrategy使用。

  • 范围分片算法

    对应RangeShardingAlgorithm,用于处理使用单一键作为分片键的BETWEEN AND进行分片的场景。需要配合StandardShardingStrategy使用。

  • 复合分片算法

    对应ComplexKeysShardingAlgorithm,用于处理使用多键作为分片键进行分片的场景,包含多个分片键的逻辑较复杂,需要应用开发者自行处理其中的复杂度。需要配合ComplexShardingStrategy使用。

  • Hint分片算法

    对应HintShardingAlgorithm,用于处理使用Hint行分片的场景。需要配合HintShardingStrategy使用。