随锐旗下互动传媒:

开源数据库纵览之PostgreSQL

http://www.weaseek.com  2006-07-31 00:00:00  来源:it168

PostgreSQL是一种复杂的对象——关系型数据库管理系统(ORDBMS),它的特性丰富、复杂,其中的一些特性甚至连商业数据库都不具备,其目标是要做超大型的面向对象关系型数据库系统。

PostgreSQL是一种复杂的对象——关系型数据库管理系统(ORDBMS),它的特性丰富、复杂,其中的一些特性甚至连商业数据库都不具备,其目标是要做超大型的面向对象关系型数据库系统。PostgreSQL已经发展到8.x,目前最新的版本是8.1.4,有.NET驱动,中文官方网站(http://www.pgsqldb.org/)有详细介绍。

PostgreSOL是由大学科研原型系统项目转变为时下流行的开放源代码数据库,它的前身是Postgres数据库。Postgres诞生于l984年,它是加州大学Berkeley分校的Michael Stonebraker领导的一个科研项目,同时也是Ingres的一个分支。当时Postgres使用的查询语言是自己定义的Postquel语言,这种语言拥有更好的结构化特性,然而,由于基于SQL语言的Oracle与DB2的统治地位,使得Postquel逐渐失宠。1994年Andrew Yu和Joliy Chen为Postgres增加了一个SQL的解释器,即Postgre 95。l996年开发者选择了一个新的名字“PostgreSQL”,以反映Postgres版本和SQL的能力。作为开源数据库,开发团队采用了严格而开放式的管理,吸引了全世界众多的开源有识之士成立了PGDT(PostgreSQL Global Development Team),而且在多元文化方面加强了力度。目前,PostgreSQL数据库研究计划已经衍生成一项国际开发项目, 并且有一定数目的用户群。
PostgreSQL运行在FreeBSD系统中,使得它的发展得以延续到现今。同时由于PostgreSQL和其它互联网服务器的配合提供了几乎所有程序设计语言的接口,因此它非常适合基于互联网的电子商务、电子金融和电子政务等应用领域。 但是,PostgreSQL没有立刻在Web上流行起来,原因在于PHP不具有Java的链接池,对PostgreSQL的支持不是很良好,以至速度表现不好。但在没有链接池的环境中,可以使用单线程的方式来访问PostgreSQL(比如在命令行访问),这样因为命令行本身默认是单线程的,所以不会产生问题。PostgreSQL在连接数据库的瞬间表现得很慢,在分离机器后更为明显,而总体而言,它的连接速度还是可以被人接受的。

PostgreSQL的一些特性如下:

(1)用户自定义类型与操作符;

(2)表继承(子表可以从父表上继承所有列,同时可以增加额外列);

(3)部分索引与表达式索引(可以在特定约束下对表的一部分建索引,或对一个表达式的输出结果建索引);

(4)丰富的服务器端编码接口,支持多种存储过程语言(包括自身的PL/PgSQL,PL/PHP,PL/Perl以及PL/Python);

(5)复杂查询优化系统,包括子查询和多表连接等;

(6)极强的并发性、扩展性,以及SQL兼容性;

但是,PostgreSQL在推进本地Windows二进制码方面进步缓慢。

PostgreSQL名列MySQL之后,与MySQL的性能相比稍显略势,对于一些需要复杂业务操作,而对性能要求不是过于苛刻,同时期望系统的设计富于扩展性的用户而言,可以采用PostgreSQL。

Postgresql与MySQL相比有不同的数据库插入技术,MySQL是采用传统的锁机制来工作,Myisam以表(文件)锁定机制来工作,Innodb是以行锁定机制工作,这两种实际机制会不同程度的影响访问;而Postgresqll是用多版本模型的方式来工作,所以在并发写入/读取中,不会出现任何形态的阻塞。

Postgresql也支持集群方式工作,这实际上是基于Linux系统内核的集群,有一个中央调度器,检测每台PostgreSQL的工作状态并且合理的发配请求,数据存储在一个公共的磁盘阵列上,MySQL理论上也可以这样运行,但是多MySQL的共享一个表结构极容易使表损坏。

PostgreSQL的语法较之MySQL丰富,与MySQL明显不同之处在于Limit语句,PostgreSQL的“limit 1 offset 2” 相当于MySQL的“limit 2,1”;PostgreSQL不支持MySQL的`符号,所以mysqldump之后的SQL文件需要替换这个字符。另外PostgreSQL的数据类型与MySQL也有所不同的,PostgreSQL具有8K大小的varchar字段可供选择,而MySQL只支持255字节的varchar,并且超过255字节的数据只能使用32K的text或者多个varchar(255)字段。PostgreSQL支持数组方式的数据,而MySQL是使用分号或者某符号分隔的方式来处理。

随着产品版本的升级,PostgreSQL的功能也在逐步完善中,PostgreSQL 7.x已经比6.x进步很多了,而8.x比起7.x进步就更大。PostgreSQL被人们广为诟病的在Windows平台下运行的问题,在8.0以后已经解决得很好了,而8.1.0则解决了另一个被广为诟病的Unicode的问题。

PostgreSQL 8.0的一系列关键特性如下:

(1)支持分布式事务处理;

(2)支持外键功能,以及所有的SQL- 99标准的连接类型、触发器;

(3)支持用户自定义的对象数据类型和操作;

(4)支持子查询、部分索引和表达式索引;

(5)支持多种语言存储过程,PostgreSQL提供了多种编程接口,拥有热备份和选择性备份恢复工具;

鉴于PostgreSQL的功能特性、市场影响及份额,一些软件公司也对它商业技术支持和服务, Pervasive Software公司在2005年宣布为PostgreSQL提供商业技术支持及服务,分析人士当时认为,此举可能进一步撼动年销售额数十亿美元的数据库软件产业。

Pervasive的收费方案是法是年缴会费,费用从基本会员的1999 美元到全天候服务的4999 美元不等。该公司也制作了特别的PostgreSQL数据库版本,内含简化安装流程的工具。这种特制版称为“Pervasive Postgres”,可自由下载,由Pervasive工程师参与程序的发展与改良。

对于两公司的此次合作,Forrester Research分析师Noel Yuhanna说:“这对PostgreSQL而言是重要的一步,之前,这款数据库一直是群龙无首,乏人推广或营销。” Yuhanna说,就技术层面而言,PostgreSQL与商业数据库相比并不逊色,并且有一些功能是MySQL目前的产品所欠缺的,包括存储过程和触发器在内。Pervasive 产品经理Lance Obermeyer指出,Pervasive 在众多版本中选择PostgreSQL是相中其技术优点和授权方式。他说,PostgreSQL采用BSD 授权模式,这种方式不对软件的衍生性用途施加限制,所以对商业客户而言最为友善。

[责任编辑:]热门关键词:

相关文章