×

首页>讲师原创专区

教师图片

刘老师

12文章总数

6755总阅读数

查看Ta的文章>>

MYSQL VS PostgreSQL 外国佬怎么选?

发布于:2019年09月30日 浏览:783次 3

MYSQL vs PostgreSQL 的话题应该属于经久不衰的话题,类似 REDIS VS MONGODB (我比较奇怪这两个是怎么被强拉硬拽到一起的)。作为节假日的最后一个工作日,技术就别再到鼓捣鼓捣,说点喜闻乐见的话题。

偶然晚上翻到一篇国外的BLOG 时间是 2018年9月的文章,正好是一年前。

这篇文章出自 .io ,具体代表什么,可以XX一下。


这篇文章一开始就将国外使用 MYSQL 和 PG 的公司划分了出来。

PostgreSQL 这边的阵营有以下公司

Apple  IMDB Macworld , Debian Fujitsu , Red Hat , Sun Microsystem

Cisco , Skype   ( 请不要怀疑现在还有没有Sun Microsystem 以及这篇英文的文章的时间,我已经查过了)

MySQL 这边有以下一些公司

GitHub , NASA ,Facebook ,Twitter, YouTube ,Tesla

从上边的两边使用不同数据库的公司对比,很清晰的看出,大部分传统的公司,大多选择了 PostgreSQL , 大部分互联网类似的公司使用了 MySQL

在这样的开场白后,文章开始从数据库的结构开始阐述两种数据库的不同

PG 被定调为对象关系数据库管理系统(ORDBMS),强调可扩展性和标准遵从性,支持事务性的,具有可更新和物化的视图、触发器和外键,还支持函数和存储过程的数据库。同时强调了,POSTGRESQL 在具备以下的一些功能后,还支持 NOSQL 的功能,并可以提上台面。

MYSQL 这边被定调关系数据库管理系统(RDBMS),同时也是支持事务,视图,触发器,外键,函数存储过程并且从MYSQL 5.7 以后也开始支持NOSQL的开源流行的数据库。

反正看到这里,我没有从读到的信息里面看到倾向性,或是一开头就看出是哪个公司的X文。

文章下面就开始了各种比较,从以下一些方面

1  索引支持的类型

2  数据复制方式的支持模式

3  数据库语法的标准型

4  数据引擎方面

这里在索引类型方面文章提到PG 支持的索引类型较多,数据复制的方式支持的模式也有两种,MYSQL 截止目前,其实也开始支持两种复制模式(不过你的升级到 MYSQL 8.017),以及提到了PG 在语法方面的严格性。在数据库引擎层,倒是并未过多提起,其实也都各有千秋,也各有自己的弱点,这里就不提了,见仁见智。

当然文章最后还是比较公平的,但在最后最后,还是不忘说了一句,PG 正在变得越来越流行并且部分功能比MYSQL 还是要技高一筹的。


当然这篇文字并不是要大家看完之后,抛弃哪个,就使用哪个,我觉得那是不负责任和幼儿园的行为。

从开头开始,我们就可以看出,如果你是传统的企业,或者你的业务逻辑比较复杂的情况下,一些公司在数据库层面的首选可能是 POSTGRESQL,因为到目前为止,你很少听说有在 MYSQL上面实现很复杂的 存储过程,函数,以及类似ORACLE 那样的SQL 的写法去加载到MYSQL中,当然你可以用程序来实现,(今天不想讨论程序层,不是我的强项也让文字变得更冗长)。而互联网企业一般可能由于业务简单,以及需要更灵活的一些架构,并且开发的LEVEL 也比较高,在这些基础上,大致都在选择MYSQL 作为基础数据库,进行各种分库。

而从我最近一段时间使用两种数据库的过程中,自己也感觉到一些文章中没有提到的不同,比如开发在问我:

我的这个表设计的时候主键的设计要注意什么,如果是MYSQL 我会很严肃的告诉他们一些关于MYSQL 主键设计中的一些需要注意的地方,而如果是POSTGRESQL, 则我会持比较开放的态度,基本上不会有特别的要求。(这当然是索引组织表 VS  堆表之间的差异)从设计的角度来看可能POSTGRESQL 对开发人员更加的友好一些,初级的设计人员即使设计的不是特别NICE,也不会出太大的乱子,而MYSQL 则需要设计的人员,一开始(有ORACLE 的表设计的多年的经验,也不见得特别有用)会要求比较多,例如范式我们是不是要严格要求(当然不),以哪种观点来设计表。

当然先到先得的观点,MYSQL在目前是占有上峰,并且在去ORACLE的国内情形下,还能多占更多的份额。可有些公司的本来使用传统数据库好好的,但一换到MYSQL 就开始出问题,诚然是开发人员水平不够,道航不够深,还用老方式去设计,造成MYSQL表中充斥了, 大量的 trigger , procedure, 外键,这样设计出来的东西......  ,各种ORACLE 的原来的SQL 照搬到MYSQL 中使用,我也不是没有见过,一塌糊涂,最后给与MYSQL 一个很差的评语,这本身就是对MYSQL 的不公平,因为你不懂他。

换言,POSTGRESQL需求 在招聘广告里面出现的次数越来越多的原因也是,一部分企业吃到了苦头,在不具备使用MYSQL 的基础上,硬上,最后各种失败后的一种回归。

其实开源数据库行业里面,传统的数据库无非就是MYSQL  VS  POSTGRESQL 那个数据库更好,这样的话题不如改成,那个更适合你,这样的话题更成熟。

例如你的开发人员从未使用过MYSQL 数据库,并且也不是互联网企业(大,中厂)训练过来的,基本上一直用ORACLE 的开发人员,你不如让他安心的使用POSTGRESQL ,至少你的这个项目不会出现各种针对MYSQL 的怪异设计,或者原来一直维护ORACLE SQL SERVER 这样传统数据库的企业,也就别费劲,赶时髦上MYSQL,先问问如何承受的了互联网企业那些压力和各种踩坑,填坑的速度。


O 对了,个人还有对使用这两个数据库的一个小看法,POSTGRESQL 如果出现一些功能上的需求,一般去找 extension list 而MYSQL 如果想扩展功能,一般都去找第三方的工具,我想你明白我在说什么。

最后祝大家国庆7天,平平安安,系统运行正常,祖国昌盛,人民安康!

(7天后见--咱们说说 非 传统的数据库的话题)

本周热文

推荐专题

专栏图标 专栏图标 专栏图标 专栏图标 专栏图标 专栏图标

PMI, PMP, Project Management Professional, CAPM, PgMP, PfMP, PMI-ACP, PMI-RMP, PMI-SP, PMI-PBA and PMBOK are registered marks of the Project Management Institute, Inc.

ITIL® is a registered trade mark of AXELOS Limited, used under permission of AXELOS Limited. All rights reserved.

PRINCE2® is a registered trade mark of AXELOS Limited, used under permission of AXELOS Limited. All rights reserved.

Copyright © 2006-2019 东方瑞通(北京)咨询服务有限公司版权所有

京ICP备 13009094号 京公网安备 11010802014211号