ShardingSphere
一、基本概念
1.1、ShardingSphere 是什么
官网:https://shardingsphere.apache.org/index_zh.html
- 一套开源的分布式数据库中间件解决方案
- 有三个产品:
Sharding-JDBC
、Sharding-Proxy
和Sharding-Sidecar
- 定位为关系型数据库中间件,合理在分布式环境下使用关系型数据库操作
1.2、分库分表是什么
1、为什么要分库分表
数据库数据量不可控的,随着时间和业务发展,造成表里面数据越来越多,如果再去对数据库表 curd 操作时候,造成性能问题。
2、解决数据量过大
- 方案 1:从硬件上
- 方案 2:分库分表
为了解决由于数据量过大而造成数据库性能降低问题。
1.3、分库分表的方式
分库分表有两种方式:垂直切分 和 水平切分
- 垂直切分:垂直分表 和 垂直分库
- 水平切分:水平分表 和 水平分库
1、垂直分表
操作数据库中某张表,把这张表中一部分字段数据存到一张新表里面,再把这张表另一部分字段数据存到另外一张表里面。
- 列表查询时,只查出基本信息,减少
IO
消耗 - 修改课程描述信息,不会导致全表锁,不影响查询课程列表
2、垂直分库
把单一数据库按照业务进行划分,专库专表。
- 对数据库负载,解决单个数据库
CPU/IO
瓶颈
3、水平分表
- 解决单表数据过大
4、水平分库
- 解决单个表数据量过大
- 解决单个库
CPU/IO
瓶颈
1.4、分库分表应用和问题
1、应用
- 在数据库设计时候考虑垂直分库和垂直分表。
- 随着数据库数据量增加,不要马上考虑做水平切分,首先考虑缓存处理,读写分离,使用索引等等方式,如果这些方式不能根本解决问题了,再考虑做水平分库和水平分表。
2、分库分表问题
- 跨节点连接查询问题(分页、排序)
- 多数据源管理问题