如今被称为 PostgreSQL 的对象关系数据库管理系统来源于加州大学伯克利分校编写 的 POSTGRES 包。经过几十年的发展,PostgreSQL 现已成为全球最先进的开源数据库。
由迈克尔·斯通布雷克教授领导的 POSTGRES 项目由国防高级研究计划局 (DARPA)、陆军研究办公室 (ARO)、国家科学基金会 (NSF) 和 ESL 公司赞助。 POSTGRES 的实施始于 1986 年。有关系统的初始概念介绍发表于 [ston86],初始数据模型的定义出现在 [rowe87] 中。当时规则系统的设计描述于 [ston87a] 中。有关存储管理器原理及架构的详细信息详见 [ston87b]。
自此,POSTGRES 经历了多次重大版本发布。第一个“演示软件” 系统于 1987 年投入运营,并在 1988 年ACM-SIGMOD会议上展出。版本 1 于 1989 年 6 月发布给一些外部用户,详情请参见 [ston90a]。 针对第一个规则系统 ([ston89]),批判声不断,这导致规则系统被重新设计 ([ston90b])。随后于 1990 年 6 月发布了具有新规则系统的版本 2。版本 3 出现于 1991 年,增加了对多个存储管理器的支持、改进的查询执行器和重新编写的规则系统。在很大程度上,直到 Postgres95(见下文)发布,后续版本主要侧重于可移植性和可靠性。
POSTGRES 已被用于执行许多不同的研究和生产应用程序。包括:财务数据分析系统、喷气发动机性能监控包、小行星跟踪数据库、医疗信息数据库以及几个地理信息系统。 POSTGRES 也已被用作几个大学的教育工具。最后,Illustra Information Technologies(后来合并到 Informix,目前归 IBM 所有)获取了代码并将其商业化。1992 年末,POSTGRES 成为 Sequoia 2000 科学计算项目 的主要数据管理程序。
在 1993 年,外部用户社区的规模几乎翻了一番。越来越明显的是:维护原型代码和提供支持占据了大量的时间,而这些时间本应致力于数据库研究。为了减轻此支持负担,Berkeley POSTGRES 项目正式以版本 4.2 结束。
1994 年,Andrew Yu 和 Jolly Chen 为 POSTGRES 添加了 SQL 语言解释器。在新的名称 Postgres95 下,随后将其发布到网络,作为原始 POSTGRES Berkeley 代码的开源后代,在世界上找到自己的道路。
Postgres95 代码完全是 ANSI C,并且大小缩减了 25%。许多内部变化提高了性能和可维护性。与 POSTGRES 版本 4.2 相比,Postgres95 版本 1.0.x 在 Wisconsin Benchmark 上的运行速度提高了约 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 编译(双精度浮点数的数据对齐已修复)。
在 1996 年,名称 “Postgres95” 显然会经受不住时间的考验。我们选择了一个新名称,PostgreSQL,用于反映原始 POSTGRES 和更近的版本之间的关系,以及SQL能力。与此同时,我们将版本编号设置成了从 6.0 开始,使数字重新回到最初始于伯克利 POSTGRES 项目的序列中。
因为传统,或者因为更易于发音,许多人仍然将 PostgreSQL 称为 “Postgres”(现在很少大写)。这种用法广为接受,作为昵称或别名。
在开发 Postgres95 时,重点放在识别和理解服务器代码中存在的问题。使用 PostgreSQL,重点转移到了增加功能和能力,尽管在所有领域工作仍在继续。
从那时起 PostgreSQL 发生的事项的详细信息可以在 附录 E 中找到。