一、隨著企業業務的增長,訪問量和使用者等資料的增加,傳統的關聯式資料庫已經不能滿足需求 分表分庫就成了節省成本、和良好擴充套件性的必然選擇
網上也有很多開源的分表分庫的軟體,也公司自己開發實現
而終其原理和步驟都無外乎三步:
即首先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
zhikuilu
分庫分表最佳實踐大總結
一 隨著企業業務的增長,訪問量和使用者等資料的增加,傳統的關聯式資料庫已經不能滿足需求 分表分庫就成了節省成本 和良好擴充套件性的必然選擇 網上也有很多開源的分表分庫的軟體,也公司自己開發實現 而終其原理和步驟都無外乎三步 即首先sql解析路由,再根據路由確定分片,然後結果集合並 所遇到的分表分庫的...
分庫分表實踐
1 為什麼要分庫分表?資料庫中的資料量不一定是可控的,在未進行分庫分表的情況下,隨著時間和業務的發展,表中的資料量會越來越大,相應地,資料操作,增刪改查的開銷也會越來越大 另外乙個db所能承載的資料量 資料處理能力都會成為瓶頸。2 分庫分表實施策略 分庫分表有垂直切分和水平切分兩種 1 垂直切分即將...
sharding proxy分庫分表最佳實踐
sharding proxy 分庫分表 讀寫分離,它和mycat類似,屬於中介軟體 層,它類似乙個資料庫,後面的分庫分表的多個資料庫,它遮蔽了後端多個資料庫的複雜性,應用開發時直接連線 sharding proxy 即可 如果使用docker,可以執行docker pull shardingsphe...