Fonaments de l'automatització
Per què automatitzar?
Gestionar una base de dades en producció implica moltes tasques repetitives: netejar registres antics, actualitzar estadístiques, verificar integritat referencial, generar informes nocturns, arxivar dades, enviar alertes... Fer-ho manualment comporta:
- Inconsistència: cada operador pot fer-ho de manera diferent.
- Oblit: una tasca manual pot no executar-se en el moment crític.
- Errors humans: la fatiga i les distraccions provoquen errors en scripts llargs.
- Dependència de persones: si l'operador no hi és, la tasca no es fa.
L'automatització elimina aquests riscos movent la lògica i la planificació al propi SGBD.
Beneficis principals
mindmap
root((Automatització SGBD))
Consistència
Mateixos resultats sempre
Lògica centralitzada
Sense variació humana
Rendiment
Execució al servidor
Menys tràfic de xarxa
Plans d'execució optimitzats
Seguretat
Control d'accés granular
Ocultació de lògica
Audit trails automàtics
Manteniment
Tasques nocturnes
Arxivat automàtic
Neteja periòdica
Reutilització
Un cop definit, usat moltes vegades
Menys codi a l'aplicació
Estandardització
Visió general dels mecanismes d'automatització
En aquest bloc estudiem quatre mecanismes principals disponibles en els SGBD relacionals més importants:
1. Procediments emmagatzemats (Stored Procedures)
Blocs de codi SQL i lògica de control (IF, WHILE, FOR...) que s'emmagatzemen compilats al servidor. S'executen amb una crida explícita (CALL o EXEC). Ideals per a operacions complexes de múltiples passos: validar dades, inserir en diverses taules, calcular totals, gestionar transaccions.
2. Funcions d'usuari (User-Defined Functions)
Similars als procediments però retornen un valor i es poden usar directament en expressions SQL (SELECT, WHERE, ORDER BY). Hi ha funcions escalars (retornen un valor únic) i de taula (retornen un conjunt de files).
3. Disparadors (Triggers)
Codi que s'executa automàticament en resposta a un esdeveniment de dades: INSERT, UPDATE o DELETE. No cal cridar-los explícitament. S'utilitzen per auditoria, validació de regles de negoci, manteniment de dades derivades i sincronització de taules.
4. Esdeveniments programats (Scheduled Events / Jobs)
Mecanismes per executar codi SQL de manera planificada en el temps: cada nit a les 2:00, cada hora, els diumenges... Equivalen als cron jobs del sistema operatiu però integrats al SGBD. Cada motor té el seu propi sistema: pg_cron (PostgreSQL), EVENT SCHEDULER (MySQL), SQL Server Agent (SQL Server), DBMS_SCHEDULER (Oracle).
Comparativa de suport entre motors
| Característica | PostgreSQL | MySQL/MariaDB | SQL Server | Oracle |
|---|---|---|---|---|
| Stored Procedures | Sí (PL/pgSQL) | Sí | Sí (T-SQL) | Sí (PL/SQL) |
| Funcions escalars | Sí | Sí | Sí | Sí |
| Funcions de taula | Sí | No (limitat) | Sí | Sí (pipelined) |
| Triggers BEFORE/AFTER | Sí | Sí | AFTER/INSTEAD OF | Sí |
| Triggers FOR EACH ROW | Sí | Sí | FOR EACH STATEMENT | Sí |
| Events/Jobs integrats | pg_cron (ext.) | EVENT SCHEDULER | SQL Server Agent | DBMS_SCHEDULER |
| Gestió d'excepcions | EXCEPTION | DECLARE HANDLER | TRY/CATCH | EXCEPTION |
| Llenguatge procedural | PL/pgSQL | SQL/PSM | T-SQL | PL/SQL |