您的位置:首页 > 编程语言 > Java开发

Mycat分库分表的初次学习

2016-02-23 16:10 288 查看
年后回来到现在已经有一个多星期了,这段时间也不忙,除了时不时查看一下kisp的运行状态也没啥事。时间当然不能浪费啊,想到入库功能可能会涉及到数据量太大单表放不下,于是乎来学习一个分表分库的知识。

查了一下资料,目前的相关产品还挺多,像什么Atlas、Tddl、mysql-proxy、oneproxy、cobar等等,具体各自什么优点,请百度一下,记性不好,一个东西你能记住它若干个优点就好了。公司有产品在用oneproxy,听说是要钱的,拜拜。还看到当当也出了一个开源的叫sharding-jdbc,不过貌似资料不多。想起丰少说过Mycat,目前也是比较强大的,分片算法多,后续支持长久。

官方文档说,程序员可以这么理解:Mycat就是一个近似等于MySQL的数据库服务器,你可以用连接MySQL的方式去连接Mycat(除了端口丌同,默认的Mycat端口是8066而非MySQL的3306,因此需要在连接字符串上增加端口信息),大多数情况下,可以用你熟悉的对象映射框架使用Mycat,但建议对于分片表,尽量使用基础的SQL语句,因为这样能达到最佳性能,特别是几千万甚至几百亿条记录的情况下。(用基础的SQL语句这个很必要,我在demo中就体现出来用orm有些慢,jdbc是最快的)。

最开始下了发布版和源码,官方推荐把源码中eclipse中调试,这样可以更清楚来龙去脉,但是一直不知道怎么和项目结合起来。最后发现,其实就是把数据源的url换成<property name="hibernate.connection.url">jdbc:mysql://localhost:8066/TESTDB</property>。

首先弄清一些概念。

逻辑库 schmea:与数据库database同概念、逻辑表table:在这里定义拆分、datanode:就是分片、使用数据库实例的某个物理库db1、

datahost:定义具体的数据库实例,读写分离、心跳等。

想法挺简单,就想用它来做写入的分库分表。测试了两种方式,一种是单表的分、一种是ER(子表的存储位置依赖于主表,在物理上紧邻存放,因此彻底解决了JION的效率)

另外也可以多看看mycat github上的issue,有时候可能因为版本不同修改了的东西没有同步,我就遇到了看了好久的源码就会发现问题已经被解决了,只是我这个版本是老的..

详情请下载:

[zip文件] 用hibernate连接mycat的例子

Mycat-Server-master 源码、可直接在eclipse中调试


mycat权威指南





这几天的学习只能算是入了个门,mycat的功能很多,有待更进一步研究。如果有遇到什么问题请留言

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA 分库分表 Mycat