1 基本概念
什么是Sharding Sphere
1) 一套开源的分布式数据库中间件解决方案
2) 有三个产品: ShardingSphere-JDBC、ShardingSphere-Proxy、ShardingSphere-Sidecar
3) 定位为关系型数据库中间件, 合理在分布式环境下使用关系型数据库操作
2 分库分表
1) 分库分表有两种方式: 垂直切分和水平切分
2) 垂直切分: 垂直分表和水平分表
a) 垂直分表: 表中一些字段放在一个表里, 另一些字段放在另一个表里
b) 垂直分库: 单一数据库, 按照业务进行划分, 订单一个库, 用户一个库
3) 水平切分: 水平分表和水平分库
a) 水平分库: 将单张表的数据切分到多个服务器上去, 每个服务器具有相应的库与表, 只是表中数据集合不同.
水平分库分表能够有效的缓解单机和单库的性能瓶颈和压力, 突破IO、连接数、硬件资源等的瓶颈
b) 水平分库: 针对数据量巨大的单张表(比如订单表), 按照某种规则(RANGE,HASH取模等), 切分到多张表里面去.
但是这些表还是在同一个库中, 所以库级别的数据库操作还是有IO瓶颈, 不建议采用
4) 分库分表应用
a) 在设计数据库时考虑垂直分库和垂直分表
b) 随着数据库量的增加, 不要马上考虑做水平切分, 首先考虑缓存处理、读写分离、使用索引等方式, 如果这些方式
不能解决根本问题了, 再考虑做水平分库、水平分表
5) 分库分表问题
a) 跨节点连接查询问题分页排序
b) 多数据源管理问题