ShardingSphere实现分库分表

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的数据水平扩展、分布式事务和分布式治理等功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。

一、简介

  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.1.1</version>
</dependency>

之前用的4.0.0-RC2版本,它和mybatis-plus集成,分页有bug。

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
        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
        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%3}
              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、数据

在这里插入图片描述

在这里插入图片描述

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Java 关系型数据库 中间件
分库分表(3)——ShardingJDBC实践
分库分表(3)——ShardingJDBC实践
329 0
分库分表(3)——ShardingJDBC实践
|
4月前
|
Java Apache Maven
Apache ShardingSphere 实现分库分表及读写分离
Apache ShardingSphere 实现分库分表及读写分离
82 0
|
6月前
|
SQL 负载均衡 算法
使用ShardingJDBC实现分库分表
使用ShardingJDBC实现分库分表
|
5月前
|
算法 Java 数据库连接
【分库分表】基于mysql+shardingSphere的分库分表技术
【分库分表】基于mysql+shardingSphere的分库分表技术
182 0
|
关系型数据库 MySQL Java
ShardingSphere 实战之读写分离
采用 ShardingShpere 的 Sharding-Porxy(透明化的数据库代理端) 模式在本地实现 mysql 数据库读写分离,并通过 java 应用程序连接.
ShardingSphere 实战之读写分离
|
SQL 存储 算法
聊聊 Sharding-JDBC 分库分表
聊聊 Sharding-JDBC 分库分表
|
存储 SQL 缓存
分库分表之ShardingSphere(一)
分库分表之ShardingSphere
|
SQL cobar 算法
分库分表之ShardingSphere(二)
分库分表之ShardingSphere
|
关系型数据库 中间件 数据库
ShardingSphere-分库分表介绍 | 学习笔记
快速学习ShardingSphere-分库分表介绍。
ShardingSphere-分库分表介绍 | 学习笔记
|
存储 缓存 中间件
ShardingSphere-分库分表小结和问题 | 学习笔记
快速学习ShardingSphere-分库分表小结和问题。
ShardingSphere-分库分表小结和问题 | 学习笔记