Учебник PostgreSQL 7.3.3
Всемирная группа разрабочиков PostgreSQL
Copyright © 1996-2002 by Всемирная Группа Разработчиков PostgreSQL
Перевёл с английского Виктор Вислобоков
1.2. Фундаментальные основы архитектуры
Перед тем как двигаться дальше, вы должны понимать основы системной
архитектуры PostgreSQL. Понимание того,
как взаимодействуют части PostgreSQL
сделает этот раздел понятней.
На жаргоне баз данных, PostgreSQL использует
модель клиент/сервер. Сессия PostgreSQL
состоит из следующих скооперированных процессов (программ):
Серверный процесс (backend), который управляет файлами баз данных, разрешает
подключения к базам данным от клиентских приложений и выполняет
действия над базой данных, затребованные клиентами. Программа-сервер
баз данных называется postmaster.
Клиентское приложения пользователя (frontend), которое хочет
выполнить операции с базой данных. Клиетнсткие приложения могут быть
очень разными: ориентированными на работу с текстом, с графикой,
с web-сервером или специальные инструменты обслуживания базы данных.
Некоторые клиентские приложения поставляются в составе дистрибутива
PostgreSQL, но подавляющее большинство
пишется пользователями.
Для клиент-серверных приложений обычно клиент и сервер находятся на
разных компьютерах. В этом случае, они соединяются по сети через
TCP/IP. Вы должны взять это на заметку, потому что файлы, которые
доступны на клиентской машине могут быть недоступны (или доступны,
используя другое имя файла) на машине-сервере.
Сервер PostgreSQL может управлять
несколькими конкурентыми (говоря проще одновременными -- прим. пер.)
соединениями от клиентов. Для этой цели, сервер запускает
(через системный вызов "fork") новый процесс для
каждого соединения. Начиная с момента запуска клиент и новый
серверный процесс общаются друг с другом без помощи первоначального
postmaster процесса. Таким образом, процесс
postmaster запущен всегда и ожидает соединений
от клиентов, после чего начинают работать клиент и соответствующий
ему серверный процесс. (Все это, разумеется, происходит незримо для
пользователя. Мы объясняем это здесь только для понимания того, как
все работает).