mycat初使用体验与分库分表
2016-08-25 11:55
465 查看
引言:MyCat截至到2015年4月,保守估计已经有超过60个项目在使用,主要应用在电信领域、互联网项目,大部分是交易和管理系统,少量是信息系统。比较大的系统中,数据规模单表单月30亿。
在以前的项目中有幸也使用了一些分库分表的插件,今天就无事想把这两种框架搭建起来比较一下性能和适用场景!
mycat号称分库分表,但看实际配置文件
通过配置可以看到对于同一张表确实进行了分库,但是分表却没有!
虽然1.6对外宣称支持了分表,看官方文档说明:
可是既然只支持一个datanode那就不能进行分库!
也就是说如果对数据库进行了分库就不可以进行分表,给开发者一个二选一的抉择!
笔者负责开发的模块在业务上,是如此进行拆分的:
1:按照某个字段选出要进行插入或者更改的数据所在的数据库。
2:在按照这个字段选出要进行插入或者更改的数据所在的数据库表。
经过以上两个步骤就可以确定当前数据所在的库和表。
但是mycat只可以进行二选一,进行分库就不可以进行分表,显然不符合笔者最初对应用程序的架构!
附上笔者数据库架构图:
总结:
mycat虽然实现了分库但是并没有实现分表,并不符合笔者的要求。
解决这个问题没有直接的办法,那就找一个间接的方法解决这个问题吧!
笔者解决方法是在每个单独的数据库中建立同名的视图,该视图对每个库中的分表进行归并,形成一个整体的虚表,然后交由mycat负责整体展示!
这样笔者的目的就可以实现了,就是由应用程序自己做数据库的路由将数据库写入各个数据库中,然后通过mycat交给dba或者需要对数据进行展示或者集中处理和展示!
这样既可以避免分库分表带来的数据分散汇总的痛苦,也可以通过分库分表来实现数据库的负载均衡,提高系统的吞吐!
毕竟对数据进行导出进行查询之时,已经没有时间上的限制,虽然进行大数据量的查询在业务上是不推荐的,但是如果可以控制好查询条件,这样对dba而言也可以使用一些高阶的sql语句,可以减轻dba管理数据库的难度!
附上最后的结果图:
<
4000
br />
mycat确实对数据进行了归并,看起来确实是一张表,但实际上这些数据位于三个不同的数据库,每个库10张表,共30张表!
因为工作的保密规定,不能透露公司使用的分库分表插件,请大家谅解!
感受;
mycat在分库分表的支持上并不彻底,选择分库就不能进行分表,选择分表就不能分库,希望后续可以改进!
在以前的项目中有幸也使用了一些分库分表的插件,今天就无事想把这两种框架搭建起来比较一下性能和适用场景!
mycat号称分库分表,但看实际配置文件
通过配置可以看到对于同一张表确实进行了分库,但是分表却没有!
虽然1.6对外宣称支持了分表,看官方文档说明:
可是既然只支持一个datanode那就不能进行分库!
也就是说如果对数据库进行了分库就不可以进行分表,给开发者一个二选一的抉择!
笔者负责开发的模块在业务上,是如此进行拆分的:
1:按照某个字段选出要进行插入或者更改的数据所在的数据库。
2:在按照这个字段选出要进行插入或者更改的数据所在的数据库表。
经过以上两个步骤就可以确定当前数据所在的库和表。
但是mycat只可以进行二选一,进行分库就不可以进行分表,显然不符合笔者最初对应用程序的架构!
附上笔者数据库架构图:
总结:
mycat虽然实现了分库但是并没有实现分表,并不符合笔者的要求。
解决这个问题没有直接的办法,那就找一个间接的方法解决这个问题吧!
笔者解决方法是在每个单独的数据库中建立同名的视图,该视图对每个库中的分表进行归并,形成一个整体的虚表,然后交由mycat负责整体展示!
这样笔者的目的就可以实现了,就是由应用程序自己做数据库的路由将数据库写入各个数据库中,然后通过mycat交给dba或者需要对数据进行展示或者集中处理和展示!
这样既可以避免分库分表带来的数据分散汇总的痛苦,也可以通过分库分表来实现数据库的负载均衡,提高系统的吞吐!
毕竟对数据进行导出进行查询之时,已经没有时间上的限制,虽然进行大数据量的查询在业务上是不推荐的,但是如果可以控制好查询条件,这样对dba而言也可以使用一些高阶的sql语句,可以减轻dba管理数据库的难度!
附上最后的结果图:
<
4000
br />
mycat确实对数据进行了归并,看起来确实是一张表,但实际上这些数据位于三个不同的数据库,每个库10张表,共30张表!
因为工作的保密规定,不能透露公司使用的分库分表插件,请大家谅解!
感受;
mycat在分库分表的支持上并不彻底,选择分库就不能进行分表,选择分表就不能分库,希望后续可以改进!
相关文章推荐
- 使用mycat实现数据库的分库分表
- 重磅来袭,使用CRL实现大数据分库分表方案
- Mycat 读写分离+分库分表
- 【数据库中间件】MyCat分表分库规则实现
- 数据库性能优化的五种方案(mycat,基于阿里coba开源的数据库中间件,很容易实现分库分表、主从切换功能。另一个当当网开源的一个库 sharding-jdbc)
- 实战mycat读写分离和分库分表(2)-本地mysql主从配置
- mysql的 函数 group_concat , substring_index 的使用以及 分库分表操作
- Mycat分库分表的简单实践 / 用Mycat,学会数据库读写分离、分表分库
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
- Mycat 入门 分库分表
- Mycat 数据库分库分表中间件
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
- MySQL使用为什么要分库分表
- Mycat 数据库分库分表中间件
- MyCat分表分库规则实现
- Windows环境Mycat数据库分库分表中间件部署
- Mycat 数据库分库分表中间件
- Mycat 数据库分库分表中间件
- Windows环境Mycat数据库分库分表中间件部署
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)