【Spring Boot 实战】数据库单表千万级别怎么办?

本文介绍了在面临单表千万数据时,如何使用ShardingSphere进行分库分表的实战。文章详细讲解了ShardingSphere的简介,包括其定位、组件和适用场景,并提供了基于Spring Boot 2.1.5和Mybatis-Plus的项目实战步骤,包括配置分片策略、自增主键策略以及测试验证。通过ShardingSphere,可以在不改变原有业务代码的基础上实现数据库的水平扩展。
摘要由CSDN通过智能技术生成

一. 项目需求

在之前我做项目的时候,数据量比较大,单表千万级别的,需要分库分表,于是在网上搜索这方面的开源框架,最常见的就是mycat,sharding-sphere,最终我选择后者,用它来做分库分表比较容易上手。

二. 简介sharding-sphere

官网地址: https://shardingsphere.apache.org/

ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。

ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。 它与NoSQL和NewSQL是并存而非互斥的关系。NoSQL和NewSQL作为新技术探索的前沿,放眼未来,拥抱变化,是非常值得推荐的。

反之,也可以用另一种思路看待问题,放眼未来,关注不变的东西,进而抓住事物本质。 关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。

 

sharding-jdbc 定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。

适用于任何基于Java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。 基于任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。 支持任意实现JDBC规范的数据库。目前支持MySQL,Oracle,SQLServer和PostgreSQL。

 

三. 项目实战

本项目基于 Spring Boot 2.1.5 使用sharding-sphere + Mybatis-Plus 实现分库分表

1. pom.xml引入依赖

 
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  4. <modelVersion>4.0.0</modelVersion>

  5. <parent>

  6. <groupId>org.springframework.boot</groupId>

  7. <artifactId>spring-boot-starter-parent</artifactId>

  8. <version>2.1.5.RELEASE</version>

  9. <relativePath/>

  10. </parent>

  11. <groupId>com.xd</groupId>

  12. <artifactId>spring-boot-sharding-table</artifactId>

  13. <version>0.0.1-SNAPSHOT</version>

  14. <name>spring-boot-sharding-table</name>

  15. <description>基于 Spring Boot 2.1.5 使用sharding-sphere + Mybatis-Plus 实现分库分表</description>

  16.  

  17. <properties>

  18. <java.version>1.8</java.version>

  19. </properties>

  20.  

  21. <dependencies>

  22. <dependency>

  23. <groupId>org.springframework.boot</groupId>

  24. <artifactId>spring-boot-starter-web</artifactId>

  25. </dependency>

  26.  

  27. <dependency>

  28. <groupId>org.springframework.boot</groupId>

  29. <artifactId>spring-boot-starter-test</artifactId>

  30. <scope>test</scope>

  31. </dependency>

  32. <!--mysql-->

  33. <dependency>

  34. <groupId>mysql</groupId>

  35. <artifactId>mysql-connector-java</artifactId>

  36. <scope>runtime</scope>

  37. </dependency>

  38. <!--Mybatis-Plus-->

  39. <dependency>

  40. <groupId>com.baomidou</groupId>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值