PostgreSQL-01-前言

记录学习过程

前言

PostgreSQL是什么

PostgreSQL 是一款基于加州大学伯克利分校计算机科学系研发的 POSTGRES 4.21 版 的对象关系型数据库管理系统(ORDBMS)。

PostgreSQL 是伯克利原始代码的开源后继版本。它支持 SQL 标准的绝大部分内容,并提供众多现代化特性:

  • 复查查询
  • 外键
  • 触发器
  • 可更新视图
  • 事务完整性
  • 多版本并发控制
    用户还可以通过多种方式对 PostgreSQL 进行扩展,比如:
  • 新增数据类型
  • 新增函数
  • 新增操作符
  • 新增聚合函数
  • 新增索引方法
  • 新增过程语言

因其宽松的许可协议,任何人都可以免费使用、修改和分发 PostgreSQL,可用于个人、商业或学术等任何用途。

PostgreSQL 简史

伯克利 POSTGRES 项目

由迈克尔・斯通布雷克教授领导的 POSTGRES 项目,由 ** 美国国防高级研究计划局(DARPA)、陆军研究办公室(ARO)、国家科学基金会(NSF)** 以及 ESL 公司资助。

  • POSTGRES 的研发工作始于 1986 年。
  • 系统的最初设计理念发表于文献("The design of POSTGRES"Michael Stonebraker and L. Rowe)
    初始数据模型的定义发表于文献("The POSTGRES Data Model"Lawrence A. Rowe And Michael R. Stonebraker)。
  • 规则系统的设计在"The design of the POSTGRES. rules system"中有详细阐述
  • 存储管理器的设计思路与架构则在("THE DESIGN OF THE POSTGRES STORAGE SYSTEM" Michael Stonebraker) 中进行了详细说明。

POSTGRES 经历了多次重要版本发布:

  • 第一个演示版系统于 1987 年投入使用,并在 1988 年 ACM-SIGMOD 会议上进行了展示
  • 版本 1,(见文献 "THE IMPLEMENTATION OF POSTGRES" Michael Stonebraker, Lawrence A. Rowe and Michael Hiroham)于 1989 年 6 月向部分外部用户发布
  • 版本 2,针对对第一代规则系统的批评("A COMMENTARY ON THE POSTGRES RULES SYSTEM" Michael Stonebraker, Marti Hearst, and Spyros Potamianos),项目组重新设计了规则系统("ON RULES, PROCEDURES, CACHING and VIEWS IN DAT A BASE SYSTEMS" Michael Stonebraker, Anant Jhingran, Jeffrey Goh and Spyros Potamianos),并于 1990 年 6 月发布了搭载新规则系统的版本 2
  • 版本 3, 于 1991 年推出,增加了对多存储管理器的支持、改进了查询执行器,并重写了规则系统
  • 在随后直到 Postgres95 发布前的各个版本中,研发重点主要集中在可移植性与可靠性上
  • Illustra Information Technologies(后并入 Informix,现归属 IBM)获取了该代码并将其商业化
  • 1992 年末,POSTGRES 成为 Sequoia 2000 科学计算项目的核心数据管理系统
  • 1993 年,外部用户规模几乎翻倍。原型系统的维护与技术支持占用了大量本该用于数据库研究的时间。为减轻支持负担,伯克利 POSTGRES 项目在发布版本 4.2后正式宣告结束

Postgres95

1994 年,Andrew Yu 和 Jolly Chen 为 POSTGRES 添加了 SQL 语言解释器。它以 Postgres95 这一新名称发布到互联网上,作为伯克利原版 POSTGRES 代码的开源后继版本,开启了自身的发展之路。

Postgres95 代码完全采用 ANSI C 编写,代码体积缩减了 25%。多项内部改进提升了性能与可维护性。在威斯康星基准测试中,Postgres95 1.0.x 版本的运行速度比 POSTGRES 4.2 版本快 30%--50%。除修复错误外,主要增强以下功能:

  • 将查询语言 PostQUEL 替换为 SQL(在服务器端实现)。子查询功能直到后续 PostgreSQL 版本才支持,但在 Postgres95 中可通过用户自定义 SQL 函数模拟实现。聚合函数被重新实现,并增加了对 GROUP BY 查询子句的支持。
  • 提供了基于 GNU Readline 的交互式 SQL 查询程序 psql,在很大程度上取代了旧的监控程序。
  • 新增前端库 libpgtcl,支持基于 Tcl 的客户端。提供了示例外壳程序 pgtclsh,通过新的 Tcl 命令实现 Tcl 程序与 Postgres95 服务器的交互。
  • 重新设计了大对象接口。反向大对象(inversion large objects) 成为存储大对象的唯一机制。(反向文件系统已被移除。)
  • 移除了实例级规则系统。规则仍可作为重写规则使用
  • 随源码一同分发了一份简短教程,介绍常规 SQL 特性以及 Postgres95 自身特性
  • 使用 GNU make(而非 BSD make)进行编译构建

PostgreSQL

到了 1996 年,事实表明 "Postgres95" 这个名字经不起时间的考验。于是选用了一个新名称:PostgreSQL,以体现最初的 POSTGRES 与具备 SQL 能力的新版本之间的关系。与此同时,将版本号从6.0开始,使其重新归入伯克利 POSTGRES 项目最初启动的版本序列中。

Postgres 至今仍被视为官方项目名称,这既是出于传统,也因为人们觉得 Postgres 比 PostgreSQL 更易发音。

版本的详细更新记录

相关推荐
高铭杰4 小时前
Postgresql源码(152)Transaction Redo (RM_XACT_ID = 1)
数据库·postgresql·xact
IvorySQL4 小时前
PostgreSQL 技术日报 (3 月 12 日)|为什么加索引反而变慢?这招让查询快 50 倍
数据库·postgresql·开源
执笔画情ora6 小时前
PG数据库管理-PostgreSQL 常用命令行元命令汇总
数据库·postgresql·oracle
冰糖拌面7 小时前
mysql 和 pg ip 白名单
数据库·tcp/ip·mysql·postgresql
执笔画情ora8 小时前
postgresql管理-pg_hba.conf 文件详解管理
数据库·postgresql
夫唯不争,故无尤也10 小时前
PostgreSQL + SQLAlchemy 快速搭一个能跑的 Agent 后端数据层
数据库·人工智能·postgresql·agent
逍遥德11 小时前
postgresql数据库连接问题
数据库·postgresql