46.2. Établissement des connexions
PostgreSQL™ est écrit suivant
un simple modèle client/serveur « processus par
utilisateur ». Dans ce modèle, il existe un
processus client connecté à un seul
processus serveur. Comme le nombre
de connexions établies n'est pas connu à l'avance, il est
nécessaire d'utiliser un processus
maître qui lance un processus serveur à chaque fois qu'une
connexion est demandée. Ce processus maître s'appelle
postgres et écoute les connexions
entrantes sur le port TCP/IP indiqué. À chaque fois qu'une
demande de connexion est détectée, le processus postgres lance un nouveau processus serveur. Les
tâches du serveur communiquent entre elles en utilisant des
sémaphores et de la mémoire partagée pour s'assurer de l'intégrité
des données lors d'accès simultanés aux données.
Le processus client est constitué de tout programme comprenant
le protocole PostgreSQL™
décrit dans le Chapitre 48,
Protocole client/serveur. De nombreux clients s'appuient
sur la bibliothèque C libpq,
mais il existe différentes implantations indépendantes du
protocole, tel que le pilote Java JDBC.
Une fois la connexion établie, le processus client peut envoyer
une requête au serveur (backend). La
requête est transmise en texte simple, c'est-à-dire qu'aucune
analyse n'a besoin d'être réalisée au niveau de l'interface (client). Le serveur analyse la
requête, crée un plan d'exécution,
exécute le plan et renvoie les lignes trouvées au client par la
connexion établie.