MyCat原理及分表分庫入門
1、什麼是MyCat:
MyCat是一個開源的分散式資料庫系統,是一個實現了MySQL協議的伺服器,前端使用者可以把它看作是一個資料庫代理,用MySQL客戶端工具和命令列訪問,而其後端可以用MySQL原生協議與多個MySQL伺服器通訊,也可以用JDBC協議與大多數主流資料庫伺服器通訊,其核心功能是分表分庫,即將一個大表水平分割為N個小表,儲存在後端MySQL伺服器裡或者其他資料庫裡。
MyCat發展到目前的版本,已經不是一個單純的MySQL代理了,它的後端可以支援MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流資料庫,也支援MongoDB這種新型NoSQL方式的儲存,未來還會支援更多型別的儲存。而在終端使用者看來,無論是那種儲存方式,在MyCat裡,都是一個傳統的資料庫表,支援標準的SQL語句進行資料的操作,這樣一來,對前端業務系統來說,可以大幅降低開發難度,提升開發速度
2、MyCat有哪些作用?
目前雖然傳統關係資料庫存在一些列的先天弊端,但NoSQL資料庫又將其替代,但是如果傳統資料庫易於擴充套件和分拆就可以極大的避免單機單庫在資料增刪改查方面的缺陷。MyCat就是為了解決資料庫的分拆和擴充套件而生的開源分散式資料庫系統。其最終的目標就是低成本地將現有的單機資料庫和應用平滑遷移到“雲”端,解決資料儲存和業務規模迅速增長情況下的資料瓶頸問題。
舉個簡單的例子
如果你只是開一個小賣鋪(小專案) ,那麼你一個人(資料庫)就可以了,但是如果你開一個大型購物中心(大專案),如果不分部門的話,人員(資料)就很難管理,所以按人員不同分了很多部門(資料庫),但是光有部門,沒有一個統一的管理者(mycat),那麼各個部門的配合和協調能力就大大降低了,超市的健康運營就會受到影響。而mycat就是這個管理者,它是對資料庫層做一個抽象,來管理這些資料庫,而最上面的應用只需要面對一個數據庫層的抽象或者說資料庫中介軟體就好了,這就是Mycat的核心作用。
所以可以這樣理解:資料庫是對底層儲存檔案的抽象,而Mycat是對資料庫的抽象。
2.1.一般資料庫的拆表機制
2.2.MyCat中介軟體和應用層解決方案對比
3、MyCa的原理
MyCat技術原理中最重要的一個動詞是“攔截”,它攔截了使用者傳送過來的SQL語句,首先對SQL語句做了一些特定的分析:如分片分析、路由分析、讀寫分離分析、快取分析等,然後將此SQL發往後端的真實資料庫,並將返回的結果做適當的處理,最終再返回給使用者。