热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

PostgreSQL 简介

来源: 作者: 时间:2008-05-21 Tag: 点击:
摘要

PostgreSQL 是一种非常先进的对象-关系型数据库管理系统(ORDBMS),目前功能最强大,特性最丰富和最先进的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户。本文是PostgreSQL长期用户何伟平(Laser/BITBIRD)的文章“PostgreSQL的昨天、今天和明天”的当前版本。

] 版本

本文是作者何伟平(Laser/BitBIRD)在经过了十余年的 PostgreSQL 研究与应用之后的又一次重大改版:版本 3.0。这个版本反应了自5年前版本 2.0以来的变化与更新。

前言

今天,Richard Stallman (RMS)自 1985 年 10 月发起的自由软件运动已经有超过了 20 年的历史了,如果说最初 RMS 的愿望是创造一个可自由获取的操作系统的话,那么到今天,自由软件的发展已经远远超过当年 RMS 的目标,并且和整个计算机软件业的发展过程一样,自由软件用户对自由软件的基础需求也经历了由基础工具(编译器、编辑器)到基础平台(操作系统)再到基础应用软件(图形界面、数据库、办公软件、图形处理软件)的过程;甚至超越了传统软件的贡献,在向更高层次的联网系统(WebOS),和联网应用(WebDB,WebApplication)发展。

八卦:笔者认为正是自由软件带来的“成本革命”,才令 WebOS、WebDB、Web 应用成为可能,这些庞大公共软件设施在昂贵的商业软件时代是根本不可能想像的。类似的相关文章见拙作告别PC时代,迎来网络时代

PostgreSQL 是在这个发展过程中,最重要的基础链条之一:数据库系统的一个典型代表。

“PostgreSQL 是一种特性非常齐全的自由软件的对象-关系性数据库管理系统(ORDBMS),它的很多特性正是当今许多商业数据库的前身” --摘自 PostgreSQL 手册。

 历史

 Ingres和Postgres

谈到 PostgreSQL,我们得谈谈 Berkeley,也就是中文“加州大学伯克利分校”这所大学。伯克利(BSD)对计算机科学的贡献巨大,尤其是在操作系统领域,各种BSD系统以及Bill Joy的TCP实现在整个计算机科学的发展史上熠熠生辉,光芒闪耀。它们的光辉是如此耀眼,以至于让人几乎无法看到伯克利在其它计算机科学的分支上的成就,而 PostgreSQL 正是其中之一。

PostgreSQL 的前身是 BSD 的始于 1977 年的 Ingres 项目,这个项目是 Michael Stonebraker 教授领导的,在 1982 年,Michael Stonebraker 离开伯克利商业化了 Ingres,成为 Relational Technologies 公司的一个产品,后来 Relational Tecchnologies 被 Computer Associates(CA)收购。Ingres 是一个非关系型的数据库(数据关系需要由用户有意识地维护),在 1985 年,Michael Stonebraker 回到伯克利开始一个后-Ingres(post-Ingres)的项目,目的是解决 Ingres 中,同时也是 1980 年代的数据库系统中的主要问题:数据关系维护的问题。这就是 Postgres 的开端。

从1986年开始,Michael Stonebraker 教授发表了一系列论文,探讨了新的数据库的结构设计和扩展设计,然后在 1988 年有了一个原型设计,1989年6月发布了版本 1,1990年6月发布了版本 2,1991年发布了版本 3。在版本 3 里改进了规则系统,增加了多存储系统支持以及改进了查询引擎。在 1993年,用户开始暴涨,并且特性需求急剧增加;在做了一些代码清理、发布了版本 4 之后,Postgres 项目正式终止。而随后 Michael Stonebraker 教授再次去创业,成立 Illustra 公司提供 Postgres 的商业支持,后来 Illustra 在 1997 年被 Informix 收购,而 Michael 教授成为 Informix 的 CTO;再后来 Informix 在 2001 年被 IBM 收购。

八卦:看Michael Stonebreaker教授的经历,感觉在 US 这个教授的确是“进可创业,退可教书”的好职业。不过Michael教授对数据库、对人类的贡献有目共睹,无需指摘太多。
后记:Michael Stonebreaker教授目前回到了教育岗位,在MIT从事数据库研究,后面对流数据库(Stream database)和列数据(Column database)都有颇多论文并且也相应地创建了一些商业支持公司,是一个很有求知欲和创业欲的教授。

Postgres95

Postgres 并没有因为 Postgres 项目的终止而停止发展,而是仍然在各种场合被人们所使用,在1994年,两名伯克利的研究生在做研究生课题的时候,向 Postgres 里增加了现代的 SQL 语言的支持。这里需要解释一下:E.F Code 的关系模型提出之后,对这个模型的实现有非常多的变种,相互之间并不兼容,比如Postgres用的是 QUEL/Postquel 语言,而 SQL 自身作为语言,一直到1992年才形成真正的国际标准(还是草案),当时称为 SQL2,但是人们常称为 SQL92。两位研究生是来自中国香港的 Andrew Yu 和 Jolly Chen 用 bison 和 flex 工具的组合,把Postgres 的Postquel查询语言替换成了 SQL92,然后将Postgres改名为 Postgres95。

八卦:笔者自己还和 Andrew Yu 有一面之缘,曾问起 Postgres95 起名原因,Andrew 同志回复的大致的意思的确是因为受了 MS 当年著名的 win95 的命名的影响。

 PostgreSQL

Andrew Yu 和 Jolly Chen 最大的贡献在于,完成了 Postgres95 之后,将其发布到了互联网上,随后的 1996 年,加拿大的 Hub.Org Networking Services的 Marc Fournier(一名 FreeBSD 黑客)提供了第一个非大学的开发服务器平台,然后 Bruce Momjian(美国)和 Vadim B. Mikheev(俄国)开始修改以及稳定伯克利发布的代码,并于1996年8月发布了第一个开源版本。

随后,这些黑客把项目名称改变为 PostgreSQL,以对应 SQL 的自持,并且把 PostgreSQL 的版本号重新放到了原先 Postgres 项目的顺序中去,从 6.0 开 始(Postgres 本身到4.2,Postgres95 算5.0)。自 1996 年 8 月到现在的 2008 年,到今年北京奥运会开始的时候,PostgreSQL 项目将已经有 12 年的历史,而 Postgres 的年龄也会超过23岁,已经进入成熟的青年期。

目前,PostgreSQL 的稳定版本到了 8.3.1,在RDBMS的各种特性方面,已经接近于“无可指摘”的境界了。而目前 PostgreSQL 的开发是围绕在更易用的 SQL 语言扩展、SQL 标准的兼容(比如SQL2003、XML/Xquery的支持)、扩展工具、外围工具等方面。

八卦:在软件的使用过程中,感觉软件如人一样:随着年龄的增长而成熟,一个软件的青春期是10余年的时候,会迎来软件的一次繁荣,而成熟期是第二个10年左右,迎来软件的第二次繁荣;然后进入壮年期和盛年期,就是第三和第四个10年左右;一般软件在经历四十余年之后肯定会进化成更高层次的某种动物。在这个过程中,每个十年都会有一些关键的转折点,如果没能顺利通过转折点,估计就会消失。PostgreSQL 的竞争对手之一 MySQL 正处于青春期变化的过程,值得观察。

 PostgreSQL读法

PostgreSQL 的读法:Post-gres-Q-L,因为大多自由软件开发人员把 SQL 念做:S-Q-L,而不是 IBM 常说的(squel)。类似的 MySQL 的官方读音也是:My-S-Q-L,而不是 My-see-quel。



相关文章:
pgSQL 集群过程
PL/SQL学习笔记:游标
Pgbouncer 管理员手册
Pgbouncer 用户手册
Pgbouncer 介绍
使用dbi-link在PG里访问异构数据库
PostgreSQL查看数据库表的大小
PostgreSQL设置默认的search path(schema)
PostgreSQL如何让数据按照中文排序
PostgreSQL利用用户定制的聚集函数选取每个分组的
PostgreSQL的FTI与中文全文索引的实践
PostgreSQL 8.3文档-V 服务器编程-扩展SQL-C 语言
在Windows系统上安装和运行PostgreSQL的常见问题
PostgreSQL常见问题
PostgreSQL 简介
Ubuntu系统下安装和配置PostgreSQL 8.1
影响postgresql性能的几个重要参数
PostgreSQL相关
如何从网络上登录其它计算机的PostgreSQL
在Ubuntu和Debian系统下安装PostgreSQL
导入文本文件中存放的数据
从其他机器登陆PostgreSQL
PostgreSQL入门
PostgreSQL 7.2 教程
PostgreSQL 8.0.0入门之创建数据库
postgresql-数据库物理存储
PL/pgSQL的结构
Postgresql-基本语句
PL/pgSQL控制结构
在 Windows 上安装客户端