跳过主要内容

PostgreSQL vs. MySQL:你需要知道的

MySQL和PostgreSQL是Fivetran复制到数据仓库用于数据分析的两大数据库来源。这并不奇怪,他们也是前两个开源关系数据库作为无数商业、开源和内部应用程序的后端。

Postgres(众所周知)和MySQL都已经存在很长时间了。它们都是安全的rdbms,支持集群和网络容错。但是,尽管它们有共同之处,PostgreSQL和MySQL还是有一些特性使它们彼此不同,我们一会儿就会看到。

但首先,我们来了解一下历史。

数据库历史

一开始是“安格尔”这个词。安格尔是最早的关系数据库管理系统之一,1973年在加州大学伯克利分校作为一个项目开始。它是在Berkeley Source Distribution (BSD)许可证,这使得它成为开源软件,并成为许多商业数据库产品的基础。Ingres及其衍生出的所有数据库的故事都很吸引人,但主要是因为它将自己的名字(部分)借给了另一个开源数据库。

1985年,Ingres的一个最初的开发者回到伯克利(在创建了一个公司,将Ingres商业化后),开发了一个他命名为Postgres的继承者。正式更名为PostgreSQL来利用结构化查询语言的引用,但是项目同时使用了这两个名称。第一个产品版本PostgreSQL 6.0于1997年发布。Postgres现在是第14版(beta版),根据一个项目的说法,它是由一个“志愿者和公司组成的非官方协会开发的,他们在PostgreSQL许可证下共享代码”常见问题解答

在20世纪,PostgreSQL并不是开源数据库的唯一选择。90年代是关系数据库的黄金时代。在瑞典,Michael " Monty " Widenius和他的同事开始开发他们自己的RDBMSMySQL在1994年,。MySQL现在的版本是8.0,并且在GNU公共许可版本2 (GPLv2)和专有许可下发布。

与PostgreSQL不同,MySQL一直处于公司控制之下。最初的开发者MySQL AB在2008年被Sun Microsystems收购,不久之后Sun在2010年被Oracle收购。在宣布收购Oracle的那一天,Widenius将MySQL拆分,并成立了MariaDB Corp.,以开发一种RDBMS,这种RDBMS不受一家公司的控制,而这家公司是商业数据库竞争对手的代名词。(有趣的是:MySQL是以Widenius的女儿My命名的。MariaDB是以他另一个女儿的名字命名的。)

比较Postgres和MySQL

这两个起源故事都不可能很快成为一部大片,但这两个数据库都可能成为你的组织的超级英雄。哪个是更好的选择?答案取决于您对后端数据基础设施特定于应用程序的需求。让我们比较两个最流行的数据库——MySQL和PostgreSQL——在不同的应用需求范围内,首先在这个表中,然后在下面的文本中进行更深入的讨论。

PostgreSQL MySQL
体系结构 对象关系;
多进程
关系;
单个进程
数据类型
支持
数字、日期/时间
人物,布尔,
枚举,几何,
网络地址、JSON、
XML、HSTORE数组,
范围、复合
细节
数字、日期/时间
人物,空间,JSON
细节
索引
支持
b -树,哈希,GiST, SP-GiST,
杜松子酒和布林
主要是b -树;r - tree,散列
和反向索引
某些数据类型
性能 适用于以下应用
两项阅读量都很高
和写
适用于
高读量
安全 访问控制、多
加密连接选项
细节
访问控制、加密
连接
细节
支持 社区支持。
拥有自己的
自己发布的PostgreSQL
可能会提供支持。
社区支持,加上
卖方提供支持
合同

体系结构

PostgreSQL是一个对象-关系数据库,而MySQL是纯粹的关系数据库。这意味着PostgreSQL提供了更复杂的数据类型,并允许对象继承属性,但这也使PostgreSQL的工作更加复杂。

PostgreSQL有一个,ACID-compliant存储引擎。MySQL支持16种不同的存储引擎,适合不同的用例。默认存储引擎InnoDB提供索引组织表。

PostgreSQL会生成一个新的系统进程,它会为每个客户端连接分配自己的内存,因此在客户端连接数量很多的系统上,它需要大量的内存。MySQL使用单个进程并维护每个连接的一个线程(或执行路径),这对于大多数小于企业范围的应用程序都很有效。

三个常见的数据库特性是视图、触发器和存储过程。PostgreSQL拥有更健壮的视图,并支持物化视图,这可以提高复杂查询的性能。

这两个数据库都支持SQL INSERT、UPDATE和DELETE语句的AFTER和BEFORE触发器;PostgreSQL还提供了一个INSTEAD OF触发器,可以使用函数在触发器中执行复杂的SQL语句。这两个数据库都支持标准的SQL存储过程,但PostgreSQL还提供了调用非SQL语言编写的过程的能力。

数据类型

Postgres提供了比MySQL更广泛的数据类型。如果你的应用程序处理任何可用的独特数据类型,或者非结构化数据,PostgreSQL可能是一个更好的选择。如果您只使用基本的字符和数字数据类型,那么这两种数据库都适合您。

索引

数据库使用索引来加快查询速度。通过选择多个索引选项,您可以随着数据的增长微调数据库性能,以从数据库获得更快的查询响应,并改善应用程序用户的用户体验。

安全

这两个数据库都支持用户和组管理以及向角色授予SQL特权。PostgreSQL支持使用PAM和Kerberos进行基于ip的客户端过滤和身份验证,而MySQL支持PAM、本地windows服务和LDAP进行用户身份验证。在安全性方面,这两个数据库有可比较的选择。

支持和文档

您可以自己判断每个供应商的可用文档,因为您可以在网上找到每个文档。因为Postgres不是由公司开发的,所以缺少支持工程师,但是它的社区支持论坛非常好。MySQL提供了类似的论坛,以及你可以从Oracle购买的付费支持计划。

PostgreSQL vs. MySQL:哪个更好?

如果您正在开发一个具有数据库后端的应用程序,那么应该使用这两者中的哪一个呢?可以考虑将PostgreSQL应用于任何可能扩展到企业范围、具有复杂查询和频繁写操作的应用程序。如果您是数据库领域的新手,并且不希望您的应用程序扩展,或者您正在寻找一种快速的原型工具,那么可以考虑MySQL。

这是一个很好的经验法则,但还有其他考虑。您的云平台提供商在运行一个数据库时可能会提供好处,或者您使用的应用程序框架可能更适合其中一个,或者您的开发伙伴可能会有意见。MySQL比PostgreSQL更广泛的使用,这意味着更多的开发人员和dba熟悉它,更多的第三方工具可用。

当然,Postgres和MySQL不是你唯一的两个数据库选择,甚至也不是你唯一的两个开源数据库选择。

基于BI的数据库数据提取

PostgreSQL和MySQL在数据分析领域的作用是什么?两者都是可操作的数据库,用于事务处理而不是分析。

要获得一个完整的360度的业务视图,您应该从PostgreSQL或MySQL数据库中提取事务数据,并将其输入到数据仓库它可以用于支持你的数据分析和商业智能(BI)工具,如Tableau和Looker。这就是Fivetran可以帮助我们的地方自动化、不需维护的管道允许您不仅从数据库提取数据,还可以从应用程序、文件和事件提取数据,然后安全地将其加载到数据仓库中。

跨企业提取、同步和集成数据是一个复杂的问题,需要付出很大的努力才能解决。加入我们的Fivetran演示并学习如何将不同的数据集整合到一个仓库中,加快你的能力,解锁可操作的见解,并增加收入。