横向拆分与纵向拆分
数据库拆分
- 横向拆分: 将数据库中表的数据按照记录(行)拆分到多个表(库)中去,每个数据库表的结构都一样,也就是列数是一样的。比如某个表有100w条记录,可以把该表横向拆分到10个表里去,每个表10w记录,第一个表是1~10w,第二个表是100001到20w,以此类推。以后当需要进行查询或者修改时,只需要去修改某个表中的10w条记录就可以了,减少了数据库压力。
- 纵向拆分: 将数据库中的表的数据按字段(列)拆分到多个表(库)里去,每个数据库表的结构都不一样,但是拥有的记录数是一样的,也就是行数是一样的,但是列数并不相同,会使用同一个外键进行关联,以便查询和修改。
微服务拆分
- 横向拆分: 是按照公共且独立功能维度拆分,标准是按照是否有公共的被多个其他服务调用,且依赖的资源独立不与其他业务耦合。
- 纵向拆分: 是从业务维度进行拆分。标准是按照业务的关联程度来决定,关联比较密切的业务适合拆分为一个微服务,而功能相对比较独立的业务适合单独拆分为一个微服务。比如消息通知,评论,个人主页等等。