Chapitre 3. Architecture

Concepts architecturaux de Postgres

Avant de commencer, vous devez comprendre la base de l'architecture système de Postgres. Le mode d'interaction des composants de Postgres sera présenté dans le chapitre suivant. Dans le jargon des bases de données, Postgres utilise l'approche dite "un processus par utilisateur" selon un modèle client/serveur. Une session Postgres utilise les processus Unix suivants :

Un seul postmaster gère un ensemble de bases de données sur un seul hôte. Ainsi, un ensemble de bases est appelée une installation ou site. Les applications qui désirent accéder à une base font appel à la bibliothèque qui envoie des requêtes sur le réseau au postmaster, lequel démarre un nouveau processus serveur en arrière plan

Illustration 3-1. Comment une connexion est établie

et le connecte au client. Le processus et le serveur en arrière plan communiquent ensuite sans intervention du postmaster. Ce dernier fonctionne toujours, en attente des requêtes, si bien que les processus clients et serveurs naissent et meurent au gré des besoins.

La bibliothèque libpq permet à un seul client d'établir plusieurs connexions vers le serveur. Cependant, l'application cliente est encore un processus monotâche. La libpq ne gère pas les connexions multitâches client/serveur. Une implication de cette architecture est que le postmaster et le serveur tournent toujours sur la même machine (le serveur de la base), tandis que l'application cliente peut tourner n'importe où. Vous devez garder ceci à l'esprit, parce que les fichiers dont on peut avoir accès sur une machine client peuvent ne pas être accessibles (ou peuvent être accessibles en utilisant un autre nom) sur la machine serveur de la base.

Vous devez aussi faire attention au fait que le postmaster et le serveur postgres tournent avec le user-id du "super-utilisateur" Postgres. Notez que le super-utilisateur Postgres ne doit pas être un utilisateur courant (ex. un utilisateur nommé "postgres"). De plus, le super-utilisateur Postgres ne devra jamais être le super-utilisateur Unix ("root"), tous les fichiers relatifs à une base appartiendraient à ce super-utilisateur Postgres.