pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
在开始之前,你应当理解 PostgreSQL 系统的 基本体系结构。理解 PostgreSQL 各部分的 交互方式会让下一章 更容易理解。用数据库术语 来说,PostgreSQL 使用简单的"每用户 一进程"客户端/服务器模型。一个 PostgreSQL 会话 由下列协作的 Unix 进程(程序)组成:
一个管理守护进程(postmaster),
用户的前端应用(例如 psql 程序),以及
一个或多个后端数据库服务器(postgres 进程本身)。
单个 postmaster 管理单个主机上给定的 数据库集合。这样的 数据库集合称为(数据库)集群。希望 访问集群中某个 数据库的前端 应用调用链接进该应用的 接口库(例如 libpq)。 该库通过网络把用户请求发送给 postmaster (图 7.1(a)), 后者再启动一个新的后端服务器 进程 (图 7.1(b))
图 7.1. 如何建立连接

并把前端进程连接到新服务器 (图 7.1(c))。 从那时起,前端进程和后端 服务器之间的通信不再需要 postmaster 干预。因此, postmaster 总是在运行并等待 连接请求,而前端和后端进程 则来来去去。libpq 库允许单个 前端对后端进程建立多个 连接。但 是,每个后端进程都是单线程进程,一次 只能执行一个查询;因此任何一条前端到后端 连接上的通信都是单线程的。
这一体系结构的一个含义是 postmaster 和后端总是运行在同一 台机器(数据库服务器)上,而前端 应用可以运行在任何地方。你应当牢记 这一点, 因为在客户端 机器上可以访问的文件在数据库服务器 机器上可能无法访问(或者只能用 不同的 路径名访问)。
你还应当知道 postmaster 和 postgres 服务器以 PostgreSQL “超级用户”的用户 ID 运行。注意 PostgreSQL 超级用户不必是任何 特定的用户(例如名为 postgres 的用户),虽然 许多系统就是这样安装的。而且, PostgreSQL 超级用户 绝对不应该是 Unix 超级用户 root!就周围的 Unix 系统而言, PostgreSQL 超级用户是一个普通的、无特权的 用户是最安全的。无论如何,与数据库 相关的所有文件都应属于这个 Postgres 超级 用户。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。