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演示并学习如何将不同的数据集整合到一个仓库中,加快你的能力,解锁可操作的见解,并增加收入。