java1234开源博客系统
博客信息

mycat垂直分库最佳实践

发布时间:『 2020-03-23 18:15』  博客类别:Mycat  阅读(2120) 评论(0)

mycat垂直分库最佳实践


垂直分库如何根据表来分库呢?

这里一种情况,比如订单表,商品表。 订单表的一个商品外检关联商品表主键;多对一的关系;

如果我们把 订单表 商品表拆分到两个数据库中,那这里就会有一个很头疼的问题,这两个表Join关联查询的话,如何来搞呢。

这里传统的话,有四种解决方案:

1,mycat新版本,提供了跨库2表join,但是假如数据量大的话,会有性能问题;

2,全局表,后面会讲到,每个数据库都有搞个商品表,有点浪费资源;

3,不join查询,业务代码里通过API方式另外再查询,看具情况使用;

4,采用冗余数据方式,订单表里面把商品id,商品名称,价格等数据库也搞进自己的表里,这样就不用join查询,也是有点浪费资源;

 

mycat官方就说明了,支持单库内任意Join,所以我们设计的时候,把同一个业务模块的表放同一个库,依据业务模块来垂直分库;

 

所以我们的最终分库原则以下三点:

1,根据业务模块来划分库,不搞跨库join操作,避坑;

2,公共表,比如数据字典表,系统属性表等,采用全局表;

3,有些核心表,比如用户表,部门表,权限表等,业务模块偶尔用到的时候,可以通过API方式查询,无需划分到具体业务模块里去;


最佳实践设计如下:

QQ鎴浘20200323181527.png


关键字:   无
关注Java1234微信公众号
博主信息
Java1234_小锋
(知识改变命运,技术改变世界)
Powered by Java1234 V3.0 Copyright © 2012-2016 Java知识分享网 版权所有