Java基于ShardingSphere实现分库分表的实例详解
一、简介
Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的数据水平扩展、分布式事务和分布式治理等功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。
Apache ShardingSphere 旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。 关系型数据库当今依然占有巨大市场份额,是企业核心系统的基石,未来也难于撼动,我们更加注重在原有基础上提供增量,而非颠覆。
Apache ShardingSphere 5.x 版本开始致力于可插拔架构,项目的功能组件能够灵活的以可插拔的方式进行扩展。 目前,数据分片、读写分离、数据加密、影子库压测等功能,以及 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 与协议的支持,均通过插件的方式织入项目。 开发者能够像使用积木一样定制属于自己的独特系统。Apache ShardingSphere 目前已提供数十个 SPI 作为系统的扩展点,仍在不断增加中。
ShardingSphere 已于2020年4月16日成为 Apache 软件基金会的顶级项目。
二、项目使用
1、引入依赖
<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.0.0-RC2</version> </dependency>
2、数据库
3、实体类
@Data public class User { private Integer id; private String name; private Integer age; }
4、mapper
这里用的Mybatis-plus 3.4版本。
@Mapper public interface UserMapper extends BaseMapper<User> { }
5、yml配置
spring: shardingsphere: datasource: #数据库分库名 names: ds0,ds1 ds0: #type为数据源,如果是Druid数据库连接池,可以去改 type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/test0?characterEncoding=utf-8&serverTimezone=UTC username: root password: root ds1: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/test1?characterEncoding=utf-8&serverTimezone=UTC username: root password: root # 分片规则 sharding: default-database-strategy: inline: algorithm-expression: ds$->{id%2} sharding-column: id tables: user: actual-data-nodes: ds${0..1}.user_${0..2} table-strategy: inline: algorithm-expression: user_${age%2} sharding-column: age # 在日志中SQL语句 props: sql: show: true
6、测试类
@SpringBootTest class DemoApplicationTests { @Resource private UserMapper userMapper; @Test void contextLoads() { User user = new User(); user.setId(1); user.setName("666"); user.setAge(16); userMapper.insert(user); } @Test void contextLoads2() { User user = new User(); user.setId(2); user.setName("666"); user.setAge(17); userMapper.insert(user); } }
7、数据
到此这篇关于ShardingSphere实现分库分表的文章就介绍到这了,更多相关ShardingSphere分库分表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringSecurity oAuth2.0的四种模式(小结)
本文主要介绍了SpringSecurity oAuth2.0的四种模式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-02-02结合线程池实现apache kafka消费者组的误区及解决方法
这篇文章主要介绍了结合线程池实现apache kafka消费者组的误区及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-07-07springmvc后台基于@ModelAttribute获取表单提交的数据
这篇文章主要介绍了springmvc后台基于@ModelAttribute获取表单提交的数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-10-10详解SpringMVC注解@initbinder解决类型转换问题
本篇文章主要介绍了详解SpringMVC注解@initbinder解决类型转换问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-03-03
最新评论