PostgreSQL与MySQL的比较 - hackr


PostgreSQL和MySQL是最常用的两种RDBMS,为您的项目选择正确的关系数据库管理系统的决定可能会成败。即使它们具有大量重叠的功能,但这全都取决于您的要求以及您希望如何解决问题。下面我们讨论两个系统的最杰出的功能,并帮助您选择最佳的RDBMS。

管治
技术的治理模型具有独特的优势,在MySQL和PostgreSQL方面则表现出很大的不同。PostgreSQL由PostgreSQL全球开发小组开发,并以类似于MIT许可证的开源许可证提供。MySQL项目的源代码已根据GNU许可向公众开放,并带有多个专有协议。它现在由Oracle Corp.拥有,并且必须提供各种付费版本以用于商业用途。

SQL合规性
SQL合规性标准是数据库在实施所有SQL准则和标准时必须遵守的一组规则。对于希望为其项目(应用程序)使用异构数据库的公司,SQL遵从性是一个重要的约束。PostgreSQL最符合SQL,因为它满足了SQL标准的179个核心功能中的160个以及许多可选功能。另一方面,由于MySQL未实现完整的SQL标准,因此部分兼容SQL。但是,它确实提供了许多有用的非SQL功能,例如“缺少CHECK约束”。

支持平台
PostgreSQL和MySQL系统都可以在Solaris,Windows操作系统,Linux和OS X上运行。OS X由Apple Inc.开发,Solaris是Oracle产品,Windows OS是Microsoft产品,Linux是开放源代码操作系统。 。PostgreSQL还支持由技术巨头惠普开发的HP-UX OS,以及开源的Unix OS。相反,MySQL将支持扩展到开源FreeBSD OS。

编程语言支持
如果系统支持多种编程语言,则它可以帮助来自不同背景的开发人员以他们喜欢的语言执行任务,从而提高效率。由于服务器支持许多用于数据库功能的编程语言,因此开发人员可以轻松决定是在客户端还是在服务器中执行任务。对其他编程语言的支持为开发人员增添了力量。
PostgreSQL是用C语言编写的,支持多种编程语言,其中最著名的是C / C ++,Delphi,JavaScript,Java,Python,R,Tcl,Go,Lisp,Erlang和.Net。MySQL用C和C ++编写,并扩展了对C / C ++,Erlang,PHP,Lisp,Go,Perl,Java,Delphi,R和Node.js的支持。

安全
DBMS的安全性深刻影响其可靠性,并成为系统中最重要的特征之一。数据库安全性指向集体使用流程和工具来保护DBMS或数据库免受非法来源的威胁和攻击。MySQL是高度安全的,并包含多种安全功能,其中一些功能相对较先进。它基于访问控制列表(ACL)执行安全协议,以执行用户操作,例如连接和查询。PostgreSQL为连接提供了本地SLL支持,以对客户端/服务器通信进行加密。此外,一个名为SE-PostgreSQL的内置增强功能可基于SELinux策略提供其他访问控制。

访问方式
MySQL和PostgreSQL均支持所有标准,并具有多种通用访问方法,包括JDBC,ODBC和ADO.NET。JDBC是用于Java编程的数据库访问API,而ODBC是用于访问数据库的标准API。ADO.NET是一组API,开发人员可以使用它们来访问基于XML的数据。该平台的本机C库和流API也可以用于访问PostgreSQL。

数据库复制
数据库复制是指将数据从一台计算机或服务器电子复制到另一台计算机或服务器的过程,该过程使所有用户都可以访问相同的信息。数据库可以利用多种技术来存储跨越多个节点的剩余数据。MySQL使用master-master复制,其中每个节点都是master,并且有权更新数据。但是,PostgreSQL和MySQL都可以执行主从复制,其中一个节点为主节点,并控制其他节点的数据存储。可以使用第三方扩展在PostgreSQL中实现其他类型的实现。

性能
PostgreSQL适合用于大型系统,在大型系统中,需要对数据进行身份验证,并且读写速度对于成功至关重要。此外,它还支持许多性能增强器,这些增强器仅在专有解决方案中可用,包括不具有读锁的并发,SQL Server和地理空间数据支持等。通常,PostgreSQL最适合需要执行复杂查询或数据仓库和数据分析的系统。
对于那些仅需要数据库来进行数据交易而不需要任何复杂操作的基于Web的项目,MySQL是首选。它在仅需要高读取速度的在线分析处理(OLAP)和在线事务处理(OLTP)系统中表现出色。但是,一旦承受重负载或复杂查询,MySQL就会开始表现不佳。
当我们讨论在何处使用这些系统时,RDBMS的实际性能只能通过评估可能方案的度量来衡量,因为它主要取决于需求和所使用项目的性质。

社区支持
社区支持对于改善任何数据库系统都非常重要。PostgreSQL有一个非常活跃的社区,它的发明者竭尽全力确保数据库保持最新功能和最高安全性的最先进的数据库,从而不断地帮助改善现有功能。MySQL还拥有大量的关注者和贡献者社区,他们关注于维护现有功能,而偶尔会出现一些新功能。