PostgreSQL(通常简称为“Postgres”)是世界上最先进的开源对象关系型数据库。它专为实现企业级性能而设计,因强大的功能和可靠性而备受重视。
Postgres 起源于 1986 年,是加州大学伯克利分校先前开发的 Ingres 数据库的演变。自 1994 年以来,它一直使用结构化查询语言 (SQL) 进行查询和事务,并且由个人开发者和企业开发者社区持续更新。
得益于 SQL 的长期开发和使用,PostgreSQL 已成为全球最受欢迎的开源数据库之一,各大云供应商都提供 PostgreSQL 或 PostgreSQL 派生数据库作为服务。
注册即可免费试用 Google Cloud 的任何 PostgreSQL 数据库,包括 AlloyDB、Cloud SQL for PostgreSQL 和 Spanner。
关系型数据库将数据存储在由行和列组成的结构化表中,并维护多个表中关联数据的相关信息。
例如,一家零售银行可能有一个表格,其中包含多行客户信息,而每一行都包含客户姓名、电话号码和地址作为列。可能还有一个用于存储交易信息的表。关系型数据库会关联两个表中的行,以便银行可以跟踪哪个客户进行了哪些交易。
“查询”是从数据库中请求信息的单个操作。“事务”是一系列操作,这些操作可以操控数据库中的数据。基本存储操作通常称为“CRUD”,即 Create、Read、Update 和 Delete(创建、读取、更新和删除)。
为了优化从数据库中检索的信息,PostgreSQL 使用索引(重新整理表的一部分副本以提高搜索速度)。从概念上讲,这类似于图书末尾的索引,让您无需浏览整本图书即可快速查找某项内容。
作为关系型数据库,PostgreSQL 使用称为“架构”的正式描述来描述所含数据的结构。具体而言,架构是数据库中的表、索引和函数的集合,而 PostgreSQL 支持多个架构。
数据库专业人员负责设计最能代表数据及其使用数据的架构和索引集。他们还负责维护和运营任务,以确保数据安全和数据库顺畅运行。
自从在伯克利大学开发以来,PostgreSQL 一直保持开源状态,这意味着其代码完全开放,可供查看、修改和分发。
由于这些数据库可在多种云和非云平台上运行,因此开发者可以为自己的应用使用开源数据库,无需任何许可费用,又能实现充分的部署灵活性。开发者社区有助于改进和维护软件,提高安全性和可靠性。
PostgreSQL 近年来越来越受欢迎,成为全球最常用的数据库之一。它具有诸多优势:
PostgreSQL 因其灵活性、可靠性和强大的功能集而被广泛用于各种应用。以下是一些常见用法:
因安全性极高的应用而备受信赖,并且以可审核性、合规性和数据保护而闻名。
PostgreSQL 可以处理数十亿行的查询,通常用于通过实时运营数据来增强数据仓库和其他分析系统。事实上,许多流行的数据仓库产品都从 PostgreSQL 演变而来。
PostgreSQL 可伸缩、稳健可靠且能够处理大量流量,非常适合移动、Web、社交媒体和其他高流量应用。
PostgreSQL 支持地理数据,因此应用可以计算两点之间的距离,并为导航、物流和农业应用执行地理空间计算。
PostgreSQL 提供高性能的矢量搜索,常用于为大型语言模型 (LLM) 提供输入,通常通过检索增强生成 (RAG) 来扩展这些模型。开发者通常会选择 PostgreSQL 进行构建
组织通常使用 PostgreSQL 将旧式应用迁移到现代开源平台。
以下部分将深入介绍 PostgreSQL 的生态系统。查找与 AlloyDB、Aurora、SQL Server、MySQL 和 Oracle 的比较;最后,了解全托管式 PostgreSQL 数据库与自行管理 PostgreSQL 数据库之间的差异。
市面上有几种商业产品与 PostgreSQL 的兼容性级别各不相同。其中两种最受欢迎的是 Google Cloud 的 AlloyDB 和 AWS 的 Aurora。
AlloyDB 可在任何平台和任何云环境中运行,而 Aurora 只能在 Amazon Web Services (AWS) 上运行。另一方面,AlloyDB 侧重于 PostgreSQL,而 Aurora 同时提供 PostgreSQL 和 MySQL 引擎。
AlloyDB 已成为企业的热门选择,因为它:
PostgreSQL 是可在大多数操作系统上运行的开源数据库,而 SQL Server 则是在 Microsoft Windows 和 Linux 上运行的商业产品。很多供应商都以托管式云服务的形式提供这两种服务。
这两个系统具有许多相同的核心功能,但也存在一些差异。PostgreSQL 的一个关键优势是它使用多版本并发控制 (MVCC) 进行并发处理,因此可以处理高事务速率,而几乎不会遇到死锁的情况。SQL Server 以高性能和内存中数据库功能而闻名,而 AlloyDB 也提供这些功能。
如需查看完整比较,请参阅 PostgreSQL 与 SQL Server。
MySQL 是基于 SQL 的关系型数据库,而 PostgreSQL 是对象关系型数据库。虽然它们都是开源的,但 PostgreSQL 遵循允许商业分发的许可。MySQL 开源项目由 Oracle 赞助。
PostgreSQL 通过添加进程进行扩缩,这一直是可靠应用的好方法。PostgreSQL 的扩展机制使其成为通常更受欢迎的社区贡献平台。
MySQL 通过添加线程进行扩缩,这通常适用于资源较少的小型应用。
具体选择通常取决于个人偏好和经验丰富的开发者团队。
PostgreSQL 和 MySQL 之间的一些技术差异:
PostgreSQL
MySQL
PostgreSQL 和 Oracle 都是热门的关系型数据库,支持 SQL 并使用类似的过程语言(如果是 Oracle,则为 PL/SQL)。这两者都因其可伸缩性和安全性而备受重视。
Oracle 被各种规模的企业用于驱动关键任务应用,以其可用性和对集群等高级功能的支持而闻名。
PostgreSQL 提供与 Oracle 类似的特性和功能,包括灾难恢复、高性能和内置复制功能。企业选择 PostgreSQL 作为 Oracle 的更开放、更具成本效益的替代方案。
与所有数据库一样,自我管理需要团队拥有技术经验。这包括有关配置和维护架构、扩缩作业和一般数据库管理技能(例如执行升级、备份、安全维护、灾难恢复和安装补丁)的知识。开发团队越来越青睐全托管式数据库,这样他们就可以专注于自己的应用。
全托管式数据库:
但是,如果您因独特的应用需求而需要完全控制数据库环境,那么自行管理的数据库可实现这种灵活性。
扩展程序可让您根据自己的具体需求扩展和定制数据库的功能。PostgreSQL 提供全面的扩展程序支持,扩展程序的行为方式与内置函数相似,包括外部开发的函数。
以下是一些常用的扩展程序:
PostgreSQL 支持其他数据库中不常见的基本数据类型和其他高级数据类型,包括布尔值、数字、整数、时间戳、数组等。开发者还可以创建自己的数据类型。
其默认过程语言是 pgSQL (PL/pgSQL) 的扩展,并在标准分发中包含 Tcl、Perl 和 Python 的过程语言扩展(编写为 PL/Tcl、PL/Perl 和 PL/Python)。借助这些可加载的过程语言,您可以使用编码程语言创建函数和触发过程。
通过扩展可支持更多语言,包括 Java、Ruby、C、C++、Delphi 和 JavaScript。
PostgreSQL 使您可以使用多种语言编码,而无需重新编译数据库,这对于开发者而言是一项关键优势。
是的,PostgreSQL 自 2001 年起就已符合 ACID 标准。
ACID(原子性、一致性、隔离性、持久性)是一组属性,用于描述事务型数据库如何确保数据有效。ACID 合规性可以保证数据质量,即使在网络中断或硬件故障的情况下也是如此,并且支持同时读取和写入,不会丢失或损坏数据。这些原则对于在金融和医疗保健等许多行业的应用至关重要。
例如,假设一个银行应用正在数据库中的两个账号之间转移余额。如果交易过程中出现服务中断或故障,符合 ACID 标准的数据库可确保资金不会直接消失或记入多次,账号余额始终有效。