阅读更多
引用
编者按:在老一代的数据库老人中,周彦伟是其中的佼佼者,不仅着眼于自己的成长,还不断致力于该领域的发展,成立了技术社区、组织技术沙龙活动等,造福了很多,如今又将有新书出炉,为技术人带来全方位的福利,以下是CSDN对他的专访,他总结了自己多年来的成长和他眼里的“DBA精神”:责任心、服务心、沟通心、学习心、进取心和分享心。

引用
采访:仲培艺;责编:钱曙光


周彦伟 去哪儿网担任数据库总监


CSDN:首先能否请您介绍一下自己、您的团队以及您所关注的领域?
周彦伟:我是周彦伟,目前在去哪儿网担任数据库总监。在去哪儿网负责数据库平台的管理和维护工作。工作范围包括MySQL、Redis、HBase平台的架构设计、性能调优、日常运维以及自动化运维平台设计。曾经担任人人网(校内网)MySQL技术主管,负责数千规模的MySQL数据库实例的运维管理。在这个领域内有近10年的工作经历。

出于对于MySQL的兴趣,在业余时间作为创始人之一组建了中国MySQL用户组(ACMUG),并长期任ACMUG领导,领导和组织中国MySQL社区活动。在过去的几年间,把中国MySQL用户组社区从一个不起眼的小沙龙,做成了分会遍及全国,会员不计其数的大型社区,陆续在中国大陆的北京、上海、深圳、福州、厦门、成都、武汉、济南以及台北和香港等地开展了MySQL相关技术沙龙活动,影响了大部分中国MySQL从业者。

跟王竹峰、强昌金一起合著有《MySQL运维内参—— MySQL、Galera、Inception核心原理与最佳实践》一书,目前正在出版社校对和排版,计划2017年5月面世。

2016年初,基于我对中国MySQL技术和社区所做贡献,Oracle授予了Oracle MySQL ACE Director 的荣誉。

CSDN:您曾谈过人人网四余年,受益良多,那么是什么样的契机让您选择来到去哪儿网,这个过程中是否有什么难忘的经历可以和大家分享?
周彦伟:人人网是我MySQL职业的起点,在那里的确是受益良多,是人人网促进了我的成长,我对此非常感激。跟大数据、高并发的人人网业务相比较,去哪儿网的业务类型是以电子商务为主,大部分业务都是订单、账务之类,这类数据更敏感,对数据安全要求更高,对DBA的要求也更苛刻,挑战也更大。基于自身成长的考虑,以及时任去哪儿网CTO吴永强先生的热情邀请和充分信任,我在人人网工作四年多之后,忍痛离开,去寻找新的起点。在此,我也感谢去哪儿网,是这样一个环境让我更上层楼。

CSDN:您在MySQL领域苦心孤诣多年,这份执着的起源是什么呢,或者说是什么样的机会让您将目光投注到MySQL上的?
周彦伟:中国互联网的兴起大概是在90年代末,门户网站和搜索引擎的兴起,把中国一下子带入了互联社会。但真正的复杂逻辑型网站的繁荣,大概要在2006年之后了吧,那个时候开始,互联网逐步深入到了垂直领域、社交领域、电商领域、金融领域。随之而来的,就是这些复杂逻辑带动了网站对关系数据库的需求,特别是对OLTP的需求,MySQL成了解决这一需求痛点的金钥匙。中国大部分互联网公司都选择MySQL数据库来支撑自己的业务。

我从2007年开始进入互联网工作,并开始接触MySQL,亲眼目睹了这一现象,并预测对MySQL人才的需求将会越来越大,这对个人的职业和发展是一个不可多得的良机,在加上我十分推崇MySQL的开源、开放、自由的思想,于是在做了5年的编程工作之后,毅然转型到了MySQL。目前来看,这还算是个不坏的选择。

CSDN:众所周知,MySQL的目标是要做“最流行的数据库”,您是觉得让它在通往这一目标的道路上得以不断前进的要素是什么,它有着怎样的特性?
周彦伟:目前来看,如果把MySQL官方版加上它的主要分支Percona,MariaDB的话,MySQL应该已经实现了这个目标。为什么MySQL会那么成功?这是一个有意思的话题,也有很多人讨论。原因可能很多,我之前在自己的公众号(ID:formysql)里面写过一篇文章《MySQL流行的原因》,现在看看还是适用的。引用如下:

从上世纪90年代后期开始,互联网的热潮开始席卷全球,也为MySQL的发展提供了广阔的空间。特别是基于交互的社交,电子商务,以及金融互联网的发展,对传统的数据库服务能力提出了挑战。高并发,高性能,高可用,轻资源,易维护,易扩展的需求,促进了MySQL的长足发展。

MySQL流行的原因可以归结为以下几点:
  • 简单
  • 尽管MySQL源码的入门门槛很高,很多人不能深入其中,但是MySQL的使用还是非常简单的,任何稍微有IT背景的技术人员都可以无师自通地参照文档安装运行和使用MySQL,这几乎没有什么门槛。同时,MySQL支持大部分ANSI SQL-92,略有经验的使用者都能完成基本的操作需求。
  • 开源
  • 开源意味着安全和免费,代码就摆在那里,无数的技术爱好者一起来审核程序,一起修补问题,这让使用者非常的放心。同时,开源带来了免费。从上世纪90年代末一直持续到现在,互联网的兴起并快速发展,对免费数据库的需求非常迫切,免费,也让规模化部署的需求成为可能。要知道很多大型互联网公司的MySQL集群都是数以千记或者万记的,如果是按照传统的商业数据库的收费模式,没有人愿意承担。免费,让数据库大规模使用成为可能,也提升了互联网的交互式服务的质量。
  • 复制
  • MySQL从3.23.15这个版本开始,支持了replication,可以帮助MySQL使用者搭建Master-Slave的架构。把数据准实时的从一个实例同步到另一个实例。这个时间是2000年之前。要知道,其他一些开源数据库是在最近的几年里才开始支持这样的功能的,这对于数据库使用者来说,不管是在线备份还是读写分离,或者负载均衡到多个读库,意义实在太大了。在2010年之前,一个Master,多个slave的部署情况随处可见,我见过有12个slave的情形,可以设想,如果没有replication功能,我们要用数据库处理百万甚至是亿万规模的查询负载是非常困难的。
  • 引擎
  • MySQL不同于其他多数数据库之处是它对插件式存储引擎的支持,这是一个开放的设计,有点兼容并包,海纳百川的感觉。熟悉MySQL的人随便就能报出几种MySQL存储引擎的名字,MyISAM,InnoDB,NDB,TokuDB,等等。而MySQL里最常用的,也是奠定了MySQL开源数据库之王地位的InnoDB,并不是Monty或者他的伙伴们开发的。插件式存储引擎的设计,让InnoDB以及其他存储引擎轻松接入到MySQL Server,集百家之长,这样MySQL就有了无限的活力和竞争力以保持其长盛不衰。
  • 支持
  • Monty说在早期MySQL刚刚推出的时候,他亲自写了30000封邮件来帮助人们使用MySQL。这样持之以恒,不辞劳苦,不厌其烦的精神让人赞叹。我们自己也维护了一个开源数据库项目InceptionSQL审核。在过去的一年多里,我们也碰到了很多很多的使用者提问的问题,这种感受,真的是只有经历过才能体会其中的付出。
  • 合作
  • MySQL在发布的早期,就广泛的跟其他社区合作,PHP和Perl的开发者都很愿意去传播MySQL的技术和新闻,很多Linux版本都会预装MySQL。一度LAMP(Linux、Apace、MySQL、PhP)成为站长或者开发者的标配。MySQL在各种合作中逐步深入人心,遍地开花。
  • 社区
  • 社区对MySQL的贡献功不可没。MySQL流行的一个重要原因就是人们常说的社区力量强大。社区为MySQL贡献了架构方案,运维工具,技术文档,宣传普及,乃至专业人才。放眼望去,不管是专业的数据库服务团队例如著名Percona,还是著名的技术型公司,例如google,facebook都在使用MySQL的过程中不断的给MySQL贡献新的功能和工具,帮助MySQL成熟和稳定。在国内,这几年我们一直在组织ACMUG(中国MySQL/MariaDB用户组,China MySQL/MariaDB User Group),它汇聚了中国最顶尖的MySQL及其周边技术的人才,同时得到了腾讯,阿里巴巴等公司的同行的支持和积极参与,公司有竞争,然技术却无界限,大家广泛交流,互通有无,功能促进中国MySQL技术的传播和进步。目前,ACMUG以及ACMUG所组织的技术交流活动得到了MySQL所属的Oracle公司,MariaDB所属的MariaDB基金会以及MySQL和MariaDB之父Monty先生本人的认可,我们会继续前行,为中国的开源数据库做出贡献。

CSDN:都知道您在MySQL之外,对Redis和Oracle等数据库也有很深入的研究,当初在众多计算机分支中,是出于什么原因选择从事数据库行业的?
周彦伟:在上面第三个问题已经聊到过,在过去这十年,是属于MySQL的时代,并且我坚信这个时代还在不断延续,并且人们对MySQL的依赖越来越强了。

大胆预测一下,如果过去十年是互联网的MySQL,那么接下来的十年,应该会是传统企业的MySQL,让我们拭目以待。

CSDN:在您看来,一名优秀的DBA需要具备哪些素质,包括专业知识上方面,以及精神方面。而您初次涉足DBA行业又是什么样的背景呢?
周彦伟:我在自己的公众号里面也曾经写到过我所认可的“DBA精神”,同时在我们的新书《MySQL运维内参》“前言”里面又相信阐述了这个想法:

DBA是什么?
  • 有点像SA,但在业务层面上比SA事儿多,主要是牵扯的人多,嬉笑怒骂,皆成文章。
  • 有点像DEV,但总是会有冲突,多数情况下发生在双方对数据库使用的看法和优化上。我们只好自己开发个Inception给DEV用。
  • 有点像PM,设计库,优化表,处处都是艺术。
  • 有点像CTO,恩,你以为我说的是首席建表官? DBA是操着鸡毛蒜皮的心啊。
  • 有点像出租司机,改个表,我一向不待见那种不等改完甩手就走的,等待是一种美德,善始善终方显英雄本色。
  • 有点像救火队员,网站挂了,可能跟DB没关系,但DBA一定要出现;DB挂了,一定跟网站有关系,DBA一定也要出现。
  • 有点像银行点钞员,数据就是钱啊,只是都不是自己的,但职业道德最为重要。
  • 有点像养孩子,当爹又当妈,哪个实例伺候不好,都会出乱子。
DBA是服务型职业,服务好了,没你啥事儿;服务不好,事儿就大了。

DBA承载着一个重要的角色,有着特殊的职责和使命,一个优秀的DBA其实是非常难得的。DBA应该具备怎样的能力呢?我曾经提出过“DBA精神”:责任心、服务心、沟通心、学习心、进取心和分享心。

DBA精神是责任心的体现
维护数据库数据的安全和完整是管理员的首要责任。在管理数据库的过程中,作为一个DBA,要把数据库看做自己的财产、自己的儿女、自己身体的一部分。此种职责,需要你像呵护自己眼睛一样去照顾你所维护的数据库。时刻去想,有没有做应该有的备份,有没加应该有的监控,有没有做必须的安全权限限制。一旦出问题,有没有第一时间去分析和解决问题,这就像你的自己的眼睛,一旦出现红肿病态,多少人会视而不见?

DBA精神是服务心的体现
现代互联网对DB的需求,是需要支撑业务持续稳定的运行和源源不断的变更,这要求DBA有7X24小时的服务精神。这是一个服务性职业,需要随时随地响应来自各方面的各种需求。其一,人的需求,业务要发展,DB就会有变更,只有DBA与开发人员紧密配合,才能顺畅高效地完成工作。其二,事的需求,DB是个动态的系统,不断的运转就会不断的面临新问题,机器故障,磁盘报警,内存不足,CPU过载等等。这是个脆弱的系统,它不会对DBA的迟钝有半点仁慈,一旦有问题,任性的宕机是必然的结果。其三,心的需求,DBA应该出自内心地主动去对DB做不断的优化,这种优化,可以在结构上,可以在架构上,可以在业务逻辑上,关键之处在于,你有没有心。说得通俗一点:“没事找事儿”。

DBA精神是沟通心的体现
DBA的工作,不是封闭的科学研究和孤傲的英雄主义,不管是主动的优化,还是被动的接受任务,都是需要与人做不断的沟通与交流。假如你不懂业务流程,不知道数据的来龙去脉,轻重缓急,那就谈不上数据库表的设计和优化。而数据库的优化,往往最大的进展是来自对业务逻辑的优化。这需要运用良好的沟通心态和技巧,深入了解业务流程和架构。与人沟通,是DBA获取知识和信息的主要途径,需要做到能与人沟通和会与人沟通。生活工作中,人的个性是千差万别的,面对形形色色的沟通对象,充分调动对方的积极性,进行愉快有效的交流也是DBA需要掌握的一门技术。

DBA精神是学习心的体现
DB在技术体系中是一个承上启下的中间环节,它运行在物理硬件和操作系统之上,同时承载着上层各种各样的业务逻辑的调用。对DB的运维和管理,不仅仅需要掌握数据库自身的基础知识,要保证这个系统的稳定和优化,就需要知己知彼,去了解它上下游的知识和特性。所以,一个优秀的DBA,需要了解你所使用的硬件,这包括磁盘的特性,网络的布局,内存的使用,CPU的处理能力等等;需要了解DB所运行的操作系统的知识,它是怎么调度IO的,怎么管理内存的,怎么优化文件的;需要了解上层业务是怎么调用数据库的,SQL怎么写的,看懂了业务逻辑的程序才能明白有的SQL是不是多余,某些SQL是不是可以优化。我们看到在MySQL官方和MariaDB官方,都已经针对硬件开始在官方源码的基础上做自动优化了,同时MySQL官方也提供了自己的集成于业务端的高可用方案,这都是开源数据库进步发展的必然结果。同时,由于开源数据库的盛行,针对数据库自身代码的学习和研究,也逐渐成为优秀DBA的必修课了。

DBA精神是进取心的体现
随时发现问题,分析问题,解决问题。通过问题现象,依赖自己的经验和知识,同时探索未知的知识去解决现实的问题,在这个过程中,也是自己积累经验和不断成长的过程。相对而言,解决问题本身并不重要,重要的是在此过程中探求解决问题的方法和所获取的经验,DBA的职业优势也在于此,同时,主动花费心思与精力去不断追求问题的优解和技术的极致,也是DBA应尽的职责。

DBA精神是分享心的体现
这些年,我们一直在倡导做一件事情,那就是提倡DBA在开源社区持续做技术分享。我们做了ACMUG,全称是 China MySQL User Group。A你可以认为是All,或者About,或者是Active,它代表了所有关心MySQL及其相关技术的积极参与分享活动的人。在过去的数年里,ACMUG已经组织了上百场技术分享,分享者都是工作在一线的DBA或者数据库技术爱好者,通过参与这个活动,大家都切切实实的得到收益,个人在技术上也取得了巨大的进步。通过分享,大家学到了技术、开拓了视野、展开了思路,当然也交到了朋友。我们希望能通过这样的活动,把DBA精神永续下去,让更多人受益,让更多技术普及。

CSDN:数据库行业对知识的积累和不断更新优化有着极高的要求,这里您能否结合经验,和大家分享一下您觉得值得推荐的学习方法或策略?
周彦伟:在我接触MySQL的时候,苦于没有太多的参考资料,我曾经大规模地阅读官方文档,这是一个最笨,但也是100%有效的学习方法。当然,到现在为止,随着行业的发展,越来越多的人会把自己的经验和心得分享出来,学习途径跟10年前比要多太多了,各种书籍,博客,自媒体数不胜数。这里也给自己打个小广告,欢迎关注我的个人公众号:MySQL运维内参(ID:formysql)和我们正在签名预售的新书《MySQL运维内参——MySQL、Galera、Inception核心原理与最佳实践》。

有句诗云:纸上得来终觉浅,绝知此事要躬行。MySQL是运维型技术,要求极强的动手能力和操作经验,所有的培训班和书籍只能指明一个方向,提供一个参考,最重要的还是要自己动手,如此方能丰衣足食。

CSDN:最后,能否请您分享一下对于MySQL未来发展的预期?
周彦伟:我在自己的公众号里面曾经写过一篇《Galera的未来—Group Replication发布后的思考》,其实文章所提到的Galera和Group Replication均是MySQL未来发展的方向,这就是集群化。我也会在今年的若干技术大会上分享我对MySQL集群化的一些看法和尝试,这包括MySQL NDB Cluster,MySQL Galera Cluster和MySQL InnoDB Cluster。在未来的若干年内,MySQL会一直引领数据库发展潮流,并以集群化的解决方案为更大广大的传统企业服务。

引用
SDCC 2017•上海站将于2017年3月17-19日登陆申城,三大技术峰会和24位嘉宾,汇聚国内知名的互联网公司CTO、架构师、技术总监,畅谈运维、数据库和架构的热门话题和技术热点,遇见精益运维发起人&优维科技CEO王津银、MongoDB大中华区首席架构师唐建法和华为软件API开放平台架构师李林锋等大牛。截止3月5日前门票八折优惠中,5人以上团购立减1500元,详情点击注册参会

  • 大小: 198.3 KB
  • 大小: 147.9 KB
0
0
评论 共 3 条 请登录后发表评论
3 楼 guoqiang1608 2017-12-07 14:17
[b][u]
引用
[list]
[*][img][url][/url][/img]
[/list]
[/u][/b]  
2 楼 芯学苑Java知识分享 2017-04-24 11:37
“前言”里面又相信阐述了这个想法:

相信???相关????
1 楼 芯学苑Java知识分享 2017-04-24 11:26

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 函数式编程的基石 —— Lambda Calculus(Functional Programming)

    在lambda演算中,函数是一等公民。可以把函数作为参数传入或返回,把函数赋值给一个变量等等。 Y 组合子函数 lambda calculus : λ 定义 通过 lambda , currying, closure, alpha, beta 可以定义出一个"完...

  • The Lambda Calculus Its Syntax and Semantics 2nd pdf

    这是一本讲述了Lambda Calculus的书,而且其内容讲的十分透彻,只是很厚,希望大家努力

  • 探索纯Lambda演算的极致:Lambda Calculus in Rust

    探索纯Lambda演算的极致:Lambda Calculus in Rust lambda_calculusA simple, zero-dependency implementation of the untyped lambda calculus in Safe Rust项目地址:https://gitcode.com/gh_mirrors/la/lambda_calculus 在数学和计...

  • The Lambda Calculus Its Syntax and Semantics 2nd

    lambda的书

  • lambda calculus语言解释器

    lambda calculus语言解释器,阐述了解释器的一般工作原理。

  • 【TAPL学习笔记 3】The Untyped Lambda-Calculus

    在lambda 演算中,所有的计算都可以归结为函数定义和应用,它在语言功能的规约、语言设计与实现以及类型系统的研究中有广泛应用。它的重要性来自于既可以视作简单的程序语言,又可以看作一个能够严格证明的数学对象。lambda演算仅仅是core calculi中的一个,除此之外pi-caculus可以用来定义基于消息的并发语言语义;object calculus蒸馏了OO语言的核心功能。lambda calculus可以通过不同方式来进行扩充。

  • Lambda Calculus

        Lambda Calculus 在数学定义上面非常简单,并且和与图灵机等价,也就是说FP语言程序与普通的命令式语言如C可以写出同样能力的程序。lambda算子理论里所有东东都是函数.Lambda 定义    一个 Lambda 定义就是一个:          lambda :       这个定义可以应用到参数上,进行求值。例(py): >>> (lambda x : x +

  • C++ lambda函数总结,看这一篇就够了

    C++ lambda函数 1 lambda函数简介 名称lambda来自lambda calculus(lambda演算),一种定义和应用函数的数学系统。这个系统中可以使用匿名函数,对于接收函数指针或伪函数的函数,可以使用匿名函数定义(lambda)作为其参数。 1.1 为什么使用lambda函数? 距离:定义位于使用的地方附近很有用,由于函数不能定义在函数中,编译器传统意义上也不会内联其他地址被获取的函数,因为函数地址的概念意味着非内联函数,伪函数也可以定义在使用附近,因此,lambda和伪函数比函数近

  • 神奇的λ-calculus

    λ-calculus之所以有着诱人的魅力,在于它的简洁和强大。它可以被称为是最小的通用程序设计语言。

  • Programming Languages And Lambda calculi 1.1 定义集合

    Programming Languages And Lambda calculi 第一章 用文字计算 在本书中,我们将会研究如何用一种人们容易理解的方式去定义一种编程语言以及进行形式分析。 定义语言的其中一种方法是用整段整段的文字去定义,解释语言中的表达方式以及如何去分析它们。这种方法能够让读者很快在整体上大致理解一种语言,但是有关这种语言的细节将会变得非常难以提取。更加糟糕的是,段落文本不适合正式的分析。 另一种定义语言的方法是引入一个叫元语言(meta-language)的解释器。假设读者对元语言非常熟

  • 【Programming Languages And Lambda calculi】4.6 Lambda表达式 递归 (重要,建议彻底弄懂)

    4.6 递归 上一小节的练习要求你用实现 add 的方法实现 mult 。类似的实现体现了数字是由函数编码的信息。 给定函数 iszero,add和 sub1,我们同样可以在不知道任何数值如何被编码的前提下实现 mult 。我们必须定义一个递归程序来检查第一个参数是否为0,如果不是,将第二个参数添加到递归调用,并递减第一个参数。 上述定义 mult 宏的问题为,它调用了自身,所以没有方法将 mult 展开为一个纯 lambda表达式。因此,缩写是违法的。 4.6.1 自应用递归 乘法器函数如何获得自己的句

  • An Introduction to Functional Programming Through Lambda Calculus

    An Introduction to Functional Programming Through Lambda Calculus 英文版 200页

  • An introduction to functional programming through lambda calculus.PDF.zip

    Author: Michaelson, Greg Functional programming is rooted in lambda calculus, which constitutes the world's smallest programming language. This well-respected text offers an accessible introduction to functional programming concepts and techniques for students of mathematics and computer science. The treatment is as nontechnical as possible, and it assumes no prior knowledge of mathematics or functional programming. Cogent examples illuminate the central ideas, and numerous exercises appear throughout the text, offering reinforcement of key concepts. All problems feature complete solutions.

  • Lambda Calculus and Combination an introduction

    Lambda Calculus for computer science; Although it is an introduction, it is an abstract for lambda calculus

  • Lambda 表达式(λ-calculus)学习(1)

    (参考:《type and Programming Languages》) 一、语法: t::=   terms:   x   variable   λx.t   abstraction   tt   application λx.t可理解为:一个函数,以变量x为参数,返回termt。t是该抽象的body。(lambda表达式的body总是延伸...

  • 【Programming Languages And Lambda calculi】现实语言模型 5.1 ISWIM表达式

    第二部分 现实语言模型 第五章 ISWIM Church 发展了Lambda 演算作为机械计算的互补,成为学习数学的一种方法。在20世纪60年代 Landin 证明了 Church 的Lambda演算并不能作为大多数编程语言的适合模型。举例来说,Lambda表达式 约化为 1 的编码,尽管大部分语言会对 (sub1 λy.y) 颇有言辞。问题并不止于 sub1和 λy.y 的编码,对整个表达式进行 β 约化后,(sub1 λy.y) 参数将会完全被忽略。 这种 名称调用 的特点是否可取,仍有待商榷。无论如

  • Delphi中的算术运算函数

    Delphi中的算术运算函数   以下内容为编编程网站诸网友共同翻译的结果,如需转载,请注明出处:http://www.togetherdev.com,如果您对翻译Delphi的函数有兴趣,可登录编编程网站,如果对翻译的内容有什么看法,可以在回帖或在编编程网站中提出。AbsCeilExpFloorfracFrexpint

  • 使用Lua Function表示Lambda calculus

    http://blog.csdn.net/yuanlin2008/article/details/8627081 很多程序语言所带给你的“完美”的感觉都来自于数学抽象之美。 在Lua中,function被描述成“具有真正的词法范围的一类值”(first-class values with proper lexical scoping)。 所谓的“一类值”,应该满足以下条件: 可

  • 将语言编译为 Lambda Calculus(译)

    (注:原文发表于 http://matt.might.net/articles/compiling-up-to-lambda-calculus/)我教授的编译器课程总是由一节关于 λ 演算的完整介绍开始。It leaves behind only the dedicated.Barendregt is a helluva drug.λ 演算是一门微型编程语言。尽管它只包含了函数应用、变量引用以及 ......

Global site tag (gtag.js) - Google Analytics