近期工作重点一直放在数据库设计方面,借助这次机会抽时间整理了一些我对Postgresql数据库的理解,同时也是对近段时间学习的一个总结。对于很多人而言或许没有听说过这个数据库,通常我们耳边伴随的都是Oracle、MysqL、Microsoft sql Server一类的关系型数据库。
但看下数据库排行榜,或许更能直观的认识到Postgresql数据库的强大与普遍
既然Postgresql排行这么高,那为何在国内名气不如其他数据库呢?这其中我认为重点在于两点:一、市场推广力度的问题;二、应用场景与国内大多数公司场景不符合造成的。详细等后续再进行分析。
Postgresql可以说是世界上可以获得的最先进的开放源码的数据库系统,它包括了丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备,比如 IP 类型和几何类型等;它提供了多版本并发控制,支持几乎所有 sql构件(包括子查询,事务和用户自定义类型和函数),并且可以获得非常广阔范围的(开发)语言绑定(包括 C,C++,Java,perl,tcl,和 python);Postgresql整体设计采用了C/S (client/server)结构,几乎支持了所有类型的数据库客户端接口。其次Postgresql因其开源特性,形成了一个庞大的开源服务团队,其相关的开源组件多种多样(tablefunc、dict_xsyn、fuzzystrmatch、pg_trgm、cube),能满足大多数场景下的需求。当然还有人称其是历史最悠久、实战经验最丰富的数据库系统,它的扩展包括自然语言解析、多维索引、地理查询、自定义数据类型等。
Postgresql数据库虽然整体非常强大,但也是存在缺陷的。从市场人员角度上来讲,之前在国内基本没有大规模的使用经验与架构设计,大多数停留在找个文档折腾下的程度。这直接导致了该数据库在国内市场的低迷,同样的MysqL数据库在这方面就较为领先了。MysqL在国内互联网行业积累了大量的高可用架构,分布式架构与灾备经验,但是Postgresql几乎为0,但放眼国际网,不难看出Postgresql的一片天地的。其次在去IOE方面Postgresql因语言支持的全面化、数据对接迁移、去Oracle难度相比其他都简单了很多,当然MysqL现在对去Oracle有更好的支持了。
其次在安全方面Postgresql事务符合ACID,确保你的提交是完全原子的、一致的、隔离的和持久的。
总结:
Postgresql是一个BSD协议的全开源数据库,其强大的查询优化器、丰富的数据类型提供了完善的关系数据存储(支持部分非关系数据库存储)。有丰富的开源cluster软件支持,可应用各种场景下的不同的需求。相比使用MysqL,其核心InnoDB一直被Oracle控制,无法达到最大化的发挥,其国内使用MysqL数据库作为产品核心库的大多数都是中小型项目,其原因虽是综合对比导致,但相比Postgresql在中大型项目中的如鱼得水,不得不说我更倾向于使用Postgresql。
原文链接:/postgresql/194223.html