Mycat分庫分表原理

2021-10-20 17:32:30 字數 1389 閱讀 3523

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發往後端的真實資料庫,並將返回的結果做適當的處理,最終再返回給使用者

Mycat分庫分表

schema.xml 配置 name dn1 datahost localhost1 database db1 name dn2 datahost localhost1 database db2 name dn3 datahost localhost1 database db3 把localhost...

mycat分庫分表

一 修改schema.xml select user 二 修改server.xml 0 0 10 011m 1k0 384m true 123456 testdb user testdb true 三 啟動關閉1 進入bin目錄,2 啟動輸入.mycat start。關閉命令 mycat stop ...

mycat分庫分表

mycat是資料庫分庫分表的中介軟體,mycat使用最多的兩個功能是 讀寫分離和分庫分表功能,支援全域性表和e r關係 這兩個比較實用 mycat相當於是乙個 可以將多個實際資料庫組合成乙個完整的虛擬資料庫 我們可以直接訪問mycat的埠,其使用的是mysql原生的協議連線資料庫進行通訊 mycat...