离职 Oracle 首席工程师怒喷:MySQL 是超烂的数据库,建议考虑 PostgreSQL!
点击关注公众号,Java干货及时送达
本文转载自 InfoQ,整理|燕珊、核子可乐
在这位工程师看来,PostgreSQL 才是开源 RDBMS 的更好选择。
数据库工程师在离职的时候会干些什么?拿张贺卡、收起纪念礼品,没准还有一瓶践行酒——但今天故事的主角还发了个帖子,对自己研究了五年的技术好好发泄了一番。
Oracle 前首席软件工程师兼 MySQL 优化器团队成员 Steinar Gunderson 在帖子中表示自己离职的原因比较复杂,但想在这里聊几句“憋了五年的真心话”——“MySQL 是款超烂的数据库,强烈建议大家认真考虑转用 PostgreSQL。”
看看 MySQL 之外的广阔世界
这位如今已经身在谷歌 Chrome 团队的工程师表示:“使用 MySQL 就像走进了一个平行宇宙,这里有很多人都由内而外笃信着 MySQL 就是最先进的数据库产品。但我不行,我的工作经常需要向观众们讲解优化器的内部工作原理,所以我特别能感受到 MySQL 的种种设计是多么原始。”
Gunderson 直言 MySQL 的代码仍有“很大的改进空间”,“公司管理层也一直支持大规模重构”。他进一步吐槽到:“真正让我不爽的是那些坚持认为 MySQL 一切良好的家伙(好像大多数 MySQL 用户和开发者根本没怎么用过其他数据库)。甚至连 executor 这种令人爆炸的东西——整个一大坨、各种组件功能彼此缠杂在一起——都能被称为‘高效’(事实正好相反)。”
另外,MySQL 系列面试题和答案全部整理好了,微信搜索Java技术栈,在后台发送:面试,可以在线阅读。
尽管如此,Gunderson 依然对自己在 MySQL 项目中的贡献感到自豪,他表示自己参与的 MySQL 8.0 版本确实“比 5.7 版本好得多”,而且仍在持续改进,但“我们能做的也只有这些了”。
“我和同事们一直努力让 MySQL 优化器能够达到 2000 年初的标准设计水平,还做出了不少很好的调整,但也就是这样了。”
MariaDB 也好不到哪里去?
MySQL 的创造者是 David Axmark 与 Michael Widenius,最初版本可以追溯到 1995 年。而其母公司、瑞典初创企业 MySQL AB 于 2008 年被 Sun Microsystems 收购,Sun 本身又在一年之后被甲骨文招至麾下。最新面试题整理好了,大家可以在Java面试库小程序在线刷题。
在收购完成之后,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 代码,并引入了新的存储引擎、方言、监视器,甚至是基于机器学习的工作负载分析。
点击关注公众号,Java干货及时送达
无硝烟之争
在她来看,两者各有特点,有些技术实现在 MySQL 里更方便一点,另一些则反之。无论哪种数据存储方式,总有方案可以解决问题,并没有觉得非要哪一种才行。
因此,她认为两者各有各的优势和使用场景,并不存在一种数据库对另一种压倒性优势的说法。“对于大部分程序员来说,公司用哪个数据库,基本无需你去决定。
朱赟还表示,不论是技术选型还是技术转型,其中不可忽略的因素是:你的工程师更容易驾驭哪一种技术,或者有话语权的决策者们倾向于哪一种技术。
参考链接:
https://blog.sesse.net/blog/tech/2021-12-05-16-41_leaving_mysql.html
https://www.theregister.com/2021/12/06/mysql_a_pretty_poor_database/
关注Java技术栈看更多干货