天天看点

PostgreSQL修炼之道:从小工到专家. 1.1什么是PostgreSQL

<b>1.1什么是postgresql</b>

<b>1.1.1postgresql概述</b>

postgresql数据库是目前功能最强大的开源数据库,支持丰富的数据类型(如json和jsonb类型、数组类型)和自定义类型。而且它提供了丰富的接口,可以很容易地扩展它的功能,如可以在gist框架下实现自己的索引类型等,它还支持使用c语言写自定义函数、触发器,也支持使用流行的语言写自定义函数,比如其中的pl/perl提供了使用perl语言写自定义函数的功能,当然还有pl/python、pl/tcl,等等。

<b>1.1.2postgresql的发展历史</b>

前身ingres:postgresql的前身是伯克利源于1977 年的 ingres 项目。这个项目是由著名的数据库科学家michael stonebraker领导的。1982年,michael stonebraker离开伯克利大学,把ingres商业化,使之成为 relational technologies 公司的一个产品。后来 relational

tecchnologies被computer associates(ca)收购。ingres 是一个非关系型的数据库。

伯克利的 postgres 项目:20世纪80年代,数据库系统中的一个主要问题是数据关系维护。在1985年michael stonebraker回到伯克利后,为了解决ingres中的数据关系维护问题,启动了一个后ingres(post-ingres)的项目,这就是 postgres 的开端。 postgres项目是由防务高级研究项目局(darpa)、陆军研究办公室(aro)、国家科学基金(nsf)

以及 esl公司共同赞助的。从1986年开始,michael stonebraker 教授发表了一系列论文,探讨了新的数据库的结构设计和扩展设计。第一个“演示性”系统在 1987 年便可使用了,并且在 1988 年的数据管理国际会议(acm-sigmod)上展出。1989年6月发布了版本 1给一些外部的用户使用。由于源代码维护的时间日益增加,占用了太多本应用于数据库研究的时间,为减少支持的负担,伯克利的postgres 项目在版本 4.2 时正式终止。

postgres95:在 1994 年,来自中国香港的两名伯克利的研究生andrew yu 和 jolly chen 向 postgres 中增加了现在sql 语言的解释器,将postgres改名为 postgres95,随后将 postgres95 源代码发布到互联网上供大家使用。它成为一个开放源码的postgres 代码的继承者。

postgresql6.x:到了 1996 年,很明显地看出“postgres95”这个名字已经经不起时间的考验。于是起了一个新名字 postgresql,为postgres与sql的缩写,即增加了sql功能的postgres的意思。同时版本号也沿用伯克利 postgres 项目的顺序,从6.0开始。

postgresql7.1:postgresql 7.1是继6.5版本之后又一个有巨大变化的版本,首先它引入了预写式日志的功能。这样,事务就拥有了完善的日志机制,可以提供更好的性能,还可以实现更优良的备份和灾难恢复的能力(比如联机热备份和宕机后的自动恢复)。其次是不再限制文本类型的数据段长度,这从很大程度上解决了postgresql大对象的问题。

postgres8.x:该版本可以在windows下运行,它具有一些新的特性。比如具有事务保存点功能、改变字段的类型、表空间、即时恢复(即时恢复允许对服务器进行连续的备份。既可以恢复到失败那个点,也可以恢复到以前的任意事务)等功能。并且开始支持perl 服务器端编程语言。

postgresql9.x:进入9.x版本,标识着postgresql进入了黄金发展阶段。2010年9月20日发布了postgresql

9.0,大大增强了复制的功能(replication),比如增加了流复制功能(stream replicaction)和hot standby功能。从9.0开始,可以很方便地搭建主从数据库。2011年9月12日发布了postgresql9.1,在该版本中增加了同步复制功能(synchronous replication);2012年9月10发布了postgresql9.2,增加了级连复制的功能。

<b>1.1.3 postgresql数据库的优势</b>

postgresql有以下优势:

postgresql数据库是目前功能最强大的开源数据库,它是最接近工业标准sql92的查询语言,并且正在实现新的功能以兼容最新的sql标准:sql2003。

稳定可靠:postgresql是唯一能做到数据零丢失的开源数据库。有报道称国外的部分银行也在使用postgresql数据库。

开源省钱: postgresql数据库是开源的、免费的,而且是bsd协议,在使用和二次开发上基本没有限制。

支持广泛:postgresql 数据库支持大量的主流开发语言,包括c、c++、perl、python、java、tcl,以及php等。

postgresql社区活跃:postgresql基本上每三个月推出一个补丁版本,这意味着已知的bug很快会被修复,有应用场景的需求也会及时得到响应。

<b>1.1.4 postgresql应用现状和发展趋势</b>

postgresql目前在国外很流行,特别是近几年使用postgresql数据库的公司越来越多。比如,日本电信(ntt)

大量使用postgresql替代oracle数据库,并且在 postgresql之上二次开发了postgres-xc,postgres-xc是对使用者完全兼容postgresql接口的share-nothing 架构的数据库集群。网络电话公司skype 也大量使用postgresql,并贡献了一些与postgresql数据库配套的开源软件:

pl/proxy:postgresql中的数据水平拆分软件 

pgq:使用postgresql的消息队列软件

londiste:用c语言实现的在postgresql数据库之间进行逻辑同步的软件

全球最大的crm软件服务提供商salesforce也开始使用postgresql,并招募了postgresql内核开发者tom lane。

2012年,美国联邦机构全面转向postgresql阵营;法国也正积极推动政府机构采用postgresql数据库,从而取代商业数据库。

在国内,越来越多的公司开始使用postgresql,如斯凯网络(股票代码:mobi)的后台数据库基本使用的都是postgresql数据库,去哪儿网(qunar.com)也大量使用了postgresql数据库。

主流的云服务提供商如亚马逊、阿里云的rds(关系型数据库服务)同样提供了postgresql的支持。