对话 MySQL 之父 Monty:超越 MySQL 很难,但我做到了!

Posted 《新程序员》编辑部

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对话 MySQL 之父 Monty:超越 MySQL 很难,但我做到了!相关的知识,希望对你有一定的参考价值。

作者 | 王启隆       责编 | 唐小引

出品 | 《新程序员》编辑部

数据库是所有现代信息系统的支柱,打孔卡系统曾管理了 20 世纪的社会运作,而在计算机诞生之后,电子数据库系统存储和分析企业数据,影响着无数企业的决策。如今,社交媒体和物联网的泛滥已经迎来了需要收集和分析海量数据的时代,在这一时代背景下,开源技术逐渐发展,开源数据库软件的灵活性和成本效益现在已经彻底改变了数据库管理系统。世界上第一个开源数据库管理系统,正是 1995 年的 mysql。从那时起,开源数据库管理有了许多改进和附加功能,使其成为当今许多企业的首选。

MySQL 之父 Michael “Monty” Widenius(以下称为 Monty)是一位拥有四十多年编程经验的开源大师,除了 MySQL 的创始人,他还担任 Monty Program Ab(现为 MariaDB 基金会 )的创始人。已入花甲之年的 Monty 依然奋战于代码第一线,没有退休打算,对于编程有着许多独到的理解,他曾参与《新程序员 004》的访谈,为我们带来了不少感悟和心得。

Monty和中国结缘已久,与中国数据库行业也颇有渊源。这一次,CSDN 有幸再次对话这位开源数据库领域的引航者,他不但为我们带来了对于开源技术蓬勃发展下的新时代数据库领域的崭新观点,还为我们讲述了一段艰苦卓绝的历史,描绘了 MySQL 原班人马如何在那五年间重新建立 MariaDB 并东山再起,最终超越 MySQL,超越了曾经的自我。

注:本文节选自《新程序员·005:开源深度指南&新金融背后的科技力量》,目前已开启预售,欢迎大家点击订阅!

和中国结缘的 MySQL 之父

《新程序员》:这是您第几次到中国?这儿有给您留下什么深刻的印象吗?

Monty:我应该来中国十次左右了吧,而这一次待得最久,差不多快一个月了——遗憾的是,明天我就要离开了。在中国最令人难忘的事情,应该是这次旅程中在酒店隔离了十天;不过,作为一名程序员,我的日常无非就是每天醒来,打开电脑进行工作。隔离并没有对我产生多少影响,反而因此少了许多外界的干扰。

Monty 摄于杭州

《新程序员》:很多 MariaDB 的优质代码都来自中国开发者。您有什么关于中国开发者的趣事分享吗?

Monty:我非常喜欢和中国开发者交谈,我曾和不少参与 MySQL 的中国工程师进行过讨论,并让他们能更轻松地加入到 MariaDB 的合作中。不得不说,中国开发者提供的代码都很有趣,他们做的不仅仅是修复数据库中的一些 Bug,有的时候他们会为整个项目带来巨大的影响,所以我很期待未来能看到更多来自中国的代码。至于具体聊起某一件趣事?事实上,我更想在未来的发布中逐渐分享这些中国开发者做出的贡献。

《新程序员》:中国开源的发展可谓是有目共睹。您认为中国未来会在数据库领域扮演什么样的角色?

Monty:以前的数据库大多在美国活跃,而如今大多数的数据库都活跃在中国。我认为中国开发者需要精益求精,勇于去创造少量的优质产品,而不是大量复制平庸的产品,中国需要更多像阿里云和腾讯云这样的产品。此外,找到一种团队协作的方式也是当务之急,以 MariaDB 举例,MariaDB 由一个团队管理,其他人可以围绕这个数据库进行补充,并在这个过程中进行合作;像这样的协作方式,对每个人都有意义,也值得学习。正确的协作方式能事半功倍。

《新程序员》:如今也有不少中国开发者想了解开源数据库领域,您有哪些对这些入门者的建议吗?

Monty:任何行业新人在使用数据库的过程中,总会发现某个自己感兴趣的数据库,从而产生与其合作的想法。那么,想要入门,你首先要站在客户或者公司的角度,为这个数据库找到一些新的需求,然后花一些时间学习相关的知识,并研究和改善这些功能。当你与产品本身、产品背后的工程师以及基金会合作得越多,对于数据库的了解就会在这些实践之中增长,你的个人观点也会在开发者社区中留传下来。因此,去参与开源项目吧,实践将使你成名,实践是入门的第一步。

开源的好处就是,所有参与者的个人价值体现在其拥有的技能,而不是学位、背景和身份。在这种情况下,开源开发者用代码和程序来证明自我,而公司将通过代码的质量来决定自己是否想要雇佣一个人。因为开源的存在,开发者不用再了解自己的合作对象是男是女,在意彼此长相如何、来自何方。这就是开源最棒的地方,开源让开发者只关注感兴趣的人,让人能在自己所处于的领域大放光彩。记住一件事:一名优秀的程序员,是很难被解雇的。
 

开源数据库——从创建到运营


《新程序员》:回忆往昔,您在创建 MySQL 时就坚定地选择了开源之路,是有什么契机让您在那个时代发现了开源的重要性吗?

Monty:我在 1983 年左右就开始选择开源了。当时我和瑞典的程序员朋友们在做一些开源项目,但后来团队想让项目能够回馈到开源社区,却没什么合适的机会。在创建 MySQL 之后,我意识到这个项目不但能够回馈开源社区,还能让我不再只是把开源项目当成一个业余工作,我就是这么意识到了开源的重要性。MySQL 是我可以倾注全部心血的第一个项目,我记得 MySQL 在发行两个月后就开始盈利了。

《新程序员》:在那之后,您建立了 MariaDB 基金会。您认为维护和发展好一个开源社区最需要的是什么?

Monty:首先,要有足够的开发人员。在打算建立 MariaDB 之前,我就已经有一个陪伴我四年的 MySQL 团队了,当时我想保持原始团队完整,所以多亏了 Sun 公司付给我的钱,我才得以雇佣当年那些最关键的 MariaDB 开发人员。用人是很重要的一点。其次,有了人才之后,你还需要找到新的商业模式,实现开源。MariaDB 团队当时花了五年把 MySQL 分叉为 MariaDB,避免了被闭源的风险,这也是很重要的。

《新程序员》:刚建立 MariaDB 和在那之前甲骨文收购 Sun 的时候,是您最困难的时期吗?您觉得最困难的事情是什么?

Monty:我认为那段时间的 MariaDB 称不上困难,因为整个团队在那时已经足够成熟,团队的成员都知道做什么事情是正确的。但在刚建立 MariaDB 的头五年,公司一直都没有客户,这确实带来了不少经济上的挑战。幸运的是,当时的 MariaDB 有着足够的资金维持下去,在熬过了那五年之后,新生的 MariaDB 开始重新和 MySQL 的老客户们恢复合作,MariaDB 也逐渐得到了来自各界的支持;不过,MySQL 实在是太流行了,所以很难有数据库能与它竞争,开发者社区后来也花了很长时间才得以接受 MariaDB,而如今,我们赢了。

《新程序员》:您认为做一款数据库要确定什么样的方向比较好?是注重综合性,还是寻找竞争对手的不足,专注填补市场的空缺?

Monty:建立自己的独特性是很重要的,很多数据库都会这么做。在 MariaDB 中,开发团队分离了执行接口和存储,所以可以有不同的存储引擎供选择,而这可以让团队更好解决各种性能问题。MariaDB 可以解决很多问题,却也并非万能,所以对于极端的要求,就需要提供极端的解决方案。这就是为什么 MariaDB 前几年收购了一家名为 Clustrix 的公司,并重新命名了引擎以进行扩展。总而言之,扬长补短。

代码人生——从编程到管理


《新程序员》:从 MySQL 到 MariaDB,您有哪些经验是共通和可以重复运用的?

Monty:其实那几年行业的变化一直很少,这点十分有趣。MariaDB 一直在做的是添加新的功能,而非改动一些本质的东西。早期的 MariaDB 一直在研究怎么和 MySQL 以及 Oracle 的数据库兼容,开发团队想让以前的那些客户们能将所有数据完好无损地转移到 MariaDB,这个想法是在 MariaDB 建立初期就生成的。总而言之,不管是做 MySQL 还是做 MariaDB,我都是以客户的需求为本的。倾听客户的意见并帮助他们,保持你现有客户的满意并尝试获取新的客户,我认为这些道理是亘古不变的。

《新程序员》:那么,对于开发者来说,可以怎么像您一样做出一款这么风靡、用户广泛的开源产品?

Monty:万事开头难,一定要做好自己的第一个项目。一个初始的项目能打好根基,它需要在未来发挥作用,并且不能在襁褓中就遭受太多的竞争压力;当然,我很幸运能有 MySQL 作为自己的起点。在确立项目后,自然就得建立好社区、拉拢更多人参与项目、获取更多开发者的信任和支持,这就是开源。在大多数情况下,参与一个现有项目肯定是比创造一个新项目更容易的,所以最好先去研究现有的同类型项目都是怎么样的,看看现有的这些产品是否有所不足,然后再去想想是否要分叉项目,进一步又该怎么做。研究市场,从而因地制宜。

《新程序员》:DB-engines 上现在统计了三百多款数据库,而中国现在也有很多数据库,您怎么看待这种百家争鸣的现象?

Monty:如果回顾数据库的历史会发现,大部分数据库都只有短暂的生命期。数据库的客户往往是带着需求去寻找目标的,他们很清楚自己的预期和需求,而数据库公司可能究其一生都在研究用户的需求。为了满足不同的需求,更多的数据库被创建,更多的项目被分叉,而一家公司通常也不需要那么多数据库,因为管理起来太麻烦了。总而言之,数据库的生命期往往很短,但如果一个数据库能足够创新、有着独特的概念,确实能更容易存活下来;在数据库领域,概念太容易实现,成果太容易复制,所以产品一定要在创建之初迅速打响名声。

《新程序员》:您作为程序员的梦想实现了吗?您认为自己会在什么时候退休?

Monty:我不打算退休,我至今仍在夜以继日地写代码,在参与数据库的优化和改进。我热衷于解决问题,也很喜欢帮助他人。事实上,我觉得能一直居家办公,其实已经实现了一大梦想;在家里我就不用每天出行上班,并获得了比他人更多的时间,这些时间可以用于思考、用于休息、用于推进新的潮流。我认为程序员不退休有个好处,那就是可以长期为项目作出贡献;而且,继续工作也可以保持头脑清醒,这也是一件好事。

经验铸成的开源策略

《新程序员》:您认为这几年的数据库领域具体都有着哪些变化?

Monty:为了追求更好的速度,这几年各大分布式数据库的查询算法一直在进行改进。数据库最难做好的部分是数据下沉,这牵扯到对磁盘和内存的选择,其结果会影响数据库的性能问题。数据库领域的变化主要体现在这些增量的部分,而哪怕在二三十年以后,算法也会是数据库考虑的主要问题,领域的变化也体现于此。总而言之,需求创造市场,只有增加更多的业务,才能促进数据库变得更好。数据库领域正在巨变,它其实是一个会让人突然感到无所适从的领域。

《新程序员》:开源行业化应用和商业化前景是业界一直关心的问题,对此您怎么看?

Monty:MySQL 和 MariaDB 都是商业开源项目,我所做的就是不去妨碍或做任何影响开源许可证政策事情。相比之下,我对那些开源的、基于公司的项目非常谨慎,并且对涉及学术的项目也保持谨慎。如今,大部分人已经知晓什么是开源,并且在其中寻找财路,我有幸在其发展初期就分到了一杯羹;不幸的是,现在也有一些人试图混淆开源的概念,在一些开源项目里开放大部分内容,然后将关键的部分闭源。这种行为本质上是对于公众的愚弄,不利于发挥开源的潜力。开源不能保证项目赚钱,相反,开源会保证所有人能够免费参与项目;不少人还没弄清楚自己为什么要选择开源,这可能是我担心的问题。

《新程序员》:关于 MariaDB,未来有什么计划吗?

Monty:我从不相信自己能预测未来、高瞻远瞩。MariaDB 以客户为本,所以需要跟随客户的需求动态变化,MariaDB 的团队一直在努力确保这一点。客户就是未来,所以我总是保持倾听客户的需求,并且满足他们。事实上,本就没有数据库可以真正做好所有事情,一劳永逸;未来仍然会有源源不断的数据库诞生,它们的类型都将各不相同,因为未来的客户总会有着不同的需求。

《新程序员》:最后,有哪些想对中国的开发者说的建议吗?

Monty:在你热爱的领域多花时间。如果你喜欢编程,那么你就得开拓自己的领域,从你当前的项目开始寻找更多的可能性;不要将自己拘束在一项任务上,试着对自己的领域了解更多,试着参与到社区当中,和不同的人互动。总而言之,尝试承担更多的责任,尝试做你最擅长的事情。MariaDB 的开发者很喜欢与客户互动交流,因为只有和客户直接接触,你才能了解到客户的需求,并且从客户那里获取反馈;在这个过程中,你会获取成就感和满足感,并从自己的事业中感受到热情。如果是在以前,沟通交流也许较为困难,甚至不起作用;而现在,开源使这一切成为了可能,所以,去参与开源项目吧。

感谢杭州沃趣科技对本文的大力支持,以及对 Monty 再次来华的邀请与组织。沃趣与 Monty 在技术层有近 10 年的深度合作,目前已成为国内领先的数据库云企业,全面支撑 MariaDB 全生命周期 

——专题介绍——

新程序员.005:开源深度指南&新金融背后的科技力量》特别策划了“开源深度指南”和“新金融背后的科技力量”两大专题。邀请当今开源世界的先锋人物,Python之父Guido van Rossum,MySQL之父Michael "Monty" Widenius,Apache之父、OpenSSF开源安全基金会总经理Brian Behlendorf,自由软件之父Richard Stallman,MongoDB CTO Mark Porter、凝思董事长宫敏、Linux内核守护者吴峰光等,更有国内外开源基金会、知名企业代表,从开源安全合规、企业内部开源、开源技术创新、开源行业落地等多方面,为开源背后的开发者、企业、开源组织及开源社区提供更清晰的开源生态建设与升级版开源发展全景式图鉴。

而在金融专题中,来自中国工商银行、邮政储蓄、中信银行、广发银行、中国人民银行、平安科技、微众银行、蚂蚁集团等十数家传统金融机构和头部金融科技公司的技术专家为我们带来了关于各类新一代颠覆性技术的深入讨论和案例分析。深入解答开发者应该如何更好融入金融产业,以及金融科技的人才培养之道,真正做好金融科技的技术创新和数字化转型。

以上是关于对话 MySQL 之父 Monty:超越 MySQL 很难,但我做到了!的主要内容,如果未能解决你的问题,请参考以下文章

对话 MySQL 之父 Monty:超越 MySQL 很难,但我做到了!

对话 MySQL 之父 Monty:超越 MySQL 很难,但我做到了!

对话MySQL之父:代码一次性完成才是优秀程序员

对话MySQL之父:代码一次性完成才是优秀程序员

对话 MySQL 之父:一个优秀程序员可抵5个普通程序员

MySQL之父:代码应该一次写成,而不是后面再改