什么是 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 Core 一致性的 179 项强制功能中的 170 项。截至撰写本文时,还没有关系数据库完全符合该标准。
以下是 PostgreSQL 中各种功能的完整列表,每个主要版本中都会添加更多功能:
- 数据类型
- 基元:整数、数字、字符串、布尔值
- 结构化:日期/时间、数组、范围/多范围、UUID
- 文档:JSON/JSONB、XML、键值(Hstore)
- 几何:点、线、圆、多边形
- 定制:复合、定制类型
- 数据的完整性
- 唯一,不为空
- 主键
- 外键
- 排除约束
- 显式锁、咨询锁
- 并发、性能
- 索引:B 树、多列、表达式、部分
- 高级索引:GiST、SP-Gist、KNN Gist、GIN、BRIN、覆盖索引、布隆过滤器
- 复杂的查询规划器/优化器、仅索引扫描、多列统计
- 事务、嵌套事务(通过保存点)
- 多版本并发控制(MVCC)
- 读取查询的并行化和构建 B 树索引
- 表分区
- SQL 标准中定义的所有事务隔离级别,包括 Serialized
- 表达式的即时 (JIT) 编译
- 可靠性、灾难恢复
- 预写日志记录 (WAL)
- 复制:异步、同步、逻辑
- 时间点恢复 (PITR)、活动备用
- 表空间
- 安全
- 身份验证:GSSAPI、SSPI、LDAP、SCRAM-SHA-256、证书等
- 强大的访问控制系统
- 列级和行级安全性
- 使用证书和附加方法进行多重身份验证
- 可扩展性
- 存储函数和过程
- 过程语言:PL/pgSQL、Perl、Python 和 Tcl。通过扩展还可以使用其他语言,例如 Java、JavaScript (V8)、R、Lua 和 Rust
- SQL/JSON 构造函数和路径表达式
- 外部数据包装器:使用标准 SQL 接口连接到其他数据库或流
- 可定制的表存储接口
- 许多提供附加功能的扩展,包括 PostGIS
- 国际化、文本搜索
- 支持国际字符集,例如通过 ICU 校对
- 不区分大小写和不区分重音的排序规则
- 全文检索
您可以在 PostgreSQL文档中发现更多功能。此外,PostgreSQL 具有高度可扩展性:索引等许多功能都定义了 API,以便您可以使用 PostgreSQL 进行构建来解决您的挑战。
事实证明,PostgreSQL 在可管理的数据量和可容纳的并发用户数量方面都具有高度可扩展性。生产环境中存在管理数 TB 数据的活动 PostgreSQL 集群,以及管理 PB 级数据的专用系统。