文章目录
分库分表使用背景和笔记
Shardingsphere-JDBC
引入依赖
略。
application-sharding-database.properties配置
这里设置了两个数据库ds0和ds1;sharding-database设置为:以id为主键:数据的id%2的值为存入数据库:即对于ID:奇数存ds1,偶数存ds0。
application.properties
引入application-sharding-database.properties
,并且打印sql:spring.shardingphere.props.sql.show
。
实体类
序列化。
其中@GeneratedValue标签,是自动生成id的时候使用,手动的时候要去掉它。
Repository
继承即可。
随后生成的对象,只要调用它就可以了。
单元测试中
调用save方法存储即可。
自动生成器类
public class implements ShardingKeyGenerator :
在Comparable方法里面,返回:
return new SnowflakeShardingKeyGenerator().generateKey();
其中SnowflakeShardingKeyGenerator
为实现接口ShardingKeyGenerator 中的final类。
在getType方法里面的返回值String,对应配置文件中的key-generator.type=SNOWFLAKE
的值。
垂直分表
创建关联表:detail表;
设置detail分片键
跟id的sharding-database
和主键自动生成器中的配置一样,其中detail里面的pid赋值时postition里面的id,保障在同一个库里面。
查询
水平分库分表
同样的设置实体类和repository。
配置
先根据company_id分库:同一个公司id奇或偶在一个库里面,再根据id的奇偶分表,同时配置实际使用的库表:sharding actual-data-nodes
。
此为视频笔记:LAGOUJIAOYU《MySQL分库分表编程实战》