关于 
什么是 PostgreSQL?
PostgreSQL 是一个强大的开源对象关系数据库系统,它使用并扩展了 SQL 语言,并结合了许多功能,可以安全地存储和扩展最复杂的数据工作负载。PostgreSQL 的起源可以追溯到 1986 年,当时是加州大学伯克利分校的 POSTGRES 项目的一部分,核心平台已经有超过 35 年的活跃开发历史。
PostgreSQL 因其成熟的架构、可靠性、数据完整性、强大的功能集、可扩展性以及开源社区对软件的奉献精神而赢得了良好的声誉,始终如一地交付高性能和创新的解决方案。PostgreSQL 在所有主流操作系统上运行,自 2001 年以来一直符合 ACID 标准,并具有强大的附加功能,例如流行的 PostGIS 地理空间数据库扩展程序。PostgreSQL 已成为许多人和组织选择的开源关系数据库,这并不奇怪。
使用 PostgreSQL 的入门从未如此简单 - 选择您想要构建的项目,让 PostgreSQL 安全可靠地存储您的数据。
为什么使用 PostgreSQL?
PostgreSQL 具有许多功能,旨在帮助开发人员构建应用程序,帮助管理员保护数据完整性和构建容错环境,并帮助您管理数据,无论数据集的大小如何。除了免费和开源之外,PostgreSQL 还具有高度的可扩展性。例如,您可以定义自己的数据类型,构建自定义函数,甚至从不同的编程语言编写代码,而无需重新编译数据库!
PostgreSQL 试图遵守 SQL 标准,前提是这种遵守不会与传统功能相矛盾或导致糟糕的架构决策。SQL 标准要求的许多功能都得到了支持,尽管有时语法或功能略有不同。随着时间的推移,预计将进一步朝着一致性方向发展。截至 2023 年 9 月发布的 16 版本,PostgreSQL 符合 SQL:2023 核心一致性的 177 个强制性功能中的至少 170 个。截至撰写本文时,没有关系数据库完全符合此标准。
以下是 PostgreSQL 中发现的各种功能的非详尽列表,每个主要版本都会添加更多功能
-
数据类型
- 基本类型:整数、数值、字符串、布尔值
- 结构化:日期/时间、数组、范围/多范围、UUID
- 文档:JSON/JSONB、XML、键值 (Hstore)
- 几何:点、线、圆、多边形
- 自定义:复合、自定义类型
-
数据完整性
- 唯一性、非空
- 主键
- 外键
- 排除约束
- 显式锁、建议锁
-
并发、性能
- 索引:B 树、多列、表达式、部分
- 高级索引:GiST、SP-Gist、KNN Gist、GIN、BRIN、覆盖索引、布隆过滤器
- 复杂的查询规划器/优化器、仅索引扫描、多列统计信息
- 事务、嵌套事务(通过保存点)
- 多版本并发控制 (MVCC)
- 读取查询和构建 B 树索引的并行化
- 表分区
- SQL 标准中定义的所有事务隔离级别,包括可序列化
- 表达式的即时 (JIT) 编译
-
可靠性、灾难恢复
- 预写日志 (WAL)
- 复制:异步、同步、逻辑
- 时间点恢复 (PITR)、活动备用
- 表空间
-
安全
- 身份验证:GSSAPI、SSPI、LDAP、SCRAM-SHA-256、证书等
- 强大的访问控制系统
- 列和行级安全性
- 使用证书和其他方法的多因素身份验证
-
可扩展性
- 存储函数和过程
- 过程语言: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 用户联系。
我们的用户 我们
NewsBlur 是一个社交新闻阅读器,它依赖 Postgres 来存储数百万个站点和订阅。多年来一直稳定可靠。
Samuel Clay,NewsBlur
Postgres 是一个非常棒的数据库。当我们开始开发 Launchpad 时,我并不确定它是否能胜任这项工作。我错了。它在各个方面都表现得稳健、快速且专业。
Mark Shuttleworth,Ubuntu Linux
我们的客户期望我们的软件具有高性能和高可用性,其中核心部分是 SQL 数据库引擎。我们发现 PostgreSQL 确实可以胜任这项任务。
Maksym Sobolyev,SippySoft Inc.
Node.js 和其他服务器端 JavaScript 框架可以从 PostgreSQL 的安全性和稳健性中受益,同时仍然以他们喜欢的无模式格式存储数据。
Matt Soldo,Heroku
没有统计数据的数据库项目是什么样的?
35+ 年开发
700+ 位贡献者
59,000+ 次提交
70+ 个本地用户组
1,700,000+ 行 C 代码
700+ 场活动
数百万快乐的用户
∞ 存储的数据