1、分库分表的分类
- 垂直划分——分库,根据业务类型将不同的表,分到不同的数据库,主要用来解决单点数据库节点的压力瓶颈问题
- 水平划分——单数据库节点的分表,通过不同的表名来存储部分数据,用来解决单表数据量太大的问题。
- 水平划分——借用中间件,水平复制相同的数据库定义到多个实例节点,由中间件来实现分片逻辑
2、分片规则以及实现方式
分片之后,原生的SQL操作语义总是会弱化的,但是可喜的是,不同的业务场景下,对原生的SQL操作的语义弱化是能接受的,因此损失部分功能语义而提出的多样化分片规则,分别适合不同的业务场景,需要我们深入理解然后才能做到根据不同的业务场景进行合适的选择。
2.1、分片规则制订思考
- 分片数据如何插入。把数据识别出来,然后执行一下分片函数即可定位到节点,再执行对应的SQL即可。
- 分片数据如何关联查询。最难也是主要思考的地方,因为数据分布不同的节点,要全表关联是不容易实现的。
- 分片数据删除。把查询条件识别出来,然后执行一下分片函数即可定位到节点,再执行对应的SQL即可,对了提高执行效率,尽量避免join操作。
- 分片数据修改。把查询条件识别出来,然后执行一下分片函数即可定位到节点,再执行对应的SQL即可,对了提高执行效率,尽量避免join操作。