1、ShardingSphere基本概念
文章目录
1 什么是ShardingSphere
- 一套开源的分布式数据库中间件解决方案
- 有三个产品:Sharding-JDBC和Sharding-Proxy
- 定位为关系型数据库中间件,合理在分布式环境下使用关系型数据库操作
2 什么是分库分表
- 数据库数量不可控,随着时间和业务发展,造成表里面的数据越来越多,如果再去对数据库CURD操作的时候,造成性能问题,
- 方案1:从硬件上
- 方案2:分库分表
为了解决数据量过大而造成的数据库性能降低问题;
3 分库分表的方式
分库分表有两种方式:垂直切分和水平切分
垂直切分 库和表是不同的 垂直改变结构
水平切分 库和表是相同的 水平改变数量
3.1 垂直切分
3.1.1 垂直分表
- 操作数据库中某张表,把这张表中一部分字段数据存到一张表里,再把这张表中的另外一部分字段数据存在另一张表中
- 两个表中的行数(记录数)一样
- 好处,查询相应数据的时候不影响另外一张表的数据,修改一张表的时候,另一张表的数据不受影响
3.1.2 垂直分库
- 把单一数据库按照业务划分,专库专表;
3.2 水平切分
3.2.1 水平分表
3.2.2 水平分库
路由策略
4 分库分表应用和问题
4.1 应用
1 在数据库设计的时候考虑垂直分库和垂直分表
2、随着数据库数量增加,不要马上考虑做水平切分,首先考虑缓存处理、读写分离、使用索引等方式,如果这些方式不能根本解决问题,再考虑水平分库和水平分表
4.2 问题
1、跨节点连接查询问题(分页、排序)
需要查询多次,先查询课程表得到课程id,课程名称,课时数,再去查询订单表,得到订单号,订单金额,最后汇总得到结果
2、 多数据源管理问题