当前位置: 首页 >> 技术文章 >> 张甦:数据库选型需因地制宜,MongoDB与MySQL绝非替代
张甦:数据库选型需因地制宜,MongoDB与MySQL绝非替代
发布时间:2019-04-10 发布人:张甦 806


云和恩墨大讲堂每周都会邀请业内外大咖进行一小时的线上主题分享,本期我们邀请到了恩墨学院张甦老师,带来题为《MongoDB经典案例分析》的分享,敬请期待。

在开课前,大讲堂有幸采访了张老师,了解他的技术成长之道。


张甦,数据库专家,51CTO专家博主,曾就职于某大型电商平台,汽车类网站网等大型互联网公司。10年互联网线上处理及培训经验,专注于MySQL数据库,对MongoDB、Redis等NoSQL数据库有深入研究,著有《MySQL王者晋级之路》、《MongoDB运维实战》。






在访谈过程中我们发现,张甦不是想象中严谨的讲师或是闷骚的技术男,更像一个大男孩儿,他叫自己甦哥Sugar,他说要做个快乐做技术的网红。多年的工作并没有打消他对技术的热忱,他对自己未知的领域仍然充满好奇,对于和伙伴们一起踏上新旅程仍旧充满期待。

从一个普通的MySQL运维DBA到精通多种数据库的培训讲师、开源产品总监、技术图书作者……接下来就让我们一起来了解一下这个大男孩儿与他的技术之路吧:


自己

Character


从MySQL运维DBA出发

成功转型的路上我做了什么

Q:请先和大家介绍一下您,以及您感兴趣的技术是?

Answer:很感谢恩墨大讲堂邀请我来给大家分享一个技术主题。我收到邀请那一刻,相当开心和兴奋。因为我本人特别爱讲、爱写、更爱快乐地做技术,而且励志要成为IT界的网红(因为本来长得也很帅),希望能够把做技术的这股子快乐劲儿传递给大家。

下面先跟大家详细聊聊我自己,我叫张甦(读su,第一声),好多人不认识这个甦字,经常把它分开读,以至于从小到大,伴随着叫我名字的声音里都是张更生(那些人简直太没文化哈)。我的网名叫sugar,意为糖,就是希望今后分享的文章和课程,都可以甜到各位老铁们,相当要有温度的那种。


而立之年的我,在北京西城区一个胡同里长大,爱国、创新、包容、厚德是我们大北京的精神。凡事儿必须得做到有里儿有面儿。在这里,我借此机会,发表下我的声音:欢迎五湖四海的兄弟们,来北京,来云和恩墨找张老师学习技术,来的都是客,北京欢迎大家。

从小我特别喜欢足球,梦想长大之后成为北京国安足球队的一员,能够驰骋在北京工人体育场,为北京国安队效力。压根儿从来就没有想过今后会从事技术类数据相关的工作,因为我更喜欢和人打交道。

直到大学毕业,我的计算机导师推荐我学习Linux,从事数据库相关的工作,DBA(数据库工程师)这个职业才第一次出现在我的视野里。于是一毕业就很顺利地做了MySQL DBA(MySQL是一款开源数据库,在DB engine中排名第二,在开源数据库中排名第一)。由于当时数据库知识太浅薄,在刚开始时真是度日如年,极其痛苦,曾多次想要放弃,但心里总认为我做的这份工作是高科技,一定要坚持下来,让别人羡慕我:)。

经历一番波折平缓度过适应期之后,2014年又接触了一款数据库叫MongoDB(目前DB engine排名中位列第五,NoSQL中排名第一)。从此这两款数据库我就一起并驾齐驱一起学习到至今。

张甦在MongoDB年会上进行主题演讲

我很了解我自己,我是孔雀型性格,非常善长演讲和表现自己。我认为何为“技术”?技,就是我们所学习到该领域的知识;术,就是要把自己所学习到的知识也好,经验也罢,传播出去,让更多的人了解学习它,这才是真正意义上的开源精神。正因为这样,我之后毫不犹豫地开启了自己的数据培训教育之路。

从之前的DB Leader,突然变成了同学们口中的张老师。一口一个张老师,张老师的叫着,哎哟刚开始还真不适应!从小我就烦老师,幼小的心灵被伤害了多次,严格而又不苟言笑的标签是他们的专属。既然身份有所改变,又承担着开源数据库产品总监的工作,就要尽职尽责、尽善尽美地完善好产品教学工作,让更多的兄弟和同学们了解开源数据库,了解大数据。如果我非要有个人设的话,那就是阳光帅气,热爱演讲,热爱技术传播的布道师。喜欢快乐地做技术,把技术更加生活化的传播出去。


Q:您生命中有没有称得上是决定性的时刻,也就是使您走上技术这条路的事情?

A:其实我一直觉得有一句话特别有道理,碌碌无为等于死。

刚开始决定要做技术这行的时候,就是觉得这个行业是高科技,说起来特别牛,能够被人羡慕,还能挣很多钱,有钱买房、买车、娶媳妇(没车没房在北京,您就别结婚了,丈母娘不同意)并能让父母过上好日子。知识改天命运,技术成就梦想。因为我家庭不算富裕,父母从小把我养大,供我上学。男人必须得拼搏一把,回馈社会可能太大,至少要对得起父母对你的期望。所以谈不上什么决定性时刻,没想太多空虚的东西,或者没有那么多远大的抱负,就是为了家庭,有一股子向前,不认输的劲儿头。


Q:您认为是什么使您深深地投入这个领域?

A:是这样,你别管从事什么职业,只要真正的对它感兴趣,喜欢它或者爱它,你都能静下心来,全心身投入,兴趣太重要了。

有好多兄弟们,平时和我聊天说:“我真的对技术没兴趣,每天干的都不是自己喜欢的工作,但迫于生活的压力,为了有个稳定收入只好继续忍下去。”我想这个可能是很多同学们的心里所想。包括我自己都有。我承认在技术这个领域里,绝大多数时候是比较枯燥乏味的,但我们要善于调解自己,认清自己,发现自己身上的优点。于我来说,特别不喜欢某类技术文章或者书籍中那些过于概念性的话术,看完之后,真的是一点兴趣都没有,绝对不会再看它第二眼(最后就当废品卖了)。其实技术源于生活,伴随在我们身边的事物太多了。为什么不能把复杂变为简单呢?大家感兴趣可以去看我在51CTO博客(https://blog.51cto.com/sumongodb)上面看一下我的文章风格,我希望可以把技术这个枯燥的物体更加生活化,让更多的人接受它,让我们的技术领域更宽广。但你只有兴趣和想法还不行,贵在坚持,日复一日,每天都要充电学习新的知识,培养自己敏锐的嗅觉能力,对于新生技术要有自己的独家的判断能力。总结几个关键词就是兴趣、发现、信念、执着和梦想。


Q:回顾您多年来的经历,您最骄傲的事情是什么?

A:近10年的技术工作及后期的教育培训之路,最让自己觉得骄傲的可能就是在2018年,一年内出版了自己的两本技术类图书。分别是《MySQL王者晋级之路》和《MongoDB运维实战》。一本是带你入门到MySQL数据库领域中,另一本是拓展你数据库的视野,学习NoSQL的相关内容。我希望把自己多年的教学和实战经验分享给大家,让更多的初学者获益,今后有机会还会出版更多的技术书籍。


Q:能否回顾一下自己的职业之路,谈一谈毕业后这些年在工作中的收获和体验。

A:其实仔细想想,这些年在工作中,除了收获技术知识之外,还结实了圈中众多德高望重的前辈(毕竟我还这么年轻,都是我叔叔级别的了)。在我的MySQL之路中,周彦伟(我伟哥)对我有知遇之恩。盖国强总、侯圣文哥在工作中,经常会用一个过来人的心态指出我的不足。如果我一个人在黑暗中行走,他们就是我的那束光,帮我照亮未来的路。

我的朋友们经常跟我说,张甦你选择了一条发展前景很好的路,选择比努力重要!其实我并不这么认为,选择是固然重要,但如果没有努力的付出,你连选择的机会都没有。我也想告诉各位兄弟们,当我们埋头苦干研究技术的时候,不妨带着一种走出去的想法,多参加一些技术大会,多结交一些圈中的前辈,从他们身上所学习到经验和技术观点,是你从书本上永远得不到的知识财富。

观点

Viewpoint

数据库选型需因地制宜

MongoDB与MySQL绝非替代


Q:此前,关于NoSQL和SQL之争非常激烈,而您一直对二者保持着非常高的关注,能否分享您对二者的理解,以及随着大数据和云计算发展现在的情况是怎样的?

A:其实所谓NoSQL和SQL之争都是针对不同的应用场景炒起来的。

经常也会有同学问到我:“张老师,MongoDB 4.0已经GA,而且支持多文档的事务处理了。那是不是就可以替代MySQL了?”根本不存在谁会替代谁,只是每个数据库有它自己最合适的适用范围罢了。

下面我简单聊聊对于这个之争的理解,先说说NoSQL,它的全名叫Not Only SQL。这个概念在早期提出。在2009年相对较热的NoSQL指的是非关系数据库,而我们平时使用的都是关系数据库。就像我们常用的Oracle、MySQL、SQL Server,这些数据库一般用于存储重要信息,并且在处理普通业务时没有问题。然而,随着Internet的快速发展,传统的关系数据库无法应对超大规模、大流量和高并发,之后NoSQL才逐渐发展起来。

  • 从存储结构上来看

关系数据库(SQL)对应于结构化数据。数据表预先定义结构(列定义),结构描述数据的形式和内容,这对数据建模至关重要。虽然预定义结构带来了可靠性和稳定性,但修改这些数据更加困难。NoSQL数据库基于动态结构,使用和非结构化数据。由于NoSQL数据库是动态结构,因此可以轻松适应数据类型和结构的变化。

  • 从存储扩展角度出发(这可能是两者之间最大的区别)

关系数据库是垂直扩展,这意味着要提高处理能力,需要使用速度更快的计算机。由于数据存储在关系表中,因此操作中的性能瓶颈可能涉及多个表,需要通过提高计算机性能来克服。虽然有很大的扩展空间,但最终会达到纵向扩张的上限。 NoSQL数据库被扩展,其存储自然分布,可以通过向资源池添加更多常见数据库服务器来共享负载,MongoDB与MySQL绝非替代。


Q:目前NoSQL数据库中具有很高流行度是MongoDB,相较于其他的NoSQL有什么特别之处?

A:其实在NoSQL中与MongoDB可以对比的就是Redis和MemCache了。相比于这两者MongoDB有以下优势:

  1. 具有更高的写入负载,MongoDB具有更高的插入速度;

  2. 处理大型单表时,数据表太大时很容易拆分表;

  3. 高可用性,设置M-S不仅方便而且速度非常快,MongoDB还可以快速实现具有、安全性和自动化的节点(数据中心)故障转移;

  4. 快速查询,MongoDB支持2D空间索引,如管道,因此您可以快速准确地从指定位置获取数据。 MongoDB会在启动后将数据库中的数据作为文件加载到内存中。如果内存资源非常丰富,这将大大提高数据库的查询速度;

  5. 非结构化数据突发,增加列数可能会在某些情况下锁定整个数据库,或者增加负载并导致性能下降。由于MongoDB的数据结构模式较弱,添加新字段不会影响旧表。整个过程将非常快。


Q:可否简单分享一下MongoDB的适用场景?目前有哪些经典的案例?

A:这个在我本期的分享《MongoDB经典案例分析》会具体讲解。

 

Q:而您此前也写了《MySQL王者晋级之路》一书,MySQL和MongoDB您更偏爱哪一个?可否详细谈一下这两个数据的优缺点及区别。

A:这个问题问得相当有水平。2019年1月我在参加深圳MongoDB年终总结大会上说过,手心手背都是肉,我把这两个数据库当做我的两个“儿子”一样看待。只是MySQL比MongoDB先出生了一段时间,是个大哥哥而已。对谁都没有偏爱,一碗水端平。因为在我最孤独、最寂寞的时候,是它们给我带来了最简单的快乐。谁也不能抨击它们的不好,要不作为家长的我,可不干啊哈哈!

其实我觉得做技术就踏实做,没必要说哪种数据库不好,只是它的特点可能不适合你现有公司的使用场景而已。



了解MySQL数据库:

MySQL数据库特点:

同理来了解MongoDB及其特点:

MongoDB特点介绍:

MySQL使用得覆盖率已经接近100%。从大型BAT,电商平台,游戏公司,甚至诸多传统行业也无不例外都在往MySQL数据库方向靠拢,达到逐渐垄断的趋势。对于MongoDB 的应用也已经渗透到各个领域,比如游戏、物流、电商、内容管理、社交、物联网、视频直播等。

  1. 游戏领域:游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新。

  2. 物流场景:使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。

  3. 社交场景:使用MongoDB存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能

  4. 物联网场景:使用MongoDB存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。


社区

 community

不忘初心

快乐乃坚持的动力源泉


Q:您在技术社区里也是非常的活跃,在51CTO博客上有多篇10W+的文章,对于技术人写博客这件事怎么看?以及您有什么心得和体会可分享?

A:这个问题,我觉得我太有发言权了。因为我的初心就是快乐地做技术,既然要快乐,就要各个方面都要快乐。

首先是让大家从我的文章感受到快乐,所以很多文章中的灵感源自于游戏、电视剧。如这篇文章《青铜到王者,快速提升你 MySQL 数据库的段位!》就是出于我对王者荣耀这款游戏的钟爱以及情怀,《没有宫廷内斗,数据库界的延禧攻略》是我特别喜欢看宫剧,延禧攻略电视剧中的勾心斗角,希望在现实技术圈子里,是不存在的。其实能有很多篇10w+的文章要先感谢51CTO这个非常好的技术平台;其次就是读者和兄弟们的厚爱,不断访问造就的结果。

Q:据悉,您也是MongoDB中文社区核心成员之一,在忙碌的工作里,您是如何参与到社区工作的?

A:作为MongoDB中文社区的成员,也做了非常多的志愿者工作,包括社区里的技术分享和相关的活动支持。2019年的目标是希望能有更多的人了解MongoDB,更多的企业使用MongoDB,和社区里的同仁们齐心协力,携手一起维护MongoDB良好的生态环境。

不管自己的工作有多忙,心中对于MongoDB的那份爱,那份父亲对于“儿子”的爱,再累再忙,也心甘情愿。

MongoDB年会合影

Q:你对刚从事数据库行业的新人以及想从事这行的人有什么建议?

A:既然你诚心诚意地问了,那我就诚意诚意地给刚入行的兄弟们一些建议。我认为我们不管从事什么行业,都要有一颗永不服输的心和一颗永远学习、坚持、进取的心,才能不被行业淘汰。尤其是我们这些做技术的老铁们,技术更新换代之快始料未及。举个例子来说,有同学跟我说,老师我们公司MySQL5.7还没上呢,MySQL版本已经出到8.0了,我这速度赶不上啊。而且对于传统运维DBA,我们必须把技术知识点打得更牢实一些,更精更专一些,因为相比于懂开发的DBA,我们毫无优势可言。

我们也要有开源精神,MySQL、MongoDB、PG,包括TiDB我们都可以学习起来,这样可以让自己在这个行业更具优势,让自己立于不败之地。18年有一部电影,触及到了我的灵魂深处——《我不是药神》。这部电影里面那个患病的老奶奶对警察哀求说到:“能不能别抓那个药贩子,你没得过病吗,谁没得过病啊,我们只能活着。”我们快乐地活在这个世上就要有意义的活着,不能浪费时间,活着做什么呢?来和张老师学习各类数据库的技术吧!付出就有回报,让知识改变命运,数据成就未来。




以上是一个想做网红的小甜哥——张甦的故事。想了解更多?敬请关注今晚的云和恩墨大讲堂(点击“阅读原文”立即报名参与),Sugar带你进入NoSQL的世界!

想要参加云和恩墨大讲堂分享并获得采访机会的请联系:陈一宁(yining.chen@enmotech.com),亦可以添加小助手微信:Enmoedu05,备注姓名+公司+职位+大讲堂申请进入万人DBA社群。