大表治理(一)-常见方案
大表治理(二)-归档
大表治理(三)-分库分表
大表治理(四)-分库分表中间件Mycat 和Sharding-Jdbc简介
分库分表中间件的技术方案总体上来讲分为两大类:应用层依赖类中间件和中间层代理类中间件。
- 应用层依赖类中间件特点就是和应用强耦合,需要应用显示依赖相应的jar包。
- 中间层代理类中间件的核心原理是在应用和数据库的连接之间搭起一个代理层,上层应用以标准的MySQL协议来连接代理层,然后代理层负责转发请求到底层的MySQL物理实例。
Mycat
MyCat 是上面所说的中间层代理类中间件,客户端所有的jdbc请求都必须要先交给MyCat,再有MyCat转发到具体的真实服务器中。
优点
- 通用,改造少,多语言支持
- 可以负责更多的内容,将数据迁移,分布式事务等纳入了Proxy的范畴 缺点
- 需要二次转发,有性能损失
- 有运维成本,且需要关注proxy的高可用
Sharding-Jdbc
Sharding-Jdbc 是上面所说的应用层依赖类中间件,它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。
优点
- 轻量,范围更加容易界定,只是 JDBC 增强,不包括HA、事务以及数据库元数据管理
- 无运维成本,无需关注中间件本身的高可用
- 性能高,JDBC直连数据库,无需二次转发
- 可支持各种基于JDBC协议的数据库,如:MySQL,Oralce,SQLServer 缺点
- 不够通用,仅支持某一种语言。
- 版本升级困难,如果中间件有问题,使用该中间件的所有服务都需要升级。
相比Mycat,Sharding-Jdbc具有较好的文档,活跃的社区,可靠性高、接入成本低,Sharding-Jdbc在国内使用较多。