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是對數據庫的抽象
 

 

3、MyCat中間件和應用層解決方案對比

 

4、MyCat的原理

MyCat技術原理中最重要的一個動詞是“攔截”,它攔截了用戶發送過來的SQL語句,首先對SQL語句做了一些特定的分析:如分片分析、路由分析、讀寫分離分析、緩存分析等,然後將此SQL發往後端的真實數據庫,並將返回的結果做適當的處理,最終再返回給用戶

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章