42.2. Moyens pour établir des connexions

PostgreSQL est implémenté suivant un modèle client/serveur à chaque << processus par utilisateur >>. Dans ce modèle, il existe un processus client connecté à un seul processus serveur. Comme nous ne savons pas par avance combien de connexions seront établies, nous devons utiliser un processus maître qui lancera un processus serveur à chaque fois qu'une connexion sera demandée. Ce processus maître s'appelle postmaster et écoute sur le port TCP/IP spécifié pour des connexions entrantes. À chaque fois qu'une demande pour une connexion est détectée, le processus postmaster lance un nouveau processus fils appelé postgres. Les tâches du serveur (processus postgres) 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 être tout programme comprenant le protocole PostgreSQL décrit dans le Chapitre 44. Beaucoup de clients sont basés sur la bibliothèque C libpq mais plusieurs implémentations indépendantes existent, telle 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.