Skip to content

2.PostgreSQL简史#

2.1. 伯克利 POSTGRES 项目
2.2. Postgres95
2.3. PostgreSQL

现在称为PostgreSQL的对象关系数据库管理系统源自加州大学伯克利分校编写的POSTGRES软件包。经过几十年的发展,PostgreSQL现已成为全球最先进的开源数据库。

2.1. 伯克利POSTGRES项目#

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

POSTGRES自那时起经历了几个主要版本。第一个“demoware”系统于 1987 年投入运行,并在 1988 年ACM-SIGMOD会议上展示。第 1 版在[ston90a]中进行了描述,于 1989 年 6 月发布给了一些外部用户。为了回应对第一个规则系统的批评 ([ston89]),规则系统进行了重新设计 ([ston90b]),并于 1990 年 6 月发布了带有新规则系统的第 2 版。第 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%。许多内部更改提高了性能和可维护性。Postgres951.0.x 版本在 Wisconsin Benchmark 上比POSTGRES4.2 版快了约 30-50%。除了错误修复之外,以下是一些主要增强功能

  • 查询语言 PostQUEL 已被 (在服务器中实现)取代。(接口库 libpq 以 PostQUEL 命名。)在 PostgreSQL 之前不支持子查询(见下文),但可以在 Postgres95 中使用用户定义的 函数对其进行模仿。重新实现了聚合函数。还增加了对 GROUP BY 查询子句的支持。

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

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

  • 大对象接口已经过大修。反转大对象是存储大对象的唯一机制。(反转文件系统已被移除。)

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

  • 一份简短的教程介绍了常规 功能以及 Postgres95 的功能,并随源代码一起分发。

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

2.3.PostgreSQL#

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

由于传统或发音更方便,许多人仍然将PostgreSQL称为“Postgres”(现在很少全部大写)。这种用法被广泛接受为昵称或别名。

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

PostgreSQL中自那时起发生的事情的详细信息可在附录 E中找到。