Antes de prosseguir, você deve conhecer os fundamentos da arquitetura do sistema PostgreSQL. Compreender como as partes do PostgreSQL interagem entre si torna esse capítulo um pouco mais claro.
No jargão de banco de dados, o PostgreSQL utiliza o modelo cliente-servidor. Uma sessão do PostgreSQL consiste nos seguintes processos (programas) cooperando entre si:
Um processo servidor, que gerencia os arquivos de banco de dados,
aceita conexões das aplicações cliente com o banco de dados e
executa ações no banco de dados em nome dos clientes.
O programa servidor de banco de dados se chama
postgres.
A aplicação cliente (aplicação do usuário, também chamada de frontend) que deseja realizar operações de banco de dados. As aplicações cliente podem ser de naturezas muito diversas: o cliente pode ser uma ferramenta no modo texto, uma aplicação gráfica, um servidor Web que acessa o banco de dados para mostrar páginas Web, ou uma ferramenta especializada para manutenção do banco de dados. Algumas aplicações cliente são fornecidas na distribuição do PostgreSQL, sendo, em sua maioria, desenvolvidas pelos usuários.
Como é típico na arquitetura cliente-servidor, o cliente e o servidor podem estar em hospedeiros diferentes. Nesse caso, se comunicam através de uma conexão de rede TCP/IP. Deve-se ter isso em mente, porque arquivos que podem ser acessados na máquina cliente podem não ser acessíveis pela máquina servidora (ou somente podem ser acessados usando um nome de arquivo diferente).
O servidor PostgreSQL pode lidar com
várias conexões simultâneas de clientes. Para esta finalidade é
iniciado um novo processo (“fork”) para cada conexão.
Desse momento em diante, o cliente e o novo processo servidor se
comunicam sem intervenção do processo postgres
original. Portanto, o processo servidor supervisor está sempre
executando aguardando por novas conexões dos clientes, enquanto os
clientes e seus processos servidores associados aparecem e desaparecem
(obviamente tudo isso é invisível para o usuário, mencionado
apenas para ficar completo).