MySQL vs PG 到底谁赢了

2023年 8月 15日 57.3k 0

前言

周末刚好有些空闲时间,我想写点什么,不如来炒个冷饭吧。上周三,开源中国举办了一场 《MySQL 和 PostgreSQL,谁是世界第一?》的主题辩论活动。我作为吃瓜群众,本来是想借此机会学习大佬们的先进架构思想,然而最终却看了一场吵架直播。

至于这场辩论赛到底谁赢了,可以参考这张图,是墨天轮直播间的粉丝投票结果,PG 以 52% 票微弱优势赢了。

用真实数据说假话

直播时题目是《MySQL 和 PostgreSQL,谁是世界第一?》为主题,从标题上看,我的理解是这个讨论集中在当下,而非未来。现在 PostgreSQL 确实没有到拐点,我作为一名 MySQLer 也理所当然地投票支持 MySQL。至于未来是不是属于 PG,这真的很难说。总是有人说 PG 没有人用,你知道 openai 用什么数据库吗?

部分 MySQLer 放下你们的傲慢吧!

回到墨天轮的那张投票图,它是否说明了 PG 的粉丝多于 MySQL 呢?答案是不能。当晚的直播主会场设在开源中国,墨天轮只是协办方,观众并不多。这张图只说明了两点:

  1. 我依然支持 MySQL
  2. 墨天轮社区的 PG 粉丝要多于 MySQL

仅此而已。所以直播当天冯老师列举了什么俄罗斯 PG 比 MySQL 流行的例子,和我这张图一样,都是用真实数据说假话而已。

MySQL 的 DML 原子性有没有问题?

直播的第二天一早,就有朋友问我对 MySQL 原子性问题的看法,我当时立即回答说,我不确认 Oracle 的行为是什么。如果 Oracle 的行为与 PG 相同,那就说明 MySQL 有问题,但这可能只是设计问题,是一种特性。然而,最终证实 Oracle 的行为与 MySQL 一致,所以这不是 MySQL 的特性,而是 PG 的特性!

我也提出了对这种行为的另一个补充观点,我认为应该有 sql_mode 来控制行为,让他和 PG 的行为一样,我不确定是否已经存在。如果没有,应该开发一个相应的 sql_mode。当天姜老师就发文章指出已经有对应的 sql_mode 可以实现,那就对了,MySQL 真的很棒。

主持人偏帮 PG

明显这次主办方没有约定好流程,主持人偏向 PG 方。在 PG 方第一轮演讲完后,姜老师还没有发言,主持人就宣布要进入第二阶段,这的确是有问题的,影响了 MySQL 方的发挥。

口水战,完全没有干货

其实 PG 方的很多观点都站不住脚,但我觉得姜老师没有从技术角度去辩论,这让我感到失望。场上的人身攻击和排资论辈都是不应该的。如果辩论前觉得对方人品或者资历有问题想换人,完全可以提前和主办方沟通,没必要现场说这些话。真心希望能有一些实质性的干货对垒,或者一些新颖的观点展现。

我自己是有一些新颖的观点的。例如:

如果有人要攻击 MySQL 是属于 Oracle 控制的,可以这么回应:

1.MySQL 是开源的 Oracle

为什么这么说?因为 MySQL 是 Oracle 收养的儿子,现在他姓 Oracle,作为世界上最大的商业数据库供应商,Oracle 拥有大量先进的数据库技术。他完全可以把自己的一些功能融入到 MySQL,这可以理解为 Oracle 通过 MySQL 把某些先进的设计、思想、算法、功能开源了。有些人可能会认为 Oracle 限制了 MySQL 的发展,让其发展变慢,而实际上这个是毫无证据的。相比之下,MySQL 的使用人数要远远超过其两大分支竞争对手 MariaDB 和 Percona。以至于 MariaDB 最初使用 XtraDB 存储引擎,但到了 10.2 版本又转回了 InnoDB 引擎。所以说,MySQL 的发展速度并不慢,虽然社区看似碎片化,实际上也要跟上大哥的节奏。

如果有人拿协议说事,可以这么回应:

2.GPL 协议

MySQL 选择使用 GPL 协议,正是为了体现开源的哲学和价值观。这与 Linux 的选择一脉相承,均致力于维护开源精神和社区的连续性。相比之下,PG 采用的是 PostgreSQL 许可证,这是一个基于 BSD 的许可证。它属于一种宽松的许可证,允许自由地使用、修改和分发代码,甚至在商业产品中也可这样做。
但是,与 GPL 协议相比,PostgreSQL 许可证并不强制要求基于 PostgreSQL 源代码修改或派生的项目也必须以开源形式发布。也就是说,你可以不公开源代码的情况下使用和销售基于 PostgreSQL 的产品。
虽然这种灵活性使得基于 BSD 许可证的项目更容易与商业和专有软件集成,有助于吸引商业开发者,但这种灵活性的代价是它不提供 GPL 许可证所带来的"传染性"开源保障。换句话说,派生作品有可能选择闭源。
相较之下,GPL 确保了用户有权获得源码,而 BSD 则保障了数据库公司的利益,允许他们不提供源码。作为用户,我自然倾向于更具开源精神的 GPL 协议。

我的理解是,GPL 产品不能在使用过程中突然转为闭源,而 BSD 则允许这样做,因此存在一种供应商绑定的可能,作为用户只能祈祷那些使用允许闭源的协议的数据库公司不是坏人。

最后

墨天轮的投票结果显示 PG 赢,我并不认为,与其说 PG 赢了,不如说冯老师赢了。因为我原本不知道冯老师的 pigsty 是什么产品,直播后我特地去查了一下这个产品,他是一个一键部署 PG 全家桶 DRE 工程的工具,算是一个早期的私有云雏形吧,里面有大量的 ansible playbook 用例,对我这样一个从事 DBA 工作和擅长 ansible 的人来说,学到了很多知识,包括 PG 的高可用部署、监控告警项、PG 最佳实践、ansible 如何设计 playbook 架构等等。我从中收获颇丰,感觉很有价值。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论