分庫分表最佳實踐大總結

2021-06-02 06:22:26 字數 1405 閱讀 6631

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

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

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

首先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 shardshibernate shards類似,也可借鑑本人所設計的架構

思想 歡迎有志之士詳聊

附: 一、hibernate shards

優點:

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

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

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

4、能夠快速開發

缺點:

1、暫不支援垂直分割槽

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

hibernate shards

ibatis-sharding 

ibatis shards   

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

shardbatis

zhikuilu

分庫分表最佳實踐大總結

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

分庫分表實踐

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

sharding proxy分庫分表最佳實踐

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