1.5 PostgreSQL对象-关系数据库系统软件

PostgreSQL 软件许可开放,人们可以任何目的使用、复制、修改和重新发布这套软件以及文档,不需要任何费用与签订任何书面协议。本节以PostgreSQL 11版本为例,介绍PostgreSQL软件的基本组成及其管理对象。

扫码预习

1.5.1 PostgreSQL软件的获得

在PostgreSQL软件安装前,需要从PostgreSQL官方网站下载软件安装包。该网站提供了PostgreSQL数据库软件的源码版本安装包和编译版本安装包。一般用户下载二进制编译版本软件安装包即可。此外,用户需要根据本机运行的操作系统,选择下载相应的发布软件包,下载页面如图1-12所示。

在选定操作系统版本后,还需进一步选定PostgreSQL软件的安装版本。例如,在选定的64位Windows平台版本后,再选定PostgreSQL 11版本。当下载好安装软件包后,即可在操作系统下进行安装。

图1-12 PostgreSQL软件下载页面

1.5.2 PostgreSQL软件的功能程序

PostgreSQL 数据库管理系统软件由客户端功能程序和服务器端功能程序组成,采用客户/服务器结构进行通信。客户端程序提供用户对数据库服务器的管理操作工具,同时也提供应用程序访问数据库接口,如ODBC标准接口、JDBC标准接口。服务器端程序提供数据库服务处理,实现 DBMS 功能。客户端程序通过请求/响应的网络协议连接访问数据库服务器。在每次客户端程序连接访问数据库服务器时,数据库服务器均为客户端程序新建一个服务器进程,该进程对应于客户端用户对数据库的访问处理。PostgreSQL数据库服务器可以同时支持不同运行环境的客户端程序访问数据库,图1-13给出多个客户端程序并发访问数据库服务器程序的结构。

图1-13 多个客户端程序并发访问数据库服务器程序的结构

在上面的PostgreSQL数据库系统中,一个客户端程序运行在UNIX环境,另一个客户端程序运行在Linux环境,还有一个客户端程序运行在Windows环境。它们均通过请求/响应网络协议连接访问PostgreSQL数据库服务器。在客户端程序访问数据库服务器时,数据库服务器将对每个客户端连接请求建立一个新的 Postgre 进程提供服务,这样数据库服务器可支持多个客户端程序的并发访问。

PostgreSQL数据库软件包含的客户端程序和服务器端程序如下。

1.PostgreSQL客户端程序

clusterdb:建立PostgreSQL数据库集群。

createdb:创建一个新PostgreSQL数据库。

createlang:安装一个PostgreSQL过程语言。

createuser:创建一个新的PostgreSQL用户账户。

dropdb:删除一个PostgreSQL数据库。

droplang:删除一个PostgreSQL过程语言。

dropuser:删除一个PostgreSQL用户账户。

ecpg:嵌入的SQL C预处理器。

pg_basebackup:做一个PostgreSQL集群的基础备份。

pg_config:检索已安装的PostgreSQL版本信息。

pg_dump:将一个PostgreSQL数据库转存到一个脚本程序或者其他归档文件中。

pg_dumpall:将一个PostgreSQL数据库集群转储到一个脚本程序中。

pg_isready:检查PostgreSQL服务器的连接状态。

pg_receivexlog:PostgreSQL集群中的流事务日志。

pg_restore:从pg_dump创建的备份文件中恢复PostgreSQL数据库。

psql:PostgreSQL交互终端。

reindexdb:重建PostgreSQL数据库索引。

vacuumdb:收集垃圾并分析PostgreSQL数据库。

2.PostgreSQL服务器端程序

initdb:创建一个新的PostgreSQL数据库簇(Cluster)。

pg_controldata:显示一个PostgreSQL数据库集群的控制信息。

pg_ctl:初始化、启动、停止控制PostgreSQL服务器。

pg_resetxlog:重置一个数据库集群的预写日志及其他控制内容。

postgres:数据库服务器服务进程。

postmaster:数据库服务器守护进程。

1.5.3 PostgreSQL数据库的管理工具

实现PostgreSQL数据库管理的工具有不少,既有开源工具,也有商品工具。这里只介绍两种使用最广泛的PostgreSQL开源数据库管理工具。

1.psql命令行工具

psql是一个PostgreSQL内置的客户端工具,该工具允许用户通过执行命令,以交互式方式实现PostgreSQL数据库管理。此外,该工具也允许用执行shell脚本程序实现批量命令自动化处理。该工具的运行界面如图1-14所示。

图1-14 psql工具的运行界面

系统管理员使用psql命令行工具执行不同操作命令,可以完成所有数据库管理工作,但前提是必须熟悉操作命令及其参数格式。

2.pgAdmin图形界面管理工具

pgAdmin是一个广泛使用的PostgreSQL图形界面管理工具,该工具可运行在多种操作系统平台,如Windows、Linux、FreeBSD、macOS和Solaris等。pgAdmin 软件是与 PostgreSQL软件分开发布的,需要从pgAdmin官网下载。pgAdmin工具支持连接多个PostgreSQL数据库服务器。不论PostgreSQL数据库服务器是什么版本,pgAdmin工具均可连接访问与管理。pgAdmin 4的运行界面如图1-15所示。

图1-15 pgAdmin 4的运行界面

当使用pgAdmin数据库管理工具登录连接到PostgreSQL数据库服务器后,进入数据库服务器管理界面后,便可对数据库服务器进行管理,如图1-16所示。

图1-16 管理界面

在pgAdmin工具界面中,除了对数据库服务器中的各个数据库进行管理外,还可对数据库服务器的角色与权限、表空间、运行性能等进行管理;同时,也可以进行数据库编程开发,实现数据访问操作与功能处理。

1.5.4 PostgreSQL数据库对象

在一个PostgreSQL数据库中,可以创建多种数据库对象。这里介绍几种基本数据库对象。

1.schema

schema是一种构成数据库下级逻辑结构的数据库对象,用于按用户或按应用分类组织其他数据库对象(如表、视图、序列、函数、触发器等对象)。通常一个数据库由多个 schema对象组成,包括系统默认创建的schema对象和用户自己创建的schema对象。当创建一个新的PostgreSQL数据库时,系统自动为其创建一个名为public的schema对象。

2.表

表(Table)是一种用户组织存储数据的数据库对象。在 PostgreSQL 数据库中,表首先属于某个schema,而schema又属于某个数据库,其他数据库对象与表对象一样,从而构成了PostgreSQL数据库的3层逻辑结构。在PostgreSQL数据库中,表对象可以有3种类型:关系表、继承表、外部表。从中可以看出 PostgreSQL 数据库作为对象-关系数据库与关系数据库不同之处。

3.视图

视图(View)是一种基于虚拟表操作数据的数据库对象。与大多数关系数据库一样, PostgreSQL数据库使用视图用于简化查询逻辑,当然也可使用视图更新基本表中的数据。此外,PostgreSQL数据库还支持物化视图,可通过缓存来实现快速的数据库查询处理。

4.序列

序列(Sequence)是一种为代理键列提供自动增量序列值的数据库对象。与Oracle数据库一样,PostgreSQL数据库也可创建序列对象。用户可以自定义序列的初始值、增量值及序列范围。此外,PostgreSQL数据库还支持多个表共享使用相同序列对象。

5.函数

函数(Function)是一种使用内置编程语言编写数据库访问操作功能程序的数据库对象。PostgreSQL数据库函数执行结果可以是一个标量值,也可以是查询结果元组集。与其他关系数据库不同的是,PostgreSQL数据库没有单独的存储过程对象,而是通过函数来实现存储过程功能。

6.触发器

触发器(Trigger)是一种事件触发自动执行数据库访问操作功能程序的数据库对象。PostgreSQL数据库与其他关系数据库一样,均支持多种类型触发器,如插入触发器、修改触发器、删除触发器,同时还可设置触发级别(语句级、行级),以及触发时机(修改前触发、修改后触发)。

课堂讨论——本节重点与难点知识问题

1.PostgreSQL是什么类型的数据库系统?它有哪些基本功能?

2.PostgreSQL数据库系统采用哪种软件结构?

3.PostgreSQL数据库软件的客户端程序有哪些?

4.PostgreSQL数据库软件的服务器端程序有哪些?

5.PostgreSQL数据库管理工具主要有哪些?

6.PostgreSQL数据库中可以创建哪些数据库对象?