基础
什么是ShardingSphere
开源分布式的关系型数据库中间件
组件
- Sharding-JDBC
- Sharding-Proxy
- 透明化的数据库代理端
- 支持MySQL,PgSQL
- Sharding-Sidecar(规划中)
当前版本4.x, https://shardingsphere.apache.org/document/legacy/4.x/document/cn/overview/
分表分库解析
解决数据量大,影响性能问题
- 表
- 垂直分表
- 把这张表一部分字段存在一张新表,另一部分拆到另一张表中存储 (课程主要信息 / 课程描述)
- 水平分表
- 按照一定字段hash分表
- 垂直分表
- 数据库
- 垂直分库(垂直切分)
- 把单一的数据库,按照业务进行拆分(商品库 / 订单库)
- 水平分库(水平切分)
- 将一个数据库拆成两个相同数据库,
- 垂直分库(垂直切分)
当数据量增大时,先考虑缓存处理和使用索引
带来的问题:
- 跨数据源连接查询问题(分页, 排序)
- 多数据源管理问题
读写分离
Sharding-JDBC
代码: https://github.com/Macky-He/spring-boot—shardingsphere-examples
- 轻量级java框架,以jar形式提供服务
- 增强版jdbc驱动
- 支持多种数据库和连接池
Sharding-JDBC并不是去做分库分表, 主要功能: **数据分片和读写分离**,简化分库分表之后数据相关操作
简化分库分表之后对数据的操作
- 配置多个数据源
- 使用水平分表
- 水平分库
- 垂直分库
- 配置公共表 broadcast-tables (公共表每个数据源都会插入一次数据)