引言:mycat截至到2023年4月,保守估計已經有超過60個專案在使用,主要應用在電信領域、網際網路專案,大部分是交易和管理系統,少量是資訊系統。比較大的系統中,資料規模單表單月30億。
在以前的專案中有幸也使用了一些分庫分表的外掛程式,今天就無事想把這兩種框架搭建起來比較一下效能和適用場景!
mycat號稱分庫分表,但看實際配置檔案
通過配置可以看到對於同一張表確實進行了分庫,但是分表卻沒有!
雖然1.6對外宣稱支援了分表,看官方文件說明:
可是既然只支援乙個datanode那就不能進行分庫!
也就是說如果對資料庫進行了分庫就不可以進行分表,給開發者乙個二選一的抉擇!
筆者負責開發的模組在業務上,是如此進行拆分的:
1:按照某個字段選出要進行插入或者更改的資料所在的資料庫。
2:在按照這個字段選出要進行插入或者更改的資料所在的資料庫表。
經過以上兩個步驟就可以確定當前資料所在的庫和表。
但是mycat只可以進行二選一,進行分庫就不可以進行分表,顯然不符合筆者最初對應用程式的架構!
附上筆者資料庫架構圖:
總結:mycat雖然實現了分庫但是並沒有實現分表,並不符合筆者的要求。
解決這個問題沒有直接的辦法,那就找乙個間接的方法解決這個問題吧!
筆者解決方法是在每個單獨的資料庫中建立同名的檢視,該檢視對每個庫中的分表進行歸併,形成乙個整體的虛表,然後交由mycat負責整體展示!
這樣筆者的目的就可以實現了,就是由應用程式自己做資料庫的路由將資料庫寫入各個資料庫中,然後通過mycat交給dba或者需要對資料進行展示或者集中處理和展示!
這樣既可以避免分庫分表帶來的資料分散彙總的痛苦,也可以通過分庫分表來實現資料庫的負載均衡,提高系統的吞吐!
畢竟對資料進行匯出進行查詢之時,已經沒有時間上的限制,雖然進行大資料量的查詢在業務上是不推薦的,但是如果可以控制好查詢條件,這樣對dba而言也可以使用一些高階的sql語句,可以減輕dba管理資料庫的難度!
附上最後的結果圖:
mycat確實對資料進行了歸併,看起來確實是一張表,但實際上這些資料位於三個不同的資料庫,每個庫10張表,共30張表!
因為工作的保密規定,不能透露公司使用的分庫分表外掛程式,請大家諒解!
感受;mycat在分庫分表的支援上並不徹底,選擇分庫就不能進行分表,選擇分表就不能分庫,希望後續可以改進!
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...