分庫分表最佳實踐大總結

2021-06-26 19:58:48 字數 1308 閱讀 5421

一、隨著企業業務的增長,訪問量和使用者等資料的增加,傳統的關聯式資料庫已經不能滿足需求 分表分庫就成了節省成本、和良好擴充套件性的必然選擇 

網上也有很多開源的分表分庫的軟體,也公司自己開發實現 

而終其原理和步驟都無外乎三步: 

即首先sql解析路由,再根據路由確定分片,然後結果集合並

所遇到的分表分庫的

難點大都是對

分布式事務的支援

,分片後的分頁和排序等

二、實現方式大都在兩個層面: 

即在應用層 代表有

hibernate shards,ibatis shards

,guzz 

等 和在jdbc之下 對應用層完全透明的 如

amoeba

三、那麼企業在分表分庫的實踐中該如何選擇呢? 

假如您是一開始就想全新的分表分庫 公司沒打算做自己的分表分庫框架,那麼推薦用guzz, 

這個類似於hibernate 和 ibatis的框架,很多**都在用,缺點是技術團隊需要重新學習一套框架 跟舊的系統很難相容; 

假如您的系統很亂,分表分庫規則很簡單,並且資料庫是mysql 推薦用amoeba ,雖然有oracle版本,但目前不是很成熟;

假如您的技術團隊一直用hibernate ,或企業現在的很多專案現在都用hibernate做的  那麼推薦用

hibernate shards

,這個類似hibernate,學習成本低,能跟

hibernate相容 目前國內有在hibernate  shards上封裝的成功案例, 缺點是list查詢時遍歷所有資料片,而不是根據sql規則確定的資料片。

這個bug及在hibernate shards上如何擴充套件問題我已解決,附件是解決的架構圖,

需要源**的或詳細可以聯絡我; 

ibatis shards

跟hibernate shards

類似,也可借鑑本人所設計的架構

思想 歡迎有志之士詳聊

附: 一、hibernate shards 

優點: 

1、實現跟其他成熟框架的整合如spring等 

2、能利用公司現有的hibernate的技術優勢 

3、目前國內有成功案例在hibernate  shards上封裝的商業軟體 

4、能夠快速開發 

缺點: 

1、暫不支援垂直分割槽 

2、list查詢遍歷所有表分片 

hibernate shards

ibatis-sharding 

ibatis shards   

資料庫水平切分的實現原理解析:

shardbatis 

分庫分表最佳實踐大總結

一 隨著企業業務的增長,訪問量和使用者等資料的增加,傳統的關聯式資料庫已經不能滿足需求 分表分庫就成了節省成本 和良好擴充套件性的必然選擇 網上也有很多開源的分表分庫的軟體,也公司自己開發實現 而終其原理和步驟都無外乎三步 即首先sql解析路由,再根據路由確定分片,然後結果集合並 所遇到的分表分庫的...

分庫分表實踐

1 為什麼要分庫分表?資料庫中的資料量不一定是可控的,在未進行分庫分表的情況下,隨著時間和業務的發展,表中的資料量會越來越大,相應地,資料操作,增刪改查的開銷也會越來越大 另外乙個db所能承載的資料量 資料處理能力都會成為瓶頸。2 分庫分表實施策略 分庫分表有垂直切分和水平切分兩種 1 垂直切分即將...

sharding proxy分庫分表最佳實踐

sharding proxy 分庫分表 讀寫分離,它和mycat類似,屬於中介軟體 層,它類似乙個資料庫,後面的分庫分表的多個資料庫,它遮蔽了後端多個資料庫的複雜性,應用開發時直接連線 sharding proxy 即可 如果使用docker,可以執行docker pull shardingsphe...