AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

为什么选择 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:3110479
用户头像

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

关注

评论

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

笔记本电脑内卷之争:华硕4+4无忧保脱颖而出

极客天地

Java基础(三)| switch、循环及Random详解

timerring

Java random Switch 循环 10月月更

十问分布式数据库:技术趋势、选型及标准思考

OceanBase 数据库

如何在 SAP BTP Java 应用里使用 SQLite 数据库

汪子熙

云原生 云平台 SAP 10月月更 btp

技术分享 | 常见接口协议解析

霍格沃兹测试开发学社

Wave-2 802.11ac SoC for Routers, Gateways and Access Points//IPQ4019,IPQ4029,Wallys

wallys-wifi6

IPQ4019 ipq4029

2022Q3消费级AR眼镜市场季度分析:国产品牌纷纷发力,市场全面启航

易观分析

科技 AR眼镜 季度报告

十大 CI/CD 安全风险(三)

SEAL安全

DevOps CI/CD DevSecOps 软件供应链安全

技术分享 | app自动化测试(Android)-- Capability 使用进阶

霍格沃兹测试开发学社

Jchardet——支持检测并输出文件编码方式的组件

OpenHarmony开发者

OpenHarmony

使用 Zpan 搭建低成本个人私有网盘,还不限速

华为云开发者联盟

云计算 华为云 网盘 企业号十月 PK 榜

技术分享 | app自动化测试(Android)--显式等待机制

霍格沃兹测试开发学社

技术分享 | app自动化测试(Android)-- 特殊控件 Toast 识别

霍格沃兹测试开发学社

测试人生 | 疫情之下工资翻了2倍多,这4个月学习比工作8年学到的还多

霍格沃兹测试开发学社

干货 | 测试专家(前阿里P8)聊测试职业发展常见瓶颈

霍格沃兹测试开发学社

技术分享 | 接口测试价值与体系

霍格沃兹测试开发学社

VUE 初学者基础知识

默默的成长

Vue 前端 10月月更

6步搭建一个飞机大战游戏

华为云开发者联盟

云计算 软件开发 华为云 企业号十月PK榜

技术分享 | 使用postman发送请求

霍格沃兹测试开发学社

技术分享 | 接口测试常用代理工具

霍格沃兹测试开发学社

StampedLock:一个并发编程中非常重要的票据锁

华为云开发者联盟

高并发 开发 华为云 企业号十月PK榜

技术分享 | app自动化测试(Android)-- 参数化用例

霍格沃兹测试开发学社

技术分享 | 使用 cURL 发送请求

霍格沃兹测试开发学社

干货 | 接口自动化测试分层设计与实践总结

霍格沃兹测试开发学社

还在为如何编写Web自动化测试用例而烦恼嘛?资深测试工程师手把手教你Selenium 测试用例编写

霍格沃兹测试开发学社

记录第二天-Vue起步

默默的成长

前端 Vue 3 10月月更

一个值得深思的话题:Wi-Fi 7的诞生会不会取代 5G 网络?

wljslmz

5G 无线技术 10月月更 WiFi7

三方库移植之NAPI开发[1]—Hello OpenHarmony NAPI

离北况归

OpenHarmony

技术分享 | app自动化测试(Android)-- 属性获取与断言

霍格沃兹测试开发学社

技术分享 | 抓包分析 TCP 协议

霍格沃兹测试开发学社

秒验 运营商SDK错误码

MobTech袤博科技

sdk 运营商

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