傑作良品
說說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也可以是一個選擇。