垂直切分
- 按照业务区分
- 每种业务一种数据库
- 不同业务之间禁止使用跨库join连表查询
垂直切分的优点
- 拆分后业务清晰,拆分规则明确
- 系统之间容易扩展和整合
- 数据维护简单
垂直切分的缺点
- 部分业务表无法join,只能通过接口调用,提升了系统复杂性
- 跨库事务难以处理
- 垂直切分后某些业务数据过于庞大,仍然存在单体性能瓶颈
水平切分
- 将一张表的数据按照某种规则分到不同的数据库中
- 需确定分片的规则
- 使用分片的字段查询时,科确定实体库,其他字段查询,查询所有表
水平切分的优点
- 解决了单库大数据、高并发的性能瓶颈
- 拆分规则封装好,对应用端几乎透明,开发人员无需关心拆分细节
- 提高了系统的稳定性和负载能力
水平切分的缺点
- 拆分规则很难抽象
- 分片事务一致性难以解决
- 二次扩展时,数据迁移、维护难度大