1.什么是MyCat
MyCat是目前最流行的分布式數(shù)據庫中間插件慈格,是一個開源的分布式數(shù)據庫系統(tǒng)芬首,是一個實現(xiàn)了MySQL協(xié)議的服務器畴博,前端用戶可以把它看作是一個數(shù)據庫代理瓢捉,用MySQL客戶端工具和命令行訪問频丘,而其后端可以用MySQL原生協(xié)議與多個MySQL服務器通信,也可以用JDBC協(xié)議與大多數(shù)主流數(shù)據庫服務器通信泡态,其核心功能是分表分庫搂漠,即將一個大表水平分割為N個小表,存儲在后端MySQL服務器里或者其他數(shù)據庫里某弦。
MyCat發(fā)展到目前的版本桐汤,已經不是一個單純的MySQL代理了而克,它的后端可以支持MySQL、SQL Server怔毛、Oracle拍摇、DB2、PostgreSQL等主流數(shù)據庫馆截,也支持MongoDB這種新型NoSQL方式的存儲充活,未來還會支持更多類型的存儲。而在最終用戶看來蜡娶,無論是那種存儲方式混卵,在MyCat里,都是一個傳統(tǒng)的數(shù)據庫表窖张,支持標準的SQL語句進行數(shù)據的操作幕随,這樣一來,對前端業(yè)務系統(tǒng)來說宿接,可以大幅降低開發(fā)難度赘淮,提升開發(fā)速度
2.為什么使用MyCat
如今隨著互聯(lián)網的發(fā)展,數(shù)據的量級也是撐指數(shù)的增長睦霎,從GB到TB到PB梢卸。對數(shù)據的各種操作也是愈加的困難,傳統(tǒng)的關系性數(shù)據庫已經無法滿足快速查詢與插入數(shù)據的需求副女。這個時候NoSQL的出現(xiàn)暫時解決了這一危機蛤高。它通過降低數(shù)據的安全性,減少對事務的支持碑幅,減少對復雜查詢的支持戴陡,來獲取性能上的提升。但是沟涨,在有些場合NoSQL一些折衷是無法滿足使用場景的,就比如有些使用場景是絕對要有事務與安全指標的喜庞。這個時候NoSQL肯定是無法滿足的赋荆,所以還是需要使用關系性數(shù)據庫懊昨。如何使用關系型數(shù)據庫解決海量存儲的問題呢?此時就需要做數(shù)據庫集群嫉你,為了提高查詢性能將一個數(shù)據庫的數(shù)據分散到不同的數(shù)據庫中存儲,為應對此問題就出現(xiàn)了——MyCat
綜上所述:Mycat作用為:能滿足數(shù)據庫數(shù)據大量存儲嚷辅;提高了查詢性能;實現(xiàn)讀寫分離簸搞,分庫分表准潭,如下
1.解決表的容量問題.
2.Mysql的表最大存儲多少數(shù)據.
3.解決表查詢的性能問題.
4.解決表的DML的性能問題.
5.解決mysql 掛了的問題
3.MyCat解決問題的思路
1:容量
2:查詢速度
最快也是Log(n),你加什么索引都不行
3:寫入問題
4.Mycat和MySQL的區(qū)別寺擂。
我們可以把上層看作是對下層的抽象泼掠,例如操作系統(tǒng)是對各類計算機硬件的抽象。那么我們什么時候需要抽象挡逼?假如只有一種硬件的時候沐鼠,我們需要開發(fā)一個操作系統(tǒng)嗎叹谁?再比如一個項目只需要一個人完成的時候不需要leader,但是當需要幾十人完成時憔涉,就應該有一個管理者析苫,發(fā)揮溝通協(xié)調等作用,而這個管理者對于他的上層來說就是對項目組的抽象国旷。同樣的跪但,當我們的應用只需要一臺數(shù)據庫服務器的時候我們并不需要Mycat峦萎,而如果你需要分庫甚至分表忆首,這時候應用要面對很多個數(shù)據庫的時候糙及,這個時候就需要對數(shù)據庫層做一個抽象筛欢,來管理這些數(shù)據庫,而最上面的應用只需要面對一個數(shù)據庫層的抽象或者說數(shù)據庫中間件就好了揣钦,這就是Mycat的核心作用漠酿。所以可以這樣理解:數(shù)據庫是對底層存儲文件的抽象,而Mycat是對數(shù)據庫的抽象炒嘲。
5.支持的數(shù)據庫
mysql,sqlserver夫凸,mongoDB等
6.架構
前端用戶可以把mycat看作是一個數(shù)據庫代理,用mysql客戶端工具(如Navicat)和命令訪問魔熏,而后端支持mysql鸽扁,sqlserver,oracle等主流數(shù)據庫躲雅,用mysql native 協(xié)議和多個mysql服務器通信骡和,也可用JDBC協(xié)議與大多數(shù)主流數(shù)據庫服務器通信,其核心功能就是分庫分表钮科,即將一個大表水平分割為N個小表,真正的存儲在后端Mysql服務器中或其它數(shù)據庫中
mycat原理:可以用“攔截”一詞形容绵脯,它攔截了用戶發(fā)送過來的SQL語句桨嫁,首先對SQL語句做了一些特定的分析璃吧,如分片分析,路由分析畜挨,讀寫分離分析,緩存分析等毡咏,然后將此sql發(fā)往后端的真實數(shù)據庫逮刨,并將返回的結果做適當處理,最終返回給用戶