Depuis plusieurs semaines, j’étudie les nouveautés de la prochaine version majeure
de PostgreSQL avec un intérêt grandissant pour le connecteur postgres_fdw.
Cette extension assez folle n’a pas son équivalent sur les autres systèmes de
bases de données du marché, et pour cause, PostgreSQL est l’un des rares à respecter
la norme SQL/MED, sous-partie du langage SQL tel que défini par le standard
ISO/IEC 9075-9.
Ce mois-ci, je vous propose de réviser un peu le langage SQL en l’appliquant pour
des cas d’usage assez fréquents qui mettent en scène des types temporels, notamment
les intervalles de dates. Ce sera l’occasion également de revenir sur l’implémentation
très originale qu’en a fait PostgreSQL avec les types d’intervalle de valeurs, ou
range types dans la documentation.
Le partitionnement déclaratif a été une véritable révolution à la sortie de la
version 10 de PostgreSQL en octobre 2017. La gestion des sous-tables devenait
alors bien plus aisée au quotidien, simplifiant leur mise en place et leur
maintenance.
Sans cesse amélioré au cours des dernières années, je me souviens encore de mon
émerveillement devant la magie du partitionnement par hachage, apparu en
version 11. Comment le déployer et que permet-il ? J’ai voulu m’en rendre compte
dans une rapide démonstration sur le type UUID en étudiant les fonctions
d’appui qui se cachent derrière le hachage des valeurs.
Les requêtes ou instructions préparées sont un mécanisme proposé par la
plupart des moteurs de bases de données afin de réexécuter un ordre SQL semblable
au précédent. On parle d’un template de requête qu’il est nécessaire de
préparer avant d’exécuter. Les principaux bénéfices que nous lui connaissons
méritent un article afin de mieux comprendre leur implémentation.
Je suis resté longtemps ignorant des mécanismes de journalisation et de PITR
avec PostgreSQL alors même qu’il s’agit d’un des fonctionnements critiques pour
la durabilité des données d’une instance. Mieux comprendre ces concepts m’aurait
permis à une époque, d’être plus serein lors de la mise en place de sauvegardes
et surtout au moment de leur restauration !
Dans cet article, je vous propose de revenir sur un fichier anecdotique qui a
fait parlé de lui pendant plusieurs années : le fichier backup_label.
Qui est-il et à quoi sert-il ? Comment a-t-il évolué depuis sa création en
version 8.0 de PostgreSQL et qu’adviendra-t-il de lui dans les prochaines années ?