Ce cours fournit un synthèse technique de PostgreSQL montrant ses capacités et les outils qui tournent autour. Cela permet une vision plus claire de ce qu’on peut attendre de cet SGBD qui a la côte montante de nos jours.
Résumé et objectifs
- Versions, historique, écosystème.
- Modèle relationnel et langage SQL.
- Interfaces et bibliothèques d’accès, langage procéduraux : PL/pgSQL, PL/Perl, PL/Python, PL/Tcl.
- Architecture et concepts : Instance, cluster, tablespaces, bases de données.
- Modèle de stockage, stockage des tables, stockage des colonnes (tables TOAST).
- Différents types de tables, différents types d’index, utilisation des tableaux (arrays).
- Gestion des transactions, niveaux d’isolation, vacuum/autovacuum.
- Différents types de réplication et haute disponibilité, outils « annexes ».
À qui s’adresse ce cours ?
Le cours s’adresse aux chefs de projet, et plus généralement à toute personne cherchant à savoir quels sont les fonctionnalités et les solutions offertes par PostgreSQL et son environnement.
En savoir plus ∙ plan détaillé
Plan détaillé
Introduction générale
- Historique, versions et ressources, acteurs du monde PostgreSQL.
- Modèle relationnel.
- Conception et différents schémas en bases de données.
- Installation de PostgreSQL
- Installations binaires.
- Compilation à partir des sources.
- Installation des extensions.
- Outils : psql, pgadmin3 et pgadmin4.
- Documentation PostgreSQL.
Langage et interfaces
- SQL et spécificités PostgreSQL.
- Modèle relationnel.
- Conception et différents schémas en bases de données.
- Langages procéduraux, PL/pgSQL, PL/Perl, PL/Python, PL/Tcl.
- Traitements stockés, triggers, système de règles.
- Interfaces et bibliothèques d’accès : ECPG, libpq, SPI, ODBC, JDBC, support de XML.
Vue d’ensemble d’un serveur PostgreSQL
- Initialisation du cluster par initdb.
- Instance PostgreSQL, démarrage, arrêt, processus et mémoire.
- Tablespaces, bases de données, schémas.
- Rôles et privilèges.
- Modèles de stockage
- Stockage des tables.
- Structure des pages de données.
- Stockage des lignes dans les blocs.
- Stockage des colonnes, tables TOAST.
- Journal applicatif, statistiques d’activité.
- Gestion des transactions, niveaux d’isolation, verrouillage.
Objets d’une base de données
- Types dans PostgreSQL.
- Tables, contraintes et colonnes.
- Types de tables dans PostgreSQL : tables permanentes, tables unlogged, tables temporaires.
- Types d’index dans PostgreSQL.
- Séquences, vues matérialisées, utilisation de tables FDW (Foreign Data Wrapper).
- Utilisation des tableaux dans PostgreSQL.
Fonctionnement du serveur PostgreSQL
- Traitement des instructions SQL.
- Vacuum/autovacuum.
- Sauvegarde logique dans PostgreSQL via pg_dump, pg_dumpall.
- Sauvegarde physique à froid.
- Sauvegarde physique à chaud, mode d’archivage continue.
- Différents outils de sauvegarde : pgBackRest, Barman.
- Migration vers PostgreSQL.
Réplication et haute disponibilité sous PostgreSQL
- Notions de serveur primaire, serveurs de secours.
- Hot Standby vs warm standby.
- Réplication physique vs réplication logique.
- Réplication synchrone/asynchrone.
- Opérations switchover, failover.
- Gestion de failover automatique (patroni, repmgr, …).