Frontend/Backend Protocol
Postgres foloseste un protocol de mesaje de baza pentru comunicarea intre frontend si backend.
Protocolul este implementat peste TCP/IP si deasemenea pe sochetii Unix.
Cele trei componente majore ale Postgresului sunt: frontend (ruleaza pe client), postmasterul si backendul (ruleaza pe server).
Postmasterul si backendul au roluri diferite dar ele pot fi implementate de acelasi executabil.
Un frontend trimite un pachet de pornire la postmaster. Acesta include numele userului si a bazei de date la care userul vrea sa se conecteze.
Postmasterul foloseste aceste informatii consultand, in plus, si fisierul pg_hba.conf determinand daca informatiile de autentificare cu frontendul corespund.
Odata ce aceste informatii de autentificare sunt validate de catre Postmaster acesta raspunde frontendului ca are permisiunea si-l paseaza backendului.
Interogarile si rezultatele schimbate intre frontend si backend sunt comunicatii de natura secventiala. Postmasterul nu mai ia parte in continuare la comunicatie.
Cand frontendul doreste sa se deconecteze, acesta trimite un pachet de inchidere a conecsiunii fara asteptarea raspunsului de la backend.
Pachetele sunt trimise sub forma de strimuri de date.
Primul bit determina ce ar trebui sa se astepte de la restul pachetului.
In sectiunea de protocol se poate vorbi de patru tipuri diferite de mesaje depinzand de stadiul conecsiunii si anume: autentificare, interogare, apelari de functii, si terminatori.
Autentificare
Frontendul trimite pachetul Startup, Postmasterul il foloseste si consulta continutul fisierului pg_hba.conf determinand metoda de autentificare a frontendului ce trebuie folosita.
Interogare
Odata ce autentificarea este facuta cu succes, caz in care postmaster raspunde cu mesajul AutentificationOk, acesta da legatura la backend.
Frontendul trimite mesaje de interogare la backend. Raspunsul trimis de backend depinde de continutul interogarii.
Apelari de functii
Frontendul trimite mesaje de apelare de functii catre backend. Raspunsul trimis de catre backend depinde de rezultatul functiei apelate.
Terminare
Frontendul trimite un mesaj terminare si inchide conecsiunea imediat.
PostgreSQL Programers Guide Frontend/Backend Protocol Chapter 22 by Phil Thompson
Un exemplu de aplicatie front/end este psql. Acesta da posibilitateade atiparii interactiv interogari catre postgres si de a vedea rezultatele interogarii.
Redhat 5.1 man psql