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