Entretien avec Julien Rouhaud, DBA PostgreSQL Senior, contributeur aux extensions liées au logiciel PoWA, auteur de l'outil HypoPG, coauteur de la 2e édition du livre PostgreSQL : Architecture et notions avancées.
[18/01/2018]
Bonjour Julien, peux-tu te présenter en quelques mots ? Quel est ton parcours ?
Je suis à la base diplômé en génie logiciel. Cela a d'ailleurs été mes premiers emplois. Je me suis peu à peu reconverti dans l'administration d'instances PostgreSQL, et investi en parallèle dans la communauté notamment en aidant sur le forum de la communauté francophone, en traduisant la documentation puis en essayant de contribuer sur du code de PostgreSQL et de ses outils périphériques.
Comment es-tu arrivé à PostgreSQL ?
C'est arrivé un peu par hasard. J'étais développeur au sein d'une petite équipe informatique et lors d'un projet de migration vers différents outils de développement s'est posée la question de trouver un moteur de base de données performant pour remplacer les bases vieillissantes alors utilisées. J'avais à l'époque déjà entendu parler en bien de PostgreSQL, et les différentes fonctionnalités alors proposées (il s'agissait de la version 8.2) couvraient nos différents besoins. Nous avons donc décidé de réaliser un prototype avec, qui s'est très bien passé, et PostgreSQL y est depuis le moteur de référence.
Comment le situerais-tu au regard des autres systèmes de gestion de bases de données ?
PostgreSQL est depuis très longtemps un moteur stable, mature, et performant.
Depuis ces dernières années, les différents efforts de développements ont permis à PostgreSQL de voir de très gros gains de performance dans les différents types d'utilisation classiques (OLTP, OLAP). De plus, le nombre de fonctionnalités a également augmenté de manière impressionnante. C'est une très bonne chose, car certaines pouvaient vraiment faire défaut, comme le manque de vues matérialisées ou de requête parallélisées. Ces efforts de développement continuent avec autant d'efficacité, et les prochaines versions devraient apporter autant de gains, sinon plus. Au final, à part peut-être dans certains contextes vraiment très particuliers, PostgreSQL a tout autant sa place au sein d'un système d'information que n'importe quel autre SGBDR renommé.
"Le plus problématique est très certainement
le gros manque de DBA maîtrisant PostgreSQL"
Quels sont selon toi ses points forts, ses points faibles ?
Outre la qualité de développement, le fait que PostgreSQL soit un logiciel libre est un réel avantage. De plus, la communauté PostgreSQL est l'une des plus accueillantes que je connaisse, et de nombreuses personnes aident quotidiennement à résoudre des problématiques d'utilisateurs sur les différentes mailing-list et canaux de discussions. Pour finir, l'écosystème d'outils dédiés est vraiment riche et actif. Généralement, quel que soit son besoin on trouve toujours un outil adapté et libre prêt à l'emploi !
Concernant ses points faibles, le plus problématique est très certainement le gros manque de DBA maîtrisant PostgreSQL. C'est malheureusement le plus gros frein à l'adoption de PostgreSQL dans la majorités des sociétés.
Tu contribues à plusieurs extensions PostgreSQL. Peux-tu nous les présenter ?
Je contribue principalement aux extensions liées au logiciel PoWA. Il s'agit d'un outil dont le but est de fournir une vision très fine de l'activité sur une instance, afin d'analyser les problèmes de performance et suggérer des optimisations. Il s'agit d'un travail effectué sur plusieurs années avec beaucoup d'autres personnes. Afin de pouvoir offrir un niveau d'information intéressant, nous avons développé différentes extensions permettant de collecter de nouvelles métriques. L'extension pg_stat_kcache, développée principalement par Thomas Reiss, permet de récupérer les accès physiques au disque et la consommation processeur par requête. C'est une petite extension, mais bien pratique car il s'agit à ma connaissance du seul outil permettant de récupérer ces métriques au niveau d'une requête normalisée. Couplé à l'extension officielle pg_stat_statements, cela permet par exemple de calculer un véritable taux de lecture en cache par requête, c'est-à-dire de différencier les lectures sur disques par rapport aux lectures dans le cache du système d'exploitation. L'extension pg_qualstats, développée principalement par Ronan Dunklau, permet de récupérer différentes statistiques (cardinalité, nombre d'exécutions, type de parcours…) pour chacun des prédicats de chacune des requêtes. Cela donne suffisamment d'informations pour pouvoir suggérer la création d'index pertinents, car basés sur l'activité réelle. Toutes ces données sont ensuite collectées à intervalles réguliers, et l'interface permet de visualiser facilement ces informations. Je suis l'auteur d'hypopg, une autre extension qui peut être utilisée toute seule ou avec d'autres outils comme PoWA. Il s'agit d'une extension permettant de simuler l'utilisation d'un index sans avoir à le créer physiquement. L'idée est de pouvoir s'assurer que PostgreSQL utilisera vraiment un index avant de consommer trop de ressources à créer un index potentiellement inutile.
"C'était une opportunité de travailler avec Guillaume,
et de creuser ensemble de manière très pointue
de nombreux aspects de PostgreSQL"
Tu t'es beaucoup impliqué dans le livre de Guillaume Lelarge PosgreSQL - Architecture et notions avancées. Qu'est-ce qui t'a plu dans le projet ?
L'idée de ce livre m'a tout de suite séduit. Il couvre des aspects qui ne sont généralements pas couverts dans les autres ouvrages dédiés à PostgreSQL.
C'était également une opportunité de travailler avec Guillaume, et de creuser ensemble de manière très pointue de nombreux aspects de PostgreSQL, et de nombreux détails d'implémentation sur certaines parties du code.
Comment travailles-tu avec Guillaume ?
On s'organise de manière très classique, un peu de la même manière que pour la traduction de la documentation. On commence par noter dans différents tickets les points à aborder ou à préciser. Généralement, cela fait suite à l'activité sur les mailing lists officielles, ainsi que les différents commits apportés sur le code source de PostgreSQL. On se divise ensuite le travail en fonction des affinités. Selon le sujet, cela peut nécessiter plus ou moins de recherche, d'analyse de code et de discussion. Une fois fini, on voit ensemble si nécessaire les différents points qu'il est important d'aborder, et on rédige les modifications nécessaires pour relecture. Selon les sujets abordés, on a plus ou moins de discussions sur la meilleure façon d'expliquer ou les exemples à fournir. Lorsqu'on est tous les deux satisfaits du résultat, on valide les modifications et on passe au sujet suivant !
À qui conseillerais-tu ce livre ?
À toutes les personnes qui s'intéressent à PostgreSQL et qui ont envie de connaître plus en détail son fonctionnement et ses différents aspects. J'espère également que ce livre pourra être un outil précieux pour tout DBA qui cherche à maîtriser complètement la configuration et l'administration d'instances PostgreSQL.
Souhaites-tu ajouter quelque chose ?
C'est ma première expérience en tant qu'auteur, et j'espère que les lecteurs apprécieront ce travail. J'espère également avoir un maximum de retours sur le contenu afin de pouvoir continuer à améliorer cet ouvrage.
Merci Julien pour cet entretien.
Voir aussi
> Interview de Guillaume Lelarge