Comprendre la mécanique interne d'un système de gestion de base de données comme PostgreSQL peut rapidement devenir un calvaire. Entre la gestion de la mémoire partagée, le journal d'écriture anticipée, les processus d'arrière-plan et le nettoyage MVCC, les concepts théoriques restent souvent abstraits. C'est précisément pour rendre ce fonctionnement tangible qu'a été créé PGSimCity, un projet open source fascinant qui transforme un cluster PostgreSQL en une métropole interactive en trois dimensions directement accessible dans le navigateur.

Imaginé comme un modèle réduit interactif, PGSimCity représente chaque composant clé de PostgreSQL sous la forme d'un quartier ou d'une structure urbaine. L'ensemble repose sur une dalle dont les contours reprennent la forme de Slonik, la célèbre mascotte éléphant du projet.

Au centre de la ville, une grande place quadrillée symbolise le buffer pool (shared_buffers), c'est-à-dire l'échantillon de la mémoire cache partagée. Les tuiles bleues représentent les pages propres conformes au disque, tandis que les tuiles rouges indiquent les pages modifiées en mémoire. Une aiguille tournante matérialise l'algorithme clock sweep à la recherche de frames à réutiliser.

Directement sous cette plaza, une excavation creusée dans le sol figure le répertoire des données, où l'on retrouve les fichiers de table, les index et les objets TOAST. Plus à l'est, le quartier lumineux du WAL montre le flux des transactions prêtes à être inscrites sur le disque.

Exploration guidée et simulation en temps réel

L'application intègre un simulateur dynamique qui permet de visualiser le parcours d'une requête SQL depuis la connexion initiale d'un client via le processus postmaster jusqu'à la validation définitive du commit.

Pour ceux d'entre vous qui souhaitent apprendre à leur rythme, un parcours guidé en quatorze chapitres décortique étape par étape la vie d'une transaction. De plus, un panneau de contrôle permet de faire varier la charge de travail en temps réel.

Il est possible d'ajuster le nombre de transactions par seconde, le pourcentage d'écritures ou de lectures, ou encore de modifier la configuration de paramètres avancés comme synchronous_commit, autovacuum ou les seuils des checkpoints.

Observer les pannes et disséquer les pages mémoire

PGSimCity simule des situations de crise bien connues des administrateurs de bases de données. En un clic, il est possible de déclencher des scénarios de blocage comme des transactions anormalement longues, de la contention de verrous, une accumulation de lignes mortes ou un retard de réplication sur un serveur secondaire.

En sélectionnant n'importe quel bâtiment ou composant, un inspecteur détaillé s'ouvre pour exposer le fonctionnement interne exact. L'outil propose même une dissection visuelle d'une page de 8 Ko sur le disque, montrant l'agencement de l'en-tête de page, des pointeurs de lignes et la chaîne des différentes versions d'un enregistrement MVCC (t_xmin et t_xmax).

Un outil pédagogique accessible à tous

Entièrement exécuté grâce à WebGL2 et JavaScript, le projet fonctionne directement dans n'importe quel navigateur sans nécessiter d'installation ni de serveur PostgreSQL local. Que vous soyez développeur, administrateur de base de données ou simplement curieux de comprendre les entrailles des systèmes de fichiers et de stockage, PGSimCity offre une immersion visuelle inédite et particulièrement intuitive. Le tout est disponible librement sur GitHub Pages et invite la communauté à tester, apprendre et contribuer.