支持的版本:当前 (17) / 16 / 15 / 14 / 13
开发版本:devel
不支持的版本: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. 伯克利 POSTGRES 项目 #

POSTGRES 项目由 Michael Stonebraker 教授领导,由国防高级研究计划局(DARPA)、陆军研究办公室(ARO)、国家科学基金会(NSF)和 ESL, Inc. 赞助。POSTGRES 的实施始于 1986 年。该系统的初始概念在 [ston86] 中提出,初始数据模型的定义出现在 [rowe87] 中。当时规则系统的设计在 [ston87a] 中描述。存储管理器的基本原理和架构在 [ston87b] 中详细介绍。

此后,POSTGRES 经历了多次重大发布。第一个演示版系统于 1987 年投入运营,并在 1988 年的ACM-SIGMOD会议上展示。在 [ston90a] 中描述的版本 1 于 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(见下文)之前不支持子查询,但可以使用用户定义的SQL函数在 Postgres95 中模拟。聚合函数被重新实现。还增加了对 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

提交更正

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