gleu's blog

Aller au contenu | Aller au menu | Aller à la recherche

Évolutions de pgsnap

Ça fait un petit moment que je n'ai pas parlé de pgsnap. Il y a eu assez peu de changements ces derniers temps. Et assez peu de motivation pour améliorer cet outil. Mais cela pourrait bien changer rapidement.

Tout d'abord, une petite information. J'ai déplacé le code source de pgsnap sur github. Donc, contrairement à ce qu'indique la page sur pgfoundry, les sources sont maintenant sur la page github de pgsnap. En soi, ça ne change pas grand-chose à part pour les développeurs. Je vais continuer à utiliser pgfoundry pour la partie web et news. Cela étant dit, je n'exclue pas la possibilité d'externaliser ça aussi.

La vraie news concerne l'orientation du projet. Pour l'instant, pgsnap crée un rapport composé de plusieurs pages HTML. C'est très bien actuellement mais cela pose quelques soucis. Le premier concerne le fait qu'un utilisateur peut se trouver avec plein de différents rapports d'une même base, placés un peu partout sur son disque local. Il est assez difficile de faire la relation entre chacun (notamment si cette personne renomme la base...), de les partager avec ses collègues, etc. Le deuxième soucis, qui me dérange de plus en plus, est la difficulté de voir les différences entre deux rapports pour savoir comment à évoluer la base dans le temps. C'est un des éléments de la TODO list qui me pose le plus de questions.

Or, il se trouve que j'ai peut-être une solution pour ces deux problèmes. J'étais partie au départ avec l'idée de fournir un rapport composé de pages HTML pour reproduire le comportement de orasnap. Mais ce n'était certainement pas le plus futé à faire. Le mieux serait certainement de récupérer toutes les données dans un format du style sauvegarde SQL de PostgreSQL ou plus simple dans un format CSV. L'idée est de pouvoir placer toutes les données dans une seule et même base PostgreSQL de reporting et de construire un outil capable d'afficher les informations sur les différents rapports stockés dans la même base, voire de regarder les différences entre deux rapports.

Voilà. L'idée me plaît. La partie « outil de visualisation » me semble assez complexe. Mais les avantages sont suffisamment importants pour songer à modifier complètement le comportement de pgsnap. Quitte à fournir une deuxième application, capable de lire ce « dump » et de créer les rapports HTML identiques à la première conception de pgsnap.

Comme les sources de pgsnap sont sur git, je vais certainement créer une nouvelle branche pour travailler sur ce concept sans déranger le reste du développement. Car, oui, il va falloir continuer le développement normal de pgsnap. Ce dernier est compatible basiquement avec la 9.0 mais il faudrait qu'il retrouve bien plus d'informations sur cette dernière. Donc la branche master sera utilisé pour ajouter une gestion plus complète de la version 9.0 et une autre branche sera créée pour tester et mettre en place le nouveau concept.

Petit résumé des quatre dernières semaines sur pgAdmin - 5

Pas mal de nouveautés cette fois sur pgAdmin, à la fois en matière de corrections de bugs mais aussi en nouvelles fonctionnalités.

Commençons par les corrections de bug. Erwin a trouvé le temps de nous concocter quelques rapports de bugs. Apprendre l'existence d'un bug n'est pas plaisant, le corriger l'est beaucoup plus. Il a remarqué par exemple que les règles d'une vue étaient oubliés dans les requêtes permettant de recréer la vue. Ce bug a été corrigé assez rapidement. Autre exemple, les groupes n'étaient pas proposés dans la liste déroulante permettant d'indiquer le propriétaire d'un objet. Là-aussi, le correctif a été plutôt simple.

Dave a découvert un bug assez étrange sur la fenêtre d'état du serveur. Le composant liste utilisé utilise par défaut le composant natif sous Mac OS X. Or, ce composant natif permet de réaliser des tris dans la liste. C'est une fonctionnalité très intéressante pour cette plateforme. Malheureusement, notre méthode pour la mettre à jour causait le vidage de certaines lignes, pour aboutir à un affichage illisible. J'ai travaillé sur ce correctif et j'ai fini par aboutir à une solution en deux étapes. Pour la branche 1.10, on empêche l'utilisation du composant natif, ce qui a pour effet de supprimer le tri possible sous Mac OS X. Pour la branche en cours de développement, j'ai ajouté la possibilité de trier les colonnes de chaque rapport, quelque soit la plateforme, en désactivant toujours le comportement natif sous Mac OS X. Voici une copie d'écran de la fenêtre d'état :

status.png

L'affichage est toujours trié par défaut par PID. En cliquant sur l'entête d'une colonne, le tri est modifié pour se faire par rapport à cette colonne. Ça faisait longtemps que je voulais ajouter cette fonctionnalité. Je n'imaginais pas du tout avoir ça pour la future 1.12, et je n'y pensais vraiment pas en commençant à travailler sur ce bug.

Josh Berkus s'est plaint, avec raison, qu'il était impossible de sélectionner un autre utilisateur pour créer une nouvelle connexion dans l'outil de requêtage. Vu qu'il s'agit d'une nouvelle fonctionnalité, elle fera partie de la 1.12 :

queryconnection.png

Josh a aussi remarqué que la gestion des fichiers récents était pour le moins étonnante. J'ai corrigé ça en permettant à un outil de requêtage d'alerter les autres outils de requêtage pour qu'ils puissent recharger la liste des derniers fichiers ouverts.

L'option de stockage d'une colonne est enfin modifiable dans la fenêtre des propriétés d'une colonne :

column.png

Dans les petits trucs en plus, on peut noter un élément supplémentaire dans le menu contextuel d'un serveur : « Reload configuration ». Cette action se contente d'exécuter un « SELECT pg_reload_conf(); » sur le serveur.

reloadconf.png

Magnus a écrit un petit patch permettant de demander le nom du fichier à utiliser pour l'export de données avant l'exécution de la requête (histoire que l'utilisateur n'ait pas à attendre le temps de l'exécution de la requête pour fournir le nom du fichier à sauvegarder). Il s'est aussi étonné que la fenêtre de maintenance utilisait la connexion du navigateur pour faire le VACUUM ou l'ANALYZE. Vu que ce sont des opérations potentiellement (très) longues, j'ai changé cela pour que la fenêtre utilise sa propre connexion, laissant à l'utilisateur la possibilité d'utiliser le navigateur pendant l'exécution de l'opération de maintenance.

J'ai travaillé aussi avec Ashesh Vashi pour corriger un bug dans l'outil de création graphique de requêtes.

La grosse nouveauté a été enregistrée e matin même dans les sources. Depuis plus d'un an, j'avais dans l'idée d'ajouter la possibilité de créer des groupes de serveurs. J'avais laissé un peu de côté. Jehan-Guillaume de Rorthais l'a fait tout récemment pour phpPgAdmin, ce qui m'a poussé à jeter un œil sur cette fonctionnalité. J'en ai un peu bavé mais c'est fait. La preuve :

browser.png

Et voilà. Pas mal, non ? :)

Pour la suite, nous sommes en train de travailler sur les dernières fonctionnalités. La beta 1 de PostgreSQL 9.0 doit sortir d'ici une semaine, cela nous laisse peu de temps. En fait, il reste peu à faire et Ashesh a déjà investi pas mal de temps sur ce qu'il nous manquait. Pas encore commité, mais ça ne devrait plus tarder. En ce qui me concerne, il me reste toujours la contrainte d'exclusion. J'avoue que j'ai du mal à travailler dessus. Mais bon, on va y arriver.

Dernières lectures

Depuis plusieurs semaines, je lis les trois cycles des mondes d'Aldebarran : Aldebarra, Bételgeuse, Antarès. J'ai beaucoup aimé. L'originalité se trouve plus au niveau des mondes imaginées que de l'histoire en elle-même. Mais rien que pour la faune étrange, originale, déroutante, ça vaut le coup de suivre les trois cycles. Je vais peut-être maintenant entamé les autres BD de l'auteur de ces mondes.

J'ai aussi terminé un autre roman de Michael Connely : « La glace noire ». On y retrouve son héro, Harry Bosche, dans une histoire transnationale. C'est plutôt bien écrit même si j'ai préféré les deux autres histoires d'Harry que j'ai pu lire. (n'empêche que c'est 1000 fois mieux que le dernier roman de Bernard Werber... oui, je l'ai toujours mauvaise...)

« À genoux »

Après la lecture du « Dernier coyotte », j'avais bien envie de renouveler l'expérience. Et il se trouve que papa Noël a été bien sympa côté bouquins.

Donc j'ai lu « À genoux » avec beaucoup de plaisir. Petit problème, un des personnages était lié à un précédent livre (« Echo park ») que je n'avais pas (encore) lu. Bon, pour être franc, ça ne m'a pas empêché de comprendre et d'apprécier « À genoux » mais j'ai regretté de ne pas avoir lu « Echo park » avant car il en fait souvent référence pour expliquer les relations entre les différents personnages. En dehors de ça, j'ai vraiment beaucoup aimé. Harry Bosch est toujours aussi excellent : détestable et génial. L'histoire tourne autour du terrorisme, difficile d'en dire plus sans tout dévoiler. Elle est peut-être un peu en dessous, niveau intensité, du « Dernier coyotte ».

Du coup, je me suis acheté « Echo park » et je suis en train de lire « La glace noire ». Je pense qu'on peut dire raisonnablement que j'aime bien les romans de Michael Connelly.

Sortie de « Utiliser PostgreSQL »

Suite du « Installer et débuter avec PostgreSQL », ce livre donne un grand nombre d'informations sur les requêtes SQL, les objets SQL, bref sur la façon d'utiliser PostgreSQL. Je trouve ce livre beaucoup plus intéressant, en tout cas pour moi. J'y ai re-découvert pas mal de choses. Donc, cette fois-ci, ça peut aussi être intéressant pour les pros.

Là encore, format PDF, 11 €. Excellent rapport qualité/prix.

Bref, vivement le prochain :)

(petite info qui peut avoir son importance pour certains, j'ai fait la relecture technique de ce livre, comme du précédent)

Une anecdocte sur le forum

Tant que j'en suis à discuter et à promouvoir le forum, autant en profiter pour raconter une petite anecdote sur l'histoire d'un thread.

Un nouveau membre, David, vient poser une question d'optimisation sur le forum le lundi 29/03/2010 18:28 : « Pb comportement analyseur 8.4 avec table partitionnées ». Une demi-heure après, Marc lui répond en demandant plus de précision.

Le lendemain, la discussion reprend entre Marc et David. À 9h19 (soit 15 heures après la première question), Marc est convaincu qu'il s'agit d'un bug ou d'une limitation. Du coup, après quelques tests de son côté, il envoie à 14h22 un mail sur la liste pgsql-general détaillant le problème rencontré par David. Deux heures après, il reçoit une réponse de Tom Lane indiquant qu'il s'agit en effet d'une limitation involontaire et non souhaitable dans les capacités du paramètre constraint_exclusion.

À 17h31, un patch est proposé par Tom Lane. Le patch sera commité par Tom Lane à minuit.

Là où je veux en venir, c'est qu'un simple message sur le forum français a permis d'améliorer PostgreSQL. Il n'a fallu qu'un jour pour obtenir ce correctif. Évidemment, David ne peut pas encore l'utiliser (à moins qu'il compile soi-même son PostgreSQL). Il va falloir attendre la 8.4.4. Évidemment aussi, le problème, très bien exposé par David sur le forum, puis par Marc sur la liste -general a permis une résolution rapide. Mais en attendant, c'est quand même très impressionnant de voir une telle rapidité dans le traitement d'un problème.

Donc ne restez pas avec votre problème sur les bras, n'hésitez pas à en parler sur le forum web ou sur les listes de discussion en choisissant le média qui vous convient le mieux, vous ne pouvez qu'y gagner.

Quelques stats sur forums.postgresql.fr

La semaine dernière, j'avais fourni quelques statistiques sur le site de documentation français sur PostgreSQL. Je me suis dit qu'il serait intéressant d'avoir aussi quelques statistiques sur l'activité du forum. Alors voici quelques chiffres et quelques graphes sympathiques.

Commençons par la quantité de messages par thèmes :

messages_par_forums.png

Attention, qu'on soit bien d'accord, je n'ai pas regardé le contenu de chaque message pour savoir s'il correspondait vraiment à ce thème. J'utilise simplement le nom du forum. Néanmoins, participant beaucoup au forum, j'estime qu'ils sont en très grande majorité dans le bon forum.

Que peut-on en dire ? pas grand-chose en dehors que les thèmes les plus fréquents sont assez logiques : installation, optimisation, réplication... et un très gros général. Donc rien de bien surprenant là.

Voyons voir maintenant la progression du nombre de threads par mois (un thread étant une question lançant un débat) :

threads.png

Après une petit chute en août, le nombre de threads est en augmentation constante, ce qui est tout à fait satisfaisant. Par contre, le nombre de threads est relativement bas (en gros, un peu plus de deux questions par jour ouvré).

Plus intéressant, le nombre de questions et de réponses :

questions_reponses_par_mois.png

Dis autrement, le posteur ne se satisfait généralement pas de la première réponse. En moyenne, ça nous donne quelque chose comme 5 réponses par question. Plutôt élevé à mon goût, mais ce n'est pas que négatif. Ça peut aussi indiquer que le posteur est intéressé et souhaite d'autres informations.

Bien pire est le nombre de lectures du forum par mois :

lectures_par_mois.png

Je n'ai aucune explication à cette baisse de fréquentation des lecteurs du forum. Ça tombe à très très peu car j'ai oublié de virer la statistique d'avril (qui n'a aucun sens, vu qu'on est le 5 avril).

Si on regarde du côté des participants au forum, j'avais assez peu d'illusions là-dessus :

participants.png

Autrement dit, Marc et moi comptabilisons pratiquement autant de messages que le reste du monde. Ce n'est pas une surprise car je ne vois que nous deux répondre aux messages.

Passons à des nouvelles plus gaies, le temps de réponse à un message dans le forum. J'indique assez souvent en formation qu'il ne faut pas hésiter à poser des questions sur le forum ou sur les listes de discussion (anglaises et française) car le temps de réponse est très court et que la réponse est très souvent techniquement exacte. Ne pouvant pas facilement juger (avec une requête SQL) du second, il est par contre aisé d'avoir la réponse au premier, ie le délai avant la première réponse. J'ai commencé petit joueur avec un délai à la journée :

delai_reponses.png

Il y a de très fortes chances que vous ayez une réponse dans l'heure, voire dans la demi-journée si vous êtes malchanceux (ie, Marc et moi absents). Je me suis donc enhardi et j'ai regardé par tranche de dix minutes sur la première heure :

reponses_par_minutes.png

En gros, il y a de fortes chances qu'une réponse arrive en moins d'une demi-heure.

Quand aux jours des posts, ce sont tous les jours ouvrés avec environ 800 posts par jour ouvrés, mais seulement 400 pour le week-end complet.

messages_par_jour_semaine.png

Je crois que la légende est inutile, c'est super simple à comprendre :)

Enfin, dernière statistique, le nombre de messages par heure dans la journée, là non plus, pas de révolution, les messages sont envoyées dans la journée de travail :

messages_par_heure.png

Par contre, les gens mangent plus tôt que ce que je pensais le midi :)

Voilà en gros ce qu'on peut dire de l'activité du forum web français sur PostgreSQL. Et autant le répéter ici, n'hésitez pas à venir poser vos questions, vous y serez bien reçu.

Petit résumé des... humm... six dernières semaines sur pgAdmin - 4

Désolé pour l'arrêt involontaire des news sur pgAdmin. Cet arrêt s'explique assez simplement. Il y a assez peu de nouveautés ces derniers temps pour la 9.0 et il a fallu s'occuper de la sortie d'une version mineure de pgAdmin (donc du travail sur le débogage mais aussi de préparation des packages et du site web).

Pour ce qui est des nouveautés, le gros du travail a été la création d'un composant graphique spécifique. Il nous fallait un bouton permettant de sélectionner une couleur et affichant la couleur plutôt que le code correspondant à la couleur. J'en ai bien bavé. Ashesh Vashi (un développeur indien travaillant pour EnterpriseDB) m'a sorti d'un blocage bien gênant. Bref, maintenant, ça fonctionne très bien. J'ai pu supprimer l'ancien composant graphique de wxWidgets qui nous posait des problèmes d'affichage sous Mac OS X.

J'ai aussi travaillé sur deux autres patchs. Le premier a pour but de gérer la nouvelle instruction « CREATE TABLE nom TYPE... ». Il a suffit en gros d'ajouter une liste déroulante pour saisir le type et coder/décoder la nouvelle forme de cette instruction SQL. Le deuxième concernait la création d'un index sans nom. C'est aussi une nouveauté de la 9.0, il sera possible de créer un index sans spécifier son nom, le système se charge de le nommer automatiquement.

Dave Page vient juste d'intégrer un patch d'Ashesh permettant la gestion des synonymes privées dans Postgres Plus Advanced Server. J'avoue que je n'en sais pas plus pour cette partie.

Que reste-t-il à ajouter ? les contraintes d'exclusion, les ACL par défaut et les objets SQL/Med. Je me suis cassé les dents sur tous, j'ai donc appelé à l'aide. Ashesh a choisi de s'occuper des ACL par défaut. Moi, je vais m'occuper pour l'instant des rapports de bugs jusqu'à ce que l'envie me reprenne de terminer le boulot sur les nouveautés.

« Nagios 3 pour la supervision et la métrologie »

Ça fait bien longtemps que je n'avais pas lu un bouquin informatique aussi passionnant. Jean Gabès écrit bien, de manière assez directe et d'une façon très didactique. J'aime beaucoup son style. Quant au contenu, c'est complet. Je vais avoir plein de choses à tester et installer :) seul petit bémol, je n'ai rien vu sur la surveillance de sites à distance via un VPN. Mais c'est vraiment anecdotique quand on pense au travail réalisé pour obtenir ce bouquin. J'aimerais bien voir un bouquin sur PostgreSQL à jour et d'aussi bonne qualité.

Quelques stats sur docs.postgresql.fr

Je n'avais pas été jeté un œil au compte Google Analytics du site de documentation. Bien m'en a pris d'y être retourné. Voici quelques chiffres.

Un petit graphique sur les visites depuis janvier 2007 (j'ai mis en place GA fin février 2007):

nbvisistes.png

Janvier dernier, nous avons eu notre highscore de visites avec 37632 visites dans le mois. On est à peu prêt à 2000 visites par jour. Ce qui me semble plutôt bon.

Les visiteurs viennent principalement de Google (75%) comme l'indique le camembert ci-dessous :

provenance.png

La légende indique pudiquement « Moteurs de recherche » mais quand on regarde le détail, il s'agit bien de Google.

Dans les chiffres intéressants/rigolos :

  • les sites référents sont principalement postgresql.fr (blog, forums, etc), postgresqlfr.org et postgresql.org. Le seul site externe est developpez.com à 2,7% ;
  • les navigateurs : 60% de Firefox, 30% de Internet Explorer ;
  • le système : Windows à 78%, Linux à 19% ;
  • les pays : France à 78%, puis Maroc, Belgique, Canada, Suisse, Tunisie, Algérie (les six devant comptabiliser environ 16%) ;
  • 35% de visiteurs « habituels », 65% de nouveaux ;
  • 35% des visiteurs a une résolution d'écran de 1280x1024, 20% en 1024x768 et 14% en 1280x800 (on a quand même 2,8% de chanceux en 1920x1200) ;
  • pratiquement tous ont Java et Flash activés.

Concernant les téléchargements, les PDF gagnent haut la main par rapport au CHM et au tar.gz. Et je ne parle même pas des zip. Voici les chiffres complets par version :

  • PDF : 238 7.4, 99 8.0, 423 8.1, 830 8.2, 8815 8.3 et 3090 8.4.
  • CHM : 23 8.1, 106 8.2, 416 8.3.
  • HTML en tar.gz : 14 8.1, 30 8.2, 554 8.3 et 677 8.4.

La documentation de la 8.3 et de la 8.4 a fait exploser les téléchargements de PDF qui semble être le format le plus populaire.

Je trouve tout ça bien intéressant.

« Le miroir de Cassandre »

Que dire de ce livre... Je n'ai pas aimé. Du tout. J'ai vraiment dû me forcer pour le terminer et ce gavage a duré quatre mois. C'est pour dire à quel point ça a été dur. Une histoire pas intéressante pour un sou, une réutilisation des anciens bouquins (l'Arbre des possibles, le personnage d'Isidore, et je ne sais plus quoi encore). Seule la fin relève un peu le niveau. Et encore, ça se discute.

Bref, je ne vais pas perdre du temps sur ça. Je n'ai vraiment pas aimé du tout. Point.

Solutions Linux 2010

Cette année encore, Solutions Linux s'est passé Porte de Versailles. Je ne sais pas si c'est dû à la crise mais j'ai trouvé que le salon était bien plus petit que les autres années. Les stands aussi. En dehors de celui de Linagora, ça faisait plutôt grise mine. Sauf au village associatif.

L'association PostgreSQLfr avait demandé un stand et certains d'entre nous s'étaient mis à disposition pour rester sur le stand et répondre aux questions des visiteurs. Il y avait en général trois à quatre personnes sur le stand, prêt à répondre aux questions. Côté questions, il y avait toujours le grand classique « MySQL /PostgreSQL, quelle différence ? » mais il y a eu aussi de l'innovation avec des questions sur le mouvement NoSQL. Venaient ensuite des personnes utilisant déjà PostgreSQL. Soit ils n'avaient aucune question et étaient très satisfait de ce qu'ils avaient déjà, soit ils posaient des questions sur les nouveautés de la prochaine version. Voilà en gros les questions qui m'ont été posées. En terme d'affluence, je pense que nous avons eu moins de visite que les autres années mais je pense que l'affluence générale a été bien moindre aussi.

L'association PostgreSQLfr en a profité pour vider ses stocks : mugs (vendus), tshirts du PGDay 2009 (vendus ou donnés lors d'une adhésion) et chemises (données). Nous avions aussi une vingtaine d'exemplaires du hors-série de GNU/Linux Magazine France, fournis gracieusement par Denis Bodor (rédacteur en chef dudit magazine), et que nous avons donné aux personnes intéressés à commencer avec PostgreSQL.

Merci à tous ceux qui ont participé aux préparatifs et à ceux qui ont pu tenir le stand.

« Démineurs »

Je viens de vérifier, je ne suis plus allé au cinéma depuis le 11 octobre. Wow. Le boulot pour le pgDay, puis pour pgAdmin, m'a clairement éloigné du ciné. Pas grave, il faut juste que je recommence à y aller, ce que j'ai fait samedi soir.

J'avais loupé ce film à sa sortie. Grâce à ses dernières récompenses, certaines salles de ciné l'ont de nouveau programmé. J'ai donc pu allé voir « Démineurs ». J'ai beaucoup aimé. L'histoire est passionnante. Généralement, quand on parle de guerre, on pense aux soldats qui se battent, rarement aux gars qui vont déminer. Du coup, on apprend pas mal de choses sur leur travail (difficile à connaître avant ce film) et sur son côté éprouvant (qu'on pouvait par contre très facilement imaginer sans ce film), Les acteurs sont excellents, la prise de vue est très bonne. C'est vivant, plein de suspens. Autant dire que j'ai bien aimé :)

pgAdmin, en version 1.10.2

Dave ne l'a pas encore annoncé mais le site l'affiche tout proprement. De toute façon, étant donné que, pour la première fois, je me suis occupé de pratiquement toute la sortie de cette version en dehors de la génération des binaires qui reste le boulot de Dave (donc le tout est le changement de version, l'ajout du tag, la modification du serveur web), je pense que je peux l'annoncer direct comme ça :)

Donc, voilà, la nouvelle version mineure est disponible et corrige neuf bugs. À installer et utiliser dès que possible.

PS : Je vous rassure (si nécessaire), je n'ai pas fait que ça sur pgAdmin. Je sais, j'ai deux semaines de retard pour le billet d'avancement sur pgAdmin. Mais ça ne veut pas dire que j'ai chômé pour autant :) Promis, je fais un billet ce week-end.

Le planning de PGCon 2010 enfin disponible

Et c'est du lourd. Si je pouvais y aller, je crois que j'irais voir :

Et encore, ce ne sont que celles auxquels je tiens absolument à elles. Il y en a plein d'autres.

Évidemment, les vidéos seront certainement disponibles un peu après les conférences, comme cela a été le cas l'année dernière. Mais c'est clairement pas la même chose qu'être présent sur place, de pouvoir discuter avec les différents intervenants, bref de se sentir faire partie de la communauté. Un seul conseil : si vous avez la possibilité d'y aller, déplacez-vous. Et buvez un coup à ma santé avec les autres hackers car il y a peu de chance que j'y sois cette année (déjà là-bas l'année dernière... chacun son tour :) ).

À noter cette année les conférences de deux français bien connus de la communauté PostgreSQL française : Cédric Villemain (qui va parler de son module pgfincore) et Dimitri Fontaine (qui va raconter deux ans d'expérience avec Londiste).

Oh, et tant que vous êtes au Canada, profitez-en pour passer une voire deux semaines à visiter le pays, j'ai adoré ma visite.

mise à jour : lien vers la conf de Robert Haas corrigé, merci Thomas.

Petit résumé des trois dernières semaines sur pgAdmin - 3

J'ai une petite semaine de retard pour mon compte-rendu habituel sur mon travail pour pgAdmin. Certainement dû à une grosse flemme le week-end dernier, de retour du FOSDEM. Cela étant dit, c'est pas plus mal. Et ce n'est pas comme si rien ne s'est fait pendant ces trois semaines, loin de là :)

Voici une liste rapide:

  • fonctionnalités spécifiques à la 9.0
    • gestion des nouvelles options (COSTS et BUFFERS) de l'instruction SQL EXPLAIN ;
    • gestion de la nouvelle colonne attoptions dans pg_attribute ;
    • ajout du support du paramétrage par paire utilisateur/base de données ;
    • ajout des informations sur le Hot Standby et le Streaming Replication ;
  • autres
    • revue complète de la fenêtre de restauration d'une sauvegarde ;
    • ajout d'un historique des requêtes sauvegardé automatiquement ;
    • possibilité d'afficher les numéros de lignes dans l'outil de requêtage ;
    • possibilité de personnaliser les couleurs utilisées par la colorisation syntaxique ;
    • possibilité de personnaliser certains des fichiers utilisés par pgAdmin (fichier des favoris, fichier des macros, fichier de l'historique des requêtes).

Pour le coup du EXPLAIN, j'ai ajouté un menu « EXPLAIN ANALYZE », plutôt que de laisser l'ANALYZE en tant qu'option à cocher. Ça permet de faire plus rapidement cette action. Et j'ai ajouté les options BUFFERS et COSTS. Du coup, le menu ressemble à ceci :

explainmenu.png

Et voici le texte d'un nœud suite à l'exécution d'un « EXPLAIN (ANALYZE on, BUFFERS on) » :

explainbuffers.png

La page des propriétés d'une base a changé pour permettre de spécifier des variables pour le couple base/utilisateur :

dbguc.png

Avec une telle configuration, le panneau SQL indique ceci :

dbguc2.png

Oui, je sais, les couleurs du SQL sont affreuses. C'est dû à mon test du patch de Maga qui permet à tout un chacun de sélectionner les couleurs qui lui plaisent pour la colorisation syntaxique du SQL. Voici l'onglet de configuration de la colorisation :

sqlhighlighting.png

Ayant réalisé la relecture de ce patch, je suis bien content que Maga soit arrivé à le terminer, ce qui m'a permis de l'intégrer cet après-midi.

Tant qu'on parle de la configuration, j'ai écrit un patch pour permettre de déplacer les fichiers internes de pgAdmin (comme celui des favoris par exemple). Le but est qu'un utilisateur puisse placer ces fichiers dans un répertoire partagé et faire profiter ses petits collègues de ses trouvailles. Voici l'écran de configuration :

filelocations.png

L'outil de requêtage a subi de nombreuses modifications, comme la possibilité d'afficher les numéros de ligne (désactivable par un menu de l'outil) ainsi que l'enregistrement automatique des requêtes exécutées.

linenumber.png

La liste déroulante permet de sélectionner une ancienne requête pour la ré-exécuter. Il est aussi possible de supprimer certaines requêtes du fichier (bouton « Delete Current »), voire toutes les requêtes (bouton « Delete All »).

querytool1.png

Enfin, la dernière nouveauté, c'est l'ajout de quelques informations permettant de savoir si un serveur est en mode restauration :

hssr_server.png

Il a aussi fallu supprimer un ancien patch que j'avais fait. Pas si ancien vu qu'il date de cette année. En effet, la nouvelle option INPLACE de l'instruction VACUUM a été supprimée. C'est, je crois, le problème quand on réagit trop vite aux améliorations du code source de PostgreSQL : on peut avoir à défaire ce qu'on a déjà fait. C'est un peu navrant mais on se console assez facilement. Tout d'abord parce que le nouveau VACUUM FULL est bien plus rapide. Ensuite parce que git rend ce genre de manipulation très aisée. Un simple « git revert id_patch » et hop, j'ai le patch me permettant de supprimer ce que j'avais fait. Tout à fait impressionnant.

Le travail sur pgAdmin continue. Je dois tout d'abord remplacer le composant de sélection des couleurs par notre propre composant. En effet, celui de wxWidgets se révèle être très moche, limite inutilisable, sous Mac OS X. Ensuite, je pourrais enfin m'attaquer au support des contraintes d'exclusion, puis aux droits par défaut et enfin à la nouvelle syntaxe de création de table. S'il me reste un peu de temps, j'aimerais bien voir ce que je peux faire pour avoir des graphes dans la fenêtre d'état du serveur.

FOSDEM 2010

FOSDEM est un événement européen qui s'est donné pour but de réunir tous les développeurs européens (et plus si affinités) de projets libres et opensource. C'est certainement le plus réputé à ce jour.

Chaque année, Andreas Scherbaum se charge d'organiser la présence de PostgreSQL à cet événement. Si ma mémoire ne se trompe pas, il y a quatre ans, nous n'avions qu'un stand, entièrement géré par PGde, le groupe d'utilisateurs allemands de PostgreSQL. Et encore, un stand partagé avec le groupe BSD. L'année d'après, nos amis BSD-istes nous ont proposé de partager leur salle de conférences. Et là, ce fut une explosion. Les deux années suivantes, nous avions notre propre stand, parfois composé de deux tables, une vingtaine de contributeurs principalement européens pour aider sur le stand, et une salle de conférences. L'année dernière, des américains étaient même venus, preuve de l'importance de cet événement.

Autant dire que le week-end du FOSDEM est devenu un moment important dans le monde PostgreSQL. Cette année en est la suite logique.

Une préparation exemplaire d'Andreas, un stand avec pas mal de goodies, des conférences très intéressantes et des discussions passionnantes avec les autres contributeurs.

Je n'ai assisté qu'à trois conférences, donc je ne pourrais rendre compte que de celles-ci. Tout d'abord, celle de Dave Page sur les nouveautés de la future 9.0 et la façon dont le développement s'est déroulé. La salle était bondée, beaucoup devaient, au choix, s'assoir par terre ou rester debout. Le contenu était intéressant et plutôt bien géré par Dave. Évidemment, c'est le type même des conférences difficiles car il est impossible de connaître suffisamment chaque fonctionnalité. Donc il est passé rapidement sur certaines, faute de les connaître mieux pour pouvoir les développer. Étant donné que je les connaissais déjà bien, ça ne m'a pas permis d'apprendre grand-chose. Néanmoins, c'était intéressant et le public a eu l'air de bien apprécier.

Ensuite, Heikki est intervenu pour parler du Streaming Replication, une fonctionnalité qu'il connaît particulièrement bien vu qu'il a revu le patch et qu'il l'a commité. Cette fois, j'ai appris deux/trois choses. J'ai eu la confirmation qu'il est possible d'avoir plusieurs esclaves. Par contre, la cascade de serveurs n'est pas au menu de la 9.0. Enfin, il est possible de fonctionner sans archivage des journaux de transactions mais cela peut amener des soucis de performances. En effet, en cas de grand flux de données, le système peut basculer de restauration de flux à une restauration de journaux complets. Ce qui rend le système plus robuste. Quant aux perspectives futures, elles sont nombreuses : sauvegarde des fichiers gérée automatiquement (sauvegarde sur le maître, envoi et restauration sur l'esclave), réplication synchrone, esclaves en cascade, archivage à partir des esclaves, etc. En tout, une conférence bien menée, très appréciée même si le public était moins nombreux. En rentrant à l'hôtel, j'ai pu discuté de cette fonctionnalité avec Heikki pour voir comment améliorer mon patch pour pgAdmin. Et j'ai peut-être une solution qui va me permettre de répondre au commentaire de Magnus.

Simon Riggs, arrivé juste à temps de l'aéroport, a pris la suite de Heikki pour une conférence sur le Hot Standby. Il a divisé sa conférence en trois parties : l'utilisation du Hot Standby, une démonstration, et quelques remarques sur le développement d'un patch de cette taille. Ça a certainement été la conférence la plus étonnante et la plus déstabilisante pour moi. J'y ai appris par exemple que les verrous étaient propagés sur l'esclave. Verrouiller une table sur le maître et elle sera aussi bloquée sur l'esclave tant que le verrou n'est pas enlevé. La démonstration était assez simple. Elle a été effectuée par Heikki car le portable de Simon refusait obstinément de fonctionner avec le rétro-projecteur et que le clavier de Heikki a la disposition finlandaise. La partie la plus intéressante de cette conférence était la dernière, celle sur le développement. Il a fallu trois ans pour réaliser ce patch. On le doit principalement à la volonté de Simon qui y a investi énormément de temps et d'argent. Il y a eu six sponsors majeurs et un étudiant est intervenu dans le cadre du Google Summer Of Code (GSoC). Simon a trouvé la communauté et les entreprises généralement peu motivées et peu réactives : peu de sponsors, peu d'aide de la communauté. Son constat me semble assez juste pour ce type de (très gros) patchs. En effet, il faut garder à l'esprit que son patch fait plus de 10000 lignes (ce qui est bien supérieur à la majorité des patchs actuels... c'est peut-être même le plus gros patchs de l'histoire de PostgreSQL). Son constat me semble donc légitime et mérite réflexion. On pourrait imaginer par exemple que PostgreSQL Europe et le SPI sponsorisent en partie ce type de patchs.

D'après ce que j'ai pu entendre, les autres conférences étaient aussi très intéressantes. Je n'en dirais pas plus, n'ayant pas pu y assister.

Mais le FOSDEM, ce n'est pas seulement les conférences. C'est aussi les discussions avec les contributeurs. Et cette année, quelques réunions.

Par exemple, j'ai été convié à une réunion de PostgreSQL Europe. Le but de cette réunion était de discuter de la tenue des prochaines élections pour le bureau de PostgreSQL Europe. Il a été décidé qu'il allait être possible de devenir membre de PostgreSQL Europe pour une durée de deux ans pour la (modique) somme de dix euros. Être membre permet de pouvoir voter pour élire le bureau, ce qui permet d'influer sur l'utilisation de l'argent par la communauté. Car le bureau a pour but de fournir des financements à des groupes d'utilisateurs qui voudraient monter des événements sur PostgreSQL. Par exemple, PostgreSQL Europe a très fortement aidé à la mise en place du PGDay 2009 fait en France. Il fera de même cette année pour la Hollande. Tous les détails devraient bientôt être disponibles sur le site web de l'association européenne, donc je n'entrerais pas plus dans les détails. Ce qui m'intéresse fortement, c'est que PostgreSQL Europe est une association qui fonctionne et qui travaille. Dès que cela sera possible, je deviendrais membre.

Autre exemple de discussion, celle que j'ai eu avec Dave Page et Magnus Hagander lors du l'attente particulièrement longue au restaurant du samedi soir. Nous avons discuté des développements en cours pour pgAdmin. Dave est toujours débordé par son boulot, donc il se trouve que je vais pour l'instant continuer en solo mes travaux sur la prochaine version de pgAdmin. Néanmoins, cette discussion m'a permis de trouver la solutions à plusieurs problèmes qui me bloquaient bien, donc certains de mes patchs vont rapidement être dans un état final, prêt à être commités. J'ai continué cette discussion le dimanche matin avec Dave lors du petit-déjeuner. Il se trouve qu'il a eu la même idée que moi pour une fonctionnalité qui devrait plaire à plus d'un.

Dernier exemple, la réunion pour le PGDay européen 2010. Elle a eu lieu dehors où il gelait mais où, au moins, on pouvait s'entendre (trop de bruit dans les couloirs, pas de salle dispo). Elle a réuni Dave Page, Magnus Hagander, Andreas Scherbaum, Jean-Paul Argudo, Koen et un autre hollandais dont j'ignore le nom. Les deux hollandais ont fait un point sur leurs démarches actuelles. Ils n'ont malheureusement pas pu beaucoup avancé. Une des raisons est que Koen a été très sollicité à son travail, ce qui lui a laissé bien peu de temps pour chercher un lieu convenable pour les conférences. On a discuté des pré-requis pour le lieu des conférences et de bien d'autres choses. On a notamment insisté sur le besoin d'une plus grande communication entre les différents organisateurs et PostgreSQL Europe. Certaines options envisagées me semblent très prometteuses. Du coup, je suis ressorti de cette réunion bien plus confiant qu'à mon arrivé.

Évidemment, il y a eu aussi quelques discussions avec les utilisateurs de PostgreSQL. Cependant, beaucoup moins qu'à Solutions Linux, ce qui est fort dommage. Vendre des goodies m'intéresse assez peu, on fait quand même un peu marchand de tapis. Donc un très grand merci à ceux qui sont venus nous poser des questions techniques, aussi et surtout quand ils nous ont collé :)

Que dire de plus... l'événement a de nouveau été un grand succès. J'y ai passé un très bon moment, bien que j'ai encore de gris progrès à faire pour être à l'aise à l'oral en anglais. Il n'empêche que le FOSDEM 2011 sera une étape obligatoire.

N'oubliez pas qu'il y aura au moins deux autres événements importants en Europe : Solutions Linux dans un mois, PGDay.eu en octobre. J'espère que nous aurons aussi la possibilité d'organiser quelque chose pour la sortie de la 9.0

Hot Standby et Streaming Replication

Hier soir et ce soir, je me suis amusé à mettre en place ces deux fonctionnalités sur ma version de développement. Ça a été beaucoup plus simple que je ne le craignais. Mettre en place le Hot Standby, c'est aussi simple que la configuration du Warm Standby. Et ça marche sacrément bien. J'ai eu un peu plus de difficulté ce soir avec le Streaming Replication, mais principalement parce que je n'ai pas été très rigoureux dans les différentes manipulations (j'ai oublié le pg_stop_backup sur le serveur primaire, ce qui a eu pour conséquence une impossibilité de se connecter sur le secondaire). Bref. Mettre en place un Hot Standby avec du Streaming Replication, ça se fait très simplement. Et c'est redoutablement efficace. J'avoue que j'avais très peur du lag pour la réplication. Avec un wal_sender_delay à 200ms (la valeur par défaut), c'est pratiquement immédiat. J'ai ainsi restauré une grosse sauvegarde... et aucun lag. Dès que la restauration était terminée sur le primaire, mon secondaire était synchronisé. Cela étant dit, je n'ai pas restauré en une seule transaction. Mais quand même, je suis sacrément impressionné pour ces deux fonctionnalités : c'est simple et rapide à mettre en place, c'est fonctionnel et rapide en exécution. Évidemment, il va y avoir un bon debug à faire. Mais clairement, cette nouvelle version (9.0) a toutes les chances d'avoir un franc succès.

Petit résumé des deux dernières semaines sur pgAdmin - 2

La première semaine a été remplie de nombreuses corrections de bugs :

  • correction de l'affichage du composant date./heure ;
  • correction de l'appel à la fonction storenode de Slony-I 2.0.x ;
  • correction de la sélection de l'objet dans le navigateur quand un serveur est choisi avec l'argument en ligne de commande /s ;
  • correction de l'affichage d'un type doté d'un typmod spécifique ;
  • acceptation des adresses IPv6 ;
  • correction d'une erreur SQL lors de l'ajout/modification d'un paramètre sur une base de données, un utilisateur ou une fonction ;
  • correction d'un message d'erreur lors de la sauvegarde des favoris.

La deuxième semaine a concerné de nouvelles fonctionnalités, principalement pour la future 9.0.

  • Autorisation de la copie des informations sur les onglets « Propriétés », « Statistiques », « Dépendances » et « Dépendants de ».
  • Gestion de la nouvelle option INPLACE de VACUUM.

vacuuminplace.png

  • Support de la nouvelle instruction « ALTER TABLESPACE name SET/RESET ».

tablespacesetoptions.png

Sans compter que je viens de terminer un patch gérant les nouvelles options de VACUUM, à savoir COSTS et BUFFERS.

« Pro Git »

Une lecture informatique pour une fois. Un excellent bouquin qui se trouve aussi disponible en Creative Commons. Scott Chacon a fait un excellent boulot en écrivant ce livre : simple, didactique, professionnel, passionnant. À conseiller à tous ceux qui veulent connaître Git dans les moindres recoins sans se prendre la tête.

- page 2 de 63 -