为何选择PostgreSQL而不是MySQL

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

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

  • 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还有以下理由:sql

  • 更好的许可: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系统目录中还能够包含关于数据类型、函数和存取方法的信息,开发人员能够经过修改这些信息实现扩展。
相关文章
相关标签/搜索