Skip to content

PostgreSQL - 概述

PostgreSQL 是一个功能强大、开源的对象关系型数据库系统,以其健壮性、功能丰富性以及对 SQL 标准的严格遵循而闻名。经过 30 多年的积极开发,它拥有成熟的架构,赢得了在可靠性、数据完整性和性能方面的卓越声誉。

本教程将带你快速入门 PostgreSQL,让你熟悉其核心概念和现代特性。

PostgreSQL(常被称为 “Postgres”)是一个高级关系型数据库管理系统(RDBMS)。它由全球志愿者社区开发,不受任何单一公司控制,使其成为一个真正的开源项目。它的源代码免费提供,任何人都可以出于任何目的使用、修改和分发。

该项目起源于 POSTGRES 项目,该项目于 1986 年由 Michael Stonebraker 教授领导,在加州大学伯克利分校启动。该项目旨在在其前身 INGRES 的概念基础上进行构建。1996 年,该项目更名为 PostgreSQL,以反映其对 SQL 查询语言的支持。自那时起,PostgreSQL 全球开发组不断发布主要版本,增加了无数功能和性能改进,使其成为全球开发者和企业的首选。

PostgreSQL 可以在所有主流操作系统上运行,包括 Linux、Windows 和 macOS。它拥有庞大的功能集,足以媲美甚至常常超越专有数据库系统。

  • ACID 合规性和事务: 通过完全支持原子性(Atomic)、一致性(Consistent)、隔离性(Isolated)和持久性(Durable)事务(ACID),保证数据完整性和可靠性。
  • 高级数据类型: 原生支持多种数据类型,包括用于高效 JSON 存储和查询的 JSONB、UUID、几何类型、网络地址类型等。
  • 可扩展性: PostgreSQL 具有高度可扩展性。你可以定义自己的数据类型、函数、运算符和索引方法。这催生了丰富的强大扩展生态系统。
  • 并发控制: 采用多版本并发控制(MVCC)来处理多个用户同时访问和修改数据,同时将锁定冲突降至最低。
  • 复制和高可用性: 提供内置流复制(包括物理复制和逻辑复制)和热备功能,支持构建健壮的高可用性和读扩展架构。
  • 高级索引: 提供各种超出标准 B-tree 的索引类型,例如广义倒排索引(GIN)、广义搜索树(GiST)和 BRIN,它们针对不同类型的数据和查询模式优化了性能。
  • 全文搜索: 包含复杂的内置全文搜索功能,允许对文档进行复杂的基于文本的查询。
  • 并行性: 现代版本显著改进了对并行查询执行的支持,利用多个 CPU 核心来加速大型复杂查询。

PostgreSQL 最具决定性的特性之一是其扩展生态系统。扩展是可以加载到数据库中以添加新功能的模块。突出的例子包括:

  • PostGIS: 用于存储和查询地理空间数据的领先开源扩展,使 PostgreSQL 成为功能齐全的地理信息系统(GIS)。
  • TimescaleDB: 用于处理时间序列数据的扩展,为日志、指标和物联网数据提供自动分区和性能优化。
  • Citus Data: 将 PostgreSQL 转换为用于海量数据集的分布式、水平可伸缩数据库。
  • pg_vector: 支持高效存储和搜索用于 AI 和机器学习应用的向量嵌入。

PostgreSQL 是许多现代应用栈的基石。开发者青睐其可靠性和丰富的功能集。它通常与以下技术结合使用:

  • 编程语言: 几乎所有流行语言都有出色的驱动程序和库可用,包括 Python(结合 Django/SQLAlchemy)、JavaScript/TypeScript(结合 Node.js 和 Prisma 或 TypeORM 等 ORM)、Go、Ruby、Java 和 Rust。
  • 开发工具: 现代工作流程通常涉及使用对象关系映射器(ORM)以编程方式与数据库交互,以及使用数据库迁移工具(如 Flyway 或 Alembic)以版本控制、可重复的方式管理模式更改。
  • 云服务: 所有主要云提供商(AWS、Google Cloud、Microsoft Azure)都提供托管式 PostgreSQL 服务,简化了部署、扩展和维护。