LOXODATA

Retour de pgconf.eu 2017 à Varsovie

2017-11-16   1581 mots, 8 minutes de lecture   Emeric Tabakhoff

Cela fait maintenant 3 semaines que la PgConfEu 2017 à Varsovie est terminée, il est temps de faire un retour sur cet événement majeur dans la galaxie PostgreSQL.

Comme l’année précédente, Loxodata était partenaire Gold de la conférence, « Gold Partner of PGConf.EU 2017 ».

Le programme des présentations de cette année est disponible ici.

Première journée

Comme tous les ans, la journée du mardi était consacrée aux sessions d’apprentissage en groupe.

Cette année, Loxodata était présent avec Lætitia Avrot et Stéphane Schildknecht qui ont animé la session « Be pro-activ on PostgreSQL performance ». Le contenu de la présentation est disponible ici.

Le reste des conférences s’est déroulé du mercredi au vendredi.

Autres journées

La plupart des conférences sont simultanées, à raison de 3 en parallèles dans des salles différentes. Les keynotes et présentations éclair se déroulent dans une grande salle permettant à tous les participants d’y assister.

Je vous livre ici un petit résumé des conférences auxquelles j’ai choisi d’assister :

  • Database Horror Stories, Bad Code, and How Not to be a Statistic - Alex Papadimoulis Alex Papadimoulis est le fondateur du site “The Daily WTF”. Il s’agit d’un guide de ce qu’il ne faut surtout pas faire dans le monde du développement, avec des exemples aux conséquences parfois désastreuses en production. Dans cette keynote, Alex nous donne les pires exemples de code qu’il ait pu trouver. Il montre les dangers de faire trop compliqué en perdant en efficacité et productivité. Le tout sur fond de remise en question : Qu’est-ce qu’un expert ? Qu’est-ce qu’un mauvais développeur ? Êtes-vous sûr d'être un expert ? Êtes-vous réellement à même de juger le niveau d’expertise ? C'était à la fois drôle et effrayant.

  • Analyzing Database Performance - Feike Steenbergen Une conférence pratique et méthodologique sur la performance, qui commence tout d’abord par les traces (logs) qu’il est nécessaire d’activer, et aborde ensuite les extensions utiles. Une séparation en 3 parties : client, réseau, base de données. Pour aider dans les investigations et découvrir à quel niveau se trouve la perte de performance. Les bases de EXPLAIN sont abordées, ainsi que les outils aidant à l’analyse de celui-ci : visual explain de pgAdmin, explain.depesz.com, pev. Le rôle du cache de PostgreSQL ainsi que pg_stat_statement sont abordés. Les outils d’administration avancés tels que OPM, pgwatch2, PoWa, PgCluu et d’autres.

  • Getting By With Just psql - Corey Huinker L’orateur est cette fois un committeur qui a fait passer beaucoup de patchs permettant d'étendre les fonctionnalités de psql. Il explique ici certaines fonctionnalités. Il est lui-même dans un environnement avec des possibilités limitées. En conséquence, il a fait évoluer l’outil pour étendre les fonctionnalités. Dans la conférence, il est beaucoup question d’interactions avec le shell : \set, \echo, \ir, \gset, et aussi de la métaprogrammation avec \gexec par exemple pour réindexer une liste de tables en réinjectant le résultat d’une requête. Il parle aussi des expressions conditionnelles \if, \elif, \else et \endif, et termine par les boucles et la récursion. L’ensemble est très technique et les possibilités semblent infinies.

  • Lessons learnt writing PostgreSQL extensions for JSON(b) - Gabriel Fürstenheim Cette conférence présente des extensions développées pour utiliser le JSONb dans le but d’employer PostgreSQL comme une base NoSQL (en faisant persister des données non structurées). L’orateur nous montre comment traiter les données dans des champs JSONb et faire des opérations mathématiques, des itérations, et de la récursivité, avec des fonctions maison et des exemples simples. Session intéressante, mais j’aurais apprécié avoir des exemples plus concrets.

  • Everything Wrong with Partitioning in PostgreSQL 10 - Robert Haas Robert Haas est un des principaux committeurs sur le projet PostgreSQL. Le titre induit en erreur, et son auteur nous met en garde dès le début. Non, il ne couvre pas tout ce qui ne va pas avec le partitionnement natif dans la nouvelle version de PostgreSQL : seulement une partie. Robert est un très bon orateur, et la conférence est réellement de qualité, tant sur le fond que sur la forme. Ce qu’il faut retenir, c’est que le nouveau système de partitionnement est basé principalement sur l’ancien : l’héritage de tables. L’administration en est simplifiée, cependant, toutes les possibilités offertes par l’ancienne méthode n’ont pas encore été portées sur la nouvelle. Des détails sont expliqués sur les aspects manquants, et sur les fonctionnalités à venir pour les prochaines versions (11, 12…), sans pour autant donner de détails sur une date de sortie. J’ai adoré cette conférence, mais le sujet et l’orateur avaient déjà toute mon attention avant même d’entrer dans la salle.

  • Through the Joining Glass - Daniel Gustafsson Daniel Gustafsson possède lui aussi d’indéniables qualités d’orateur, avec un style différent. Il se penche ici sur le planner qui travaille (avec le parser et l'executor) pour donner le résultat de la requête SQL envoyée par un client. On est parfois tenté de croire que le planner est une partie du code très complexe de PostgreSQL, mais il n’en est rien, et Daniel le montre avec une présentation très intéressante. L’algorithme sous-jacent est plus simple qu’il n’y paraît, et les évolutions successives sont elles aussi non seulement brillantes, mais tout aussi simples.

  • PostgreSQL Basics: Buffers - Vik Fearing Vik Fearing a proposé de démystifier les buffers dans PostgreSQL. Il explique le mécanisme du cache, et en quoi celui-ci est important pour préserver les données, et de quelle façon il profite aux performances d’une base de données. Il nous expose ensuite les paramètres permettant de jouer sur les performances, et qui touchent aux buffers directement ou indirectement dans PostgreSQL. Il aborde aussi les vues et extensions permettant une meilleure compréhension des mécanismes, et comment les interpréter.

  • Improving Postgres’ Efficiency - Andres Freund Cette conférence est présentée dans la catégorie “hackers”, mais j’ai trouvé le contenu plus théorique que pratique à mon sens. Quoi qu’il en soit, c’est extrêmement technique et intéressant, car cela fait entrevoir les évolutions (possibles) de PostgreSQL pour les prochaines versions. Statistiques multicolonnes, scan d’index uniquement (Index-Only scans) et l'évolution qui s’ensuit, l’index couvrant (Covering Index), des améliorations sur les nested loop et hash join. La compilation JIT est également abordée, elle permettrait d’avoir des gains de performances inouïs dans certains cas, et pourrait bien voir le jour en version 11.

  • PostgreSQL on AWS: Tips & Tricks (and horror stories) - Alexander Kukushkin J'étais très partagé lors de cette conférence, car l’orateur semblait faire à la fois l'éloge, mais aussi la mise en garde face à l’utilisation de Amazon Web Service (AWS). Il a exposé les différents services disponibles, et ce qu’il était possible de faire ou non avec. Au final, c’est un outil qui permet de déployer rapidement de nouvelles machines virtuelles, mais les limitations restent importantes.

  • SQL Developers: What Do They Write? Do They Write Good SQL?? Let’s Find Out! - Francesco Mucio Ici, des exemples de mauvais code, et aussi quelques façons de se rendre la vie plus agréable lorsqu’on est développeur. Écrire du code, le commenter, le formater, l’indenter, le maintenir, le changer, le réécrire…

  • Near-Zero Downtime Automated Upgrades of PostgreSQL Clusters in Cloud - Gülçin Yıldırım Jelinek Cette fois, on aborde l’automatisation avec Ansible et l’intégration avec pg_logical pour accélérer les upgrades (mises à jour majeures). Gülçin décrit le fonctionnement dans le détail et les résultats obtenus (de 2 secondes à quelques minutes d’indisponibilité) et fournit les playbooks Ansible pour qui est intéressé.

  • Postgres Window Magic - Bruce Momjian Bruce Momjian est un des committeurs les plus importants de la communauté, et qui a participé au projet PostgreSQL depuis le début. 6 années lui ont été nécessaires pour trouver le temps, organiser les idées, et structurer cette présentation de façon a avoir un contenu le plus compréhensible possible. S’il n’y a qu’une seule seule chose à lire ou une seule conférence à voir sur les window functions, c’est celle-ci. Tout est expliqué : le mode par défaut (très important), les différentes options, ainsi que les résultats que l’on peut obtenir.

  • From minutes to milliseconds – Tips and tricks for faster SQL queries - Alicja Kucharczyk Alicja Kucharczyk est de Varsovie et possède déjà beaucoup d’expérience sur Linux et PostgreSQL. Elle nous montre des techniques parfois très simples pour améliorer drastiquement les performances de certaines requêtes. Il y a également de bonnes pratiques à suivre pour ne pas avoir de mauvaises surprises.

  • PostgreSQL implementation on a large operational database, Yes! The size matters! - Thomas BOUSSEKEY Thomas Boussekey vient ici nous parler de base de données de plusieurs téraoctets. Comment gérer l’industrialisation et le partitionnement dans un contexte de haute-volumétrie. Et aussi comment faire mieux pour la suite.

Avis et commentaire

Ce fut ma première conférence européenne. Les sessions qui m’ont le plus marqué sont celles sur le partitionnement dans PostgreSQL 10 et les window functions. Les sujets étaient intéressants et les orateurs vraiment captivants.

Le contact avec des personnes locales était aussi certainement enrichissant. Les locaux venus assister aux conférences que j’ai pu croiser l’ont fait sur leurs propres deniers et sur leur temps libre. En effet, il semblerait que les entreprises prenant à leur frais le coût d’un tel déplacement ne soient pas encore la majorité en Pologne.

On ne prend la mesure de l’importance de la communauté PostgreSQL que lors de ce genre d'événements. Il y a beaucoup de monde, des nouveaux, des anciens et cette famille ne cesse de grandir et d'évoluer. Quelle aventure !

La date et le lieu de la prochaine PgConf.EU ne sont pas encore fixés, nous ne manquerons pas d’en parler ici lorsqu’elle sera annoncée.