Linux.中国 - 开源社区

 找回密码
 骑士注册

QQ登录

微博登录


为什么选择PostgreSQL而不是MySQL

2015-3-27 11:51    评论: 13 收藏: 4 分享: 22    

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系统目录中还可以包含关于数据类型、函数和存取方法的信息,开发人员可以通过修改这些信息实现扩展。

发表评论


最新评论

我也要发表评论

来自湖北襄阳的 Chrome Mobile iOS 47.0|iOS 8.4 用户 2016-11-21 14:13
mysql是多线程
postgresql是多进程

就成本来说,mysql成本更低。

如果是企业用,还是用收费的吧
2 回复
死亡是解脱 2015-3-29 19:33  新浪微博网友评论
个人感觉PostgreSql 更适用于广泛的企业业务系统。但人们对MySQL 就像对大众汽车一样
回复
JACKALywz 2015-3-27 23:33  新浪微博网友评论
@保存到为知笔记
回复
随便就行了 2015-3-27 23:03  新浪微博网友评论
@我的印象笔记
回复
来自 - 甘肃兰州 的 Chrome/Windows 用户 2015-3-27 16:35
1
来自 - 广东深圳 的 Firefox/Windows 用户 发表于 2015-3-27 12:18 的评论:
早都mariadb10了好不。。这文章忒老了。。mariadb都自带多master集群了
不是老,那个5.7说得是MySQL的版本号!这文章是三月十九号发布的!
5 回复
我期待今天的自己 2015-3-27 16:33  新浪微博网友评论
@mywiz
回复
来自 - 云南昆明 的 Firefox/Windows 用户 2015-3-27 14:01
1
灰色小狼1988 发表于 2015-3-27 13:33 的评论:
名字太长不会发音……[doge]
postgres-QL
回复
灰色小狼1988 2015-3-27 13:33  新浪微博网友评论
名字太长不会发音……[doge]
回复
手撸界大鳄 2015-3-27 13:33  新浪微博网友评论
待考
回复
___枫恋寒 2015-3-27 12:33  新浪微博网友评论
抽空看看[doge]
回复
翟启亮 2015-3-27 12:33  新浪微博网友评论
@我的印象笔记
回复
宋万伟_ops 2015-3-27 12:33  新浪微博网友评论
PostgreSQL逆袭的机会到啦[笑cry]
回复
来自 - 广东深圳 的 Firefox/Windows 用户 2015-3-27 12:18
早都mariadb10了好不。。这文章忒老了。。mariadb都自带多master集群了
6 回复

热点评论

来自 - 广东深圳 的 Firefox/Windows 用户 2015-3-27 12:18
早都mariadb10了好不。。这文章忒老了。。mariadb都自带多master集群了
6
来自 - 甘肃兰州 的 Chrome/Windows 用户 2015-3-27 16:35
不是老,那个5.7说得是MySQL的版本号!这文章是三月十九号发布的!
5
来自湖北襄阳的 Chrome Mobile iOS 47.0|iOS 8.4 用户 2016-11-21 14:13
mysql是多线程
postgresql是多进程

就成本来说,mysql成本更低。

如果是企业用,还是用收费的吧
2
返回顶部

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”将网页分享至朋友圈。