↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本PostgreSQL 7.2 已于 2007 年 2 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

第 10 章 体系结构

10.1. PostgreSQL 体系结构概念 #

在开始之前,你应当理解 PostgreSQL 系统的 基本体系结构。理解 PostgreSQL 各部分的 交互方式会让下一章 更容易理解。用数据库术语 来说,PostgreSQL 使用简单的"每用户 一进程"客户端/服务器模型。一个 PostgreSQL 会话 由下列协作的 Unix 进程(程序)组成:

  • 一个管理守护进程(postmaster),

  • 用户的前端应用(例如 psql 程序),以及

  • 一个或多个后端数据库服务器(postgres 进程本身)。

单个 postmaster 管理单个主机上给定的 数据库集合。这样的 数据库集合称为(数据库)集群。希望 访问集群中某个 数据库的前端 应用调用链接进该应用的 接口库(例如 libpq)。 该库通过网络把用户请求发送给 postmaster (图 10.1(a)), 后者再启动一个新的后端服务器 进程 (图 10.1(b))

图 10.1. 如何建立连接

如何建立连接


并把前端进程连接到新服务器 (图 10.1(c))。 从那时起,前端进程和后端 服务器之间的通信不再需要 postmaster 干预。因此, postmaster 总是在运行并等待 连接请求,而前端和后端进程 则来来去去。libpq 库允许单个 前端对后端进程建立多个 连接。但 是,每个后端进程都是单线程进程,一次 只能执行一个查询;因此任何一条前端到后端 连接上的通信都是单线程的。

这一体系结构的一个含义是 postmaster 和后端总是运行在同一 台机器(数据库服务器)上,而前端 应用可以运行在任何地方。你应当牢记 这一点, 因为在客户端 机器上可以访问的文件在数据库服务器 机器上可能无法访问(或者只能用 不同的 路径名访问)。

你还应当知道 postmaster 和 postgres 服务器以 PostgreSQL “超级用户”的用户 ID 运行。注意 PostgreSQL 超级用户不必是任何 特定的用户(例如名为 postgres 的用户),虽然 许多系统就是这样安装的。而且, PostgreSQL 超级用户 绝对不应该是 Unix 超级用户 root!就周围的 Unix 系统而言, PostgreSQL 超级用户是一个普通的、无特权的 用户是最安全的。无论如何,与数据库 相关的所有文件都应属于这个 Postgres 超级 用户。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。