你们在用MySQL还是PostgreSQL?
大家好,我是地鼠哥,最近和我们就业陪跑训练营学员日常答疑的时候聊到一个有趣的话题,就像标题中说的,你们正在用什么DB呢?为什么呢?也欢迎在文末留言区交流。
最近几年,关注国内信创产业或数据库领域的人会发现一个现象:虽然MySQL在互联网公司的业务开发中依然占据主导地位,但那些主打“自主可控”、“高性能分布式”的国产数据库,绝大部分都是基于PostgreSQL深度开发的。
这并不是巧合。我们先来看看这几家头部厂商的选择:
腾讯云 TDSQL PG版(TBase) github.com/Tencent/TBa… 他们引入了GTM全局事务管理器,实现了跨分片的事务支持。
阿里云 PolarDB for PostgreSQL 他们重构了存储层,做到了“一写多读共享存储”,解决了传统数据库扩容慢的问题。
华为云 GaussDB(for openGauss) opengauss.org 华为在PG的基础上加入了列存储引擎和AI优化器,主要面向HTAP(混合事务/分析处理)场景。
杭州易景数通 openHalo github.com/HaloTech-Co…
为什么这些架构师和厂商,在研发底层系统时,都不约而同地选择了PostgreSQL?今天我们就从实战和架构的角度来聊聊这背后的原因。
1. 开源协议与自主可控
这一点是国产数据库厂商最看重的。
MySQL虽然开源,但它的版权属于Oracle公司。MySQL采用的是GPL协议,而且存在商业版和社区版的区别。这意味着如果要基于MySQL修改内核并发布商业产品,会面临法律和商业上的限制。更重要的是,核心开发路线图是由Oracle控制的。
PostgreSQL则完全不同。它采用的是类BSD协议,这是一种非常宽松的协议。可以随意修改代码、重新分发,甚至闭源商业化,而不需要受制于任何一家商业公司。PostgreSQL的控制权在社区手里,由全球开发者共同维护。对于想要打造“自主知识产权”产品的国产厂商来说,PostgreSQL显然是更安全、更可控的基础。
2. 数据库的可扩展性
在使用MySQL时,我们通常只把它当作一个存储数据的仓库:存进去,取出来。如果需要额外的功能,比如分
