《架构师》2022年1月
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

热点 | Hot

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

作者 辛晓亮 罗燕珊

12月5日,甲骨文首席软件工程师兼MySQL优化器团队成员Steinar Gunderson在其博客发表了一篇文章,表示自己即将从Oracle离职,同时在文章中吐槽MySQL是一个非常糟糕的数据库,并建议开发者改用PostgreSQL

怒喷MySQL引发热议

Steinar Gunderson是SNAPY压缩库的作者之一,曾参与IPv6的开发,此前在谷歌任职,参与开发图像和离线卡片的搜索服务。Steinar最近五年一直在Oracle,负责MySQL DBMS优化器的升级工作。Steinar在文章中表示,此次从Oracle离职后,将重返谷歌,参与Chrome浏览器的开发。

他直言MySQL的代码仍有“很大的改进空间”,“公司管理层也一直支持大规模重构”。“使用MySQL就像走进了一个平行宇宙,这里有很多人都由内而外笃信着MySQL就是最先进的数据库产品。但我不行,我的工作经常需要向观众们讲解优化器的内部工作原理,所以我特别能感受到MySQL的种种设计是多么原始。”

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

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

此次吐槽也是在外网引发了激烈讨论,有网友表示,他最近在使用PostgreSQL时遇到了许多困扰,比如逻辑复制。不同于MySQL,PostgreSQL是最近才内置了逻辑复制的功能,而且使用上有不少小问题。

也有网友认为,这是一个“90%-10%”的问题,MySQL在普通用户花90%的时间做10%的工作上完成的很出色。一个简单的执行,一秒钟几百个客户等等,MySQL可以做到。当客户数量和业务复杂性出现爆炸式增长时,事情就会变得比较棘手,而这个时候想从MySQL中撤出就比较难了。

帖子底下还有许多关于MySQL、PostgreSQL还有其他类型数据库的讨论,感兴趣的可以访问下面链接:

https://news.ycombinator.com/item?id=29455852

MariaDB也好不到哪里去?

MySQL最初由David Axmark和Michael Widenius开发,第一个版本可以追溯到1995年,之后创立瑞典公司MySQL AB,并于2008年被Sun Microsystems收购,Sun公司本身也于2009年被Oracle并购。

此次收购之后,Michael Widenius分叉MySQL推出了MariaDB,同时雇佣了一个MySQL开发团队。此后,MariaDB一直在发布其MySQL的迭代更新,特别是作为托管DBssS。

不过Steinar对MariaDB也没什么好话。他在文章中提到“不要相信MariaDB会比MySQL更好”。“Michael和他的手下离开是因为他们对新的管理方式不满意,而不是因为他们有一天突然醒悟过来,意识到他们在代码中埋下了多少混乱和隐患。”

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

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

无硝烟之争

MySQL和PostgreSQL都是当前全球最受欢迎的数据库。Steinar没有详细说明为什么PostgreSQL作为一个开源的关系型数据库会比MySQL好得多,但他的观点确实得到了不少从业者的认同。

SIB Visions的首席执行官Roland Hörmann上周在Postgres Build 2021大会上发表了演讲,专门探讨了如何从Oracle的专有数据库迁移到PostgreSQL。

Roland说到“如果客户问他们应该为一个项目选择哪个数据库,我一定会说PostgreSQL,它是开源的,也会是更好的。”

“你建立一个数据库,配置一次PostgreSQL的配置文件,然后就可以永远运行了,可能会需要建立一个备份,但至少不用白白占用有经验的数据库管理员们太多宝贵的时间。”Roland补充道。

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

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

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

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

参考链接

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/