分布式數據存儲 - MySQL中間件


一、業界主要產品

1)商業版數據庫:MySQL Proxy,提供MySQL協議接口(非JDBC),主從結構,可以負載平衡,讀寫分離,failover等,lua語法復雜,不支持大數據量的分庫分表;

2)Amoeba,支持分數據庫實例,每個數據相同的表,不支持事務;類似MySQL Proxy,設計上拋棄lua,更簡單;

3)Cobar,阿里開源的一個完整DAL層,實現完整Spring JDBC代理;阿里集團研究院開源的CobarClient,基於ibatis主要面向小規模的數據庫sharding集群訪問,需要規划數據規模,缺乏擴展性;

開源地址:

cobar:https://github.com/alibaba/cobar

cobarclient:https://github.com/alibaba/cobarclient

4)guzz,多庫(虛擬的數據庫,實際數據庫的路由規則仍然自定義)、表分切、讀寫分離,以及多台數據庫之間透明的分布式事務支持,設計目標是支持大型在線生產應用;需完全替換ibatis;完全和框架不符。

5)TDDL,淘寶的DAL,很強的分庫分表能力,仍然需要數據量實現規划,目前只開源了部分代碼。

開源地址:https://github.com/alibaba/tb_tddl

二、水平分表的主要策略

     分表解決單表數據量過大帶來的查詢效率下降問題。

     1、按拆分鍵ID范圍方式分片
        數據分布不均衡
     2、按拆分鍵ID取模分片
        擴展表數量會使數據失效
        切分為128張表,每個切片存500W條數據,存儲數據 500W * 128 = 640 000 000
     3、按拆分鍵ID一致性哈希分片

三、主要問題解決方案

    1、關聯查詢

    2、分頁查詢

    3、排序查詢

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM