5. ShardingJDBC分库分表
大约 2 分钟
1. Sharding-JDBC内置算法
访问官网 https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/builtin-algorithm/sharding/ ,主要包括四种
分片算法:用来分库分表,常见的就是取模
分布式序列算法:用来生成全局id,包括uuid和雪花算法
负载均衡算法:用来做读写分离,多个库中选择一个写库进行操作
加密算法:用来加密解密
这里将分库分表,所有主要看分片算法就好,分布式序列算法就直接用雪花算法。
2. 取模算法
取模算法需要我们自己实现一个算法,直接取模操作,如下:
运行生成四个表,如下:
其实还有一种哈希取模分片算法,即定位到 HashModShardingAlgorithm 类的 doSharding 方法,先哈希,再取模,如下:
3. 基于分片容量的范围分片算法
基于分片容量的范围分片算法就是VOLUME_RANGE,如下:
插入600条数据,且按照user_id分表,每个表就是200条,所以运行之后生成三个表,每个表中200条数据
4. 基于分片边界的范围分片算法
运行生成四个表,按照userid字段值分表,如下:
5. 自动时间段分片算法
运行生成13个表,如下:
6. 同时分库分表
上面都只有将一个表的数据存放到同一个库的多个表中,其实我们可以将一个表存放到多个库多个表中,如下:
未水平分表,数据仅在一个表中,查询语句走 “索引字段”; 水平分表后,之后从查询语句要走 “分片字段+索引字段” 。