2009年4月7日星期二

Why Postgres?

关于这个话题,我想了很久,反复开了几个头都不太满意。看来还是直接了当比较好。
我并不是只使用过Postgres的用户。正相反,从MSSQL到Firebird再到Oracle和MySQL,加上LDAP等,我在工作中用过的至少有八九种数据库产品。但是,Postgres是我至今遇到的最满意的数据库平台。
首先,Postgres足以可靠的支持我所要管理的数据量。历经二十多年发展的Postgres一直是主流数据库服务系统的代表之一。长期大量用户的使用,已经证明了它在TB级应用的可靠性和可用性,这足以满足我的需求。早在上个世纪,Postgres就与DB2和Oracle等昂贵的商业平台一样,支持多层存储管理,从文件系统到表空间再到数据区集群。通过完备严谨的分层定义,为海量数据管理提供了可能。
能够提供这一级别的数据存储能力的数据库不在少数,但是Postgres除了这一基本能力,还拥有一些独到的特长。
Postgres以完备和高度可靠的事务见长。这在一个严肃的商用系统中是非常重要的指标。正因为如此,传统的几大数据库巨头对此都非常重视。然而Postgres作为伯克利分校出身的开源产品,一直在数据库事务技术的发展中处于领导地位,这是一项非常了不起的成就,也是商业应用的有力保障。
Postgres与*nix有良好的集成,几乎每一个linux/unix/bsd发行版,都将Postgres的支持和集成作为重要内容。从Postgres 7.x 版本至今,Postgres对于windows支持也越来越出色。现在的Postgres For Windows 版甚至还附带了一个集成配置安装工具。对于高性能及高可靠性应用场合,能否允许灵活的选择适合的系统组合,还是很重要的。
Postgres 在少量连接数的情况下,性能测试并不出色,只能说中规中矩。然而高并发高负载的严苛环境,Postgres 的测试结果远超MySQL等竞争对手。

以下链接可以看到FreeBSD7.x上,Postgres对MySQL表现出的强大性能优势:

以下链接可见Postgres在高并发应用中表现出的优势。

这种高并发优势,无论web广域应用,还是企业应用,都至关重要。强大的并发支持,可以允许架构设计人员在应用层架构选型时有更多的机动余地。

除了以上几点,Postgres的编程能力,更是远超群雄。Postgres曾经在近十年间都以SQL语言的竞争者身份出现,然而这不等于它在SQL编程能力方面有所缺失。恰恰相反,Postgres拥有当下语法最丰富好用的SQL/PLSQL脚本引擎。Postgres独到的实现了函数与过程的统一定义和使用,并且做到了标量函数与矢量集函数的灵活组合。无论触发器、主外键关联、视图、唯一索引,各种关系约束一应俱全。
Postgres 实现了相当完备的面向对象支持。一直以来,Postgres都是对象-关系型数据库的技术先锋。灵活的类型设计,加上完备的关系机制,使得 Postgres 成为最方便实现设计思想的数据库之一。
除了传统上的C扩展存储过程,各主流数据库还纷纷支持各种应用开发语言,例如,Oracle支持java(通常都是过时版本),MSSQL支持.net  CLR,但是,早在这股风潮之前,Postgres就已经支持高达十余种不同的编程语言。得益于开源社区的贡献,Postgres支持Java、Python、Perl甚至Scheme、sh等编程语言,而这个列表还在增加。而且这些功能都是单独安装的,使用系统集成的适用版本,项目设计人员和架构师可以方便的选择最适合的组合。
Postgres还有大量类似的“插件”可供技术人员选择,包括数据库集群、服务器同步、全文索引(已有完整的中文支持)等等。大部分扩展功能,都可以通过简单的安装步骤直接使用。
这些强大的功能,足以使得Postgres服务器成为一个强大的数据管理和挖掘平台,或者一个功能丰富的业务开发平台。无论对与开发人员、维护人员、项目设计人员,还是最终用户,Postgres
总能提供更方便、强大和可靠的支持。

没有评论: