关于

什么是 PostgreSQL?

PostgreSQL 是一个强大的开源对象关系型数据库系统。它使用并扩展了 SQL 语言,并结合了大量功能,能够安全地存储和扩展最复杂的数据工作负载。PostgreSQL 的起源可以追溯到 1986 年,当时它还是加州大学伯克利分校 POSTGRES 项目的一部分;其核心代码库至今已持续活跃开发近 40 年。

PostgreSQL 凭借成熟的架构、可靠性、数据完整性、强大的功能集和优异的可扩展性,以及开源社区持续交付高性能创新方案的长期投入,赢得了良好声誉。PostgreSQL 可在 所有主流操作系统 上运行,自 2001 年以来一直符合 ACID 标准,并拥有强大的附加组件,例如广受欢迎的 PostGIS 地理空间数据库扩展。因此,PostgreSQL 成为众多个人和组织的首选开源关系型数据库,并不令人意外。

使用 PostgreSQL 入门从未如此简单。选择一个您想构建的项目,让 PostgreSQL 安全、稳健地存储您的数据。

为什么使用 PostgreSQL?

PostgreSQL 拥有丰富的功能,既能帮助开发者构建应用程序,也能帮助管理员保护数据完整性并构建容错环境。无论数据集规模如何,它都能够胜任。除了免费和开源之外,PostgreSQL 还具备极高的可扩展性。例如,您可以定义自己的数据类型、编写自定义函数,甚至使用不同的编程语言开发,而无需重新编译数据库。

PostgreSQL 力求符合 SQL 标准,前提是这种一致性不会与传统功能相矛盾或导致不良的架构决策。SQL 标准要求的许多功能都已得到支持,尽管有时语法或函数略有不同。随着时间的推移,预计将进一步向标准靠拢。截至 2025 年 9 月发布的版本 18,PostgreSQL 至少符合 SQL:2023 核心一致性的 177 项强制功能中的 170 项。截至撰写本文时,没有任何关系数据库完全符合该标准。

以下是 PostgreSQL 中各种功能的不完全列表,每个主要版本都会添加更多功能:

  • 数据类型
    • 基础类型:Integer,Numeric,String,Boolean
    • 结构化类型:Date/Time,Array,Range / Multirange,UUID
    • 文档类型:JSON/JSONB,XML,Key-value(Hstore)
    • 几何类型:Point,Line,Circle,Polygon
    • 自定义类型:Composite,Custom Types
  • 数据完整性
    • UNIQUE,NOT NULL
    • 主键
    • 外键
    • 排他约束
    • 显式锁、咨询锁
  • 并发与性能
    • 索引:B-tree,多列,表达式,部分索引
    • 高级索引:GiST,SP-GiST,KNN GiST,GIN,BRIN,覆盖索引,布隆过滤器
    • 复杂的查询规划器/优化器,仅索引扫描,多列统计信息
    • 事务、嵌套事务(通过保存点)
    • 多版本并发控制(MVCC)
    • 读查询和构建 B-tree 索引的并行化
    • 表分区
    • SQL 标准中定义的所有事务隔离级别,包括可串行化
    • 即时编译(JIT)表达式
    • 异步 I/O(AIO)
  • 可靠性与灾难恢复
    • 预写式日志(WAL)
    • 复制:异步、同步、逻辑
    • 时间点恢复(PITR),活跃备库
    • 表空间
  • 安全性
    • 认证:GSSAPI,SSPI,LDAP,SCRAM-SHA-256,Certificate,OAuth 2.0 等
    • 强大的访问控制系统
    • 列级和行级安全性
    • 使用证书和附加方法的多因素认证
  • 可扩展性
    • 存储函数和过程
    • 过程语言:PL/pgSQL,Perl,Python 和 Tcl。还有其他语言可通过扩展获得,例如 Java,JavaScript(V8),R,Lua 和 Rust
    • SQL/JSON 构造器、查询函数、路径表达式和 JSON_TABLE
    • 外部数据包装器:通过标准 SQL 接口连接其他数据库或数据流
    • 可自定义的表存储接口
    • 许多提供附加功能的扩展,包括 PostGIS
  • 国际化与文本搜索
    • 支持国际字符集,例如通过 ICU 排序规则
    • 不区分大小写和不区分重音的排序规则
    • 全文搜索

您还可以在 PostgreSQL 文档中了解更多功能。此外,PostgreSQL 具有极高的可扩展性:许多能力(例如索引)都定义了 API,以便您利用 PostgreSQL 解决实际问题。

PostgreSQL 已在可管理的数据规模和可承载的并发用户数方面证明了其高度可伸缩性。生产环境中已有活跃的 PostgreSQL 集簇管理着数 TB 数据,也有专门的系统管理着 PB 级数据。

需要帮助?

有关 PostgreSQL 的任何问题,首先应查阅其享誉全球的文档,其中深入讨论了如何使用 PostgreSQL。

我们还提供许多邮件列表,您可以在其中交流并参与社区。此外,还有众多活动本地用户组,方便您与其他 PostgreSQL 用户交流。

用户的热爱

数据库当然少不了统计数据

35+ 年持续开发

725+ 位贡献者

61,000+ 次提交

70+ 个本地用户组

1,780,000+ 行 C 代码

720+ 场活动

数百万满意的用户

∞ 数据存储