标题：PostgreSQL
简介
PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统)，它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird)，和对专有系统比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server的一种选择。
PostgreSQL 不寻常的名字导致一些读者停下来尝试拼读它，特别是那些把SQL拼读为"sequel"的人。PostgreSQL 开发者把它拼读为 "post-gress-Q-L"。(Audio sample, 5.6k MP3)。它也经常被简略念为 "postgres"。[1]
主要特点
优点[2]　事实上， 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 的确还欠缺一些比较高端的数据库管理系统需要的特性，比如数据库集群，更优良的管理工具和更加自动化的系统优化功能 等提高数据库性能的机制等。
历史
早期POSTGRES现在被称为 PostgreSQL (发音为Post-gress-cue-ell)的对象-关系型数据库管理系统（有一段时间被称为 Postgres95）是从伯克利写的 POSTGRES 软件包发展而来的。经过十几年的发展， PostgreSQL 是世界上可以获得的最先进的开放源码的数据库系统， 它提供了多版本并发控制，支持几乎所有 SQL 构件（包括子查询，事务和用户定 义类型和函数）， 并且可以获得非常广阔范围的（开发）语言绑定 （包括 C，C++，Java，perl，tcl，和 python）。Postgres95在 1994 年， Andrew Yu 和 Jolly Chen 向 POSTGRES 中增加了 SQL 语言的解释器。并随后将 Postgres95 源代码发布到互联网上供大家使用， 成为一个开放源码的，原先伯克利 POSTGRES 代码的继承者。 
Postgres95 所有源代码都是完全的 ANSI C ， 而且代码量减少了 25%。并且有许多内部修改以利于提高性能和代码的维护性。 Postgres95 版本 1.0.x 在进行 Wisconsin Benchmark 测试时大概比 POSTGRES v4.2 快 30-50%。PostgreSQL到了 1996 年， "Postgres95"改成新名字 PostgreSQL 用于反映最初的 POSTGRES 和最新的使用 SQL 的版本之间的关系。 同时版本号也 重新从 6.0 开始， 将版本号放回到最初的由 伯克利 POSTGRES 项目开始的顺序中。 
Postgres95 版本的开发重点放在标明和理解现有的后端代码的问题上。 PostgreSQL 开发重点转到了 一些有争议的特性和功能上面，当然各个方面的工作同时都在进行。
PostgreSQL 9.2
PostgreSQL 宣布 9.2 正式版发布了！该版本主要在性能方面有很大的提升，也包括一些新的 SQL 特性以及复制支持方面，主要内容包括：
允许查询直接从索引中获取数据，避免访问堆数据 (index-only scans) 
允许查询计划器为指定参数值生成自定义的计划，甚至是用了 Prepared Statement
提升计划器通过内部索引扫描来使用嵌套循环
允许流复制从节点将数据转到其他从节点 (cascading replication) 
允许 pg_basebackup 对待机的服务器进行基准备份
增加新工具 pg_receivexlog 用来收集 WAL 文件的改动
增加 SP-GiST (Space-Partitioned GiST) 索引访问方法
支持 range data types
增加 JSON 数据类型
为视图增加 security_barrier 选项
允许 libpq 连接字符串使用 URI 格式
支技HP-UX
为 libpq 增加 single-row processing mode 以更好的处理大结果集。[3]
PostgreSQL改进
除了修正了一些错误，下面的是一些主要改进： 
查询语言
原来的查询语言 PostQUEL 被 SQL 取代（在 server 端实现）。在 PostgreSQL 之前还不支持子查询）（但这个功能可以在 Postgres95 里面由用户定义的 SQL 函数实现）。重新实现了聚集。同时还增加了对 GROUP BY 查询子句的支持。 C 程序仍可以调用 libpq接口函数。 
新增加了利用 GNU Readline 进行交互 SQL 查询（psql）。 这个程序很大程度上取代了老的 monitor 程序。　前端库增加了新的前端库， libpgtcl， 用以支持以 Tcl为基础的客户端。一个样本 shell， pgtclsh，提供了新的 Tcl 命令用于 Tcl 程序和 Postgres95 后端之间的交互。 
彻底重写了大对象的接口。 保留了将大对象倒转（Inversion ）作为存储大对象的唯一机制。 （去掉了倒转（Inversion ）文件系统。） 
去掉了记录级（instance-level ）的规则系统。 但我们仍然可以通过重写规则使用规则。　特性教程在发布的源码中增加了一个简短的常用 SQL 和 Postgres95 特有的 SQL 特性的教程。 
用GNU make （取代了 BSD make）用于制作。 Postgres95 可以使用不加补丁的 GCC （修正了偶数字节数据（ doubles ）的对齐问题）。
项目
Michael Stonebraker 领导的 POSTGRES 项目是由防务高级研究项目局（DARPA）， 陆军研究办公室（ARO），国家科学基金（NSF）， 以及 ESL, Inc 共同赞助的。 POSTGRES 的实现始于 1986 年， 该系统最初的概念详见 POSTGRES的设计。 最早的数据模型定义见 The POSTGRES Data Model。 当时的规则系统设计在 POSTGRES 规则系统的设计 里描述. 存储管理器的理论基础和体系结构在 POSTGRES存储系统的设计 里有详细描述。 
从那以后，POSTGRES 经历了几次主要的版本更新。 第一个"演示性"系统在 1987 年便可使用了， 并且在 1988 年的 ACM-SIGMOD 大会上展出。在 1989 年六月发布了版本 1给一些外部的用户使用。 为了回应用户对第一个规则系统的批评，作者重新设计了规则系统，并在1990年6月发布了使用新规则系统的版本 2。 版本 3 在1991年出现， 增加了多存储管理器的支持， 并且改进了查 询执行器， 重新编写了规则系统。 从那以后，随后的版本直到 Postgres95 发布前工作都集中在移植性和可靠性上。 
POSTGRES 已经在许多研究或实际的应用中得到了应用。 这些应用包括： 一个财务数据分析系统，一个喷气引擎性能监控软件包，一个小行星跟踪数据库， 一个医疗信息数据库和一些地理信息系统。 POSTGRES 还被许多大学用于教学用途。 最后， Illustra Information Technologies Illustra Information Technologies (后来并入 Informix) 后者现在属于 IBM) 拿到代码并使之商业化。在 1992 年末 POSTGRES 成为 Sequoia 2000 科学计算计划的首要数据管理器。 
到了 1993 年，外部用户的数量几乎翻番。随着用户的增加。 用于源代码维护的时间日益增加 占用了太多本应该用于数据库研究的时间， 为了减少支持的负担，伯克利的POSTGRES 项目在版本 4.2 时正式终止。
版本发布
2012年09月10日，PostgreSQL 宣布 9.2 正式版发布了！该版本主要在性能方面有很大的提升，也包括一些新的 SQL 特性以及复制支持方面，主要内容包括：
允许查询直接从索引中获取数据，避免访问堆数据 (index-only scans)
允许查询计划器为指定参数值生成自定义的计划，甚至是用了 Prepared Statement
提升计划器通过内部索引扫描来使用嵌套循环
允许流复制从节点将数据转到其他从节点 (cascading replication)
允许 pg_basebackup 对待机的服务器进行基准备份
增加新工具 pg_receivexlog 用来收集 [4]WAL 文件的改动
增加 SP-GiST (Space-Partitioned GiST) 索引访问方法
支持 range data types
增加 JSON 数据类型
为视图增加 security_barrier 选项
允许 libpq 连接字符串使用 URI 格式
为 libpq 增加 single-row processing mode 以更好的处理大结果集。[5]
[6]