• [翻译]PostgreSQL比MySQL/MariaDB的优势


    近十年来很多开发者和专业人士MySQL和PostgreSQL进行了比较,大部分人认为后者性能更优。PostgreSQL的支持者认为它的标准支持和ACID[1]性都超过了MySQL。MySQL还流行的原因在于还有很多Linux的Web程序安装包里带着它,但是自从拥有MySQL版权和商标的Sun被Oracle收购后,人们都在担心MySQL不会像以前那样开放了。同时PostgreSQL不仅快,而且支持JSON,使他成为少数的支持NoSQL的关系型数据库。(小道消息:MySQL的作者Monty WideniusMySQL分支建立了和MySQL完全兼容而且不被Oracle拥有的MariaDB。)

    MySQL/MariaDB的当前版本是5.7.6,而PostgreSQL版本是9.4.1。

    ANSI标准:

    MySQL比其早期版本在标准方面更加支持(MySQL说:如果用户喜欢,他们可以支持非标准),但是PostgreSQL从一开始就支持,而MySQL之后才加入。

    平局

    ACID特性

    PostpreSQL有一个存储引擎,MySQL有9个。然而只有两个被广泛使用:MyISAM,InnoDB。MyISAM是最开始的引擎,速度很快但是不支持事务;InnoDB支持事务,而且速度更快,是默认引擎。MySQL的InnoDB引擎和PostgreSQL都完全拥有ACID特性,没有什么区别。

    平局

    表锁

    MyISAM使用表锁来获得更快的速度。当大量读操作时性能表现良好,但是写操作会把整个表锁死,等待写入完成。InnoDB引擎和PostgreSQL使用的是行级锁,又打平。

    平局

    子查询不确定性

    子查询一直以来是MySQL“臭名昭彰”的问题:两层或两层以上子查询效率极低,虽然5.6.5已经有了很大改进,但是PostpreSQL在联合查询表现更加突出,特别是MySQL不支持Full Outer Joins

    PostgreSQL胜

    支持JSON和NoSQL

    PostgreSQL新增功能,支持使用NoSQL和储存JSON。数据储存比传统关系型数据库更加灵活。

    PostgreSQL胜

    PostgreSQL其他优势:

    更好的许可

    PostgrePost拥有MIT-style证书,允许你做任何事情,包括开/闭源的商业用途。而MySQL客户端库为GPL证书,意味着你必须像Oracle支付商业费用,或者提供程序源码。(网站使用MYSQL时候会是个小麻烦;MariaDB使用GPL2证书,并且为MySQL客户端提供限制更少的LGPL证书)

    更好的数据完整性

    PostgreSQL默认对插入和更新的数据严格检查,而MySQL只有开启了(STRICT_ALL_TABLES/STRICT_TRANS_TAQBLES)才会进行严格检查。

    数据库扩展开发

    两个数据库都允许扩展开发。MySQL提供有C系列语言的API接口。你甚至可以在MySQL5.7.3之后在InnoDB表中做全文检索。PostgreSQL也有同样的功能,但是支持更多的语言,包括C/C++,Java,.Net,Perl,Python,Ruby,Tcl,ODBC等,甚至可以在单独进程(后台)中运行用户提供的代码。

    PostgreSQL在系统目录中提供了关系型数据库的数据库、表、行/列的数据类型、方法、访问方法等信息。用户可以修改系统目录表来扩展数据库。

    结论

    虽然我已经用了十多年两种数据库,而且MySQL已经有很大的提升,但是不得不承认对PostgreSQL的偏爱。PostgreSQL更好用的许可证,自定义数据类型,表继承,规律的系统和数据库事件。

    [1] ACID:指数据库事务正确执行的四个基本要素:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

    SQL:Structured Query Language结构化查询语句

  • 相关阅读:
    注册表开启或关闭ie浏览器-局域网设置-自动监测设置
    关于win32接口文档位置
    网站添加天气预报插件
    json
    re正则
    配置文件
    logging日志模块
    hashlib加密
    sys模块
    os模块
  • 原文地址:https://www.cnblogs.com/leekale/p/6885598.html
Copyright © 2020-2023  润新知