1、ShardingSphere基本概念

1 什么是ShardingSphere

  1. 一套开源的分布式数据库中间件解决方案
  2. 有三个产品:Sharding-JDBC和Sharding-Proxy
  3. 定位为关系型数据库中间件,合理在分布式环境下使用关系型数据库操作

2 什么是分库分表

  1. 数据库数量不可控,随着时间和业务发展,造成表里面的数据越来越多,如果再去对数据库CURD操作的时候,造成性能问题,
  2. 方案1:从硬件上
  3. 方案2:分库分表

为了解决数据量过大而造成的数据库性能降低问题;

3 分库分表的方式

分库分表有两种方式:垂直切分和水平切分
垂直切分 库和表是不同的 垂直改变结构
水平切分 库和表是相同的 水平改变数量

3.1 垂直切分

3.1.1 垂直分表

  1. 操作数据库中某张表,把这张表中一部分字段数据存到一张表里,再把这张表中的另外一部分字段数据存在另一张表中
  2. 两个表中的行数(记录数)一样
  3. 好处,查询相应数据的时候不影响另外一张表的数据,修改一张表的时候,另一张表的数据不受影响

1、ShardingSphere基本概念

3.1.2 垂直分库

  1. 把单一数据库按照业务划分,专库专表;

1、ShardingSphere基本概念

3.2 水平切分

3.2.1 水平分表

1、ShardingSphere基本概念

3.2.2 水平分库

1、ShardingSphere基本概念

路由策略

1、ShardingSphere基本概念

4 分库分表应用和问题

4.1 应用

1 在数据库设计的时候考虑垂直分库和垂直分表
2、随着数据库数量增加,不要马上考虑做水平切分,首先考虑缓存处理、读写分离、使用索引等方式,如果这些方式不能根本解决问题,再考虑水平分库和水平分表

4.2 问题

1、跨节点连接查询问题(分页、排序)
1、ShardingSphere基本概念
需要查询多次,先查询课程表得到课程id,课程名称,课时数,再去查询订单表,得到订单号,订单金额,最后汇总得到结果

2、 多数据源管理问题