↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 6.3
历史版本。 PostgreSQL 6.3 已结束支持。 请参阅 当前版本手册.

第 49 章 架构

49.1. Postgres 体系结构概念

在继续之前,你应该先了解 Postgres 的基本体系结构。理解 Postgres 各部分之间如何交互,会让下一章的内容更加清晰。用数据库行话来说,Postgres 使用一种简单的“每用户一个进程”客户端/服务器模型。一个 Postgres 会话由下列相互协作的 UNIX 进程(程序)组成:

  • 一个监督守护进程(postmaster),

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

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

单个 postmaster 管理同一台主机上给定的一组数据库。这样一组数据库称为一个安装(installation)或站点(site)。希望访问某个安装中特定数据库的前端应用程序调用相应的库。该库把用户请求通过网络发送给 postmaster(

连接是如何建立的
(a)),后者再启动一个新的后端服务器进程(
连接是如何建立的
(b))

图 49.1. 连接是如何建立的

连接是如何建立的


并把前端进程连接到这个新的服务器(

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

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.