分享到

概述

如果关系模型最能代表您的数据,那么有许多关系数据库管理系统 (RDBMS)可供选择。 PostgreSQL 是世界上最受欢迎和备受推崇的开源关系数据库之一。

本文将介绍许多开发人员选择 PostgreSQL 来满足其数据管理需求的一些主要原因。 这些原因包括功能可用性和标准合规性,以及社区支持和项目治理。

强大的功能集

选择使用 PostgreSQL 的主要原因之一是其大量的功能列表。 PostgreSQL 拥有与性能、安全性、编程扩展和配置等相关的令人难以置信的功能数量。

PostgreSQL 提供的一些功能包括

  • 支持使用以下语言编写数据库函数:
  • 支持大量数据类型,包括
    • 常见的数据库原语,如数值、字符串、布尔和日期时间类型:这些类型在大多数数据库中都存在,并在 PostgreSQL 中得到很好的支持。
    • 网络地址:PostgreSQL 支持各种与网络相关的类型,例如 CIDR 地址、带有子网掩码的地址以及 MAC 地址,包括 IPv4 和 IPv6。
    • 几何类型:多种类型可帮助您定义二维对象。 这些类型包括点、线和线段,以及完整的形状,如框、多边形和圆。
    • 货币类型:PostgreSQL 的 money 类型以固定的小数精度存储货币。 该类型具有区域设置感知能力,并包括自动输出格式化。
    • 范围:范围允许您原生处理值范围,例如,用于调度的日期和时间范围。
    • JSONB:PostgreSQL 对存储和操作 JSON 对象的原生支持可以帮助您在同一系统中处理关系型和非关系型数据。
    • hstorehstore 类型允许您原生处理键值对。
    • 多维数组:数组对于存储在特定上下文之外没有太多含义的多部分值非常有用。
  • 定义 您自己的复杂类型的能力:定义您自己的类型有助于使您的数据库更紧密地与您的应用程序中数据的表示方式保持一致。
  • 全文搜索:全文搜索为您提供强大的技术,用于查找和操作半结构化和非结构化文本中的数据。 可以微调搜索以符合您对相关性和匹配的期望。
  • 强大的身份验证访问控制权限管理系统,适用于任何规模的组织:PostgreSQL 具有成熟的用户身份验证和授权功能,可以定义谁可以使用系统以及每个用户允许查看或执行的操作。
  • 外部数据包装器:外部数据包装器使表示和访问远程服务器中的表和数据成为可能。
  • 视图物化视图:对视图和物化视图的支持允许方便、简化地访问数据,方法是抽象化经常一起查询的信息的原始表结构。
  • 数据库对象上的注释:在表、数据库、列和其他单个数据库对象上附加注释的能力使您可以记录决策或实施细节。
  • 预写式日志,以提供时间点恢复故障转移流式复制:这些技术有助于确保即使软件崩溃,您的数据库仍保持一致,并帮助您在系统之间复制数据以进行扩展和备份数据。
  • 支持类似 NoSQL 的行为,例如使用 JSONB 存储文档和使用 hstore 存储键值对:在一个系统中使用多种数据库范式的能力可以帮助最大限度地减少您的管理开销,并提高不同表示形式之间的兼容性。

您可以通过以下资源了解有关 PostgreSQL 支持的功能的更多信息

面向对象数据库功能

PostgreSQL 与大多数其他关系数据库不同的最基本方式之一来自于其核心设计。

大多数关系数据库最好被描述为关系数据库管理系统 (RDBMS)。 RDBMS 是专门设计用于处理关系数据库的软件,其中数据存储在具有预定义列和数据类型的类似表的结构中。 可以使用基于关系代数的技术(通常通过结构化查询语言 (SQL))来查询、修改和检索数据。

另一方面,PostgreSQL 在技术上是一个对象关系数据库管理系统 (ORDBMS)。 这意味着它具有与 RDBMS 相同的关系功能,但另外还具有一些面向对象的功能。

实际上,这意味着 PostgreSQL 允许您

  • 定义您自己的复杂数据类型
  • 重载函数以处理不同的参数数据类型
  • 定义表之间的继承关系

这些功能是强大的工具,可帮助您使用一些您在编程时可能熟悉的相同技术来处理数据库和数据。 增加的灵活性使您可以在数据库系统中而不是在程序外部对不同类型和关系进行建模。 这可以帮助保持一致性,并强制执行更接近实际数据的预期行为。

有关 PostgreSQL 的对象关系方法提供的更多信息,请查看以下资源

SQL 标准符合性

PostgreSQL 在其他关系数据库系统中的另一个突出之处在于其对 SQL 标准的遵守。

SQL 标准ANSIISO 组织制定,目的是定义 SQL 实现的最低功能和互操作性要求。 虽然这些机构提供的规范旨在定义 SQL 系统应提供的功能,但由于语言的复杂性和长期演变,严格遵守并非总是可能。 根据 PostgreSQL 文档,目前没有数据库满足规范概述的所有要求

鉴于这一注意事项,PostgreSQL 比其他选项满足更多的 SQL 规范。 根据他们自己的统计,他们至少符合 SQL:2016 规定的 179 项核心要求中的 160 项。

您可以通过以下资源了解有关 PostgreSQL 的 SQL 符合性的更多信息

ACID 合规性

ACID 是计算机科学中的一个首字母缩略词,代表原子性、一致性、隔离性和持久性。 它们代表数据库事务必须支持以避免有效性错误并维护数据完整性的关键保证。

ACID 合规性是关系数据库的主要关注点,因为它代表了存储和修改高度结构化数据的典型期望。 非关系数据库通常尝试遵守自己的标准,通常以竞争的 BASE 首字母缩略词表示,该首字母缩略词代表基本可用性、软状态和最终一致性。

虽然几乎所有关系数据库都渴望提供 ACID 合规性,但 PostgreSQL 自 2001 年以来,其引擎一直以 ACID 合规性而自豪。 由于 PostgreSQL 依赖于单个数据库引擎,这意味着默认情况下所有事务都完全符合 ACID 标准。 这些保证是在不使用数据库锁的情况下,通过 多版本并发控制 (MVCC) 实现的。 相比之下,MySQL 仅在使用其 InnoDB 或 NDB 数据库引擎时才支持完全 ACID 合规性,如果使用其他引擎,可能会导致意外损坏。

要了解有关 ACID 和 PostgreSQL 合规性的更多信息,请查看以下资源

开源开发和社区

PostgreSQL 是一个开源项目,由 PostgreSQL 全球开发组管理。 它使用 PostgreSQL 许可证授权,该许可证是 开放源代码倡议组织认可的许可证

虽然还有许多其他开源关系数据库,但 PostgreSQL 的开发和管理没有公司所有者或商业 counterpart。 这有助于贡献者规划自己的道路,并致力于社区最关心的功能。 PostgreSQL 的专业服务由公司提供,这些公司通常为项目做出贡献,但不控制开发过程。

这种对社区驱动的开发的关注导致了 PostgreSQL 用户的广泛参与。 大量高质量的扩展和应用程序可用于增强核心 PostgreSQL 软件的功能。 社区开发的软件可以帮助您管理 PostgreSQL 服务器、编译商业智能报告、管理新型数据以及从各种编程语言和平台使用 PostgreSQL。

结论

PostgreSQL 作为关系数据的强大、功能丰富的选择而享有盛誉。 PostgreSQL 重视稳定性、功能性和标准符合性,符合许多项目的各项正确条件。 同样,如果您需要表示数据的灵活性,并希望能够使用各种工具和语言,PostgreSQL 也是一个不错的选择。

PostgreSQL 因提供核心关系功能的出色实现而闻名,同时又不将自身限制在传统 RDBMS 的边界内。 虽然没有数据库可以满足所有需求,但 PostgreSQL 是一种极佳的选择,其功能足够强大,足以适应许多用例。

常见问题解答

PostgreSQL 是一个开源数据库。 它是一个对象关系数据库,已经开发了 30 多年。

您可以在我们的了解 PostgreSQL 功能中更熟悉 PostgreSQL。

PostgreSQL 的功能矩阵是由 PostgreSQL 维护的表格,概述了其所有功能以及添加这些功能的版本。

您可以通过单击该功能并定向到相应的 PostgreSQL 文档来访问每个功能的详细信息。

您可以在 PostgreSQL 的功能矩阵中找到其功能列表。

PostgreSQL 可以免费使用,并根据 OSI 批准的 PostgreSQL 许可证发布。

即使是使用商业软件产品,也没有费用。

PostgreSQL 是一个对象关系数据库,而不是 NoSQL 数据库。 但是,他们添加了一些 NoSQL 类型的功能,例如 JSON 类型

关于作者
Justin Ellingwood

Justin Ellingwood

自 2013 年以来,Justin 一直在撰写关于数据库、Linux、基础设施和开发者工具的文章。 他目前与妻子和两只兔子住在柏林。 他通常不必以第三人称写作,这让所有相关方都感到欣慰。