PostgreSQL的昨天今天和明天

PostgreSQL 是一种很是复杂的对象-关系型数据库管理系统(ORDBMS), 也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统。有些特性甚至连商业数据库都不具有。程序员

这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目, 而且有很是普遍的用户。sql

PostgreSQL 的昨天今天和明天 -- 自由软件数据库PostgreSQL简介

前言

今天,若是人们谈论起计算机操做系统,确定有很是多的人会津津乐道自由软件操做系统Linux,毕竟,众人拾柴火焰高,现在没有任何人勇于忽视Linux这个自由软件操做系统在咱们星球的存在,就连国内比较特殊的环境下,也不断地有各类各样的Linux秀出现让公众、甚至是那些对计算机知之甚少的群众都能意识到Linux的存在。可是,若是咱们提及数据库,可能绝大多数人只会记得有Oracle、IBM DB二、Informix、Sybase、MS SQL Server,以及在互联网广为使用的轻量级 MySQL,而提到PostgreSQL的名字,可能不少人都会皱起眉毛:“这是什么?” 。数据库

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

为了让你们可以清楚的了解PostgreSQL,请听我细细道来。服务器

历史

1.出身名门

谈到PostgreSQL,咱们不得不谈Berkeley,也就是中文中的“加州大学伯克利分校”这所大名鼎鼎的大学。老实说,伯克利(BSD)对计算机科学的贡献可谓巨大,在整个计算机科学的发展史上,几乎处处都有这所学校的研究人员和学生的足迹。只要稍微对计算机技术史有些记忆的人都会记得在Unix操做系统的发展里程碑上BSD这三个字的份量,然而也许正是因为BSD在系统和网络领域里的光芒太耀眼,掩盖了BSD对计算机技术其余分支的贡献,而PostgreSQL正是其中之一。网络

2.创世纪-Ingres

追本溯源地讲,PostgreSQL最先开始于BSD的Ingres项目,这个项目主要是研究关系型数据库技术,早在1970年 E.F. Codd就提出了关系模型,从那之后,人类在计算机领域的数据管理就进入了一个新的时期。今后人们开始用抽象的关系语句来描述本身的数据,大大提升了人类对数据的抽象描述能力。而Ingres项目正是就此进行研究的,它始于1977年,到1985年结束,而其研究成果后来被一家叫Relational Technologies的商业公司拿去作成了商品软件,后来这家公司又被 Computer Associates(CA)收购,不知道CA的JASMINE里面是否还有当年Ingres的影子?函数

3.新项目-Postgres

而后,从1986年开始,BSD的Michael Stonebraker教授领导了称为Postgres的“后Ingres”项目,其主要目的是数据库管理系统的更高级研究,所以而产生了PostgreSQL的直接前身:Postgres,而PostgreSQL的名字也是从Postgres项目继承过来的。这个项目的成果是很是巨大的,在现代数据库的许多方面都作出的大量的贡献,好比,面向对象的数据库,部分索引技术,规则,过程和数据库扩展等方面都走在了数据库管理系统的前列。并且,Stonebraker教授还作出了一件造福全人类的事情,那就是把 Postgres 放在了BSD版权的保护下,在这个版权的范围里,任何人几乎能够作任何事情,包括加强它和商业化等。条件只是把 BSD 的版权声明包括在软件的源程序里。工具

Postgres 在 1989 年发布了第一个版本,由于是BSD版权,因此很快在各类研究机构和一些公众服务组织里普遍使用起来,因为众多用户使Postgres的开发变得更多地是维护代码和打补丁,而日益背离了原先的数据库管理系统的研究的目标,到了1994年Postgres在版本 4.2 的时候正式终止。而 Postgres的许多成果则转化成一个商业公司Illustra,后来Illustra被Informix收购。看到这里,想必你们应该对Postgres的影响有一些认识了吧。性能

4.炎黄子孙的贡献-Postgres95

Postgres并无由于Postgres项目的终止而中止发展,而是得到了一次新生:在1994年,两名伯克利的研究生在作研究生课题的时候,向Postgres里增长了现代的SQL语言的支持。请不要奇怪,SQL的祖宗是E.F. Codd的关系模型,可是SQL做为语言,一直到1992年才造成真正的国际标准(仍是草案),当时称为 SQL2,可是人们常称为 SQL92。而在那以前,全部查询语言都是由不一样的数据库管理系统本身实现的,好比,在Postgres里原来是用叫 Postquel的查询语言;这两位研究生是Andrew Yu和Jolly Chen,看了名字,你们可能会想:“很象中国人的名字嘛”,没错,他们就是黑头发黄皮肤的炎黄子孙,不过很惋惜的是他们并无在中国的(包括台湾省的)xx大学取得这样的成就。这样,Postgres迎来了1995年,大概是受xxxxxxx95的命名方法的“启发”吧,他们俩把这个版本的 Postgres命名为Postgres95,而且继续发布了几个版本,加强了一些特性。优化

5.国际化-PostgreSQL

到了1996年,Andrew Yu和 Jolly Chen相继离开Postgres95的开发队伍,(Andrew Yu 加入了 Informix,Jolly Chen 继续读书),而在一些自由软件黑客的发起下,Postgres 项目又开始了新的历程,最早是由几位加拿大黑客发起,开始了PostgreSQL项目,后来参与的人愈来愈多,逐渐成为了一个由近20个国家的近四十名黑客组成的团体共同开发的自由软件项目。PostgreSQL从新把版本号放到了原先Postgres项目的顺序中去,从6.0开始(Postgres自己到4.2,Postgres95算5.0)。通过五年多的协做开发,PostgreSQL能够说是目前世界上最早进、功能最强大的自由软件的数据库管理系统。

目前,PostgreSQL的稳定版本到了7.2,具备很是丰富的特性和商业级数据库管理系统的质量。而即将到来的 7.1 版本又将是一次飞跃,将向高质量大型数据库管理系统的方向又迈进了一步。

在这里,先让我告诉您怎么念PostgreSQL(的确很绕口):Post-gres-Q-L,大概由于大多自由软件开发人员把 SQL念作:S-Q-L,而不是IBM常说的(squel)。

特色

PostgreSQL能够说是最富特点的自由数据库管理系统,甚至咱们也能够说是最强大的自由软件数据库管理系统。事实上,PostgreSQL的特性覆盖了SQL-2/SQL-92和SQL-3/SQL-99,首先,它包括了能够说是目前世界上最丰富的数据类型的支持,其中有些数据类型能够说连商业数据库都不具有,好比IP类型和几何类型等;其次,PostgreSQL是全功能的自由软件数据库,很长时间以来,PostgreSQL 是惟一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的惟一的一种自由软件的数据库管理系统。直到最近才有Inprise的InterBase以及SAP等厂商将其原先专有软件开放为自由软件以后才打破了这个惟一。最后,PostgreSQL拥有一支很是活跃的开发队伍,目前的提交人员已经超过三十人,并且在许多黑客的努力下,PostgreSQL的质量日益提升,也从另一个侧面上增长了人们使用PostgreSQL的信心,毕竟数据库管理系统不能象桌面操做系统那样一天宕一次还让人以为挺满意 :-P。

从技术角度来说,PostgreSQL采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端C接口。而不一样的客户端接口都是源自这个C接口,好比ODBC、JDBC、Python、Perl、Tcl、C/C++、ESQL 等,同时也要指出的是,PostgreSQL对接口的支持也是很是丰富的,几乎支持全部类型的数据库客户端接口。这一点也能够说是PostgreSQL一大优势。

说完优势,不能不说几句缺点,不能由于是自由软件而偏袒PostgreSQL,从Postgres开始,PostgreSQL就经受了屡次变化。

首先,早期的PostgreSQL继承了几乎全部Ingres、Postgres、Postgres95的问题:过于学院味,由于首先它的目的是数据库研究,所以不论在稳定性,性能仍是使用方便方面,长期以来一直没有获得重视,直到PostgreSQL项目开始之后,状况才愈来愈好,目前,PostgreSQL已经彻底能够胜任任何中上规模范围内的应用范围的业务。目前有报道的生产数据库的大小已经有TB级的数据量,已经逼近 32 位计算的极限。不过学院味也给PostgreSQL带来一个意想不到的好处:大概由于各大学的软硬件环境差别太大的缘故,它是目前支持平台最多的数据库管理系统的一种,所支持的平台多达十几种,包括不一样的系统,不一样的硬件体系。至今,它仍然保持着支持平台最多的数据库管理系统的称号。

其次,PostgreSQL的确还欠缺一些比较高端的数据库管理系统须要的特性,好比联机热备份、数据库集群、更优良的管理工具和更加自动化的系统优化功能等提升数据库性能的机制等。

最后,PostgreSQL拥有极其强大的扩展能力,你能够很容易地扩展数据类型、内部函数、汇集、操做符等等,并且,别忘了,你拥有全部的源程序,理论上你能够作任何你能够作的事情。  总而言之,PostgreSQL的特性已经彻底能够知足绝大部分用户的须要,并且其质量和特性仍然在突飞猛进地进步着,因此,咱们有理由相信在不远的未来,PostgreSQL确定可以成为一种优秀的、自由的、商业数据库的替代产品。

人物

对PostgreSQL作出巨大贡献的人物太多了,我在这里只能摘其一二而为之。

首先是伯克利,做为一个学院,好象不该该进入人物的范畴,可是若是没有BSD的优良的学术环境,创造出这样优秀的科学技术成果是不可能的,只要想一想咱们的5000多所科研单位就能明白。(我是否是应该还要在这里感谢美国?:-P)。

而后是Michael Stonebraker教授,正是这位学究的开明才能让这样优秀的科技成果走向了公众,甚至到了“自由的对立面”的咱们的手里,并且是全部的东西,不只仅是一堆二进制文件。

接下来有咱们的同胞,Andrew Yu和Jolly Chen,他们为PostgreSQL走向现代作出了巨大的贡献。

最后是如今正在辛勤耕耘的黑客们,这些黑客以他们执着的精神和高超的技术,为PostgreSQL的日益完善作出了不可磨灭的贡献。黑客总共有数十人之多,我只好把核心成员挑出来介绍一下,而对于贡献了更多代码的其余重要黑客,只好暂且委屈他们一阵子了,若是有机会,我还会进一步介绍他们。

**Tom Lane:**一位卡耐基梅隆大学(CMU)的电子工程学ph.D(博士),是PostgreSQL的很是重要开发人员,其足迹遍部PostgreSQL的每个角落,能够说对PostgreSQL的性能和稳定性以及特性的取舍有极其重要的贡献,在开始参加PostgreSQL项目以前,他已经有了十余年的自由软件开发经验,能够说是老牌的自由软件程序员;

**Vadim Mikheev:**一位来自俄国的黑客,其特色是专干大项目,好比V6.3里面的子查询,V6.5里面的多版本并行控制,以及7.1里面的预写式日志系统等,能够说是PostgreSQL的开拓者;

**Jan Wieck:**一位来自德国的黑客,有十余年的数据库开发经验,原先曾经为SAP等大型软件厂商工做,后来加入PostgreSQL的开发;他也是喜欢大项目,不过兴趣是用户端的特性,好比外键,一些过程语言好比pl/pgsql等7.1版本中的CLOB(文本大对象)的部分也是他的做品;

**Thmas Lockhart:**一位毕业于加州理工学院的美国黑客,主要负责文档和若干种数据类型(尤为是与时间相关的类型)、SQL语法的标准一致性、时间类型、以及完整性约束等;

**Bruce Monjian:**来自美国,是一些文档和项目协调,以及许多完整性约束和SQL语法的标准等,好比OUTER JOIN,同时维护TODO列表和FAQ;

**Marc Fournier:**加拿大黑客,主要的协调人,维护站点,邮件列表,以及发布版本等;

**Peter Eisentraut:**德国/瑞典黑客,主要负责文档编写、完善、认证和权限管理,制做脚本和一些管理配置接口的制定,以及客户端交互工具psql等,其做用日益突出,能够说在7.2版本的开发过程当中是不可或缺的人物;

另外还有大量来自欧洲,澳洲和亚洲(日本)等地的黑客。实际上,有愈来愈多的黑客的做用变得日益重要,在邮递列表中天天都有来自不一样黑客的各类各样的补丁程序。因此,自由软件的特色就是,只要愿意,任何人均可以对它有足够的影响。也就是说,咱们命运是真正掌握在本身手里的。

展望

就目前而言, PostgreSQL的前景很是好,目前的稳定版本是7.2,这个版本在7.1版本的基础上再次作了大量的改进和提升。

7.1是继6.5以后的又一个巨大的变化,她首先引入了预写式日志的功能。这样,事务就拥有了完善的日志机制,能够提供更好的性能,以及还能够实现更优良的备份和灾难恢复的能力(好比联机热备份和宕机后的自动恢复)。其次是对文本类型的数据段的长度再也不限制,从而很大程度上解决了PostgreSQL的大对象的问题。尤为在现在的Web应用盛行的环境下,这个功能几乎当即将PostgreSQL摆到了能够与其余全部类型的数据库竞争的地位。并且在SQL标准上又有进一步的提升,好比OUTER JOIN的支持等等。

7.2 版本在7.1的基础上改进了原来的数据库按期清理工做中排它锁的过程,使数据库维护再也不影响数据库的正常使用,同时加强了查询优化的智能,使数据库对索引的使用更加准确;同时还消除了每一个安装节点的免维护事务次数的限制、国际化、以及还有大量其余方面的加强。

在将来的7.3版本中,咱们有望能够看到更加智能的数据库清理,更优化的不一样种类的索引类型(好比散列/HASH索引),实时的数据库热备份功能,表空间和数据库大纲(Schema)的支持,更好的权限管理以及更多性能优化方面的加强内容。

后记

做为一种数据库管理系统,PostgreSQL并不象Linux与某些商业操做系统相比那样,获得迅速普遍的认可,这一点是能够理解的,最近的Tom Lane有一段话说得实在:“首先,商业数据库系统不象某些商业操做系统那样实在太烂,相反,商业数据库系统的质量仍是很是高的,与之相比,PostgreSQL 仍然有差距”但同时他也相信“咱们已经达到商业级的数据库系统的质量,只不过不能说是最好的。”

的确,自由软件的发展具备跳跃性,由于开发者大可能是利用空余时间进行开发,当开发者云集的时候,新的东西可能一会儿就增长上去;而若是在自由软件运动的低潮时,由于缺乏开发人员,因此可能会有一长段时间的沉寂,然后又会随着社会的发展而出现新的活动。也就是一种螺旋上升的曲线。

于是,咱们在面对自由软件的时候,必定要有一点:要相信本身和依靠本身,由于自由软件的发展的确须要每个爱好者充分发挥本身的聪明才智,同时,也只有自由软件给你提供了这样的机会――依靠本身的力量改变本身的命运。最后,也只有这样,自由软件之光才能真正照耀咱们的世界。

本文整理自何伟平教授相关文章,而目前PostgreSQL版本已经发布到11Beta2,各类新特性不断增长,PG早已变成各大企业及上云的首选,正如你们所看到的,PostgreSQL经过你们不段的努力,正在掀起一场热潮~

相关文章
相关标签/搜索