1.3 什么是PostgreSQL
PostgreSQL是一个包含关系模型和支持SQL标准查询语言的DBMS(数据库管理系统)。PostgreSQL非常先进和可靠,性能非常高,并且它免费且开源。
1.3.1 客户机-服务器软件
主从式架构(Client-Server Model)或客户端-服务器(Client/Server)结构(简称C/S结构),是一种网络架构,通常在该网络架构下软件分为客户端(Client)和服务器(Server)。
服务器是整个应用系统资源的存储与管理中心。多个客户端则各自处理相应的功能,共同实现完整的应用。在客户/服务器结构中,客户端用户的请求被传送到数据库服务器,数据库服务器进行处理后将结果返回给用户,从而减少了网络数据传输量。
用户使用应用程序时,首先启动客户端通过有关命令告知服务器进行连接以完成各种操作,而服务器则按照此请示提供相应的服务。每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求。
这种系统的特点就是客户端和服务器程序不在同一台计算机上运行,这些客户端和服务器程序通常归属不同的计算机。
主从式架构通过不同的途径可以用于很多不同类型的应用程序,比如现在人们最熟悉的在因特网上用的网页。例如,当顾客想要在当当网站上买书的时候,电脑和网页浏览器就被当作一个客户端,组成当当网的电脑、数据库和应用程序就被当作服务器。当顾客的网页浏览器向当当网请求搜寻数据库相关的图书时,当当网服务器从当当网的数据库中找出所有该类型的图书信息,结合成一个网页,再发送回顾客的浏览器。服务器端一般使用高性能的计算机,并配合使用不同类型的数据库,比如Oracle、Sybase或者是PostgreSQL等;客户端需要安装专门的软件,比如浏览器。
1.3.2 PostgreSQL发展历程
PostgreSQL的发展历程可以追溯到1986年,加州大学伯克利分校(University of California at Berkeley,UCB)开发一个名叫Postgres的关系数据库服务器,这份代码被Illustra公司拿去发展成一个商业化的产品。
到了1994年,Andrew Yu和Jolly Chen向Postgres中增加了SQL语言的解释器,命名为Postgres95,并随后将其源代码发布到互联网上供大家使用,成为一个开放源码的数据库管理系统。Postgres95所有源代码都是完全的ANSI C,代码量减少了25%,并且有许多内部修改以利于提高性能和代码的维护性。
到了1996年,Postgres95名称被更改为PostgreSQL,表示它支持查询语言标准,同时版本号也重新从6.0开始。Postgres9版本的开发重点放在标明和理解现有的后端代码的问题上。PostgreSQL将重点转到了一些有争议的特性和功能上面,当然各个方面的工作同时都在进行。
自从版本6.0之后,出现了很多后续发行,在系统中也出现了很多改进。在2005年1月19日,版本8.0发行。由8.0后,PostgreSQL以原生(Native)的方式执行于Windows视窗系统。
2011年9月12日,PostgreSQL全球开发组宣布业界领先的开源关系数据库PostgreSQL 9.1版发布,该版本增加了很多创新性的技术、强大的可扩展性以及类似同步复制、最近相邻索引和外部数据封装等功能。
2016年9月29日,PostgreSQL全球开发组发布PostgreSQL 11版本,该版本允许用户纵向扩展和横向扩展来提高数据库的查询性能,同时增加了并行查询、同步复制改进、短语搜索等功能,从而使复制、聚合、索引、排序等过程变得更加高效,使其性能和可用性得到极大提高。
2018年10月18日,PostgreSQL全球开发组发布PostgreSQL 11版本。作为世界上先进的开源关系型数据库,PostgreSQL 11是迄今为止的最新版本。PostgreSQL 11重点对系统性能进行提升,特别是在对大数据集和高计算负载的情况下进行了增强。尤其是PostgreSQL 11对表分区的功能进行了重大的改变和提升,增加了内置事务管理的存储过程,提升了并行查询能力和并行数据定义能力,也引入了JIT编译来加速查询中表达式的计算执行。
1.3.3 PostgreSQL的优势
PostgreSQL的主要优势如下:
(1)价格:PostgreSQL对多数个人用户来说是免费的。
(2)速度:运行速度快。相比另外一个开源数据库MySQL而言,PostgreSQL在复杂数据查询方面的速度是相当快的。另外,PostgreSQL是多进程的,在并发较高的时候,PostgreSQL的总体处理性能比普通的数据库管理系统要快许多。
(3)容易使用:与其他大型数据库的设置和管理相比,其复杂程度较低,易于学习。
(4)可移植性:能够工作在众多不同的系统平台上,例如Windows、Linux、UNIX和Mac OS等。
(5)丰富的接口:提供了用于C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl的API。
(6)支持查询语言:PostgreSQL可以利用标准SQL语法编写支持ODBC(开放式数据库连接)的应用程序。
(7)相互配合的开源软件较多:有很多分布式集群软件,如pgpool、pgcluster、slony和plploxy等,很容易做读写分离、负载均衡和数据水平拆分等方案,而这在其他的数据库管理系统中很难实现。
(8)安全性和连接性:十分灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码安全。由于PostgreSQL是网络化的,因此可以在因特网上的任何地方访问,提高数据共享的效率。