🔝 Retour au Sommaire
PostgreSQL n'est pas un simple système de gestion de bases de données parmi d'autres. C'est un projet avec une histoire riche, une philosophie unique et une approche distinctive qui le distingue de ses concurrents. Dans ce chapitre, nous allons explorer les origines de PostgreSQL, comprendre ce qui fait sa particularité et découvrir pourquoi on le qualifie de SGBD "objet-relationnel".
L'histoire de PostgreSQL commence bien avant sa création officielle. Dans les années 1970, à l'Université de Californie à Berkeley, le professeur Michael Stonebraker et son équipe développent un système de bases de données appelé INGRES (INteractive Graphics REtrieval System).
INGRES était l'un des premiers systèmes de gestion de bases de données relationnelles, concurrent direct d'Oracle et de System R d'IBM. Ce projet a posé les bases de nombreux concepts que nous utilisons encore aujourd'hui.
Après le succès d'INGRES, Michael Stonebraker et son équipe à Berkeley identifient plusieurs limitations des systèmes relationnels de l'époque. En 1986, ils lancent un nouveau projet ambitieux : POSTGRES (POST inGRES).
Les objectifs de POSTGRES étaient révolutionnaires pour l'époque :
- Extension du modèle relationnel : Ajouter la possibilité de définir des types de données personnalisés
- Support des données complexes : Gérer des données plus sophistiquées que les simples nombres et textes
- Règles et déclencheurs : Automatiser des actions en réponse à des événements
- Requêtes sur des données historiques : Voyager dans le temps avec les données (time travel)
Le projet POSTGRES a été développé entre 1986 et 1994 à l'Université de Berkeley, financé par des agences gouvernementales américaines et des sponsors privés.
Initialement, POSTGRES utilisait son propre langage de requête appelé POSTQUEL. Bien que puissant, ce langage propriétaire limitait l'adoption du système.
En 1995, deux étudiants, Andrew Yu et Jolly Chen, ajoutent le support du langage SQL standard. Le système est alors renommé Postgres95.
Cette évolution marque un tournant majeur : PostgreSQL devient compatible avec le standard de l'industrie tout en conservant ses innovations uniques.
En 1996, le projet est officiellement renommé PostgreSQL (la prononciation officielle est "Post-Gress-Q-L" ou simplement "Postgres").
Événement crucial : Le code source est publié sous une licence open source très permissive (licence BSD-like, appelée aujourd'hui licence PostgreSQL). Cette décision permet :
- La création d'une communauté mondiale de développeurs
- L'utilisation gratuite dans des projets commerciaux
- Des améliorations rapides grâce aux contributions de milliers de développeurs
Depuis 1996, PostgreSQL a connu une évolution constante avec une nouvelle version majeure chaque année. Chaque version apporte son lot d'innovations, d'optimisations et de nouvelles fonctionnalités.
Quelques jalons importants :
- PostgreSQL 7.1 (2001) : Introduction du WAL (Write-Ahead Logging), garantissant une durabilité robuste
- PostgreSQL 8.0 (2005) : Support natif Windows, Point-In-Time Recovery (PITR), savepoints
- PostgreSQL 9.0 (2010) : Réplication en streaming, Hot Standby
- PostgreSQL 9.4 (2014) : Support JSONB (JSON binaire optimisé)
- PostgreSQL 10 (2017) : Partitionnement déclaratif natif
- PostgreSQL 12 (2019) : Amélioration massive des performances
- PostgreSQL 14 (2021) : Pipeline de requêtes, amélioration JSON
- PostgreSQL 16 (2023) : Parallélisation massive, optimisations logiques
- PostgreSQL 18 (2025) : I/O asynchrone, colonnes virtuelles, OAuth
PostgreSQL n'appartient à aucune entreprise. C'est un projet communautaire géré par le PostgreSQL Global Development Group (PGDG), un groupe international de volontaires et d'experts.
Cette structure apporte plusieurs avantages :
- Indépendance : Aucune entreprise ne contrôle le projet ou sa direction
- Stabilité : Le projet ne peut pas être racheté ou abandonné
- Transparence : Toutes les discussions et décisions sont publiques
- Qualité : Les contributions sont rigoureusement examinées par des pairs
PostgreSQL est guidé par des principes forts qui influencent chaque décision :
PostgreSQL respecte scrupuleusement les standards SQL (ANSI SQL, ISO/IEC 9075). Contrairement à certains concurrents qui prennent des libertés avec la norme, PostgreSQL privilégie la conformité.
Exemple pratique :
- Traitement rigoureux des valeurs NULL
- Respect des niveaux d'isolation transactionnelle
- Support complet des types de données SQL standard
PostgreSQL est conçu pour être étendu. Vous pouvez ajouter :
- Vos propres types de données
- Vos propres fonctions
- Vos propres opérateurs
- Vos propres langages de programmation
Cette extensibilité permet à PostgreSQL de s'adapter à des besoins très variés sans modifier le cœur du système.
La priorité absolue de PostgreSQL est de ne jamais perdre ou corrompre vos données.
Cela se traduit par :
- Support complet des propriétés ACID (Atomicité, Cohérence, Isolation, Durabilité)
- Mécanismes de récupération robustes
- Validation stricte des contraintes d'intégrité
- Checksums de données (activés par défaut depuis PostgreSQL 18)
PostgreSQL ne sacrifie jamais la correction des données pour la performance. Si un choix doit être fait, l'intégrité prime.
Cependant, cela ne signifie pas que PostgreSQL est lent. Au contraire, il est reconnu pour ses excellentes performances, mais jamais au détriment de la fiabilité.
La licence PostgreSQL (similaire à BSD/MIT) est très permissive. Vous pouvez :
- Utiliser PostgreSQL gratuitement, même en production commerciale
- Modifier le code source sans obligation de partager vos modifications
- Intégrer PostgreSQL dans des produits propriétaires
Avant de comprendre le terme "objet-relationnel", rappelons ce qu'est un modèle relationnel classique.
Un SGBD relationnel organise les données en :
- Tables : Structures à deux dimensions (lignes et colonnes)
- Lignes : Représentent des enregistrements individuels
- Colonnes : Représentent des attributs avec des types de données spécifiques
- Relations : Liens entre les tables via des clés (primaires et étrangères)
Exemple simple :
Table : Clients
+----+-----------+------------------+
| id | nom | email |
+----+-----------+------------------+
| 1 | Dupont | dupont@email.fr |
| 2 | Martin | martin@email.fr |
+----+-----------+------------------+
Les types de données sont limités aux types de base : nombres, textes, dates, etc.
Le modèle relationnel classique a certaines limitations :
- Types de données rigides : Difficile de représenter des structures complexes
- Absence d'héritage : Pas de hiérarchie entre les types
- Données plates : Difficile de représenter des objets imbriqués
- Extensibilité limitée : Pas facile d'ajouter de nouveaux types
Les bases de données orientées objet adoptent une philosophie différente inspirée de la programmation orientée objet :
- Objets complexes : Possibilité d'imbriquer des structures
- Héritage : Les objets peuvent hériter de propriétés
- Encapsulation : Regroupement de données et comportements
- Polymorphisme : Un objet peut avoir plusieurs formes
Problème : Les bases de données purement orientées objet n'ont jamais vraiment décollé dans l'industrie. Le modèle relationnel reste dominant.
PostgreSQL se positionne comme un SGBD objet-relationnel, combinant les avantages des deux approches :
PostgreSQL reste fondamentalement un SGBD relationnel :
- Tables, lignes, colonnes
- SQL standard
- Contraintes d'intégrité (clés primaires, étrangères)
- Transactions ACID
PostgreSQL ajoute des capacités orientées objet :
Vous pouvez créer vos propres types de données adaptés à votre domaine métier.
Exemple conceptuel :
-- Créer un type personnalisé pour une adresse
CREATE TYPE adresse AS (
rue TEXT,
ville TEXT,
code_postal VARCHAR(5),
pays TEXT
);
-- Utiliser ce type dans une table
CREATE TABLE clients (
id SERIAL PRIMARY KEY,
nom TEXT,
adresse adresse -- Type personnalisé !
);PostgreSQL permet de créer des structures de données complexes, comme des objets imbriqués.
Exemple :
- Une colonne peut contenir un tableau de valeurs (type ARRAY)
- Une colonne peut contenir un document JSON complexe (type JSONB)
- Une colonne peut contenir une structure géométrique (type GEOMETRY avec PostGIS)
PostgreSQL supporte l'héritage entre tables (bien que cette fonctionnalité soit moins utilisée aujourd'hui au profit du partitionnement).
Concept :
-- Table parente
CREATE TABLE personnes (
id SERIAL PRIMARY KEY,
nom TEXT,
prenom TEXT
);
-- Table enfant héritant de personnes
CREATE TABLE employes (
numero_employe INTEGER,
salaire NUMERIC
) INHERITS (personnes);La table employes hérite automatiquement des colonnes de personnes.
Vous pouvez définir vos propres fonctions et opérateurs qui travaillent avec vos types personnalisés.
Exemple conceptuel :
- Créer une fonction de calcul de distance entre deux adresses
- Créer un opérateur
@@pour la recherche plein texte - Créer une fonction d'agrégation personnalisée
Cette approche objet-relationnelle rend PostgreSQL extrêmement extensible :
Extensions célèbres :
- PostGIS : Transforme PostgreSQL en base de données géospatiale de classe mondiale
- TimescaleDB : Optimise PostgreSQL pour les séries temporelles
- pgvector : Ajoute la recherche vectorielle pour l'IA et les embeddings
- pg_trgm : Recherche floue et similarité de texte
- hstore : Stockage clé-valeur dans une colonne
Ces extensions ne sont possibles que grâce à l'architecture objet-relationnelle de PostgreSQL.
L'approche objet-relationnelle permet à PostgreSQL de s'adapter à une grande variété de cas d'usage :
- Applications web traditionnelles (e-commerce, CRM)
- Systèmes d'information géographique (SIG)
- Analyse de données et data warehousing
- Applications IoT et séries temporelles
- Intelligence artificielle et machine learning
- Recherche scientifique
Un seul SGBD, de multiples usages.
En restant fidèle aux standards SQL tout en innovant, PostgreSQL garantit :
- Compatibilité : Votre code SQL reste valide d'une version à l'autre
- Portabilité : Facilité de migration depuis/vers d'autres SGBD relationnels
- Investissement sûr : Vos compétences SQL restent pertinentes
PostgreSQL innove constamment (I/O asynchrone, colonnes virtuelles, optimisations...) sans casser la compatibilité avec le code existant.
La philosophie d'extensibilité a créé un écosystème d'extensions, d'outils et de solutions qui enrichissent PostgreSQL sans alourdir le cœur du système.
Aujourd'hui, PostgreSQL est reconnu comme l'un des SGBD les plus avancés et les plus fiables au monde.
Quelques faits marquants :
- DB-Engines : Régulièrement classé parmi les 4 premiers SGBD mondiaux
- StackOverflow Survey : L'un des SGBD les plus aimés par les développeurs
- Adoption massive : Utilisé par Apple, Instagram, Spotify, Netflix, Reddit, et des milliers d'autres entreprises
- Cloud providers : Support natif par AWS, Azure, Google Cloud, et tous les grands fournisseurs
Le succès de PostgreSQL repose sur une communauté active et diversifiée :
- Développeurs : Des centaines de contributeurs actifs dans le monde entier
- Entreprises : Des sociétés comme Crunchy Data, EDB, Percona, Timescale qui financent le développement
- Utilisateurs : Des millions d'installations à travers le monde
- Événements : Conférences PGConf sur tous les continents
Pour mieux comprendre la particularité de PostgreSQL, comparons sa philosophie avec celle d'autres systèmes :
MySQL :
- Historiquement axé sur la rapidité et la simplicité
- Compromis parfois sur la conformité SQL et l'intégrité
- Propriétaire d'Oracle (bien que open source)
- Plusieurs moteurs de stockage (InnoDB, MyISAM...)
PostgreSQL :
- Priorité à la conformité, l'intégrité et la fiabilité
- Performances excellentes sans compromis sur la correction
- Communautaire, indépendant
- Architecture unifiée et cohérente
Oracle :
- SGBD commercial propriétaire très coûteux
- Riche en fonctionnalités d'entreprise
- Écosystème verrouillé
- Support commercial garanti
PostgreSQL :
- Open source et gratuit
- Fonctionnalités comparables (parfois supérieures)
- Liberté et indépendance
- Support communautaire + options commerciales
MongoDB :
- Base de données orientée documents (NoSQL)
- Schéma flexible
- Simplicité pour certains cas d'usage
PostgreSQL :
- Relationnel + support JSON/JSONB natif
- Structure et flexibilité en même temps
- Requêtes SQL puissantes sur JSON
- Intégrité transactionnelle forte
Note : PostgreSQL avec JSONB offre souvent le meilleur des deux mondes !
L'histoire et la philosophie de PostgreSQL expliquent sa réussite actuelle :
Les Clés du Succès :
- Héritage académique : Des fondations solides posées par des chercheurs de Berkeley
- Open source : Une licence permissive qui encourage l'adoption et la contribution
- Communauté : Une gouvernance communautaire qui garantit indépendance et qualité
- Innovation : Une approche objet-relationnelle qui permet l'extensibilité
- Rigueur : Un respect strict des standards et de l'intégrité des données
- Pragmatisme : Des fonctionnalités qui répondent aux besoins réels
PostgreSQL n'est pas simplement un SGBD parmi d'autres. C'est un projet avec une vision, une histoire et des valeurs qui se reflètent dans chaque aspect de sa conception et de son évolution.
En tant que développeur ou DevOps, comprendre cette philosophie vous aidera à mieux appréhender les choix de conception de PostgreSQL et à utiliser le système de manière optimale.
- ✅ PostgreSQL est issu du projet POSTGRES de l'Université de Berkeley (1986)
- ✅ Il est open source depuis 1996 avec une licence très permissive
- ✅ C'est un projet communautaire indépendant de toute entreprise
- ✅ Il combine le modèle relationnel avec des capacités orientées objet
- ✅ Sa philosophie privilégie : conformité, extensibilité, fiabilité, intégrité
- ✅ PostgreSQL est aujourd'hui l'un des SGBD les plus avancés et respectés
Prochaine section : 2.2. Gestion des versions et cycle de vie (PostgreSQL 18 : Septembre 2025)
⏭️ Gestion des versions et cycle de vie (PostgreSQL 18 : Septembre 2025)