相关链接:
Apache ShardingSphere v5.1.0 中文文档
目录
版本介绍
<!-- mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
<!--分库分表-->
<dependencies>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
<version>5.1.2</version>
</dependency>
</dependencies>
`ShardingSphere-JDBC` 是 ShardingSphere 提供的用于实现关系型数据库分库分表功能的开源 JDBC 驱动。它支持多种分片策略和数据源,可以轻松地实现水平拆分、垂直拆分、读写分离等功能,适用于各种场景。`shardingsphere-jdbc-core-spring-boot-starter` 则是 ShardingSphere 提供的基于 Spring Boot 的轻量级快速启动器,它集成了 `ShardingSphere-JDBC`,并提供了更加便捷的配置方式和自动化的集成。相比于直接使用 `ShardingSphere-JDBC`,通过使用 `shardingsphere-jdbc-core-spring-boot-starter`,可以更快速、更方便地集成 ShardingSphere 到 Spring Boot 应用中,并且减少手动配置和工作量。在使用 Spring Boot 框架开发项目时,推荐使用该 starter 来快速实现 ShardingSphere 的集成和管理。总之,`ShardingSphere-JDBC` 是 ShardingSphere 提供的用于实现关系型数据库分库分表功能的 JDBC 驱动程序,而 `shardingsphere-jdbc-core-spring-boot-starter` 是一个基于 Spring Boot 的快速启动器,它集成了 `ShardingSphere-JDBC` 驱动,并提供了更加便捷的配置和集成方式。
实体类
@Data
@TableName("t_user")
public class User {
private Long id;
private String name;
private Integer age;
private String email;
// 年份表
private Integer year;
private SexEnum sex;
// 1库或者0库
private Integer source;
}
bootstrap.properties配置
数据库配置
#################################---数据库配置---#################################
spring.shardingsphere.datasource.names=ds0,ds1
# 数据库ds0
spring.shardingsphere.datasource.ds0.url=jdbc:mysql://ip:3306/ds0?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
spring.shardingsphere.datasource.ds0.username=root
spring.shardingsphere.datasource.ds0.password=root
spring.shardingsphere.datasource.ds0.type=com.alibaba.druid.pool.DruidDataSource
# 数据库ds1
spring.shardingsphere.datasource.ds1.url=jdbc:mysql://ip:3306/ds1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
spring.shardingsphere.datasource.ds1.username=root
spring.shardingsphere.datasource.ds1.password=root
spring.shardingsphere.datasource.ds1.type=com.alibaba.druid.pool.DruidDataSource
分库策略配置
#################################---分库策略---#################################
# 分布式序列算法类型
spring.shardingsphere.rules.sharding.sharding-algorithms.database-inline.type=INLINE
# 分片算法属性配置,使用properties格式会爆红,但是不影响使用
spring.shardingsphere.rules.sharding.sharding-algorithms.database-inline.props.algorithm-expression=ds$->{source}
# 根据source字段你进行分库配置
spring.shardingsphere.rules.sharding.default-database-strategy.standard.sharding-column=source
spring.shardingsphere.rules.sharding.default-database-strategy.standard.sharding-algorithm-name=database-inline
分表策略配置
#################################---分表策略---#################################
# 分布式序列算法类型
spring.shardingsphere.rules.sharding.sharding-algorithms.table-inline-user.type=INLINE
# 分片算法属性配置,使用properties格式会爆红,但是不影响使用
spring.shardingsphere.rules.sharding.sharding-algorithms.table-inline-user.props.algorithm-expression=t_user_$->{year}
# 逻辑表名称
spring.shardingsphere.rules.sharding.tables.t_user.logic-table=t_user
# 主键
spring.shardingsphere.rules.sharding.tables.t_user.key-generate-strategy.column=id
# 主键生成策略:UUID、SNOWFLAKE、LEAF、CUSTOMIZED
spring.shardingsphere.rules.sharding.tables.t_user.key-generate-strategy.key-generator-name=SNOWFLAKE
# 物理表
spring.shardingsphere.rules.sharding.tables.t_user.actual-data-nodes=ds$->{['0','1']}.t_user_$->{['2022','2023']}
# 基于哪个属性进行分片
spring.shardingsphere.rules.sharding.tables.t_user.table-strategy.standard.sharding-column=year
# 分片算法名称
spring.shardingsphere.rules.sharding.tables.t_user.table-strategy.standard.sharding-algorithm-name=table-inline-user