开源数据库中有一堆冤家,我想大家都知道,那就是MySQL与Postgre SQL。两个派系的恩怨情仇从何而来,今天我们将从非技术的角度来进行分析。 本文仅代表个人观点,如有不同意见欢迎交流。

说明:本文主要的关注点,是MySQL与PostgreSQL的非技术比较。

简单评价

MySQL流行较多,PostgreSQL功能更全面。其主要原因是,MySQL很早的时候,就支持主从复制,在互联网起步(2000年后第一次互联网大潮)的时候,被广泛使用。PostgreSQL到2010年左右才首次支持主从复制,无法作为互联网类应用的核心,错过了较好的发展机会,在非互联网领域,由于在商业支持以及数据库特性支持方面,无法与商业数据库如Oracle等较量,PostgreSQL始终未能形成潮流,到Greenplum出现,才在OLAP数据仓库领域得到广泛使用。

核心特点
MySQL

目前最流行的开源数据库。

由于其部署方便,运维简单,被广泛用于互联网的各个领域,目前随着整体IT架构的变更,传统的金融,电信业务,也开始逐渐从Oracle向MySQL迁移。

主打架构为主从异步复制,在5.5开始,支持半同步复制,5.7开始,支持Group Replication复制。

PostgreSQL

开源的关系数据库里面,功能最丰富的数据库。

支持到SQL标准2008(MySQL只支持到SQL 89以及SQL92的一部分),以及SQL OLAP 2003标准(MySQL基本没有支持)。被广泛用于数据仓库类应用,基于其发展出来的Greenplum作为分布式并行计算数据库架构被广泛使用。

数据库的主从复制,支持异步,日志同步,写同步等多种级别。

发展历史
MySQL
  • MySQL最早来源于MySQL AB公司前身的ISAM与mSQL项目(主要用于数据仓库场景),于1996年前后发布第一个版本MYSQL 1.0,当时只支持SQL特性,没有事务支持。

  • 随后MySQL正式发布3.11.1版本,是第一个对外提供服务的版本,MySQL主从复制功能也是从这个时候加入到MySQL。

  • 2000年前后,InnoDB引擎出现,并试图加入到MySQL中。

  • 2003年12月,MySQL 5.0版本发布,提供了视图、存储过程等功能。

  • 2008年1月,MySQL AB公司被Sun公司以10亿美金收购,MySQL数据库进入Sun时代。在Sun时代,Sun公司对其进行了大量的推广、优化、Bug修复等工作。

  • 2008年11月,MySQL 5.1发布,它提供了分区、事件管理,以及基于行的复制和基于磁盘的NDB集群系统,同时修复了大量的Bug。

  • 2009年4月,Oracle公司以74亿美元收购Sun公司,自此MySQL数据库进入Oracle时代,而其第三方的存储引擎InnoDB早在2005年就被Oracle公司收购。

  • 2010年12月,MySQL 5.5发布,其主要新特性包括半同步的复制及对SIGNAL/RESIGNAL的异常处理功能的支持,最重要的是InnoDB存储引擎终于变为当前MySQL的默认存储引擎。MySQL 5.5不是时隔两年后的一次简单的版本更新,而是加强了MySQL各个方面在企业级的特性。Oracle公司同时也承诺MySQL 5.5和未来版本仍是采用GPL授权的开源产品。这个版本也是目前已知使用最广泛的MySQL版本,并且到目前位置,已知的MySQL第三方发行版,基本上都是从这一版本开始做独立分支,由于MySQL 5.5版本被广泛使用,甚至到目前为止,Oracle公司仍然对这个版本进行着维护。

  • 2011年4月,MySQL 5.6发布,作为被Oracle收购后,第一个正式发布并做了大量变更的版本(5.5版本主要是对社区开发的功能的集成),对复制模式,优化器等做了大量的变更,其中最重要的主从GTID复制模式,大大降低了MySQL高可用操作的复杂性,除此之外,由于对源代码进行了大量的调整,到2013年,5.6版本才正式GA。

  • 2013年4月,5.6版本GA后,新特性的变更,开始作为独立的5.7分支进行进一步开发,在并行控制,并行复制等方面,进行了大量的优化调整,正式GA于2015年10月份,这个版本也是到目前为止的,最新的稳定版本分支。

  • 2016年9月,Oracle决定跳过MySQL 5.x命名系列,并抛弃之前的MYSQL 6,7两个分支(从来没有对外发布的两个分支),直接进入MySQL 8版本命名,也就是MySQL 8.0版本的开发,目前这个版本仍旧处于开发中,新特性尚未稳定。

PostgreSQL
  • PostgreSQL的主要最初来源,是加州大学伯克利分校的教学项目,最早是名为Ingres的项目,后来项目进一步变更为Postgre项目,用于关系对象数据库课程的教学。

  • 1995年,PostgreSQL正式发布第一个可用版本postgres95版本,其首次集成SQL引擎进入PostgreSQL项目。

  • 随后的1996年,为了避免版本号混乱,PostgreSQL重新发布版本6.0,并在之后4年内,集成新功能并发布了版本7.0,包括MVCC等重要特性都是在是这个时期加入的。

  • 2000年后,7.0版本到7.4版本,主要集中在围绕SQL 92标准的集成,以及数据库事务支持的完善上。

  • 2005年,8.0版本发布,主要变更集中在功能性方面,支持了基于时间点的数据库恢复,外部表空间等特性,随后的8.x版本。增加了分布式事务,以及SQL/XML标准的支持,窗口函数等OLAP特性等,并且支持windows平台vc++编译器的编译。

  • 2010年,PostgreSQL9.0版本发布,正式引入WAL流复制(在之前的版本是不支持主从复制结构的),并正式支持64位windows平台。

  • 2011年,PostgreSQL9.1版本发布,支持同步复制,以及可串行化隔离级别等。

  • 2012年,PostgreSQL 9.2版本发布,支持级联复制,并在主从复制的易用性上,进行了大量改进型工作。

  • 2013年,PostgreSQL 9.3版本发布,支持物化视图,JSON格式数据操作等。

  • 2014年,PostgreSQL 9.4版本发布,JSON原生格式jsonb纳入数据类型体系,WAL可以解析为可读信息。

  • 2016年1月,PostgreSQL 9.5发布,安全控制可以到行级别,对排序与多CPU架构进行了大量针对性优化。

  • 2016年9月,PostgreSQL 9.6版本发布,新增并行查询,多从库同步复制等特性。

当前主流版本
MYSQL

MySQL官方版以及商业版

Oracle官方承诺支持新版本的开发,目前由Oracle官方的MySQL开发团队支持,网站站点为https://www.mysql.com/。

MySQL商业版相比较开源版本,主要是对安全,审计等方面的增强,如果需要实用,需要支付授权费用。

Percona Server

目前最活跃的第三方发行版本,由商业公司Percona公司支持,目前最大的开源数据库社区会议之一Poercona Live就是由Percona公司举办,主要是对MySQL的官方开源版本,进行功能性以及管理性进行强化,网站https://www.percona.com/。

MariaDB

为了避免Oracle公司拥有MySQL后,停滞对MySQL的开发,MySQL核心研发工程师Monty与其开发团队在MySQL 5.5版本后,独立出MariaDB分支,并且随后变更版本号为10.x系列版本,与MySQL官方不再同步代码与特性。其主要在功能性上相比较官方版本做了很多的增强,相当多无法进入官方分支的社区自发性功能性能方面的补丁(来自google,facebook,阿里巴巴等)被加入到这一分支。

国内包括阿里巴巴,腾讯在内的数据库内核团队,都与MariaDB有较为深入的合作,其中来自阿里巴巴的彭立勋(MySQL ACE)目前是MariaDB 复制功能部分的负责人。

目前,包括readhat,ubuntu在内的多个主流linux发行版本,内置的数据库版本均为MariaDB,而非Oracle公司的MYSQL版本。社区版本 http://mariadb.org/

中国MYSQL第三方发行版

AliSQL

来源为阿里巴巴阿里云RDS团队,对复制,安全等多方面都有增强,其主要版本基于MySQL 5.6开发,内置TokuDB等第三方存储引擎的支持。

InnoSQL

来源为网易杭州研究院,主要作者为姜承尧(MySQL ACE),对MySQL复制等方面有很多的增强实现。

OneSQL

来源为平民软件的楼方鑫(Oracle ACE),对数据库在高并发场景下的处理进行了很多优化。

PostgeSQL

PostgeSQL目前主流为社区支持的官方版本,网站:https://www.postgresql.org/。

商业支持来自EnterpriseDB公司,包含一个增强了很多功能的商业版本,https://www.enterprisedb.com/

Pivotal提供了基于PostgeSQL的MPP数据库Greenplum的支持,https://pivotal.io/

当前国内主要社区
MYSQL

CMUG

China MySQL User Group(简称CMUG)是中国MySQL爱好者自发形成的一个组织,为IOUC官方注册的社区组织。

其主要成员为MySQL ACE以及其他MySQL社区有较大影响能力的人,主席周彦伟为MySQL ACE,去哪儿MYSQL经理,社区主要成员基本上都是来自各大互联网公司(阿里,腾讯,去哪,新浪等)的MySQL核心专家,http://acmug.com/acmug-member

有定时组织的全国巡游会议,以及社区群落。

PostgreSQL

PostgreSQL中国用户组

来源于国内PostgreSQL社区主导的组织,核心成员为PostgreSQL的国内主要领袖,主席萧少聪目前为阿里云核心数据库专家。

当前主要使用范围
MySQL

社交新闻类

包括腾讯(含微信),新浪,今日头条,陌陌等在内的已知的国内社交领域公司,数据库均是使用MySQL。

电商类

电商领域,阿里巴巴从2009年前后开始,逐渐替换原先的Oracle(IOE)架构为MySQL开源架构,并在随后几年,完全替换所有Oracle架构。

京东最早为SQL Server架构,后续由于性能问题,经历短暂的Oracle时期后,目前主体核心均为MySQL。

苏宁易购,早期为IBM DB2架构,后续逐渐替换为MySQL架构。

互联网金融类

借贷宝:核心使用MySQL数据库,外围部分依赖系统使用Oracle。

游戏娱乐类

腾讯游戏:主体使用MySQL数据库。

PostgreSQL

数据仓库类

由于PostgreSQL的第三方版本Greenplum在数据仓库的大量应用,目前Greenplum已经是实际的MPP数据库标准。

德邦快递:数百TB的Greenplum单个集群。

咪咕游戏:数百TB的Greenplum单个集群。

业务系统类

由于对SQL特性的完整支持,对业务开发以及迁移相对友好,有很多地方采用PostgreSQL作为业务系统。

浙江移动:采用PostgreSQL-XC 替换原先的Oracle架构。

话题讨论:

谈谈你对MySQL与Postgre SQL的认识与理解。

无论你有什么样的看法或者观点,都可以通过留言分享给大家,留言点赞数超30前3名将获得运动款背包一个。截止时间:2017.12.18 12:00

相关阅读:

MySQL MGR与Galera性能测试买家秀

让每个PDB都拥有自己的 local undo表空间

MySQL大表优化方案(最全面)

MySQL 实例迁移至 AWS: RDS vs EC2

MySQL Group Replication 学习笔记

资源下载

关注公众号:数据和云(OraNews)回复关键字获取

‘2017DTC’,2017DTC大会PPT

‘DBALIFE’,“DBA的一天”海报

‘DBA04’,DBA手记4经典篇章电子书

‘INTERNALS’,Oracle RAC PPT

‘122ARCH’,Oracle 12.2体系结构图

‘2017OOW’,Oracle OpenWorld资料

‘PRELECTION’,大讲堂讲师课程资料

【福利】MySQL vs Postgre SQL: 5个你最关注的非技术维度的区别相关推荐

  1. 今晚直播,你该了解的MySQL 8.0 SQL优化新特性

    周四见   公开课系列 We,知数堂 习惯用实力介绍自己-我们只分享干货 重磅福利来袭 2018年8月9日,20:30-22:00 周四见 不见不散! 郑 松 华 知数堂<SQL优化>课程 ...

  2. 和Oracle差距越来越小,你该了解的MySQL 8.0 SQL优化新特性

    周四见   公开课系列 We,知数堂 习惯用实力介绍自己-我们只分享干货 重磅福利来袭 2018年8月9日,20:30-22:00 周四见 不见不散! 郑 松 华 知数堂<SQL优化>课程 ...

  3. MYSQL数据库初窥门径, SQL语句地熟练使用, 图形化界面提高效率

    目录 一. 前文简介 二. MYSQL简介 2.1 什么是数据库 2.2数据库地特点以及作用 三.MYSQL基础操作(SQL语句) 3.1连接数据库 3.2数据库的语法特点,以及数据库必会操作 数据操 ...

  4. postgre sql 括字段_SQL-约束(cnostraints)

    SQL 约束(Constraints) SQL 约束用于规定表中的数据规则.如果存在违反约束的数据行为,行为会被约束终止.约束可以在创建表时规定(通过 create table 语句),或者在表创建之 ...

  5. [Mysql]过大sql文件导入过慢问题解决

    [Mysql]过大sql文件导入过慢问题解决 参考文章: (1)[Mysql]过大sql文件导入过慢问题解决 (2)https://www.cnblogs.com/ttkl/p/12023640.ht ...

  6. atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js

    atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js 1. 两个方法:: bat vs mysqldump(推荐)  vs   lang  ...

  7. mysql导入sql文件限制,Mysql导入大容量SQL文件数据有关问题

    Mysql导入大容量SQL文件数据问题 MySQL在通过导入sql文件可能会出现下面二个问题: 1.如果sql文件过大,会出现"MySQL server has gone away" ...

  8. mysql导入导出.sql数据

    导入sql的命令:source "路径名"+/mytest_emp_dept.sql 常用source 命令 进入mysql数据库控制台, 如mysql -u root -p my ...

  9. MySQL数据库:SQL语句

    MySql数据库系列阅读 MySQL数据库 MySQL数据库:SQL语句 MySQL数据库:完整性约束 MySQL数据库备份与还原 MySQL数据库:编码 1. SQL概述 1.1 什么是SQL SQ ...

最新文章

  1. 多线程之旅之四——浅谈内存模型和用户态同步机制
  2. 单片机large模式_对单片机存储分配新的认识
  3. 如何使用Python创建自己的加密货币
  4. linux shell脚本判断文件行数,判断文件是否存在的shell脚本代码
  5. sql server 锁与事务拨云见日(下)
  6. Nodejs版本的企业微信中接收消息与腾讯对接之验证URL 代码已经上传,可以去下载
  7. Intel CPU 易受新型的 SGAxe 和 CrossTalk 侧信道攻击
  8. SpringMVC防止表单重复提交
  9. 缺失索引自动创建语句
  10. erp java 开源_华夏ERP完整开源版J2EE代码
  11. NetworkManager和network
  12. 频繁用电脑打字 武汉大三女生求职提笔忘字
  13. 游戏里经常有涉及用户排行榜(金币消费排行榜),怎么设计一个良好的排行榜。
  14. 关于Md5加密算法的原理及应用
  15. Latex中参考文献的写作方法
  16. WIN7下WIFI共享上网教程
  17. 【C语言】用递归编写程序计算Hermite Polynomials(厄密多项式)
  18. 总结HTTP协议详解
  19. 随机对照双盲实验的设计模式
  20. printJS 打印 常用功能收录

热门文章

  1. 给开源项目贡献代码_您可以为开源做出6种非代码贡献
  2. 异步与延迟加载JavaScript的方法
  3. Bootstrap导航条中组件的排列
  4. verp中joint的type、模式的区别
  5. STM32F103移植mpu9250
  6. 视觉SLAM笔记(57) 回环检测
  7. mysql 存储过程 批量导入数据_sql 利用存储过程批量导入数据
  8. 家用简单电线路图_电师傅电工总结的家用电器,漏电开关,电线配置知识,简单实用...
  9. log4j记录不同的日志_Spring boot中使用log4j记录日志
  10. amap vueamap 与_vue 使用高德地图vue-amap组件过程解析