Postgresql 中文操作指南

2. A Brief History of PostgreSQL #

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

2.1. The Berkeley POSTGRES Project #

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

从那时起,POSTGRES 经历了几次重大发行。第一个“演示软件”系统在 1987 年开始运行,并在 1988 年的 ACM-SIGMOD 会议上展示。第 1 版在 [id="ston90a",role="bare"]biblio.html#STON90A[id="ston90a"]中进行了描述,于 1989 年 6 月发布给少数外部用户。针对第一规则系统的批评([id="ston89",role="bare"]biblio.html#STON89[id="ston89"]),对规则系统进行了重新设计([id="ston90b",role="bare"]biblio.html#STON90B[id="ston90b"]),并于 1990 年 6 月发布了 2 版,其中包含新的规则系统。第 3 版于 1991 年出现,并增加了对多个存储管理器的支持、一个改进的查询执行器和一个重写的规则系统。在很大程度上,直到 Postgres95(见下文)的后续发行都致力于可移植性和可靠性。

POSTGRES 已用于实现许多不同的研究和生产应用程序。其中包括:金融数据分析系统、喷气发动机性能监控包、小行星跟踪数据库、医疗信息数据库以及几个地理信息系统。POSTGRES 也已被用作多个大学的教育工具。最后,Illustra Information Technologies(后来合并到 Informix 中,现在归 IBM 所有)选用了该代码并将其商业化。1992 年末,POSTGRES 成为 Sequoia 2000 scientific computing project 的主要数据管理器。

在 1993 年期间,外部用户群体的规模几乎增加了一倍。维护原型代码和支持占用了大量本应用于数据库研究的时间,这一点变得越来越明显。为了减轻这种支持负担,伯克利 POSTGRES 项目已正式结束,版本为 4.2。

2.2. Postgres95 #

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

Postgres95 代码完全是 ANSI C,并且大小减少了 25%。许多内部更改提高了性能和可维护性。与 POSTGRES 第 4.2 版相比,Postgres95 1.0.x 版本在 Wisconsin Benchmark 上运行速度提高了约 30-50%。除了错误修复之外,以下是一些主要增强功能:

2.3. PostgreSQL #

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

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

Postgres95 开发过程中的重点是识别并理解服务器代码中存在的问题。通过 PostgreSQL,重点已转移到增强功能,尽管各方面的工作仍在继续。

有關自那時以來 PostgreSQL 中發生的事情的詳情,請參閱 Appendix E