天天看點

分庫分表

利用中間件mycat 用戶端sharding-jdbc

優點: 

解決了單庫大資料,高并發的性能瓶頸

拆分規則封裝好,對應用端幾乎透明,開發人員無需關系拆分細節

提高了系統的穩定性和負載能力

缺點:

拆分規則很難抽象

分片事務一緻性難以解決

二次擴充時,資料遷移,維護難度大,比如: 開始我們按照使用者id對2求模,但是随着業務的增長,2台資料庫難以支撐,還是繼續拆分為4個資料庫,那麼這時就需要做資料的遷移了

總結:

世界上的萬物沒有完美的,有利就有弊,就像資料切分一樣,無論是垂直切分,還是水準切分,它們解決了海量資料的存儲和通路性能問題,但也随之而來的帶來了很多新問題,它們的共同缺點有:

分布式的事務問題;

跨庫join問題

多資料源的管理問題

針對多資料源的管理問題,主要有兩種思路:

1.用戶端模式,在每個應用子產品内,配置自己需要的資料源,直接通路資料庫,在各個子產品内完成資料的整合

2.中間代理模式,中間代理統一管理所有的資料源,資料庫層對開發人員完全透明,開發人員無需關注拆分的細節

mycat: 

mycat是一個開源的分布式資料庫系統,前端的使用者可以把它看成是個資料庫代理,用mysql用戶端和指令行工具都可以通路,而其後端則是用mysql原生的協定與多個mysql服務之前進行通信.mycat的核心功能是分庫分表,即将一個大表水準切分成n個小表,然後存放在後端的mysql資料庫中.

使用場景:

單純的讀寫分離,此時配置最為簡單,支援讀寫分離,蛀蟲切換

分庫分表,對于超過1000w的表進行分片,最大支援1000億的資料

多租戶應用,每個應用一個資料庫,應用隻連接配接mycat,程式本身不需要改造;

代理hbase,分析大資料