2024年9月26日:PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:开发版
不支持的版本:11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

2. PostgreSQL 简史 #

现在称为 PostgreSQL 的对象关系数据库管理系统源自加州大学伯克利分校编写的 POSTGRES 软件包。PostgreSQL 拥有数十年的发展历史,现在是任何地方都可用的最先进的开源数据库。

2.1. Berkeley POSTGRES 项目 #

POSTGRES 项目由迈克尔·斯通布雷克教授领导,由国防高级研究计划局(DARPA)、陆军研究办公室(ARO)、国家科学基金会(NSF)和 ESL 公司赞助。POSTGRES 的实现始于 1986 年。该系统的初始概念在 [ston86] 中提出,初始数据模型的定义出现在 [rowe87] 中。当时规则系统的设计在 [ston87a] 中进行了描述。存储管理器的基本原理和体系结构在 [ston87b] 中进行了详细说明。

从那时起,POSTGRES 经历了多次重大版本发布。第一个“演示版”系统于 1987 年投入使用,并在 1988 年的ACM-SIGMOD会议上展示。版本 1 在 [ston90a] 中进行了描述,于 1989 年 6 月发布给少数外部用户。针对第一个规则系统 ([ston89]) 的批评,规则系统进行了重新设计 ([ston90b]),版本 2 于 1990 年 6 月发布了新的规则系统。版本 3 出现于 1991 年,增加了对多个存储管理器的支持、改进的查询执行器和重写的规则系统。在很大程度上,直到 Postgres95(见下文)之前的后续版本都侧重于可移植性和可靠性。

POSTGRES 已用于实现许多不同的研究和生产应用程序。这些包括:财务数据分析系统、喷气发动机性能监控软件包、小行星跟踪数据库、医疗信息数据库和几个地理信息系统。POSTGRES 也已被用作几所大学的教学工具。最后,Illustra Information Technologies(后来并入 Informix,现在归 IBM 所有)接管了代码并将其商业化。1992 年底,POSTGRES 成为 Sequoia 2000 科学计算项目 的主要数据管理器。

1993 年,外部用户社区规模几乎翻了一番。越来越明显的是,原型代码的维护和支持占据了大量时间,而这些时间本应用于数据库研究。为了减轻这种支持负担,伯克利 POSTGRES 项目在版本 4.2 中正式结束。

2.2. Postgres95 #

1994 年,Andrew Yu 和 Jolly Chen 为 POSTGRES 添加了一个 SQL 语言解释器。在新的名称 Postgres95 下,随后发布到网络上,作为原始 POSTGRES 伯克利代码的开源后代,自行发展。

Postgres95 代码完全使用 ANSI C 编写,大小减少了 25%。许多内部更改提高了性能和可维护性。与 POSTGRES 版本 4.2 相比,Postgres95 版本 1.0.x 在威斯康星基准测试中的运行速度提高了约 30-50%。除了错误修复之外,主要增强功能如下:

  • 查询语言 PostQUEL 被SQL取代(在服务器中实现)。(接口库 libpq 以 PostQUEL 命名。)直到 PostgreSQL(见下文)才支持子查询,但在 Postgres95 中可以使用用户定义的SQL函数模拟它们。聚合函数已重新实现。还添加了对 GROUP BY 查询子句的支持。

  • 提供了一个新程序(psql)用于交互式 SQL 查询,该程序使用GNU Readline。这在很大程度上取代了旧的 monitor 程序。

  • 一个新的前端库 libpgtcl 支持Tcl基客户端。一个示例 shell pgtclsh 提供了新的 Tcl 命令,用于将 Tcl 程序与 Postgres95 服务器连接。

  • 大型对象接口已进行了大修。反向大型对象是存储大型对象的唯一机制。(反向文件系统已删除。)

  • 实例级规则系统已删除。规则仍然可用作重写规则。

  • 一个简短的教程介绍了常规SQL功能以及 Postgres95 的功能,与源代码一起分发

  • GNUmake(而不是BSDmake)用于构建。此外,Postgres95 可以使用未修补的 GCC 编译(已修复双精度数的数据对齐)。

2.3. PostgreSQL #

到 1996 年,很明显,“Postgres95”这个名称无法经受时间的考验。我们选择了一个新名称 PostgreSQL,以反映原始 POSTGRES 与具有SQL功能的较新版本之间的关系。同时,我们将版本号设置为从 6.0 开始,将数字重新放回伯克利 POSTGRES 项目最初开始的序列中。

许多人继续将 PostgreSQL 称为“Postgres”(现在很少全部大写),因为传统或因为它更容易发音。这种用法被广泛接受为昵称或别名。

Postgres95 开发期间的重点是识别和理解服务器代码中存在的问题。在 PostgreSQL 中,重点已转向增强功能和功能,尽管所有领域的工作仍在继续。

有关自那时以来在 PostgreSQL 中发生的事情的详细信息,请参见 附录 E

提交更正

如果您在文档中看到任何不正确的内容、与您对特定功能的体验不符或需要进一步澄清的内容,请使用 此表单 报告文档问题。