Oracle大佬离职,怒喷MySQL是“糟糕的数据库”……

漫画编程

共 3413字,需浏览 7分钟

 ·

2022-02-10 09:10

数据库工程师在离职的时候会干些什么?拿张贺卡、收起纪念礼品,没准还有一瓶践行酒——但今天故事的主角还发了个帖子,对自己研究了五年的技术好好发泄了一番。
Oracle 前首席软件工程师兼 MySQL 优化器团队成员 Steinar Gunderson 在帖子中表示自己离职的原因比较复杂,但想在这里聊几句“憋了五年的真心话”——“MySQL 是款超烂的数据库,强烈建议大家认真考虑转用 PostgreSQL。

看看 MySQL 之外的广阔世界

这位如今已经身在谷歌 Chrome 团队的工程师表示:“使用 MySQL 就像走进了一个平行宇宙,这里有很多人都由内而外笃信着 MySQL 就是最先进的数据库产品。但我不行,我的工作经常需要向观众们讲解优化器的内部工作原理,所以我特别能感受到 MySQL 的种种设计是多么原始。”

Gunderson 直言 MySQL 的代码仍有“很大的改进空间”,“公司管理层也一直支持大规模重构”。他进一步吐槽到:“真正让我不爽的是那些坚持认为 MySQL 一切良好的家伙(好像大多数 MySQL 用户和开发者根本没怎么用过其他数据库)。甚至连 executor 这种令人爆炸的东西——整个一大坨、各种组件功能彼此缠杂在一起——都能被称为‘高效’(事实正好相反)。”

尽管如此,Gunderson 依然对自己在 MySQL 项目中的贡献感到自豪,他表示自己参与的 MySQL 8.0 版本确实“比 5.7 版本好得多”,而且仍在持续改进,但“我们能做的也只有这些了”。

“我和同事们一直努力让 MySQL 优化器能够达到 2000 年初的标准设计水平,还做出了不少很好的调整,但也就是这样了。”

“最终,我们发现无论是强大的人才储备还是 Oracle 决胜云端的雄心,都不足以为 MySQL 争取到充足的重构资源、自然无法让它成为真正具有市场竞争力的产品。”但 Gunderson 也表示不想把 MySQL 贬得一无是处,如果有人正在用 MySQL 而且感觉不错的话可以继续。他只是希望大家“能在闲暇的时候偶尔出圈走走,看看 MySQL 之外的广阔世界”。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。

项目地址:https://github.com/YunaiV/ruoyi-vue-pro

MariaDB 也好不到哪里去?

MySQL 的创造者是 David Axmark 与 Michael Widenius,最初版本可以追溯到 1995 年。而其母公司、瑞典初创企业 MySQL AB 于 2008 年被 Sun Microsystems 收购,Sun 本身又在一年之后被甲骨文招至麾下。

在收购完成之后,Michael Widenius 从 Sun 离职,对 MySQL 进行了分叉,于是有了 MariaDB,同时他另外组建了一支 MySQL 开发团队。在此之后,MariaDB 就以托管服务 DBaaS 的形式持续发布着自己的 MySQL 迭代版本。

不过 Gunderson 对 MariaDB 也没什么好话。“别觉得 MariaDB 就比 MySQL 好多少。Widenius 和他的团队是因为不满于新的治理模式才离开的,而不是因为他们突然醒悟过来、发现自己在代码里埋下了多少混乱和隐患。”

例如,因为没有模块化设计,分类器需要识别输入内容来自表扫描还是范围扫描。而任何不属于这两种类别的输入(包括 joins)都需要经过重大调整。所以如果不重写查询,根本无法在现有设计中执行 full outer joins(直到现在 MySQL 也仍然不支持 outer joins,但至少团队已经意识到并承认这个问题的存在)。还有,“我甚至没法使用‘切片’系统,这简直是我在真实世界中见过的最离谱的状况。”

针对 Gunderson 的吐槽,MariaDB 联合创始人兼产品管理副总裁 Max Mether 向 TheRegister 回应称:“没有任何一款数据库是完美的。不同模型、存储引擎、方言、协议的激增都证明了这一点。”

Max Mether 还说道:“无论你怎么看,在 Oracle 下的 MySQL 一直没有‘掌舵人’,在内部几乎快被抛弃,之前还受到过超大规模的攻击,而这位工程师的帖子再次强化了我对 MySQL 发生这些事件的看法。”他指出,MariaDB 在 2016 年就完全放弃了之前的 MySQL 代码,并引入了新的存储引擎、方言、监视器,甚至是基于机器学习的工作负载分析。

基于微服务的思想,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot + Dubbo 。未来,会重构成 Spring Cloud Alibaba 。

项目地址:https://github.com/YunaiV/onemall

无硝烟之争

MySQL 和 PostgreSQL 都是当前全球最受欢迎的数据库。Gunderson 并没有具体解释为什么同为开源关系数据库的 PostgreSQL 要比 MySQL 好得多,但他的观点确实得到了不少从业者的认同。

在不久前举办的 Postgres Build 2021 大会上,SIB Visions 公司 CEO Roland Hörmann 就专门探讨了如何从 Oralce 专有数据库迁移至 PostgreSQL 的议题。

Hörmann 的公司专门开发从 Oracle 到 Postgres 的迁移工具,他在采访中表示“每当有客户问他该为项目选择哪种数据库时,我的回答总是 Postgres;即使是在接触了 Oracle 二十年之后,我的答案也仍是如此。它开源、易于实现而且越来越好,没有理由不选择 Postgres。”

“大家总能在需要时获得支持;而且在建立数据库时,只需要配置一次 PostgreSQL conf 文件,它就能永远运行。就这么简单,虽然期间还是得设置备份之类的功能,但至少不用白白占用有经验的数据库管理员们太多宝贵的时间。”

但换个角度看,这其实不是什么“二选一”抉择题。Uber 曾从 MySQL 转到 PostgreSQL ,最后又从 PostgreSQL 转到 MySQL,网上也是总是有不少关于 MySQL 对比 PostgreSQL 的争论。作为两大主流开源数据库,MySQL 和 PostgreSQL 的 “战争” 从未停止。

前 Airbnb 技术经理、计算机博士朱赟曾对此发表看法,类似 Uber 两次高调转型的事情,在她曾经工作过的 Square 公司也发生过。Square 最早使用的是 MySQL,到了 2012 年,由于 PostgreSQL 的各种优势越来越突出——比如对地理空间(Geospatial)数据和搜索的支持,当时几位资深工程师也开始大力倡导,很多新的服务就尝试性地使用 PostgreSQL。

在她来看,两者各有特点,有些技术实现在 MySQL 里更方便一点,另一些则反之。无论哪种数据存储方式,总有方案可以解决问题,并没有觉得非要哪一种才行。因此,她认为两者各有各的优势和使用场景,并不存在一种数据库对另一种压倒性优势的说法。“对于大部分程序员来说,公司用哪个数据库,基本无需你去决定。加入一个公司的时候,除非是创业公司,或者你是 CTO、VP、总监级别的,否则大部分的技术选型早已应该尘埃落定。尤其是数据库,一旦选择,再迁移的代价非常大。因此,除非有颠覆性的优势或者难以克服的问题,很少有公司会去费时费力做这种大的迁移。”

朱赟还表示,不论是技术选型还是技术转型,其中不可忽略的因素是:你的工程师更容易驾驭哪一种技术,或者有话语权的决策者们倾向于哪一种技术。这一点其实和程序语言的选型有异曲同工之处。“一个公司如果数据库从来不出问题,那一定是因为没有业务量或者流量。所有技术的选型和设计,都有它的应用场景,除去那些让人开心的案例,剩下的毫无疑问就是坑。如何尽可能地避开这些坑,如何在出现问题的时候可以用最快的速度去修复,这些都是至关重要的因素。”

有道无术,术可成;有术无道,止于术

欢迎大家关注Java之道公众号


好文章,我在看❤️

浏览 29
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报