Documentação do PostgreSQL 8.0.0 | ||||
---|---|---|---|---|
Anterior | Início | Capítulo 41. Visão geral da estrutura interna do PostgreSQL | Fim | Próxima |
O PostgreSQL é implementado utilizando um modelo cliente/servidor simples de "um processo por usuário". Neste modelo existe um processo cliente conectado a exatamente um processo servidor. Como não se sabe adiantadamente quantas conexões serão realizadas, é utilizado um processo mestre que cria um novo processo servidor cada vez que uma conexão é requisitada. Este processo mestre se chama postmaster, e fica atendendo a chegada de novas conexões na porta TCP/IP especificada. Sempre que é detectada a requisição de uma nova conexão, o processo postmaster cria um novo processo servidor chamado postgres. Os servidores tarefa (processos postgres) se comunicam entre si utilizando semáforos e memória compartilhada, para garantir a integridade dos dados nos acessos simultâneos aos dados.
O processo cliente pode ser qualquer programa que compreenda o protocolo do PostgreSQL, descrito no Capítulo 43. Muitos clientes são baseados na biblioteca libpq da linguagem C, mas existem várias implementações independentes do protocolo, como o driver de JDBC da linguagem Java.
Uma vez estabelecida a conexão, o processo cliente pode enviar comandos para o servidor (backend). O comando é transmitido utilizando texto puro, ou seja, não existe análise feita no cliente (frontend). O servidor analisa o comando, cria o plano de execução, executa o plano, e retorna as linhas obtidas para o cliente transmitindo-as através da conexão estabelecida.