David Marcu摄
既然MySQL 8和PostgreSQL 10已经淘汰,现在是重新审视两个主要的开源关系数据库如何相互竞争的好时机。
在这些版本之前,人们普遍认为,尽管Postgres在功能集及其谱系方面更胜一筹,但MySQL在大规模并发读/写操作方面进行了更多的大规模测试。
但是随着最新版本的发布,两者之间的差距已大大缩小。
功能比较
让我们看一下我们都喜欢谈论的“时髦”功能。
过去常常说MySQL最适合在线交易,而PostgreSQL最适合分析过程。 但现在不再。
通用表表达式(CTE)和窗口函数一直是选择PostgreSQL的主要原因。 但是现在,在同一个表中引用boss_id递归遍历employees表,或在排序结果中找到中间值(或50%百分位数)在MySQL上不再是问题。
PostgreSQL上的复制缺乏配置灵活性,这是Uber转向MySQL的原因。 但是现在有了逻辑复制,通过使用更新版本的Postgres创建副本并切换到该副本,可以实现零停机升级。 截断大型时序事件表中的陈旧分区也容易得多。
在功能方面,两个数据库现在彼此相同。
区别在哪里?
现在,我们有一个问题–那么,为什么一个选择另一个原因呢?
生态系统就是这些因素之一。 MySQL拥有一个强大的生态系统,其中包含MariaDB,Percona,Galera等变体,以及InnoDB以外的其他存储引擎,但它们也可能令人不知所措且令人困惑。 Postgres的高端选项有限,但是随着最新版本引入的新功能,这种情况将会改变。
治理是另一个因素。 每个人都在担心甲骨文(或最初为SUN)收购MySQL时,他们会毁了该产品,但过去十年来情况并非如此。 实际上,收购后发展加速。 Postgres在工作治理和协作社区方面拥有悠久的历史。