PostgreSQL 是一款高级企业级开源关系数据库,支持 SQL(关系型)和 JSON(非关系型)查询。它是一个高度稳定的数据库管理系统,以 20 多年的社区发展作为后盾。这种全面的协作方法有助于促进其高水平的弹性、完整性和正确性。PostgreSQL 可用作很多 Web、移动、地理空间和分析应用程序的主要数据存储或数据仓库

PostgreSQL 的发展史

1986 年,PostgreSQL 项目在美国加州大学伯克利分校教授 Michael Stonebreaker 指导下开始启动。该项目最初名为“POSTGRES”,参考了同样在伯克利开发的旧 Ingres 数据库。POSTGRES 旨在添加最少的功能来为多个数据库类型提供完全支持。

1996 年,为了体现该项目对 SQL 查询语言的支持,它被更名为“PostgreSQL”(但 PostgreSQL 通常仍被简称为“Postgres”)。此免费开源数据库项目有一个专属的多元化贡献者社区(PostgreSQL Global Development Group)持续定期执行它的主要和次要版本发布。

使用 PostgreSQL 的好处

PostgreSQL 在支持高级数据类型方面战绩颇丰。它支持一定水平的性能优化(常见于 OracleSQL Server 等对手型商业数据库)。请在下方阅读更多好处。

丰富的功能和扩展

PostgreSQL 拥有强大的功能集,包括表空间、异步复制、嵌套事务、在线/热备份以及完善的查询计划器/优化器。PostgreSQL 社区还开发了扩展 PostgreSQL 数据库功能的扩展。 PostgreSQL 支持:

  • 国际字符集、多字节字符编码和 Unicode。 
  • 大多数 SQL:2008 数据类型,包括 INTEGER、NUMERIC、BOOLEAN、CHAR、VARCHAR、DATE、INTER-VAL 和 TIMESTAMP。
  • 存储大型二进制对象,包括图片、声音、视频和地图。
  • 外键、联接、视图、触发器和存储过程。
  • 领先的编程语言和协议,包括 Python、Java、Perl、.Net、Go、Ruby、C/C++、Tcl 和 ODBC。

它具有区域感知功能,可用于排序、区分大小写和格式设置。PostgreSQL 数据库服务器在可管理的数据量和可容纳的并发用户量方面均能够高度扩展。

容错性和可靠性

PostgreSQL 是一个符合 ACID 标准、高度容错的数据库。ACID 指的是原子性、一致性、隔离性和持久性,这四个特征使数据库事务变得可靠。具体而言,ACID 表示数据库中的数据是准确的,因为从未存储过不完整的更改。预写日志记录、多版本并发控制(MVCC)和时间点故障恢复等 PostgreSQL 功能使 ACID 合规性成为可能。

开发人员和管理员使用 PostgreSQL 服务器来构建保护数据完整性的容错应用程序,从而提供比 MariaDB、Firebird 和 MySQL 等其他 SQL 数据库更高的数据完整性和可靠性。

开源许可证和社区

PostgreSQL 源代码可通过开源许可证获取,这让您能够根据需要自由使用、修改和实施它,同时无任何费用。PostgreSQL 不会产生许可费用,这消除了过度部署的风险。PostgreSQL 专属的贡献者和爱好者社区会定期查找错误并修复,从而提升数据库系统的整体安全性。

PostgreSQL 的使用案例

PostgreSQL 被用作所有类型应用程序的主数据库,各种扩展支持数百个使用案例。我们在下面列出了一些热门的使用案例。

通用型 OLTP 数据库

PostgreSQL 具有卓越的在线事务处理功能(OLTP),因为您可以将其配置为自动失效转移和完全冗余。金融机构、制造商、初创企业和大型企业使用 PostgreSQL 作为主数据存储来支持其 Internet 规模的应用程序、解决方案和产品。

地理空间数据库

PostGIS 扩展结合使用时,PostgreSQL 支持地理对象,可用作基于位置的服务和地理信息系统(GIS)的地理空间数据存储。

联合数据库

PostgreSQL 的外部数据封装器和 JSON 支持允许它与其他数据存储(包括 NoSQL 类型)关联。因此,它可以充当多语言数据库系统的联合中心,这些系统对不同的使用案例使用不同的数据库技术。

动态网站和应用程序

LAMP 是四种技术的缩写:Linux 操作系统、Apache Web 服务器、MySQL 数据库服务器和 PHP 编程语言。开发人员使用 LAMP 堆栈来创建、托管和维护 Web 应用程序。PostgreSQL 取代 MySQL 服务器形成 LAPP 堆栈。您可以使用 Linux、Apache、PostgreSQL 和 PHP/Python/Perl 来运行动态网站和应用程序。

PostgreSQL 和其他关系数据库之间的区别

关系数据库是具有预定义关系的数据项的集合。这些项被组织为一组具有列和行的表。关系数据库管理系统是一种软件,您可以通过它来读取、写入和修改关系数据库。PostgreSQL 是一个对象关系数据库管理系统(ORDMBS),这意味着它具有关系功能和面向对象的设计。

通过使用 PostgreSQL 的面向对象的功能,程序员可以:

  • 使用数据库服务器代码中的对象与数据库服务器通信。
  • 定义复杂的自定义数据类型。
  • 定义可与各自的数据类型配合使用的函数。
  • 定义表之间的继承或父子关系。

因此,PostgreSQL 的设计比其他关系数据库服务器更加灵活。您可以在现有数据库系统内而不是在应用程序代码中对不同的关系和类型进行建模。您可以通过在更接近实际数据的位置强制执行预期行为来保持一致性并提高数据库性能。

PostgreSQL 和 MySQL 之间的区别

MySQL 是一种广泛采用的开源关系数据库,可作为许多常用 Web 应用程序的主要关系数据存储。MySQL 有 20 多年的社区开发和支持历史,可靠、稳定且安全。

MySQL 和 PostgreSQL 都是热门的开源关系数据库。从传统意义上说,我们认为 MySQL 比较易用且速度快,而 PostgreSQL 的功能比较丰富,并且与 Oracle 等商业数据库的兼容性更好。

然而,目前 MySQL 和 PostgreSQL 的主要版本在性能、可靠性、安全性等方面均提供大量强大的功能和良好的特性。

PostgreSQL 与MySQL — 如何选择

选择正确的数据库服务器在很大程度上取决于您的使用案例和实际实施。您应该选择能够根据您的要求提供最佳性能和扩展性的服务器。例如,如果您需要更快地扩展到非常大的容量,那么 PostgreSQL 是更好的选择。但是,如果您想要一款可以与第三方工具快速集成的轻量级服务器,则可以选择 MySQL。

从 MySQL 迁移到 PostgreSQL

从 MySQL 迁移到 PostgreSQL 可能很棘手,如果您是刚刚接触这项技术,则更是如此。您必须利用 PostgreSQL 面向对象的设计进行设计更改才能看到改进。否则,您可能不会注意到任何区别。请记住要正确映射数据类型,并在迁移时优化您的实施。

AWS 如何满足您的 PostgreSQL 要求

AWS 通过 Amazon Relational Database Service(RDS)的完全托管数据库服务提供支持。Amazon RDS 让用户能够在云中轻松设置、操作和扩展 PostgreSQL 部署。它负责处理复杂而耗时的管理工作,例如 PostgreSQL 软件升级、存储管理,以及为灾难恢复而进行的备份。

借助 Amazon RDS,您可以:

  • 在几分钟内完成可扩展的 PostgreSQL 部署,不仅经济实惠,而且可以调整硬件容量。 
  • 重新使用与现有数据库相关的代码、应用程序和工具。
  • 查看关键运营指标,例如计算、内存和存储容量利用率。

此外,Amazon Aurora 是一个专为云打造的关系数据库管理系统(RDBMS),可与 MySQL 和 PostgreSQL 完全兼容。Aurora 兼具高端商用数据库的速度和可用性,以及开源数据库的简单性和成本效益。

Aurora 与 MySQL 和 PostgreSQL 完全兼容,使现有应用程序和工具无需修改即可运行。迁移到 Amazon Aurora,体验三倍于 PostgreSQL 的吞吐量。

立即创建一个免费账户,开始在 AWS 上使用 PostgreSQL!

Step 1 - Sign up for an Amazon Web Services account

注册 Amazon RDS

通过简单教程进行学习

开始使用 Amazon RDS 进行构建

Amazon RDS 上的 PostgreSQL 用户指南的帮助下开始构建。