Sobre el proyecto
pgfathom es una herramienta de utilidad de línea de comandos para arqueología de esquemas de PostgreSQL. Encuentra relaciones que no están declaradas como llaves foráneas examinando el catálogo, la evidencia de uso de vistas y funciones, convenciones de nomenclatura y estadísticas del planificador. La herramienta nunca escribe en la base de datos y está diseñada para operar de manera segura en sistemas de producción.
El problema que resuelve es que muchas bases de datos de PostgreSQL legadas llevan integridad referencial oculta – columnas que apuntan a otras tablas pero carecen de restricciones, o restricciones que fueron creadas NOT VALID y nunca validadas. Esto hace invisible el modelo a herramientas como \\u2206 y permite que las filas órfanas acumulen sin ser notadas.
Lo que hace pgfathom:
* En modo de descubrimiento produce un informe en la terminal con veredictos (rotos, confirmados, débiles, no validados, detectados), un modelo JSON versionado y scripts SQL revisables.
* Las relaciones confirmadas reciben DDL con VALIDATE CONSTRAINT separado para evitar bloqueos pesados, y CREATE INDEX CONCURRENTLY cuando sea necesario.
* Las relaciones rotas se emiten como DDL comentada para que el usuario decida qué hacer con las filas órfanas.
* Apoya perfiles de nomenclatura (pt-br, en, es) y puede leer convenciones de sufijos directamente de las claves que el esquema aún declara. Los usuarios pueden proporcionar perfiles personalizados en formato TOML.
* Las predicados de unión se extraen de las definiciones de vistas y cuerpos de funciones (y, cuando disponible, pg_stat_statements) para encontrar relaciones que la nomenclatura no puede alcanzar.
* El pipeline de validación consta de seis etapas: lectura del catálogo, minería de evidencia de uso, generación de candidatos utilizando el perfil, puntuación en metadatos, prefiltrado con estadísticas y validación final contra los datos utilizando agregados.
Las opciones de instalación incluyen paquetes DEB/RPM, Homebrew, una imagen de Docker o construir desde la fuente con Go. La herramienta es solo de lectura, respeta los tiempos de declaración y bloqueo, limita la concurrencia y informa la cobertura de esquemas y tablas para que el silencio nunca se confunda con un informe limpio.
El ámbito predeterminado es el esquema público pero se puede extender con --all-schemas, --schema, --exclude-schema, y --exclude banderas. El comando de configuración guía a los usuarios de primera vez a través de la conexión, la selección de esquema, la profundidad de validación y la ubicación de la salida.
La precisión se mide por la tasa de recuperación: un esquema con llaves foráneas completas se despoja de ellas, pgfathom se ejecuta y se informa la fracción recuperada. Los resultados se publican en un corpus público que cubre GitLab, sistemas municipales y Discourse, mostrando el rendimiento en regímenes parcial (la mitad de las llaves eliminadas) y sin declarar (sin llaves declaradas). La herramienta también informa cuánto cada etapa contribuye – perfil solo, detección de nomenclatura y minería de uniones.
El output incluye un resumen en la terminal con contadores por veredicto, tablas analizadas y resultados de prefiltrado de estadísticas; un modelo JSON versionado con marca de tiempo; y archivos .sql que contienen la DDL para las llaves foráneas confirmadas (listos para ejecutarse después de revisión) y DDL comentada para las llaves rotas (para ser examinadas antes de cualquier acción). Todos los SQL generados se deben revisar antes de su ejecución.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.