PostgreSQL
PostgreSQL
PostgreSQL est un SGBDR libre fondé sur le modèle relationnel et orienté objet. Dérivé initialement du projet Ingres à l’Université de Berkeley, il est considéré comme l’un des principaux piliers de l’écosystème des logiciels libres et open source. PostgreSQL, souvent appelé «Postgres», est reconnu pour sa conformité aux standards SQL, son extensibilité et sa robustesse dans des environnements aussi variés que les administrations publiques, l’entreprise, l’éducation ou encore la fonction publique.
Historique
Le projet PostgreSQL trouve ses origines en 1986, sous la direction du professeur Michael Stonebraker, au sein du Postgres Project. Après plusieurs années de développement, l’équipe sort en 1989 Postgres (POST InGRES), en succession au logiciel Ingres. En 1996, le projet adopte le langage SQL et prend le nom de PostgreSQL, marquant une étape majeure dans sa compatibilité et sa reconnaissance. Le projet est entretenu depuis par une large communauté dirigée par le PostgreSQL Global Development Group, englobant des contributeurs du monde entier.
| Version | Année de sortie | Fonctionnalités notables |
|---|---|---|
| 6.0 | 1997 | Ajout du langage SQL, adoption du nom PostgreSQL |
| 8.0 | 2005 | Introduction du support natif de Windows, tablespaces |
| 9.0 | 2010 | Réplication en streaming, Hot standby |
| 10 | 2017 | Partitionnement logique, réplication logique |
| 15 | 2022 | Améliorations sur les requêtes parallèles, performances accrues |
Caractéristiques majeures
PostgreSQL propose de nombreuses fonctionnalités avancées :
- Conformité avec les standards SQL
- Système de types extensible avec possibilité de créer des types de données
- Prise en charge native des transactions ACID
- Réplication synchrone et asynchrone
- Gestion avancée des verrouillages : MVCC (Multi-Version Concurrency Control)
- Index multiples, y compris B-tree, GiST, GIN, BRIN
- Fonctions et procédures stockées dans divers langages de programmation tels que PL/pgSQL, PL/Python, PL/Perl, PL/Tcl
- Géodonnées via l’extension PostGIS
- Mécanismes avancés de sécurité : authentification, rôles, privilèges
- Large éventail d’API utilisateurs : ODBC, JDBC, libpq, psycopg2, Npgsql
- Support multi-version pour la gestion de la concurrence
Architecture technique
PostgreSQL adopte une architecture orientée processus, où chaque connexion client est gérée par un processus serveur dédié. Le protocole réseau utilisé est le protocole PostgreSQL, assurant la compatibilité avec de nombreux clients. Les principales composantes de l’architecture sont :
- Postmaster : processus maître qui gère les connexions entrantes
- Buffer Manager : gestion des pages mémoire
- Write-Ahead Logging pour la durabilité des transactions
- Background Writer et checkpoint pour l’optimisation de l’I/O
- Processus de maintenance : autovacuum, analyze
L’extensibilité de PostgreSQL permet l’ajout d’extensions, comme PostGIS pour la gestion des données spatiales, pg_stat_statements pour l’audit des requêtes, ou PLV8 pour l’utilisation de JavaScript.
Langages et interfaces
PostgreSQL prend en charge plusieurs langages via ses interfaces natives et clients :
thumb|Logotype officiel de PostgreSQL
- ODBC : compatibilité avec des outils tels que LibreOffice, Microsoft Access
- JDBC : clients Java
- libpq : interface native C
- psycopg2 : bibliothèque Python
- Npgsql : pour l’écosystème .NET
- psql : ligne de commande officielle
- pgAdmin : interface graphique multi-plateforme
- DBeaver, DataGrip, OmniDB : gestionnaires externes
Utilisation dans la fonction publique et dans l’administration
De nombreuses institutions publiques et administrations utilisent PostgreSQL pour la gestion et la publication de leurs données. Sa nature open source en fait un choix privilégié dans la fonction publique, permettant le respect des politiques de souveraineté numérique, la transparence des traitements et la réduction des coûts de licence.
- AIFE : gestion du système CHORUS pour la comptabilité de l’État français
- Open Data : plateformes nationales et régionales de publication de données ouvertes
- Mairies, conseils départementaux et régionaux : gestion des ressources humaines, finances, urbanisme
- Organismes européens : Eurostat, Parlement européen, projets [INSPIRE|INSPIRE]]
Extensions courantes
PostgreSQL peut être enrichi de nombreuses extensions qui élargissent ses possibilités :
| Extension | Description |
|---|---|
| PostGIS | Gestion des données géographiques, standard OGC |
| pg_stat_statements | Collecte et statistique sur les requêtes SQL |
| pg_partman | Partitionnement automatique de tables |
| PLV8 | Support de JavaScript comme langage de procédure |
| citext | Type « text » insensible à la casse |
| hstore | Stockage de paires clé/valeur |
| uuid-ossp | Génération d’identifiants uniques universels (UUID) |
Communauté et gouvernance
Le projet est dirigé par le PostgreSQL Global Development Group, composé de volontaires et de sociétés telles que EDB, 2ndQuadrant, CYBERTEC, Crunchy Data, Red Hat et Microsoft. PostgreSQL est distribué sous la licence PostgreSQL, une licence très permissive, équivalente à la licence MIT.
- PgDay et PgConf : événements communautaires internationaux
- Français PostgreSQLFr : communauté francophone, traduction de documentation, assistance communautaire
- EPUG
Comparaisons et concurrents
Les principaux concurrents open source de PostgreSQL sont MySQL, MariaDB et SQLite. Parmi les produits propriétaires figurent Oracle Database, Microsoft SQL Server, IBM Db2. PostgreSQL est fréquemment choisi pour ses fonctionnalités avancées, son respect des standards et son absence de clauses restrictives en matière de licence.
| SGBD | Licence | Type | Caractéristique majeure |
|---|---|---|---|
| PostgreSQL | PostgreSQL License (libre) | Relationnel, objet | Extensible, standard SQL, plugins, JSON |
| MySQL | GNU GPL/Propriétaire | Relationnel | Simplicité, large écosystème web |
| Oracle Database | Propriétaire | Relationnel | Partage avancé, clustering |
| SQLite | Domaine public | Relationnel embarqué | Léger, fichiers uniques |
Ressources documentaires et apprentissage
Plusieurs ouvrages, documentations et formations sont disponibles, souvent proposées par la documentation officielle, l’INRIA, la DINUM, des universités telles que Université Lyon 2, Université Paris-Dauphine ou des plateformes en ligne comme FUN-MOOC. La communauté offre également des listes de diffusion, forums, et un système de bugtracker.
- Principaux liens
Voir aussi
Références
- Documentation PostgreSQL
- Équipe de développement
- Ressources francophones
- Direction interministérielle du numérique, France