2.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
支持基于 的客户端。一个示例 shellpgtclsh
提供了新的 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中找到。