1.纵向分片(垂直分片)
和微服务的思想一样,根据业务场景将不同的数据存入不同的数据库
2.横向分片(水平分片)
将一张数据过多的表数据按条件进行拆分
可根据数据量,时间,范围,取模/取余,枚举值分片
一般来说首先确立纵向分片,然后考虑缓存,读写分离,索引技术对数据进行优化,在数据量极大的时候在考虑分库分表,横向分片是分库分表的核心
分库分表会遇到很多问题
1.分布式事务,实物一致性
2.跨节点关联查询
3.跨节点分页,排序
4.主键避重
5.公共表处理
6.运维工作流
什么时候分库分表
当数据超过500W或者单表数据超过2GB,就要考虑到分库分表了
分库分表常用插件
ShardingSphere 市面上常用
总体执行逻辑
路由
执行引擎
OLAP面向分析 数据吞吐量大 效率要求不高 适合于大量数据的报表
OLTP面向事务 归并效率高 适合于电商高并发场景
SPI机制快速的找到service实现类
mycat 出自阿里巴巴,但并非阿里巴巴开发
DBLE 只支持Mysql 基于mycat,简单强大