1、什么是MyCat? 前端
MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户能够把它看做是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端能够用MySQL原生协议与多个MySQL服务器通讯,也能够用JDBC协议与大多数主流数据库服务器通讯,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其余数据库里。数据库
MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端能够支持MySQL、SQL Server、Oracle、DB二、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,将来还会支持更多类型的存储。而在最终用户看来,不管是那种存储方式,在MyCat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操做,这样一来,对前端业务系统来讲,能够大幅下降开发难度,提高开发速度后端
2、为何要用到MyCat呢?服务器
*例如操做系统是对各种计算机硬件的抽象。那么咱们何时须要抽象?假如只有一种硬件的时候,咱们须要开发一个操做系统吗? 分布式
再好比一个项目只须要一我的完成的时候不须要leader,可是当须要几十人完成时,就应该有一个管理者,发挥沟通协调等做用,而这个管理者对于他的上层来讲就是对项目组的抽象。 ide
一样的,当咱们的应用只须要一台数据库服务器的时候咱们并不须要Mycat,而若是你须要分库甚至分表,这时候应用要面对不少个数据库的时候,这个时候就须要对数据库层作一个抽象,来管理这些数据库,而最上面的应用只须要面对一个数据库层的抽象或者说数据库中间件就行了,这就是Mycat的核心做用。 工具
因此能够这样理解:数据库是对底层存储文件的抽象,而Mycat是对数据库的抽象。spa