À propos du projet
pgfathom est un utilitaire en ligne de commande en lecture seule destiné à l'archéologie de schéma PostgreSQL. Il identifie les relations qui ne sont pas déclarées comme clés étrangères en examinant le catalogue, les preuves d'utilisation issues des vues et fonctions, les conventions de nommage et les statistiques du planificateur. L'outil n'écrit jamais dans la base de données et est conçu pour une utilisation sécurisée sur les systèmes de production.
Il résout le problème des bases de données PostgreSQL héritées comportant une intégrité référentielle cachée, où des colonnes pointent vers d'autres tables sans contraintes, ou avec des contraintes créées en mode NOT VALID et jamais validées. Cela rend le modèle invisible pour les outils et permet l'accumulation de lignes orphelines.
Fonctionnalités de pgfathom :
* En mode découverte, il produit un rapport terminal avec des verdicts (rompu, confirmé, faible, non validé, détecté), un modèle JSON versionné et des fichiers .sql révisables. Les relations confirmées reçoivent un DDL avec VALIDATE CONSTRAINT séparé pour éviter les verrous lourds, et CREATE INDEX CONCURRENTLY si nécessaire. Les relations rompues sont émises sous forme de DDL commenté pour permettre à l'utilisateur de gérer les données orphelines.
* Il prend en charge des profils de nommage (pt-br, en, es) et peut lire les conventions d'affixes directement à partir des clés déjà déclarées. Les utilisateurs peuvent fournir des profils TOML personnalisés.
* Les prédicats de jointure sont extraits des définitions de vues et des corps de fonctions (ainsi que de pg_stat_statements) pour trouver des relations inaccessibles par simple correspondance de noms.
* Le pipeline de validation comprend six étapes : lecture du catalogue, extraction des preuves d'utilisation, génération de candidats via le profil, notation sur les métadonnées, pré-filtrage avec statistiques et validation finale contre les données via des agrégats.
Les options d'installation incluent des paquets DEB/RPM, Homebrew, une image Docker ou une compilation depuis les sources avec Go. L'outil est en lecture seule, respecte les délais d'expiration des instructions et des verrous, limite la concurrence et rapporte la couverture des schémas et tables.
La portée par défaut est le schéma public, mais peut être étendue avec les drapeaux --all-schemas, --schema, --exclude-schema et --exclude. La commande de configuration guide les nouveaux utilisateurs à travers la connexion, la sélection du schéma, la profondeur de validation et l'emplacement de sortie.
La précision est mesurée par le taux de récupération : un schéma avec des clés étrangères complètes est dépouillé de celles-ci, pgfathom est exécuté, et la fraction récupérée est rapportée. Les résultats sont publiés sur un corpus public couvrant GitLab, des systèmes municipaux et Discourse.
La sortie comprend un résumé terminal avec les décomptes par verdict, les tables analysées et les résultats du pré-filtrage statistique ; un modèle JSON versionné avec horodatage ; et des fichiers .sql contenant le DDL pour les clés confirmées (prêt à l'emploi après révision) et le DDL commenté pour les clés rompues. Tout SQL généré doit être révisé avant exécution.
En résumé, pgfathom transforme un schéma silencieux et non documenté en un modèle visible et exploitable, fournissant les requêtes exactes nécessaires pour résoudre l'intégrité rompue et le DDL sécurisé pour restaurer les contraintes manquantes.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.