Skip to content

Latest commit

 

History

History
408 lines (271 loc) · 16.3 KB

File metadata and controls

408 lines (271 loc) · 16.3 KB

🔝 Retour au Sommaire

2.1. Histoire et Philosophie : Le SGBD "Objet-Relationnel"

Introduction

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".


Les Origines : Du Projet POSTGRES à PostgreSQL

Les Années 1970 : INGRES

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.

1986 : Naissance de POSTGRES

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.

1995 : L'Arrivée du SQL

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.

1996 : PostgreSQL Devient Open Source

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

L'Évolution Continue (1996 - Aujourd'hui)

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

La Philosophie PostgreSQL

Un Projet Communautaire

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 :

  1. Indépendance : Aucune entreprise ne contrôle le projet ou sa direction
  2. Stabilité : Le projet ne peut pas être racheté ou abandonné
  3. Transparence : Toutes les discussions et décisions sont publiques
  4. Qualité : Les contributions sont rigoureusement examinées par des pairs

Les Valeurs Fondamentales

PostgreSQL est guidé par des principes forts qui influencent chaque décision :

1. Conformité aux Standards

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

2. Extensibilité

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.

3. Fiabilité et Intégrité des Données

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)

4. Performance ET Correction

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é.

5. Licence Permissive

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

PostgreSQL : Un SGBD "Objet-Relationnel"

Qu'est-ce qu'un Modèle Relationnel ?

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.

Les Limites du Modèle Relationnel Pur

Le modèle relationnel classique a certaines limitations :

  1. Types de données rigides : Difficile de représenter des structures complexes
  2. Absence d'héritage : Pas de hiérarchie entre les types
  3. Données plates : Difficile de représenter des objets imbriqués
  4. Extensibilité limitée : Pas facile d'ajouter de nouveaux types

Le Modèle Objet : L'Autre Approche

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 : Le Meilleur des Deux Mondes

PostgreSQL se positionne comme un SGBD objet-relationnel, combinant les avantages des deux approches :

1. Base Relationnelle Solide

PostgreSQL reste fondamentalement un SGBD relationnel :

  • Tables, lignes, colonnes
  • SQL standard
  • Contraintes d'intégrité (clés primaires, étrangères)
  • Transactions ACID

2. Extensions Orientées Objet

PostgreSQL ajoute des capacités orientées objet :

a) Types de Données Personnalisés

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é !
);
b) Types Composites

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)
c) Héritage de Tables

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.

d) Fonctions et Opérateurs Personnalisés

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

3. Extensibilité Maximale

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.


Pourquoi Cette Philosophie Est Importante ?

1. Adaptabilité

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.

2. Pérennité

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

3. Innovation Sans Rupture

PostgreSQL innove constamment (I/O asynchrone, colonnes virtuelles, optimisations...) sans casser la compatibilité avec le code existant.

4. Écosystème Riche

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.


PostgreSQL Aujourd'hui

Position dans l'Industrie

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

Une Communauté Mondiale

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

Comparaison Philosophique avec D'autres SGBD

Pour mieux comprendre la particularité de PostgreSQL, comparons sa philosophie avec celle d'autres systèmes :

PostgreSQL vs MySQL

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

PostgreSQL vs Oracle

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

PostgreSQL vs MongoDB (NoSQL)

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 !


Conclusion

L'histoire et la philosophie de PostgreSQL expliquent sa réussite actuelle :

Les Clés du Succès :

  1. Héritage académique : Des fondations solides posées par des chercheurs de Berkeley
  2. Open source : Une licence permissive qui encourage l'adoption et la contribution
  3. Communauté : Une gouvernance communautaire qui garantit indépendance et qualité
  4. Innovation : Une approche objet-relationnelle qui permet l'extensibilité
  5. Rigueur : Un respect strict des standards et de l'intégrité des données
  6. 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.


Points Clés à Retenir

  • ✅ 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)