MySQL分庫分表有哪些成熟的中間件?不要破壞到原有程序設計的?

傑作良品

說說MyCat吧!!!!

首先Mycat是一個開源的分佈式數據庫系統,但是由於真正的數據庫需要存儲引擎的,而Mycat並沒有存儲引擎,所以並不是完全意義的分佈式數據庫系統的。

Mycat: 數據庫中間件技術的:

這個前端使用中間件後端使用數據庫(mysql oracle)支持的,可以對數據庫集群有效的管理方便擴容,對大型數據表橫縱分片,這個分片後的表連接的查詢,是對前端開發處於透明狀態的。

還有這個myCat 的話需要在JDK7版本以上運行。MyCat推薦使用mySql做集群的。

這個MyCAT 有提供編譯好的安裝包,支持 windows、Linux、Mac、Solaris的 等系統上安裝運行了。

建議的數據切分原則的:

第一原則:能不切分儘量不要切分的。

第二原則:如果要切分一定要選擇合適的切分規則,提前規劃好的。

第三原則:數據切分儘量通過數據冗餘或表分組來降低跨庫 的Join 的可能吧。

這個第四原則:由於數據庫中間件對數據 Join 實現的優劣難以把握,而且實現高性能難度極大,業務讀取儘量少使用多表join的,可能分佈式事務問題的。

講講Mycat的原理的 :

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

我最後數一下這個:

Mycat在1.6版本以後已經完全支持 XA 分佈式強事務類型了的的,可以很好地解決分佈式事物的基本問題了的。

這個完整的流程圖如圖所示結果了:


我的內容我做主

假如你想了解的話,那麼建議從mycat入手。但具體想落地那不同的系統架構方案也不一樣。

推薦一些目前實用的:

Java

用hibernate 可以試試hibernate shards

或者

HiveDB也可以是一個選擇。


分享到:


相關文章: