工作深度總結——分庫分表sharding-jdbc實踐路線

ZeroWM發表於2018-03-01

一.Why&when

Mysql資料量超過500萬,查詢效率就會受到影響。為了滿足資料量劇增,且查詢較慢的問題,準備接入sharding-jdbc進行系統優化,提高系統效能。我們主要採用的它的分表功能解決大資料儲存和查詢效能問題。

類似產品:mycat,也可以自己封裝。

Mycat優勢:文件全面。缺點:學習和維護成本高,比較重

自己封裝優勢:實現規則自定義。缺點:麻煩,維護成本高

Sharding-jdbc:輕量,支援分庫分表,對於單表增刪改查支援的很好。  缺點:分表規則需要自己實現,不支援部分sql語句,擴容有問題。

 

二.What

Sharding-jdbc是噹噹開源的資料庫中介軟體。Sharding-JDBC集分庫分表、讀寫分離、分散式主鍵、柔性事務和資料治理與一身,提供一站式的解決分散式關係型資料庫的解決方案。

詳情可檢視官網http://shardingjdbc.io/

跟官網同學交流 https://gitter.im/Sharding-JDBC/shardingjdbc

Github程式碼資源https://github.com/shardingjdbc

 

三.How

學習方法,結合在github裡面的sharding-jdbc-example,嘗試一下簡單的分庫分表就可以了。

重點:

         分表方式——採用分散式主鍵hash或者取餘數的方法,進行資料雜湊。

         Sql不支援——有一些sql語句不夠支援,官網上面也有提示,比如批量插入,需要自己封裝,很簡單的。

 

缺點:

         查詢資料的時候稍繁瑣,需要自己寫sql,可以採用工具生成批量的sql。

         查詢id的時候需要確定在哪張表,需要根據自定義計算規則進行求餘,我自己開發了一個介面,專門批量提供id對應的sql語句。

 

難點:擴容、事務(暫時系統沒有用到)

 

四.Where

最佳實踐,公共服務影像服務,大部分操作都是對一張表的操作,沒有過多的左右連線操作,當前2000萬資料,需要接入業務方遷移5T歷史資料。

相關文章