Mycat是一个开源的分布式数据库系统,其核心功能是分表分库,即将一个大表水平分割为多个小表,存储在后端MySQL或者其他数据库里。取名Mycat原因一是简单好记,另一个则是希望未来能够入驻 Apache,Apache的开源产品Tomcat也是一只猫。日前,笔者采访了Mycat核心开发成员王金剑,请他解读Mycat的技术特性,Mycat的团队趣闻,以及他的经验分享。在他看来,作为传统数据库开发人员,必须紧跟技术发展,在进一步提高传统数据库认识的同时,还要掌握更多的新型数据库技术,以及云服务技术。
王金剑
CSDN:请先自我介绍下,目前所在公司以及所负责的领域。
王金剑:大家好,我叫王金剑,今年33岁,从事软件工作十年,目前在天狮集团担任高级DBA工程师,负责公司电商网站数据库设计与优化、数据库架构规划及部署规范制定,以及核心应用的软件设计与开发等工作。
CSDN:你是从什么时候加入Mycat开发团队的?团队核心成员有多少人?
王金剑:我是2014年加入Mycat开源团队,目前核心成员已经有17人。
CSDN:加入Mycat给你最大的感受是什么?有令你印象特别深刻的人或事吗?
王金剑:加入Mycat给我最大的感受是开源团队的工作效率和参与热情是非常高的,这让我深信中国开源产品的发展前景不可限量。核心成员里有两个人给我的印象特别深刻:一个是吴京润(网名坨神),他是来自Wifiin的高级工程师,还有一个是邓立仁(网名聆听),他是来自小米的高级工程师。经过他们对Mycat进一步改造,现在Mycat已经在他们各自的公司里运行的非常稳定,解决了最让互联网公司头疼的海量并发问题。这些来自互联网一线企业的真实案例,加强了广大网友对Mycat产品的信任。
CSDN:Mycat的名字由来有何典故吗?它的核心开发技术是什么?在构建过程中有没有遇到哪些困难?又是如何克服的?
王金剑:取名Mycat一个原因是简单好记,另外一个原因,是希望未来能够入驻Apache,Apache的开源产品Tomcat也是一只猫。Mycat最早的版本完成于2013年年底,它是一个开源的分布式数据库系统,其核心功能是分表分库,即将一个大表水平分割为多个小表,存储在后端MySQL或者其他数据库里。
Mycat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。而无论使用哪种存储方式,在Mycat里都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度。而未来,还能通过Mycat自动将一些计算分析后的数据灌入到Hadoop中,并能用Mycat+Storm/Spark Stream引擎做大规模数据分析。
CSDN:Mycat有哪些技术亮点?旨在解决哪些问题?
王金剑:Mycat发展到现在,适用的场景已经很丰富,而且不断有新用户给出新的创新性的方案,以下是几个典型的应用场景:支持读写分离,主从切换,配置非常简单;分表分库,比如根据系统不同业务进行垂直分库,或者对于超过1000万条数据的大表进行水平分片;多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身实现多租户化;报表系统,借助于Mycat的分表能力,处理大规模报表的统计。
CSDN:使用Mycat的公司多吗?有哪些重量级客户?请列举一二。
王金剑:Mycat初步统计大概400家公司使用,主要应用在电信领域、互联网项目,大部分是交易和管理系统,少量是信息系统。重量级的客户比如SAP、小米、天狮、苏宁、顺丰等等。
CSDN:数据库的安全性和稳定性方面一直都是大家关注的重点,你们在这方面做了哪些部署?
王金剑:保证数据库的安全性和稳定性是比较复杂的工作,Mycat也一直在努力完善这方面特性,除了更好地支持数据库主从自动切换功能外,我们还在进行更深入的功能研发,而这一版更具有商用价值的产品分支,我们为它起了一个新的名字“SunlightDB”。SunlightDB是Mycat 在安全性和稳定性方面的加强版本。
CSDN: 在打造Mycat的过程中,有哪些重要节点吗?
王金剑:Mycat1.3的诞生,是Mycat历史上最重大的一个里程碑。在这个版本里,需求、测试和功能开发各项工作,首次从个人为主变为开源团队为主的模式,更多的人参与到需求、开发、测试以及Bug修复活动中,基本上确定的Bug都在24小时内修复并有志愿者或用户确认修复。
CSDN: Mycat的下一步规划是什么?
王金剑:一是,强化分布式数据库方面的功能,使之具备丰富的插件、强大的数据库智能优化功能、全面的系统监控能力、以及方便的数据运维工具,实现在线数据扩容、迁移等高级功能;二是,进一步挺进大数据计算领域,深度结合Spark Stream和Storm等分布式实时流引擎,能够完成快速的巨表关联、排序、分组聚合等 OLAP方向的能力,并集成一些热门常用的实时分析算法,让工程师以及DBA们更容易用Mycat实现一些高级数据分析处理功能。
CSDN:在日常工作中你会通过哪些渠道来提升个人能力?
王金剑:提升个人能力的方式,我主要还是通过大量阅读,对于阅读提升能力,我个人建议并不是列一个学习计划,而是把读书变成乐趣,每天读几页,原本看起来很厚的一本书,不知不觉也就读完了,而且因为是带着乐趣带着非常愉快的心情读书,所以书中的知识也能消化吸收的很好。
CSDN:给从事数据库领域的开发者分享些经验吧。
王金剑:数据库技术发展到今天,从关系型数据库到现在的各种云计算,NoSQL产品。作为传统数据库开发人员,必须紧跟技术发展,在进一步提高传统数据库认识的同时,还要掌握更多的新型数据库技术,以及云服务技术。除了提高技术的深度,也要重视提高知识面的宽度。
相关阅读:MyCat:开源分布式数据库中间件