42.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'un accès simultané aux données.
Le processus client peut consister en tout programme comprenant le
protocole PostgreSQL™ décrit
dans le Chapitre 44,
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.