# 2.PostgreSQL的简史

2.1. 伯克利博士后项目

2.2. 博士后95

2.3. PostgreSQL

对象关系数据库管理系统现在被称为PostgreSQL,它来自于加州大学伯克利分校的Postgres包。经过20多年的发展,PostgreSQL现在是世界上最先进的开源数据库。

# 2.1.伯克利博士后项目

由Michael Stonebraker教授领导的PASGRESS项目由国防高级研究计划局(DARPA)、陆军研究办公室(ARO)、国家科学基金会(NSF)和ESL公司发起。PSTEGRES的实施始于1986.该系统的最初概念见[86],初始数据模型的定义出现在[rowe87]。当时规则系统的设计在[87A]。存储管理器的基本原理和体系结构详见[87B].

从那时起,POSTGRES经历了几次重大发布。第一个“demoware”系统于1987年投入使用,并在1988年的ACM-SIGMOD会议上展示。版本1,如中所述[90A],于1989年6月向少数外部用户发布。回应对第一规则体系的批评([89]),重新设计了规则体系([90B]),第2版于1990年6月随新规则系统发布。版本3出现在1991年,增加了对多个存储管理器的支持、一个改进的查询执行器和一个重写的规则系统。Postgres95之前的后续版本(见下文)主要关注可移植性和可靠性。

POSTGRES已被用于实现许多不同的研究和生产应用。其中包括:一个财务数据分析系统、一个喷气发动机性能监测软件包、一个小行星跟踪数据库、一个医疗信息数据库和几个地理信息系统。博士后在几所大学也被用作教育工具。最后,Illustra信息技术公司(后来并入Informix (opens new window),现由国际商用机器公司 (opens new window))拿起代码并将其商业化。1992年底,博士后成为了该项目的主要数据管理者红杉2000科学计算项目 (opens new window).

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

# 2.2.博士后95

1994年,Andrew Yu和Jolly Chen为博士后增加了一名SQL语言解释器。以一个新名字命名,Postgres95随后被发布到网络上,作为原始POSTGRES Berkeley代码的开源后代在世界上找到自己的路。

Postgres95代码完全是ANSIC,大小减少了25%。许多内部更改提高了性能和可维护性。Postgres95第1.0版。x在威斯康星州的基准测试中比POSTGRES 4.2版快30-50%。除了错误修复,以下是主要的增强功能:

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

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

  • 一个新的前端库,libpgtcl,支持基于Tcl的客户端。一个样本壳,pgtclsh,提供了新的Tcl命令,将Tcl程序与Postgres95服务器连接起来。

  • 大型对象界面进行了彻底检修。大型物体的反转是存储大型物体的唯一机制。(反转文件系统已被删除。)

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

  • 一个介绍常规SQL特性以及Postgres95特性的简短教程随源代码一起发布

  • GNU make(而不是BSD make)用于构建。此外,Postgres95可以使用未修补的GCC进行编译(Double的数据对齐是固定的)。

# 2.3.PostgreSQL

到1996年,“Postgres95”这个名字显然经不起时间的考验。我们选择了一个新名称PostgreSQL,以反映原始POSTGRES和具有SQL功能的较新版本之间的关系。同时,我们将版本编号设置为从6.0开始,将编号放回最初由Berkeley POSTGRES项目开始的顺序。

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

Postgres95开发过程中的重点是识别和理解服务器代码中存在的问题。有了PostgreSQL,重点已经转移到增强特性和功能上,尽管所有领域的工作仍在继续。

有关PostgreSQL自那以后发生的事情的详细信息,请参见附录E.