现在被称为 PostgreSQL 的对象关系数据库管理系统源自加州大学伯克利分校编写的 POSTGRES 包。经过几十年的开发,PostgreSQL 已成为目前最先进的开源数据库。
您可以在 Hellerstein 博士的论文《“回顾 Postgres”》[hell18] 中找到另一个关于此历史的视角。
由 Michael Stonebraker 教授领导的 POSTGRES 项目得到了美国国防部高级研究计划局(DARPA)、陆军研究办公室(ARO)、国家科学基金会(NSF)以及 ESL 公司(ESL, Inc.)的资助。POSTGRES 的实现始于 1986 年。该系统的初步概念在 [ston86] 中提出,初始数据模型的定义出现在 [rowe87] 中。当时规则系统的设计在 [ston87a] 中进行了描述。存储管理器的原理和架构在 [ston87b] 中得到了详细阐述。
此后,POSTGRES 经历了数次重大发布。第一个““演示软件””系统于 1987 年投入运行,并在 1988 年的ACM-SIGMOD会议上展出。在 [ston90a] 中描述的 1.0 版本于 1989 年 6 月发布给了一些外部用户。针对第一个规则系统的批评([ston89]),规则系统被重新设计([ston90b]),并在 1990 年 6 月发布了带有新规则系统的 2.0 版本。3.0 版本出现在 1991 年,增加了对多个存储管理器的支持、改进的查询执行器以及重写的规则系统。在 Postgres95(见下文)之前的后续版本,大部分都侧重于可移植性和可靠性。
POSTGRES 已被用于实现许多不同的研究和生产应用。其中包括:财务数据分析系统、喷气发动机性能监控包、小行星跟踪数据库、医疗信息数据库以及多个地理信息系统。POSTGRES 也被用作多所大学的教学工具。最后,Illustra Information Technologies(后来并入 Informix,现在归 IBM 所有)获取了代码并将其商业化。1992 年底,POSTGRES 成为 [ston92] 中描述的 Sequoia 2000 科学计算项目的主要数据管理器。
1993 年,外部用户社区的规模几乎翻了一番。人们越来越清楚地认识到,维护原型代码和提供支持占用了大量本应用于数据库研究的时间。为了减轻这种支持负担,加州大学伯克利分校的 POSTGRES 项目正式结束,版本为 4.2。
1994 年,Andrew Yu 和 Jolly Chen 为 POSTGRES 添加了一个 SQL 语言解释器。在新名称 Postgres95 下,该版本随后在网上发布,作为一个源自原始 POSTGRES Berkeley 代码的开源项目,以自己的方式发展。
Postgres95 的代码完全采用 ANSI C 编写,并且体积缩小了 25%。许多内部更改提高了性能和可维护性。与 POSTGRES 4.2 版本相比,Postgres95 1.0.x 版本在 Wisconsin Benchmark 上的运行速度提高了约 30-50%。除了错误修复外,以下是主要的增强功能:
查询语言 PostQUEL 被替换为SQL(在服务器中实现)。(接口库 libpq 的名称来源于 PostQUEL。)直到 PostgreSQL(见下文)才支持子查询,但它们可以通过用户定义的SQL函数在 Postgres95 中模仿。聚合函数被重新实现。还增加了对 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 项目最初开始的序列。
由于传统原因以及人们发现 Postgres 比 PostgreSQL 更容易发音,Postgres 仍然被视为一个官方项目名称。
Postgres95 开发期间的重点是识别和理解服务器代码中现有的问题。而对于 PostgreSQL,重点已经转移到增强功能和特性上,尽管所有领域的工作仍在继续。
关于此后每个 PostgreSQL 版本发布的详细信息,请参见 https://postgresql.ac.cn/docs/release/。
如果您在文档中发现任何不正确、与您在特定功能上的实际体验不符或需要进一步澄清的内容,请使用此表单报告文档问题。