原文网址:http://www.csdn.net/article/2015-12-23/2826546
1.Mycat是一个开源的分布式数据库系统,其核心功能是分表分库,即将一个大表水平分割为多个小表,存储在后端MySQL或者其他数据库里。
2.加入Mycat给我最大的感受是开源团队的工作效率和参与热情是非常高的,这让我深信中国开源产品的发展前景不可限量。核心成员里有两个人给我的印象特别深刻:一个是吴京润(网名坨神),他是来自Wifiin的高级工程师,还有一个是邓立仁(网名聆听),他是来自小米的高级工程师。经过他们对Mycat进一步改造,现在Mycat已经在他们各自的公司里运行的非常稳定,解决了最让互联网公司头疼的海量并发问题。这些来自互联网一线企业的真实案例,加强了广大网友对Mycat产品的信任。
3.Mycat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。而无论使用哪种存储方式,在Mycat里都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度。而未来,还能通过Mycat自动将一些计算分析后的数据灌入到Hadoop中,并能用Mycat+Storm/Spark Stream引擎做大规模数据分析。
4.Mycat发展到现在,适用的场景已经很丰富,而且不断有新用户给出新的创新性的方案,以下是几个典型的应用场景:支持读写分离,主从切换,配置非常简单;分表分库,比如根据系统不同业务进行垂直分库,或者对于超过1000万条数据的大表进行水平分片;多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身实现多租户化;报表系统,借助于Mycat的分表能力,处理大规模报表的统计。
5.Mycat的下一步规划是什么?一是,强化分布式数据库方面的功能,使之具备丰富的插件、强大的数据库智能优化功能、全面的系统监控能力、以及方便的数据运维工具,实现在线数据扩容、迁移等高级功能;二是,进一步挺进大数据计算领域,深度结合Spark Stream和Storm等分布式实时流引擎,能够完成快速的巨表关联、排序、分组聚合等 OLAP方向的能力,并集成一些热门常用的实时分析算法,让工程师以及DBA们更容易用Mycat实现一些高级数据分析处理功能。
6.在日常工作中你会通过哪些渠道来提升个人能力?王金剑:提升个人能力的方式,我主要还是通过大量阅读,对于阅读提升能力,我个人建议并不是列一个学习计划,而是把读书变成乐趣,每天读几页,原本看起来很厚的一本书,不知不觉也就读完了,而且因为是带着乐趣带着非常愉快的心情读书,所以书中的知识也能消化吸收的很好。
7.数据库技术发展到今天,从关系型数据库到现在的各种云计算,NoSQL产品。作为传统数据库开发人员,必须紧跟技术发展,在进一步提高传统数据库认识的同时,还要掌握更多的新型数据库技术,以及云服务技术。除了提高技术的深度,也要重视提高知识面的宽度。
MyCat:开源分布式数据库中间件
原文网址:http://www.csdn.net/article/2015-07-16/2825228
1.虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代。如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷。
2.从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。
3.MyCat架构设计图如下:
4.MyCat技术原理
MyCat技术原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。