mycat
MyCAT是一款由阿里Cobar演变而来的用于支持数据库读写分离、分片的分布式中间件。MyCAT可不但支持Oracle、MSSQL、MYSQL、PG、DB2关系型数据库,同时也支持MongoDB等非关系型数据库
mycat原理
MyCAT主要是通过对SQL的拦截,然后经过一定规则的分片解析、路由分析、读写分离分析、缓存分析等,然后将SQL发给后端真实的数据块,并将返回的结果做适当处理返回给客户端。
mycat功能
a.水平拆分
同一张表的不同记录,根据表的某个字段的某种规则拆分到多个数据库(主机)上,这既是水平拆分。
优点:
拆分规则抽象好,join操作基本可以数据库内完成
不存在单库大数据,高并发的性能瓶颈
应用端改造少
提高了系统稳定性和负载能力
缺点:
拆分规则难以抽象
分片事务一致性难以解决
数据多次扩展难度跟维护量极大
跨库join性能较差
b.垂直拆分
不同的表切分到不同的数据库(主机)上,这就是垂直拆分。
优点:
拆分后业务清晰,拆分规则明确
系统之间整合或扩展容易
数据库维护简单
缺点:
部分业务表无法Join,只能通过接口方式解决,提高了系统复杂度
受每种业务不同的限制存在单库性能瓶颈,不容易扩展跟性能提高
事务处理复杂
共同缺点:
分布式事务处理困难
跨节点join困难
扩数据源管理复杂
写在最后
有兴趣同学可以看看这些博客:
https://blog.csdn.net/shf4715/article/details/82961474
https://blog.csdn.net/jornada_/article/details/82947677
此篇博客对比了sharding-jdbc/mycat/以及阿里的drds,虽然不是很详尽但也是足够了,如要了解的更深欢迎随时前来留言评论