一、基本概念
1、什么是ShardingSphere
1、一套开源的分布式数据库中间件解决方案
2、有三个产品:Sharding-JDBC和Sharding-Proxy、Sharding-Sidecar
3、定位为关系型数据库中间件,合理在分布式环境下使用关系型数据库操作
2、分库分表
1什么是分库分表
1、数据库的数据量是不可控制的,随着时间和业务发展,造成表里面数据越来越多,如果再去对数据库表crud操作,造成性能问题。
2、方案1:从硬件上
3、方案2:分库分表
*为了解决由于数量过大而造成数据库性能降低问题。
2分库分表的方式
分库分表有两种方式:垂直切分和水平切分
垂直切分:垂直分表和垂直分库
水平切分:水平分表和水平分库
1、垂直分表
(1)操作数据库中某张表,把这张表中一部分字段数据存到一张新表里面,再把这张表另一部分字段数据存到另外的一张表里面。
2、垂直分库
(1)把单一数据库按照业务进行划分、专库专表
3、水平分库
(1)创建表结构相同的几个库,将大量数据根据一定规则均分存储到每个库中。
4、水平分表
一个数据库中创建多个结构相同的表,将大量数据根据一定规则均分存储到每个表中。
3分库分表应用和问题
1、应用
(1)在数据库设计时候考虑垂直分库和垂直分表
(2)随着数据库数据量增加,不要马上考虑水平切分,首先考虑缓存处理,读写分离,使用索引等等方式,如果这些方式不能根本解决问题了,再考虑做水平分库和水平分表
2、分库分表问题
(1)跨节点连接查询问题(分页、排序)
(2)多数据源管理问题
二、Sharding-JDBC
1Sharding-JDBC简介
1、是轻量级java框架,是增强版的jdbc驱动
2、Sharding-JDBC:不是做分库分表,主要做两个功能:数据分片和读写分离,简化对分库分表之后数据相关操作
2Sharding-JDBC实现(水平分表)
1、搭建环境
(1)SpringBoot+MybatisPlus+Sharding-JDBC+Druid连接池
(2)创建SpringBoot工程
(3)引入需要的依赖
2、按照水平分表的方式创建数据库、创建数据库表
(1)创建数据库:course_db
(2)在数据库创建两张表course_1和course_2
(3)约定规则:如果添加课程id是偶数把数据添加到course_1,如果是奇数添加到course_2
3、编写代码实现对分库分表数据的操作
(1)创建实体类,mapper
4、配置Sharding-JDBC分片策略
(1)在项目application.propeties配置文件进行配置·
5、编写测试代码