PostgreSQL
PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为POSTGRES,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。
基本信息
- 开发语言
C/C++
- 最早数据模型
The POSTGRES Data Model
- 功能
数据管理
- 开发机构
加州大学伯克利分校
- 名称
PostgreSQL
- 更名为
POSTGRES
- 特性
复杂查询、外键、触发器
软件介绍
PostgreSQL是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如MySQL和Firebird),和专有系统(比如Oracle、Sybase、IBM的DB2和MicrosoftSQLServer)之外的另一种选择。
PostgreSQL不寻常的名字导致一些读者停下来尝试拼读它,特别是那些把SQL拼读为"sequel"的人。PostgreSQL开发者把它拼读为"post-gress-Q-L"。它也经常被简略念为"postgres"。1
主要特点
优点
事实上,PostgreSQL的特性覆盖了SQL-2/SQL-92和SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备,比如IP类型和几何类型等;其次,PostgreSQL是全功能的自由软件数据库,很长时间以来,PostgreSQL是唯一支持事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。Inprise的InterBase以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL的质量日益提高。
从技术角度来讲,PostgreSQL采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端C接口。而不同的客户端接口都是源自这个C接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等,同时也要指出的是,PostgreSQL对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是PostgreSQL一大优点。
缺点
从Postgres开始,PostgreSQL就经受了多次变化。
首先,早期的PostgreSQL继承了几乎所有Ingres,Postgres,Postgres95的问题:过于学院味,因为首先它的目的是数据库研究,因此不论在稳定性,性能还是使用方方面面,长期以来一直没有得到重视,直到PostgreSQL项目开始以后,情况才越来越好,PostgreSQL已经完全可以胜任任何中上规模范围内的应用范围的业务。目前有报道的生产数据库的大小已经有TB级的数据量,已经逼近32位计算的极限。不过学院味也给PostgreSQL带来一个意想不到的好处:大概因为各大学的软硬件环境差异太大的缘故,它是目前支持平台最多的数据库管理系统的一种,所支持的平台多达十几种,包括不同的系统,不同的硬件体系。至今,它仍然保持着支持平台最多的数据库管理系统的称号。
其次,PostgreSQL的确还欠缺一些比较高端的数据库管理系统需要的特性,比如数据库集群,更优良的管理工具和更加自动化的系统优化功能等提高数据库性能的机制等。
版本历史
早期版本
被称为PostgreSQL(发音为Post-gress-cue-ell)的对象-关系型数据库管理系统(有一段时间被称为Postgres95)是从伯克利写的POSTGRES软件包发展而来的。经过十几年的发展,PostgreSQL是世界上可以获得的最先进的开放源码的数据库系统,它提供了多版本并发控制,支持几乎所有SQL构件(包括子查询,事务和用户定义类型和函数),并且可以获得非常广阔范围的(开发)语言绑定(包括C,C++,Java,perl,tcl,和python)。
Postgres95
在1994年,AndrewYu和JollyChen向POSTGRES中增加了SQL语言的解释器。并随后将Postgres95源代码发布到互联网上供大家使用,成为一个开放源码的,原先伯克利POSTGRES代码的继承者。
Postgres95所有源代码都是完全的ANSIC,而且代码量减少了25%。并且有许多内部修改以利于提高性能和代码的维护性。Postgres95版本1.0.x在进行WisconsinBenchmark测试时大概比POSTGRESv4.2快30-50%。