前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MYSQL VS PostgreSQL 外国佬怎么选--那个更好?

MYSQL VS PostgreSQL 外国佬怎么选--那个更好?

作者头像
AustinDatabases
发布2019-10-08 16:33:35
1.2K0
发布2019-10-08 16:33:35
举报

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天,平平安安,系统运行正常,祖国昌盛,人民安康!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档