- 数据库背景
由Michael Stonebraker教授领导的POSTGRES项目是由防务高级研究项目局(DARPA)、陆军研究办公室(ARO)、国家科学基金(NSF) 以及 ESL, Inc 共同赞助的。 POSTGRES的实现始于 1986 年。该系统最初的概念详见 The design of POSTGRES 。 最初的数据模型定义见 The POSTGRES data model 。当时的规则系统设计在The design of the POSTGRES rules system里描述。存储管理器的理论基础和体系结构在 The design of the POSTGRES storage system 里有详细描述。
- 数据库发展
在 1987 年便可使用了, 并且在 1988 年的ACM-SIGMOD大会上展出。在 1989 年6月发布了版本 1(见 The implementation of POSTGRES )给一些外部的用户使用。
在1990年6月发布了使用新规则系统的版本 2,为了回应用户对第一个规则系统( A commentary on the POSTGRES rules system )的批评。
版本 3 在1991年出现,增加了多存储管理器的支持, 并且改进了查询执行器、重写了规则系统。直到Postgres95发布前(见下文)的后续版本大多把工作都集中在移植性和可靠性上。POSTGRES已经被用于实现很多不同的研究和生产应用。这些应用包括: 一个财务数据分析系统、一个喷气引擎性能监控软件包、一个小行星跟踪数据库、一个医疗信息数据库和一些地理信息系统。POSTGRES还被许多大学用于教学用途。最后,Illustra Information Technologies(后来并入Informix, 而Informix现在被IBM所拥有) 拿到代码并使之商业化。
在 1992 年末POSTGRES成为Sequoia 2000科学计算项目的主要数据管理器。
在 1993 年间,外部用户社区的数量几乎翻番。随着用户的增加, 用于源代码维护的时间日益增加并占用了太多本应该用于数据库研究的时间,为了减少支持的负担,伯克利的POSTGRES项目在版本 4.2 时正式终止。
在 1994 年,Andrew Yu 和 Jolly Chen 向POSTGRES中增加了 SQL 语言的解释器。并随后用新名字Postgres95将源代码发布到互联网上供大家使用, 成为最初POSTGRES伯克利代码的开源继承者,Postgres95的源代码都是完全的 ANSI C,而且代码量减少了25%。许多内部修改提高了性能和可维护性。Postgres95的1.0.x版本在进行 Wisconsin Benchmark 测试时大概比POSTGRES的版本4.2 快 30-50%。
到了 1996 年, 很明显"Postgres95"这个名字已经跟不上时代了。于是我们选择了一个新名字PostgreSQL来反映与最初的POSTGRES和最新的具有SQL能力的版本之间的关系。同时版本号也从 6.0 开始, 将版本号放回到最初由伯克利POSTGRES项目开始的序列中。
- 数据库优缺点
![](https://i-blog.csdnimg.cn/blog_migrate/c46d054af7fb99b025debb1f28eb6f13.png)
(1)Oracle是大型数据库,Oracle市场占有率达40%,oracle 能在所有主流平台上运行,oracle 安全性高,获得最高认证级别的ISO标准认证,Oracle 性能高,同样Oracle的价格非常高。Oracle安装所用的空间也是很大的Oracle有3G左右,对硬件要求很高,且使用的时候Oracle占用特别大的内存空间和其他机器性能。
(2)sql server 是Microsoft(微软)公司推出的数据库,SQL Server 只能windows上运行,使用最方便,开发最方便,运维最方便,但没有丝毫开放性,操作系统系统稳定对数据库十分重要,不开源,并且安全系数没有Oracle高,sql server没有获得任何安全证书,收费比oracer稍微低一点
(3)MySQL作为一款免费、开源的数据库,Mysql是中小型数据库,
软件体积小,安装使用简单,并且易于维护,安装及维护成本低,安装完后才152M,
性能卓越,服务稳定,很少出现异常宕机;
mysql历史悠久,社区及用户非常活跃,遇到问题,可以寻求帮助;并且mysql开放源代码且无版权制约,自主性及使用成本低;
(4)PostgreSQL标榜自己是世界上最先进的开源数据库。PostgreSQL的一些粉丝说它能与Oracle相媲美,而且没有那么昂贵的价格和傲慢的客服。最初是1985年在加利福尼亚大学伯克利分校开发的,作为Ingres数据库的后继。PostgreSQL是完全由社区驱动的开源项目。它提供了单个完整功能的版本,而不像MySQL那样提供了多个不同的社区版、商业版与企业版。PostgreSQL基于自由的BSD/MIT许可,组织可以使用、复制、修改和重新分发代码,只需要提供一个版权声明即可。
PostgreSQl配合的开源软件很多,有很多分布式集群软件,如pgpool、pgcluster、slony、plploxy等等,很容易做读写分离、负载均衡、数据水平拆分等方案 ;
PostgreSQl不仅仅是关系型数据库 除了存储正常的数据类型外,还支持存储:
array,不管是一位数组还是多为数组均支持
json(hStore)和jsonb,相比使用text存储接送要高效很多。
优点:
PostgreSQL数据库是目前功能最强大的开源数据库,它是最接近工业标准SQL92的查询语言,至少实现了SQL:2011标准中要求的179项主要功能中的160项(注:目前没有哪个数据库管理系统能完全实现SQL:2011标准中的所有主要功能)。
稳定可靠:PostgreSQL是唯一能做到数据零丢失的开源数据库。目前有报道称国内外有部分银行使用PostgreSQL数据库。
开源省钱: PostgreSQL数据库是开源的、免费的,而且使用的是类BSD协议,在使用和二次开发上基本没有限制。
支持广泛:PostgreSQL 数据库支持大量的主流开发语言,包括C、C++、Perl、Python、Java、Tcl以及PHP等。
PostgreSQL社区活跃:PostgreSQL基本上每3个月推出一个补丁版本,这意味着已知的Bug很快会被修复,有应用场景的需求也会及时得到响应。
- PostgreSQL应用现状和发展趋势
PostgreSQL目前在国外很流行,特别是近几年,使用PostgreSQL数据库的公司越来越多。
日本电报电话公司(NTT)大量使用PostgreSQL替代Oracle数据库,并且在 PostgreSQL之上二次开发了Postgres-XC,Postgres-XC是对使用者完全兼容PostgreSQL接口的share-nothing 架构的数据库集群。
亚信科技(AsiaInfo)在Postgres-XC的基础上开发了AntDB数据库,AntDB是一款面向金融、电信、政务、安全、能源等行业的分布式事务型关系数据库产品。它具备集群自动高可用、秒级在线扩缩容、异地容灾、SQL语句级自定义分片、分布式事务和MVCC等功能,且具有强大的Oracle兼容性。AntDB完全兼容PostgreSQL数据库。
腾讯在PosgreSQL-XC基础上开发了TBase分布式数据库。相较于Postgres-XC,其稳定性得到了较大提高,同时TBase通过在内核中创造性地引入 GROUP 概念,提出了双Key分布策略,有效地解决了数据倾斜的问题;它根据数据的时间戳,将数据分为冷数据和热数据,分别存储于不同的存储设备中,有效地解决了存储成本的问题。
网络电话公司Skype也大量使用了PostgreSQL,并贡献了如下与PostgreSQL数据库配套的开源软件。
PL/Proxy:PostgreSQL中的数据水平拆分软件。
pgQ:使用PostgreSQL的消息队列软件。
Londiste:用C语言实现的在PostgreSQL数据库之间进行逻辑同步的软件。
全球最大的CRM软件服务提供商Salesforce也开始使用PostgreSQL,并招募了PostgreSQL内核开发者Tom lane。
著名的图片分享网站Instagram也大量使用了PostgreSQL。
2012年,美国联邦机构全面转向PostgreSQL阵营;法国也正积极推动政府机构采用PostgreSQL数据库来取代商业数据库。
在国内,越来越多的公司开始使用PostgreSQL,如斯凯网络的后台数据库使用的基本都是PostgreSQL数据库,去哪儿网(qunar.com)和平安科技也大量地使用了PostgreSQL数据库。
主流的云服务提供商如亚马逊、阿里云、腾讯云、华为云也都提供了PostgreSQL的云数据库服务。
- 数据库使用场景
企业数据库:如 ERP、交易系统、财务系统涉及资金、客户等信息,数据不能丢失且业务逻辑复杂,选择 PostgreSQL 作为数据底层存储,一是可以帮助您在数据一致性前提下提供高可用性,二是可以用简单的编程实现复杂的业务逻辑。
含 LBS 的应用:大型游戏、O2O 等应用需要支持世界地图、附近的商家,两个点的距离等能力,PostGIS 增加了对地理对象的支持,允许您以 SQL 运行位置查询,而不需要复杂的编码,帮助您更轻松理顺逻辑,更便捷的实现 LBS,提高用户粘性。
数据仓库和大数据:PostgreSQL 更多数据类型和强大的计算能力,能够帮助您更简单搭建数据库仓库或大数据分析平台,为企业运营加分。
建站或 App:PostgreSQL 良好的性能和强大的功能,可以有效的提高网站性能,降低开发难度。
- 数据使用方法
因为完全支持SQL标准使用起来和oracle和mysql区别不大,详见下面资源:
PostgreSQL 10.1 手册 在线手册:http://www.runoob.com/manual/PostgreSQL/
离线手册 - PDF 版本: https://pan.baidu.com/s/1h1J14i8tzJUY3p9yyeW0mA, 提取码: xs7r。
离线手册 - CHM 版本: https://pan.baidu.com/s/1h1J14i8tzJUY3p9yyeW0mA, 提取码: tq4z。