2. PostgreSQL简史

2.1. 伯克利的POSTGRES项目2.2. Postgres952.3. PostgreSQL

现在被称为PostgreSQL的对象-关系型数据库管理系统是从加州大学伯克利分校写的POSTGRES软件包发展而来的。经过二十多年的发展,PostgreSQL是世界上可以获得的最先进的开源数据库。

2.1. 伯克利的POSTGRES项目

由Michael Stonebraker教授领导的POSTGRES项目是由防务高级研究项目局(DARPA)、陆军研究办公室(ARO)、国家科学基金(NSF) 以及 ESL, Inc 共同赞助的。 POSTGRES的实现始于 1986 年。该系统最初的概念详见[ston86] 。 最初的数据模型定义见[rowe87]。当时的规则系统设计在[ston87a]里描述。存储管理器的理论基础和体系结构在[ston87b]里有详细描述。

从那以后,POSTGRES经历了几次主要的版本更新。 第一个“演示性”系统在 1987 年便可使用了, 并且在 1988 年的ACM-SIGMOD大会上展出。在 1989 年6月发布了版本 1(见[ston90a])给一些外部的用户使用。 为了回应用户对第一个规则系统([ston89])的批评,在1990年6月发布了使用新规则系统的版本 2。 版本 3 在1991年出现,增加了多存储管理器的支持, 并且改进了查询执行器、重写了规则系统。直到Postgres95发布前(见下文)的后续版本大多把工作都集中在移植性和可靠性上。

POSTGRES已经被用于实现很多不同的研究和生产应用。这些应用包括: 一个财务数据分析系统、一个喷气引擎性能监控软件包、一个小行星跟踪数据库、一个医疗信息数据库和一些地理信息系统。POSTGRES还被许多大学用于教学用途。最后,Illustra Information Technologies(后来并入Informix, 而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%。许多内部修改提高了性能和可维护性。Postgres95的1.0.x版本在进行 Wisconsin Benchmark 测试时大概比POSTGRES的版本4.2 快 30-50%。除了修正了一些错误,下面的是一些主要提升:

  • 原来的查询语言 PostQUEL 被SQL取代(在服务器端实现)。接口库libpq被按照PostQUEL命名。在PostgreSQL之前还不支持子查询(见下文),但它们可以在Postgres95中由用户定义的SQL函数模拟。聚集函数被重新实现。同时还增加了对GROUP BY 查询子句的支持。

  • 新增加了一个利用GNU的Readline进行交互 SQL 查询的程序(psql)。这个程序很大程度上取代了老的monitor程序。

  • 增加了新的前端库(libpgtcl), 用以支持基于Tcl的客户端。一个样本 shell(pgtclsh),提供了新的 Tcl 命令用于Tcl程序和Postgres95服务器之间的交互。

  • 彻底重写了大对象的接口。保留了将大对象倒转(Inversion )作为存储大对象的唯一机制(去掉了倒转(Inversion )文件系统)。

  • 去掉了实例级的规则系统。但规则仍然以重写规则的形式存在。

  • 在发布的源码中增加了一个介绍SQL和Postgres95特性的简短教程。

  • 用GNU的make(取代了BSD的make)来编译。Postgres95可以使用不打补丁的GCC编译(修正了双精度数据对齐问题)。

2.3. PostgreSQL

到了 1996 年, 很明显“Postgres95”这个名字已经跟不上时代了。于是我们选择了一个新名字PostgreSQL来反映与最初的POSTGRES和最新的具有SQL能力的版本之间的关系。同时版本号也从 6.0 开始, 将版本号放回到最初由伯克利POSTGRES项目开始的序列中。

很多人会因为传统或者更容易发音而继续用“Postgres”来指代PostgreSQL(现在很少用全大写字母)。这种用法也被广泛接受为一种昵称或别名。

Postgres95的开发重点放在标识和理解后端代码的现有问题上。PostgreSQL的开发重点则转到了一些有争议的特性和功能上面,当然各个方面的工作同时都在进行。

自那以来,PostgreSQL发生的变化可以在附录 E中找到。

2. PostgreSQL简史

2.1. 伯克利的POSTGRES项目2.2. Postgres952.3. PostgreSQL

现在被称为PostgreSQL的对象-关系型数据库管理系统是从加州大学伯克利分校写的POSTGRES软件包发展而来的。经过二十多年的发展,PostgreSQL是世界上可以获得的最先进的开源数据库。

2.1. 伯克利的POSTGRES项目

由Michael Stonebraker教授领导的POSTGRES项目是由防务高级研究项目局(DARPA)、陆军研究办公室(ARO)、国家科学基金(NSF) 以及 ESL, Inc 共同赞助的。 POSTGRES的实现始于 1986 年。该系统最初的概念详见[ston86] 。 最初的数据模型定义见[rowe87]。当时的规则系统设计在[ston87a]里描述。存储管理器的理论基础和体系结构在[ston87b]里有详细描述。

从那以后,POSTGRES经历了几次主要的版本更新。 第一个“演示性”系统在 1987 年便可使用了, 并且在 1988 年的ACM-SIGMOD大会上展出。在 1989 年6月发布了版本 1(见[ston90a])给一些外部的用户使用。 为了回应用户对第一个规则系统([ston89])的批评,在1990年6月发布了使用新规则系统的版本 2。 版本 3 在1991年出现,增加了多存储管理器的支持, 并且改进了查询执行器、重写了规则系统。直到Postgres95发布前(见下文)的后续版本大多把工作都集中在移植性和可靠性上。

POSTGRES已经被用于实现很多不同的研究和生产应用。这些应用包括: 一个财务数据分析系统、一个喷气引擎性能监控软件包、一个小行星跟踪数据库、一个医疗信息数据库和一些地理信息系统。POSTGRES还被许多大学用于教学用途。最后,Illustra Information Technologies(后来并入Informix, 而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%。许多内部修改提高了性能和可维护性。Postgres95的1.0.x版本在进行 Wisconsin Benchmark 测试时大概比POSTGRES的版本4.2 快 30-50%。除了修正了一些错误,下面的是一些主要提升:

  • 原来的查询语言 PostQUEL 被SQL取代(在服务器端实现)。接口库libpq被按照PostQUEL命名。在PostgreSQL之前还不支持子查询(见下文),但它们可以在Postgres95中由用户定义的SQL函数模拟。聚集函数被重新实现。同时还增加了对GROUP BY 查询子句的支持。

  • 新增加了一个利用GNU的Readline进行交互 SQL 查询的程序(psql)。这个程序很大程度上取代了老的monitor程序。

  • 增加了新的前端库(libpgtcl), 用以支持基于Tcl的客户端。一个样本 shell(pgtclsh),提供了新的 Tcl 命令用于Tcl程序和Postgres95服务器之间的交互。

  • 彻底重写了大对象的接口。保留了将大对象倒转(Inversion )作为存储大对象的唯一机制(去掉了倒转(Inversion )文件系统)。

  • 去掉了实例级的规则系统。但规则仍然以重写规则的形式存在。

  • 在发布的源码中增加了一个介绍SQL和Postgres95特性的简短教程。

  • 用GNU的make(取代了BSD的make)来编译。Postgres95可以使用不打补丁的GCC编译(修正了双精度数据对齐问题)。

2.3. PostgreSQL

到了 1996 年, 很明显“Postgres95”这个名字已经跟不上时代了。于是我们选择了一个新名字PostgreSQL来反映与最初的POSTGRES和最新的具有SQL能力的版本之间的关系。同时版本号也从 6.0 开始, 将版本号放回到最初由伯克利POSTGRES项目开始的序列中。

很多人会因为传统或者更容易发音而继续用“Postgres”来指代PostgreSQL(现在很少用全大写字母)。这种用法也被广泛接受为一种昵称或别名。

Postgres95的开发重点放在标识和理解后端代码的现有问题上。PostgreSQL的开发重点则转到了一些有争议的特性和功能上面,当然各个方面的工作同时都在进行。

自那以来,PostgreSQL发生的变化可以在附录 E中找到。

本文转自PostgreSQL中文社区,原文链接:2. PostgreSQL简史

PostgreSQL 10.1 手册_前言_2. PostgreSQL简史相关推荐

  1. PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.4. 字符串函数和操作符...

    9.4. 字符串函数和操作符 9.4.1. format 本节描述了用于检查和操作字符串值的函数和操作符.在这个环境中的串包括所有类型character.character varying和text的 ...

  2. PostgreSQL 10.1 手册_部分 II. SQL 语言_第 8 章 数据类型_8.10. 位串类型

    8.10. 位串类型 位串就是一串 1 和 0 的串.它们可以用于存储和可视化位掩码.我们有两种类型的 SQL 位类型:bit(n)和bit varying(n),其中 n是一个正整数. bit类型的 ...

  3. PostgreSQL 10.1 手册_部分 II. SQL 语言_第 10 章 类型转换_10.4. 值存储

    10.4. 值存储 将被插入到一个表的值会按照下列步骤被转换到目标列的数据类型. 值存储类型转换 检查一个与目标的准确匹配. 否则,尝试转换表达式为目标类型.如果在两种类型之间的一个 赋值造型已经被注 ...

  4. PostgreSQL 10.1 手册_部分 III. 服务器管理_第 16 章 从源代码安装_16.5. 安装后设置...

    16.5. 安装后设置 16.5.1. 共享库16.5.2. 环境变量 16.5.1. 共享库 在一些有共享库的系统里,你需要告诉你的系统如何找到新安装的共享库.那些并不是必须做这个工作的系统包括 F ...

  5. PostgreSQL 10.1 手册_部分 II. SQL 语言_第 5 章 数据定义_5.5. 修改表

    5.5. 修改表 5.5.1. 增加列5.5.2. 移除列5.5.3. 增加约束5.5.4. 移除约束5.5.5. 更改列的默认值5.5.6. 修改列的数据类型5.5.7. 重命名列5.5.8. 重命 ...

  6. PostgreSQL 10.1 手册_部分 IV. 客户端接口_第 33 章 libpq - C 库_33.11. 杂项函数

    33.11. 杂项函数 一如往常,总有一些函数不适合放在任何其他地方. PQfreemem 释放libpq分配的内存. void PQfreemem(void *ptr); 释放libpq分配的内存, ...

  7. PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.4. 额外特性

    12.4. 额外特性 12.4.1. 操纵文档12.4.2. 操纵查询12.4.3. 用于自动更新的触发器12.4.4. 收集文档统计数据 这一节描述在文本搜索中有用的一些额外的函数和操作符. 12. ...

  8. PostgreSQL 10.1 手册_部分 III. 服务器管理_第 20 章 客户端认证

    第 20 章 客户端认证 目录 20.1. pg_hba.conf文件20.2. 用户名映射20.3. 认证方法 20.3.1. 信任认证20.3.2. 口令认证20.3.3. GSSAPI 认证20 ...

  9. PostgreSQL 10.1 手册_部分 II. SQL 语言

    部分 II. SQL 语言 这部份描述在PostgreSQL中SQL语言的使用.我们从描述SQL的一般语法开始,然后解释如何创建保存数据的结构.如何填充数据库以及如何查询它.中间的部分列出了在SQL命 ...

最新文章

  1. 批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解
  2. 杀进程和取文件最近使用时间
  3. exchange online share mailbox senditem
  4. Jetty Groovy AppServer
  5. 通过html文件生成PDF文件
  6. c#解压,压缩文件!!!
  7. 利用 AVDictionary 配置参数
  8. javascript中构造StringBuffer实例
  9. 16c语言第七届省赛,第十六届青少年信息学奥林匹克联赛初赛试题(附答案)
  10. PCB Layout 中的直角走线、差分走线和蛇形线
  11. hadoop的filesplit
  12. 渗透测试抓包工具-wireshark
  13. 计算机组成原理和微机原理实验报告,《计算机组成原理》实验指导.doc
  14. 使用seaborn绘制热图
  15. 瑞萨开发记录01:点亮一颗LED灯(R5F104FEA芯片)
  16. Openlayers 快速上手教程
  17. Vue打包后通过springboot运行页面为空白页的解决方法
  18. 文件夹里的文件怎么批量打印呢?
  19. mysql 循环_MySQL实现for循环逐个遍历
  20. 动手做个VR眼镜,找回童年的感觉

热门文章

  1. gradle的基本设置
  2. 连接池和 Timeout expired异常
  3. Linux下安装PCRE
  4. linux 自动提权perl脚本
  5. linux的一些机制Signal, Fork,
  6. STM32中关于RCC时钟的理解
  7. 《父亲家书》选:献血与考研
  8. 微信小程序开发文档链接
  9. Keepalived原理与实战精讲
  10. 确认AD DS域是否正常