已结束支持的版本: 6.3
历史版本。 PostgreSQL 6.3 已结束支持。 请参阅 当前版本手册.
第 49 章 架构
49.1. Postgres 体系结构概念
在继续之前,你应该先了解 Postgres 的基本体系结构。理解 Postgres 各部分之间如何交互,会让下一章的内容更加清晰。用数据库行话来说,Postgres 使用一种简单的“每用户一个进程”客户端/服务器模型。一个 Postgres 会话由下列相互协作的 UNIX 进程(程序)组成:
一个监督守护进程(postmaster),
用户的前端应用程序(例如 psql 程序),以及
一个或多个后端数据库服务器(postgres 进程本身)。
单个 postmaster 管理同一台主机上给定的一组数据库。这样一组数据库称为一个安装(installation)或站点(site)。希望访问某个安装中特定数据库的前端应用程序调用相应的库。该库把用户请求通过网络发送给 postmaster(
(a)),后者再启动一个新的后端服务器进程(
图 49.1. 连接是如何建立的

libpq 库允许单个前端与多个后端进程建立多条连接。但是,前端应用程序仍然是单线程进程。libpq 目前不支持多线程的前端/后端连接。这种体系结构的一个含义是:postmaster 和后端总是运行在同一台机器(数据库服务器)上,而前端应用程序可以运行在任何地方。你应当牢记这一点,因为在客户端机器上可以访问的文件,在数据库服务器机器上可能无法访问(或者只能用不同的文件名访问)。你还应当知道,postmaster 和
postgres 服务器以 Postgres
“超级用户”的用户 id 运行。注意,Postgres 超级用户并不需要是一个特殊的用户(例如名为“postgres”的用户)。而且,Postgres 超级用户绝对不应该是 UNIX 超级用户“root”!无论如何,与某个数据库相关的所有文件都应当属于这个 Postgres 超级用户。