ShardingSphere-JDBC
官网:https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/
学习视频:https://edu.aliyun.com/course/2059?spm=5176.10731542.0.0.195c7bc6NvkSBz
视频链接内容:阿里云大学-数据库中间件ShardingSphere详解
本学习笔记暂时没有读写分离,因为还没操作,收藏即我会了,哈哈哈
-
简介
轻量级 Java 框架,介于 JDBC层 ,可视为增强版的 JDBC 驱动。提供了分库分表、读写分离等功能。
适用任何基于 JDBC 的 ORM 框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template 或直接使用 JDBC。
支持任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP 等。
支持任意实现 JDBC 规范的数据库,目前支持 MySQL,Oracle,SQLServer,PostgreSQL 以及任何遵循 SQL92 标准的数据库。
-
功能
-
分库分表
-
水平切分
水平分表:同一数据库,结构相同的两张表,根据自定义规则,解析sql语句,分别存入对应的表。
水平分库:不同数据库,结构相同的两张表,根据自定义规则,解析sql语句,分别存入对应的库和表。 -
垂直切分
垂直分表:同一数据库,结构不同的两张表,根据自定义规则,解析sql语句,分别存入对应的表。
垂直分库:不同数据库,结构不同的两张表,根据自定义规则,解析sql语句,分别存入对应的库和表。
3.应用场景
在水平分库分表的情况下,使用垂直切分,形成专库专表。
-
-
读写分离
- 前提:要先使用 MySql 自身功能实现主从复制。
- 读写分离:主节点执行写操作,从节点执行读操作。再进行分库分表操作,根据自定义规则,解析sql语句,存入对应的库和表。
-
ShardingSphere-JDBC 分库分表需要提前规划并创建库或表;
查询也遵循自定义规则,如果查询条件字段是自定义规则字段,会直接查询对应的库或表;否则,会查询自定义规则中包含的所有库和表。测试情况查看下方操作。
- 操作
-
通用操作
-
创建 spring-boot项目
-
引入依赖
shardingsphere-jdbc 依赖
#shardingsphere-jdbc依赖 <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core</artifactId> <!-- 注意:请将 ${latest.release.version} 更改为实际的版本号 --> <!-- 本次使用的是<version>4.0.0-RC1</version> --> <version>${latest.release.version}</version> </dependency>
全部依赖
<!-- pom.xml --> <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>shardingjdbcdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>shardingjdbcdemo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <!-- druid连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.13</version> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- sharding-jdbc --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.0.0-RC1</version> </dependency> <!-- mybatis-plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis
-
-