Introduction à PostgreSQL – Histoire, ACID et concepts fondamentaux
Bonne lecture et bon apprentissage !
Junior TSAFACK – 20/08/2026
⏱️ Temps de lecture estimé : 8 minutes
PostgreSQL est l’un des systèmes de gestion de bases de données relationnelles (SGBDR) les plus avancés et les plus utilisés au monde. Surnommé le couteau suisse des bases de données, il se distingue par sa robustesse, sa conformité aux standards SQL et son extensibilité. Ce premier cours vous présente son histoire, ses principes fondamentaux et sa terminologie.
Histoire de PostgreSQL
Section titled “Histoire de PostgreSQL”L’aventure de PostgreSQL commence à l’Université de Californie à Berkeley, sous l’impulsion du professeur Michael Stonebraker et de son collègue Eugene Wong.
| Période | Événement clé |
|---|---|
| 1977 – 1985 | Développement d’Ingres (INtelligent Graphics and Retrieval System) sous la direction de Stonebraker. Ingres a introduit des concepts novateurs comme la query modification pour les contraintes d’intégrité et les vues. |
| 1986 – 1994 | Lancement de Postgres (Post-Ingres), un projet visant à dépasser les limites du modèle relationnel en intégrant des types de données abstraits. Postgres utilisait alors le langage de requête Quel. |
| 1992 | Création de la société Miró (future Illustra) qui reprend une branche du code source de Postgres pour l’adapter à SQL et améliorer son infrastructure. |
| 1995 | Sortie de Postgres95, une version remaniée avec un support SQL étendu. |
| 1996 | Adoption du nom PostgreSQL pour refléter le support du langage SQL. |
💡 Anecdote : Le projet Postgres a été construit par de nombreux étudiants diplômés encadrés par Michael Stonebraker. L’un d’eux, Andrew Yu, a d’ailleurs contribué à la création de la première version publique de PostgreSQL.
Aujourd’hui, après près de 40 ans de développement actif, PostgreSQL est devenu la base de données open source de référence pour des organisations comme Reddit, Instagram, TripAdvisor, OpenAI et même la Station spatiale internationale.
Pourquoi PostgreSQL est-il si populaire ?
Section titled “Pourquoi PostgreSQL est-il si populaire ?”PostgreSQL se distingue par plusieurs atouts majeurs :
- Open source et communautaire : Contrairement à MySQL (détenu par Oracle), PostgreSQL est entièrement open source sans aucune société privée derrière.
- Extensible : Vous pouvez définir vos propres types de données, écrire des fonctions dans plusieurs langages (PL/pgSQL, Python, etc.) sans recompiler la base.
- Conforme aux standards SQL : PostgreSQL respecte plus de 170 des 177 fonctionnalités obligatoires du standard SQL:2023.
- Fiabilité et intégrité des données : Grâce à son architecture éprouvée, PostgreSQL garantit la durabilité des transactions.
Les propriétés ACID
Section titled “Les propriétés ACID”PostgreSQL est conforme ACID depuis 2001. Ces propriétés garantissent la fiabilité des transactions, même en cas de panne.
| Propriété | Signification | Exemple concret |
|---|---|---|
| Atomicité | Une transaction est exécutée en totalité ou pas du tout. | Si un virement bancaire échoue après le débit mais avant le crédit, les deux opérations sont annulées. |
| Cohérence | La base de données passe d’un état valide à un autre état valide. | Une contrainte de clé étrangère empêche l’insertion d’une commande sans client associé. |
| Isolation | Les transactions concurrentes ne s’interfèrent pas entre elles. | Deux utilisateurs peuvent modifier des données différentes sans se bloquer mutuellement. |
| Durabilité | Les données validées persistent même en cas de redémarrage du serveur. | Après un crash, les transactions validées sont récupérables grâce aux journaux WAL. |
Le mécanisme MVCC (Multi-Version Concurrency Control)
Section titled “Le mécanisme MVCC (Multi-Version Concurrency Control)”Pour garantir l’isolation sans sacrifier les performances, PostgreSQL utilise le MVCC.
Principe
Section titled “Principe”Au lieu de verrouiller les lignes lors des lectures (ce qui bloquerait les écritures), PostgreSQL :
- Conserve plusieurs versions de chaque ligne.
- Décide, pour chaque transaction, quelle version est visible grâce à un snapshot.
- Nettoie les anciennes versions via le processus
VACUUM.
Exemple concret
Section titled “Exemple concret”Imaginons deux transactions simultanées sur un compte bancaire :
-- Transaction A (démarre en premier)BEGIN;SELECT balance FROM accounts WHERE id = 1; -- Retourne 1000
-- Transaction B (démarre ensuite)BEGIN;UPDATE accounts SET balance = 500 WHERE id = 1;COMMIT;
-- Transaction A lit à nouveauSELECT balance FROM accounts WHERE id = 1; -- Retourne encore 1000 !COMMIT;Sans MVCC :
- La transaction A devrait verrouiller la ligne, bloquant B.
- OU la transaction A verrait le changement non validé de B (lecture sale).
- OU le second
SELECTde A retournerait 500 (lecture non répétable).
Avec MVCC :
- Les deux transactions s’exécutent sans se bloquer.
- Chaque transaction voit une vue cohérente basée sur son snapshot.
- L’ancienne version (1000) est conservée jusqu’à la fin de A.
💡 Bon à savoir : Dans PostgreSQL, une mise à jour (
UPDATE) est en réalité une suppression + insertion : l’ancienne version est marquée comme morte (xmax), et une nouvelle version est créée avec un nouvelxmin.
Définitions essentielles
Section titled “Définitions essentielles”Voici les concepts clés que vous retrouverez tout au long de ces cours :
| Terme | Définition |
|---|---|
| Cluster Machine | Plusieurs machines communiquant entre elles via la réplication. |
| Cluster PostgreSQL | Une instance avec ses propres ressources et sa configuration (ex : un port, une allocation mémoire). |
| Base de données (Database) | Un ensemble structuré de données, généralement associé à une application. |
| Rôle / Utilisateur | Compte avec login, mot de passe et privilèges. |
| Schéma (Schema) | Un espace de noms dans une base de données (regroupe des tables, vues, fonctions, etc.). Le schéma par défaut est public. |
| Table | Structure de stockage logique composée de colonnes (champs) et de lignes (enregistrements). |
| Colonne | Un champ d’une table, avec un type (INTEGER, VARCHAR, DATE, etc.). |
Exemple pratique : création d’une base et d’une table
Section titled “Exemple pratique : création d’une base et d’une table”Pour illustrer ces concepts, voici un exemple simple de création d’une base de données et d’une table :
-- Créer une base de donnéesCREATE DATABASE magasin;
-- Se connecter à la base\c magasin
-- Créer une tableCREATE TABLE clients ( id SERIAL PRIMARY KEY, nom VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, date_inscription DATE DEFAULT CURRENT_DATE);
-- Insérer quelques clientsINSERT INTO clients (nom, email) VALUES
-- Interroger la tableSELECT * FROM clients;Résultat attendu :
| id | nom | date_inscription | |
|---|---|---|---|
| 1 | Dupont Jean | [email protected] | 2026-08-20 |
| 2 | Martin Sophie | [email protected] | 2026-08-20 |
Prochain chapitre
Section titled “Prochain chapitre”Vous connaissez maintenant l’histoire, les principes fondamentaux et les concepts clés de PostgreSQL. Dans le prochain cours, vous installerez PostgreSQL sur Debian et découvrirez son architecture interne (processus, mémoire, répertoires).
👉 Cours 2 : Installation et architecture de PostgreSQL
Junior TSAFACK – 20/08/2026