分布式数据存储 - 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、排序查询

 

posted @ 2016-01-27 20:38  三石雨  阅读(2755)  评论(0编辑  收藏  举报