写点什么

为什么选择 PostgreSQL 而不是 MySQL

  • 2015-03-26
  • 本文字数:1178 字

    阅读完需:约 4 分钟

David Bolton 是一名独立开发者,他使用 PostgreSQL 和 MySQL 都已有超过十年的时间。近日,他撰文阐述了选择PostgreSQL 而不是MySQL 的理由。他认为,MySQL 之所以仍然如此流行是因为每个Linux Web 托管软件包中都包含它。但随着Oracle 将其收购,MySQL 的开源程度大不如前。而PostgreSQL 不仅发展更快,还加入了JSON 支持,成为少数几个支持NoSQL 的关系型数据库之一。

MySQL/MariaDB 的当前版本是 5.7.6(MariaDB 为 MySQL 创建者 Monty Widenius 创建的一个 MySQL 分支),PostgreSQL 的版本是 9.4.1。Bolton 从以下几个方面对比了两者的最新版本:

  • ANSI 标准兼容性:与先前的版本相比,MySQL 已经有了长足的进步,但 MySQL 背后的哲学是,如果客户喜欢,他们就会支持非标准扩展,而 PostgreSQL 从开始就将标准构建到平台里。不过,二者殊途同归,差别不大;
  • ACID 遵从性:PostgreSQL 有一个存储引擎,而 MySQL 有 9 个,但只有 MyIsam 和 InnoDB 与大部分用户有关,其中,后者为默认存储引擎。InnoDB 和 PostgreSQL 都完全遵循 ACID,差别不大;
  • 无锁表修改:MyIsam 使用表级锁来提升速度,这会导致写互斥。但 PostgreSQL 和 InnoDB 均使用行级锁,差别不大;
  • 子查询:长期以来,这一直是 MySQL 的一个弱点,虽然 5.6.5 作了重大改进,但 PostgreSQL 对表连接支持得更好,尤其是 MySQL 不支持全外连接,因此,这方面 PostgreSQL 胜过 MySQL;
  • JSON 支持和 NoSQL:PostgreSQL 最近增加了 JSON 支持,与传统的关系型数据库相比,它提供了更大的数据存储灵活性,因此,这方面 PostgreSQL 胜过 MySQL。

此外,Bolton 指出,选择 PostgreSQL 还有如下理由:

  • 更好的许可:PostgreSQL 采用类似 MIT 的许可协议,允许开发人员做任何事情,包括在开源或闭源产品中商用,而 MySQL 的客户端遵循 GPL 许可协议,所以开发人员必须向 Oracle 付费或者将自己的应用程序开源;
  • 更好的数据一致性: PostgreSQL 会在数据插入和更新之前进行严格的验证,确保数据合法才会进行相应的操作,但在 MySQL 中,开发人员需要将服务器设定为严格 SQL 模式才能达到同样的目的,否则可能会产生不规范数据;
  • 服务器扩展:MySQL 提供了插件程序 API ,支持 C/C++ 或任何兼容 C 的语言,而且从 5.7.3 版本开始支持全文搜索,PostgreSQL 有一个类似的系统但支持的语言更多,包括 C/C++、Java、.Net、Perl、 Python、Ruby、Tcl、ODBC 等,它甚至可以在单独的进程中运行用户提供的代码;除了所有关系型数据库都包含的有关数据库、表和列的一般信息外,PostgreSQL 系统目录中还可以包含关于数据类型、函数和存取方法的信息,开发人员可以通过修改这些信息实现扩展。

感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

2015-03-26 00:3110267
用户头像

发布了 1008 篇内容, 共 389.4 次阅读, 收获喜欢 344 次。

关注

评论

发布
暂无评论
发现更多内容

投稿开奖丨轻量应用服务器征文活动(3月)奖励公布

阿里云弹性计算

轻量应用 征文投稿开奖

Linux 命令行小技巧分享第二弹--超简单,超实用!

优麒麟

Linux 开源 命令行终端 实用技巧 优麒麟

解决混合云数据库一站式备份若干问题 腾讯云数据库DBS正式上线

科技热闻

基于数据技术全域流量协同优化是银行零售业务关键突破点

易观分析

银行 数据技术

PlatoFarm生态NFT总量恒定,激励机制让Dao成员持续贡献

西柚子

EventBridge 与 FC 一站式深度集成解析

阿里巴巴云原生

知名数字化解决方案厂商新华三加入龙蜥社区,已完成硬件兼容性测试

OpenAnolis小助手

开源社区 兼容性测试 龙蜥社区 CLA 新华三

构建测试的体系化思维(高级篇)

BY林子

质量赋能 测试体系

java高级用法之:JNA中的Memory和Pointer

程序那些事

Java Netty 程序那些事 4月月更

直播预告 | PolarDB-X 动手实践系列——用 PolarDB-X 搭建一个高可用系统

阿里云数据库开源

MySQL 数据库 阿里云 开源 PolarDB-X

元宇宙背景下——内容生产传播商业价值分析2022

易观分析

元宇宙 内容生产传播

独家下载!突破开源Redis,华为云十年自研内核修炼之路《企业级Redis技术与应用解读》重磅发布丨云享·书库

华为云开发者联盟

redis 华为云 GaussDB(for Redis) 开源Redis 企业级Redis

阿里巴巴云原生混部系统 Koordinator 正式开源

阿里巴巴云原生

ironSource Luna 正式推出针对苹果搜索广告的自动化投放工具

Geek_2d6073

云原生边缘计算KubeEdge在智慧停车中的实践

华为云原生团队

边缘计算 边缘技术 边缘云

这些大咖想和你聊聊什么是行业期待的多模态学习

小红书技术REDtech

算法 多模态

如何通过 Node 上传小程序代码,不会就看看吧

CRMEB

DIVE大会上线了!参与活动还有精美周边领取哦!

InfoQ写作社区官方

热门活动 DIVE

教你如何在优麒麟上调节外接显示器,如亮度、色彩等方面!

优麒麟

Linux 开源 经验分享 优麒麟 显示器

【首期社区读书会】从《OceanBase数据库系统概念》到3.1.3 社区新版本,一起聊聊 OceanBase 那些事

OceanBase 数据库

OceanBase 社区版

【二级等保】二级等保安全物理环境要求有哪些?

行云管家

网络安全 数据安全 等保 等级保护

【linux运维】linux运维常用工具有哪些?

行云管家

云计算 运维 IT运维 云管理

移动数字化平台原来可以这样帮企业打造协同生态链!

WorkPlus

基于 EventBridge 构建数据库应用集成

阿里巴巴云原生

CVE-2022-22965 漏洞分析,安全问题早发现

华为云开发者联盟

Java spring 漏洞 CVE JavaBean

花14天梳理了3月份各大厂问得最多的50道Java基础面试题

北游学Java

Java 面试

如何使用 Serverless Devs 部署静态网站到函数计算

阿里巴巴云原生

iOS编码规范

刁架构

规范 iOS编码规范

优秀的FAQ示例及FAQ页面制作技巧

小炮

FAQ

后端开发【一大波干货知识】网络通信模型和网络IO管理

Linux服务器开发

后端开发 Linux服务器开发 C++后台开发 网络io 网络通信

快速了解日志概貌,详细解读13种日志模式解析算法

云智慧AIOps社区

算法 运维 安全 监控 日志

为什么选择PostgreSQL而不是MySQL_数据库_谢丽_InfoQ精选文章