Spring Boot 集成 Sharding-JDBC: 高效构建分库分表数据库架构
Sharding-JDBC 是一款基于 JDBC 的轻量级数据库中间件,它提供了分库分表、读写分离等功能,可以帮助我们快速构建高可用、高扩展性的数据库架构。在 Spring Boot 项目中,我们可以通过引入 sharding-jdbc-spring-boot-starter 依赖,快速集成 Sharding-JDBC。
以下是基于 Spring Boot 的 Sharding-JDBC 项目的步骤:
- 创建 Spring Boot 项目,并在 pom.xml 中添加 sharding-jdbc-spring-boot-starter 依赖:
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>5.0.0-alpha</version>
</dependency>
- 配置数据源信息和 Sharding-JDBC 规则:
spring:
datasource:
# 主库数据源
primary:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
username: root
password: root
# 从库数据源
secondary:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
username: root
password: root
sharding:
jdbc:
# 配置数据源使用的类型
datasource:
names: primary,secondary
primary:
type: com.zaxxer.hikari.HikariDataSource
secondary:
type: com.zaxxer.hikari.HikariDataSource
# 配置分库分表规则
config:
sharding:
tables:
# 配置分表规则
user:
actual-data-nodes: primary.user_${0..1}
table-strategy:
inline:
sharding-column: id
algorithm-expression: user_${id % 2}
key-generator:
column: id
type: SNOWFLAKE
# 配置分库规则
order:
actual-data-nodes: primary.order,secondary.order
database-strategy:
inline:
sharding-column: user_id
algorithm-expression: primary
table-strategy:
inline:
sharding-column: id
algorithm-expression: order_${id % 2}
key-generator:
column: id
type: SNOWFLAKE
- 在代码中使用 Sharding-JDBC 的数据源:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void save(User user) {
jdbcTemplate.update('insert into user (id, name) values (?, ?)', user.getId(), user.getName());
}
@Override
public List<User> list() {
return jdbcTemplate.query('select * from user', BeanPropertyRowMapper.newInstance(User.class));
}
}
通过以上配置,我们就可以在 Spring Boot 项目中使用 Sharding-JDBC 对数据进行分库分表、读写分离等操作了。
原文地址: https://www.cveoy.top/t/topic/lG03 著作权归作者所有。请勿转载和采集!