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

标签: | 发表时间:2022-01-24 14:35 | 作者:
出处:https://dbaplus.cn

数据库工程师在离职的时候会干些什么?拿张贺卡、收起纪念礼品,没准还有一瓶践行酒——但今天故事的主角还发了个帖子,对自己研究了五年的技术好好发泄了一番。

 

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 之外的广阔世界”。

 

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 代码,并引入了新的存储引擎、方言、监视器,甚至是基于机器学习的工作负载分析。

 

无硝烟之争

 

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、总监级别的,否则大部分的技术选型早已应该尘埃落定。尤其是数据库,一旦选择,再迁移的代价非常大。因此,除非有颠覆性的优势或者难以克服的问题,很少有公司会去费时费力做这种大的迁移。”

 

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

 

>>>> 

参考资料

 

  • Steinar Gunderson's blog

    https://blog.sesse.net/blog/tech/2021-12-05-16-41_leaving_mysql.html

  • MySQL a 'pretty poor database' says departing Oracle engineer

    https://www.theregister.com/2021/12/06/mysql_a_pretty_poor_database/

相关 [oracle 大佬 mysql] 推荐:

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

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

Linux Ksplice,MySQL and Oracle

- Syn - DBA Notes
Oracle 在 7 月份收购了 Ksplice. 使用了 Ksplice 的 Linux 系统,为 Kernel 打补丁无需重启动,做系统维护的朋友应该明白这是一个杀手级特性. 现在该产品已经合并到 Oracle Linux 中. 目前已经有超过 700 家客户,超过 10 万套系统使用了 Ksplice (不知道国内是否已经有用户了.

Oracle MySQL Or NoSQL续

- - Sky.Jian 朝阳的天空
接前面一篇,这里再将之前在“中国系统架构师大会”5周年的时候发布的纪念册“IT架构实录”上的一篇文章发出来,也算是前面博文中PPT的一个文字版解读吧. Oracle,MySQL 还是 NoSQL. 随着阿里系的“去IOE”运动在社区的宣传声越来越大,国内正在掀起一股“去xxx”的技术潮. 不仅仅是互联网企业,包括运营商以及金融机构都已经开始加入到这个潮流之中.

mybatis oracle mysql 批量插入

- - Oracle - 数据库 - ITeye博客
一、oracle的批量插入方式. 二、mysql的批量插入方式. ORA-00918:未明确定义列. 如果不设置列名,那么#{item.senderPhone}的值就是默认列名,那么就有很多概率会产生列名重复,而产生异常. (两个列的值完全可能一样). #{item.receiveTime} 值为null时,必须指定转换类型.

oracle、mysql和sqlserver分页

- - Oracle - 数据库 - ITeye博客
sql server row number分页:. mysql limit分页:. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

MySQL与Oracle的大小写问题

- - 数据库 - ITeye博客
前段时间,维护的一个应用在Oracle测试时出错,该应用原来已经在MySQL上完成测试. 通过查找定位,原因是字段名大小写问题. 下面与大家分离一下MySQL与Oracle在大小写处理上的区别:. 1、在Windows下,数据库名、表名、字段名不区分大小写. 2、大Linux/Unix下,数据库名、表名区分大小写,字段名不区分大小写.

从Oracle到MySQL,金融核心场景在线换库落地实战 - MySQL

- -
本文根据王英杰老师在〖deeplus直播第234期〗线上分享演讲内容整理而成. (文末有获取本期PPT&回放的方式,不要错过). 大家好,我是陆金所数据库团队的负责人王英杰. 这次的分享主要集中在陆金所去O在线换库的技术特点上,之后详细给大家剖析陆金所设计的在线换库方案以及方案如何在一个庞大的金融系统里通过多个团队的紧密配合稳妥落地.

Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间

- - CSDN博客推荐文章
例如有表table,table 中有两个字段:name 、makedate. 插入系统时间应为sysdate:. insert into table (name,makedate) values('测试',sysdate);. 插入系统时间应为current timestamp并且makedate数据类型为timestamp.

从Oracle转到Mysql前需了解的50个主意事项

- - ITeye博客
1、 对子查询的优化表现不佳. 2、 对复杂查询的处理较弱. 3、 查询优化器不够成熟. 4、 性能优化工具与度量信息不足. 6、 安全功能不成熟,甚至可以说很粗糙. 没有用户组与角色的概念,没有回收权限的功能(仅仅可以授予权限). 当一个用户从不同的主机/网络以同样地用户名/密码登录之后,可能被当作完全不同的用户来处理.

根据数据库注释自动生成数据库文档【支持Oracle和Mysql】

- - 研发管理 - ITeye博客
公司项目比较乱,很多时候都是需要先完成项目再准备文档. 数据库文档是最基本的文档了,整理起来比较麻烦,如果数据库建表的时候能把列注释都能写好的话,理论上自动生成数据库文档应该是很好实现的. 自己简单做了个Oracle和MySQL版本的,感觉还很好用. 用到类库是IText  用来生成Word文档的.