`
wangyanlong0107
  • 浏览: 480216 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

【转】ITPUB名人堂第15期:采访NOSQL技术开发架构师:邹德平(ID:ban_ping)先生 圆满结束

 
阅读更多

本期我们邀请到邹德平先生分享个人的技术经历,从Oracle DBA到mysql 再到NOSQL的成长经历,以及成功案例分享。

Hwayw:

您先自我介绍一下?分享以下您的职业经历?您目前的从事的工作??

ban_ping:

大家好,我的网名是半瓶,论坛ID是ban_ping,在ITPUB上目前主要在MySQL和NoSQL这两个版块活动,其实我原来也是折腾Oracle的,曾经和Eygle他们一起写过一本DBA手记的书。

说起职业经历,刚毕业的时候做了三年开发工作,在06年进入一家大型国企负责ERP系统的开发和运维,同时担任OracleDBA,在那边干了四年。其实一直以来我对互联网都很感兴趣,也一直关注电商和SNS这些东西,另外我更喜欢互联网行业开放自由的工作氛围,因此在2010年的时候,由于一个偶然的机会,开始参与到目前的创业项目中,我们做的项目叫热推网(RT.cn),定位于给用户带来好友们的生活消费推荐,我目前在其中担任架构师,说白了就是打杂的。


Hwayw:

您当时是从oracle转向MYSQL,现在又开始研究NOSQL,往往有的是市场驱动型,有的是兴趣驱动型,您觉得您属于哪类人群?当时做这样的转型是有什么样的想法?

ban_ping:

其实我对Oracle数据库本身一直挺有兴趣的,我的转型更多的是因为工作性质带来的转变,从传统大型企业到互联网行业,使用的技术体系是有很大的差别的,大型企业不差钱,Oracle用的比较普遍,相关的主机、存储等设备都有着高昂的价格。而互联网行业更多的是使用开源软件,基于相对廉价的PC服务器来构建系统,特别是初创的互联网公司更是如此。

正因为工作性质的改变,我关注的技术重点也从Oracle数据库转移到网站架构方面,因此研究MySQL和NoSQL也就是顺理成章的事情了。MySQL和Oracle一样,也是一种关系型数据库,而NoSQL的涉及的范围很广,产品也众多,每种都有其特定的应用场景,不像关系型数据库能包打天下。

其实如果跳出数据库本身,从整个系统架构的角度来看,很多在数据库中碰到的瓶颈和难点,或许可以在数据库外解决,比如要实现最近访问用户、十大热门内容之类的列表,通过一层缓存实现就可以了,没必要每次都从数据库里实时的查询结果。而类似的这些东西,从ITPUB上的一些帖子来看,很多DBA还是努力的在数据库的自身的范畴内考虑解决方案,我觉得是不必要的。咱们抛却钻研数据库技术本身不谈,我觉得有时候从数据库中跳出来,会有更高的视野,当然,也要看个人兴趣,是不是愿意关注数据库之外的东西。


Hwayw:

现在有很多人开发人员偏向使用MYSQL,您能否给大家分析一下原因?目前国内使用MYSQL的状况是什么样呢?

ban_ping:

MySQL这几年确实越来越火,一方面是MySQL产品自身的功能不断完善,分区、触发器等实用功能逐步加入进来,成为一个相对成熟的企业级关系型数据库产品,另外,就是因为其免费、开源、技术社区活跃、成功案例众多等特点,吸引了大批的互联网企业使用MySQL进行数据存储。

说到成功案例,世界上很多知名的互联网公司例如Facebook等都在用MySQL,使得人们对MySQL充满了信心。国内几大互联网巨头也都在MySQL的基础上开发自己的分布式数据库系统,或者把原来基于Oracle的一些应用迁移到MySQL之上。当然这里面很大的原因也是因为MySQL是免费和开源的,有经验的用户可以修改MySQL的源代码,从软硬件各方面优化MySQL提升性能,而这些修改的成果再开源出来,从而惠及更多用户形成良性循环,因此即使官方发布的产品存在不完善的地方,一般来说也能从技术社区里获得成熟的解决方案。相比Oracle等厂商昂贵的Licence费用,MySQL社区版不需要任何费用,这对于大规模使用数据库产品的公司无疑能降低很多成本。

对于MySQL在国内关系型数据库领域的市场占有率,并没有看到权威的第三方统计,从我了解的情况看,绝大多数互联网公司都在完全或部分的采用MySQL,包括电商、社区、游戏等,都在用。无论是技术社区的讨论交流,还是图书出版市场,或者人才招聘,从方方面面都能感觉到MySQL在逐年升温。但是在企业应用领域,感觉MySQL用的还不多,特别是还没有大规模应用到企业的核心系统上。


Hwayw:

根据您多年的DBA经验,在mysql数据库性能优化方面与oracle数据库相比是否有优势?您有什么建议和经验?分享一个您觉得最成功的例子?

ban_ping:

我觉得对MySQL的使用,和Oracle有着很大的不同,很多研究和使用Oracle的技术专家比如TomKyte的观点是数据库是昂贵的软件,应该充分利用数据库自身的功能来实现业务逻辑。但在MySQL的应用场景里,完全不是这样子的,MySQL一般只用来充当保障数据安全存储的角色,很少有人把业务逻辑写到MySQL的存储过程里

一个基于MySQL的系统,大多是采用主从复制或者一主多从的数据库架构,类似Oracle的Data guard ,然后通过水平或垂直拆分来实现横向扩展,在应用层或者使用单独的中间件来控制数据的路由,这种Sharding的方式是Share nothing的,和Oracle的RAC共享存储有很大的不同。MySQL常用的Innodb存储引擎,其主键索引就是表本身,是排好序的数据结构,类似Oracle的IOT,这些因素导致优化MySQL和优化Oracle的手段是有很大不同的。

另外一点很重要的是,在MySQL里,热点数据的访问一般是通过数据库外的缓存来实现的,就像我刚才说的,MySQL数据库只用来持久化保存数据,SQL语句一般都比较简单,为了拆分容易很少使用JOIN,在Oracle里常见的那些复杂的SQL语句在MySQL里很难见到,MySQL执行计划的表连接方式也不像Oracle那样有好几种类型。这些也就决定了优化MySQL更多的是要从整个系统架构的角度来考虑,和基于Oracle的系统相比,MySQL数据库在整个系统的中地位被弱化了。特别是缓存部分是非常核心的东西,大部分查询都会落到缓存里而不会穿透到数据库。而通过队列进行异步写的方式,也能解决大规模写入的瓶颈。

因为MySQL是开源的,因此用户能够自己改造MySQL来进行优化,比如日本一家社交游戏公司的架构师做了个叫HandlerSocket的插件,应用程序可以通过这个插件直接和Innodb存储引擎打交道,绕过SQL解析和执行计划这些消耗CPU的操作,据作者测试性能能达到单台MySQL服务器最高75万QPS。而且这东西还开源出来,你想用安装一下就能用了,不需要任何费用。


Hwayw:

现在有很多人认为:MYSQL是目前比较热门的数据库技术,但是NOSQL是未来数据库发展的趋势?您是怎么看待这种观点?为什么?

ban_ping:


NoSQL受到越来越多的关注,是因为它能解决或优化传统的关系型数据库难以处理的一些问题,比如高并发读写、高效处理海量数据、查询复杂的关系图等等。我相信NoSQL会越来越热门,也会有越来越多的公司采用它,但是我不认为NoSQL会取代传统的关系型数据库,它更多的是一种对关系型数据库的补充,有它特定的应用场景。比如从单个节点来说,关系型数据库是最能保障数据安全的,因为它实现的机制和这么多年的发展已经是很成熟的技术,一些NoSQL支持的高并发,是在内存操作完成的,这样就有丢失数据的潜在风险,所以现在很多使用NoSQL的场景大多是用它完成一些特定功能,核心的基础数据还是落到MySQL等关系型数据库里。

当然,NoSQL产品非常多,像面向文档的MongoDB也有很多公司用它在生产环境里取代了关系型数据库,如果能在运维上保障数据安全也是很不错的选择。因此我认为关系型数据库和NoSQL会长期共存,我们要做的是开拓视野,利用其各自的优势保障我们的系统稳定和高效。


Hwayw:

根据您对NOSQL的研究,您对初入NOSQL的网友什么要的意见和建议?

ban_ping:


我觉得学习和使用NoSQL,首先要和具体的应用场景结合起来,关系型数据库还是第一选择,看看什么地方是关系型数据库不好处理的,用满足要求的NoSQL产品进行补充。另外在选择一个NoSQL产品的时候,站好队很重要,要看是否有足够成熟的案例,或者自己是否有足够的能力驾驭它,包括开发和运维各个方面。

大体上说,我觉得目前比较成熟和广泛应用的NoSQL产品有RedisMongoDBHbaseLevelDB等这几种,感兴趣的朋友可以从这几个产品入手进行学习了解。当然,这几种产品的应用场景是有很大差别的,读写性能也差别很大,一定要结合应用场景来学习和使用。



嘉宾介绍:

  

   社区ID:ban_ping

   邹德平,网名半瓶,热推网(RT.cn)架构师,TechClub发起人,ACOUG成员,ITPUBMySQLNoSQL版版主。

Oracle DBA手记》一书合著者。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics