2006年的6月份,PostgreSQL庆祝了自己的10岁生日(2006年12月,PostgreSQL 8.2正式版发布)。并且在2006年11月份被《Linux Journal》杂志的评为“2006年度开源数据库编辑选择奖”。实际上,PostgreSQL一直在觊觎MySQL的“第一”位置,即使连从 PostgreSQL派生出来的EnterpriseSQL也是“理直气壮”。
PostgreSQL是一种复杂的对象——关系型数据库管理系统(ORDBMS),它的特性丰富、复杂,其中的一些特性甚至连商业数据库都不具备,其目标是要做超大型的面向对象关系型数据库系统。它支持 SQL 89和SQL 92标准。相对于MySQL,它支持事物处理,可以满足一些商业领域的数据操作需求。但是因为PostgreSQL使用的进程,与使用线程的MySQL相比,在不同线程之间的环境转换和访问公用的存储区域显然要比在不同的进程之间要快得多,因此PostgreSQL的运行速度明显降低。对于一些需要复杂业务操作,而对性能要求不是过于苛刻,同时期望系统的设计富于扩展性的用户而言,可以采用PostgreSQL数据库。
相比于MySQL在2006年所遭受的打击,PostgreSQL在过去的一年中除去一些Bug修复、产品发布和获得Sun公司支持外,可谓风平浪静。但在新的2007年中,PostgreSQL如果想步MySQL的后尘仍然需要努力。
首先,在应用平台上,PostgreSQL是运行在Cygwin模拟环境下,在Windows下运行没有MySQL稳定(MySQL在 WinNT/Win2000/WinXP下是一个服务)。广大的Windows环境阵地,应该成为PostgreSQL不能失去的一块阵地。
在经历了更为彻底的测试之后,PostgreSQL的事务支持能力在开源数据库中是值得称赞的。而对于开源数据库产品在商业上的关键应用,对于事务处理的支持是必不可少的。但是这并不能保证PostgreSQL就可以完全满足商业性数据处理需求,因为PostgreSQL并不完全适应24/7运行,而要求人为地隔一段时间运行一次VACUUM。所以,在新的一年中这方面加强自己的完善性。
对于无事务的MyISAM表处理,MySQL采用表锁定,一个长时间运行的查询很可能会长时间地阻碍对表的更新,而PostgreSQL不存在这样的问题。
客观而言,PostgreSQL的技术特性与商业应用是比较接近的。
PostgreSQL率先支持存储过程,这就可以保证在不增加数据库服务器负担的前提下,对以一些严肃的商业逻辑进行封装,还可以利用数据库服务器本身的内在机制对存储过程的执行进行优化。同时,存储过程的存在也避免了在网络上大量的原始的SQL语句的传输。
PostgreSQL支持视图,对于视图权限的合理使用可以提供行级别的权限,这是MySQL的权限系统所无法实现的。另外,它还支持触发器、约束、子查询、R-trees可扩展索引类型、UDF(用户定义函数)扩展。以PostgreSQL的这些技术性能,似乎没有理由去据MySQL之后,但是, MySQL的流行性和广泛性使得其拥有更多的用户群、更多的开发技术支持、更丰富的应用考验、着更好的商业支持、更完善的技术文档资料。拓展自己的应用范围,提高部署安装数量,是PostgreSQL在新的一段时间内的重中之重。