现在称为 PostgreSQL 的对象关系数据库管理系统源自加州大学伯克利分校编写的 POSTGRES 软件包。PostgreSQL 拥有数十年的发展历史,现在是任何地方都可用的最先进的开源数据库。
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 中正式结束。
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 编译(已修复双精度数的数据对齐)。
到 1996 年,很明显,“Postgres95”这个名称无法经受时间的考验。我们选择了一个新名称 PostgreSQL,以反映原始 POSTGRES 与具有SQL功能的较新版本之间的关系。同时,我们将版本号设置为从 6.0 开始,将数字重新放回伯克利 POSTGRES 项目最初开始的序列中。
许多人继续将 PostgreSQL 称为“Postgres”(现在很少全部大写),因为传统或因为它更容易发音。这种用法被广泛接受为昵称或别名。
Postgres95 开发期间的重点是识别和理解服务器代码中存在的问题。在 PostgreSQL 中,重点已转向增强功能和功能,尽管所有领域的工作仍在继续。
有关自那时以来在 PostgreSQL 中发生的事情的详细信息,请参见 附录 E。
如果您在文档中看到任何不正确的内容、与您对特定功能的体验不符或需要进一步澄清的内容,请使用 此表单 报告文档问题。