Guia del Programador de PostgreSQL | ||
---|---|---|
Anterior | Revisi�n de las caracter�sticas internas de PostgreSQL | Siguiente |
Postgres est� implementado como un simple modelo cliente/servidor a "proceso por usuario". En este modelo hay un proceso cliente conectado a exactamente un proceso servidor. Como nosotros no conocemos per se cuantas conexiones se har�n, utilizaremos un proceso master que lanza un nuevo proceso servidor para cada conexi�n que se solicita. Este proceso master se llama postmaster y escucha en un puerto TCP/IP espec�fico a las conexiones entrantes. Cada vez que se detecta un requerimiento de conexi�n, el proceso postmaster lanza un nuevo proceso servidor llamado postgres. Las tareas de servidor (los procesos postgres) se comunican unos con otros utilizando sem�foros y memoria compartida (shared memory) para asegurar la integridad de los datos a trav�s de los accesos concurrentes a los datos. La figura \ref{connection} ilustra la interacci�n del proceso master postmaster, el proceso servidor postgres y una aplicaci�n cliente.
El proceso cliente puede ser el interface de usuario (frontend) psql (para realizar consultas SQL interactivas) o cualquier aplicaci�n de usuario implementada utilizando la biblioteca libpg. N�tese que las aplicaciones implementadas utilizando ecpg (el preprocesador de SQL embebido de Postgres para C) tambi�n utiliza esta biblioteca.
Una vez que se ha establecido una conexi�n, el proceso cliente puede enviar una consulta al servidor (backend). Esta consulta se transmite utilizando un texto plano, es decir, no se ha hecho una traducci�n en el cliente (frontend). El servidor traduce la consulta, crea un plan de ejecuci�n, ejecuta el plan y remite las tuplas recuperadas al cliente a trav�s de la conexi�n establecida.