在我们开始讲解之前,我们应该先了解 PostgreSQL 系统的基本体系. 理解 PostgreSQL 的部件之间的相互关系 将会使本节显得更清晰一些.
在数据库术语里,PostgreSQL 使用一种客户端/服务器的模式.一次 PostgreSQL 会话由下列相关的进程(程序)组成∶
一个服务器进程,它管理数据库文件,接受来自客户端应用与 数据库的联接,并且代表客户端在数据库上执行操作. 数据库服务器程序叫做 postmaster.
那些需要执行数据库操作的用户的客户端(前端)应用. 客户端应用可能本身就是多种多样的∶它们可以是一个字符界面的工具, 也可以是一个图形界面的应用,或者是一个通过访问数据库来显示网页的 web 服务器,或者是一个特殊的数据库管理工具. 一些客户端应用是和 PostgreSQL 发布一起提供的,但绝大部分是用户开发的.
和典型的客户端/服务器应用(C/S应用)一样,这些客户端和服务器 可以在不同的主机上.这时它们通过 TCP/IP 网络联接通讯. 你应该记住的是,在客户机上可以访问的文件未必能够在数据库服务器 机器上访问(或者只能用不同的文件名进行访问).
PostgreSQL 服务器可以处理来自 客户端的多个并发请求.因此,它为每个请求启动("fork") 一个新的进程.从这个时候开始,客户端和新服务器进程就不再经过 最初的 postmaster 进程的干涉进行通讯. 因此, postmaster 总是在运行,等待着联接, 而客户端和相关联的服务器进程则是起起停停.(当然,用户是肯定看不到 这些事情的.我们在这儿谈这些主要是为了完整.)