用户的前端应用(如,psql程序),和
一个或者多个后端数据库servers (postgres进程本身).
一个 postmaster 管理某台主机上的一定的数据库集合.这个集合叫做一次安装或节点.如果某个前端应用想访问某个节点中的某一数据库,它就会进行库(函数)调用.库把用户的请求通过网络发给 postmaster
(联接是如何建立的),postmaster接着便启动一个新的后端服务进程。
libpq 库能够让一个前端与后端做多个联接.然而,前端应用仍然是一个单线程的进程.多线程的前/后端联接现在的 libpq 仍然不支持.这种体系结构表明 postmaster 和后端总是跑在同一台机器上(数据库服务器),而前端应用可以在任何地方运行.必须牢记这一点,因为在客户机上用户可以访问的文件在数据库服务器上不一定可以访问(或者只能通过不同的文件名来访问).
同时我们还应该注意 postmaster 和 postgres 服务进程是以Postgres"超级用户"的用户标识(user-id)运行.要注意的是Postgres超级用户不一定非要是一个特殊的用户(如,一个叫 "postgres"的用户).另外,Postgres 超级用户决不能是UNIX 超级用户("root")!在任何情况下,所有与数据库有关的文件都属于Postgres 超级用户.