Quando si puliscono i vecchi dati da una serie di tabelle di database, è più sicuro avere la logica nell'applicazione o nel trigger di un database?
Sto aggiornando un'applicazione che ho scritto qualche istante prima (e in modo affrettato) e una delle cose che voglio pulire prima è garantire che i dati che non vengono più utilizzati vengano eliminati in modo efficace. Attualmente questo viene fatto nella mia applicazione stessa attraverso un numero di chiamate SQL a varie tabelle. Alcune di queste query richiedono un po 'di tempo per essere eseguite e poiché l'applicazione è basata su PHP, non voglio che gli utenti debbano attendere troppo a lungo.
Stavo quindi pensando di creare un trigger del database su una tabella che pulisse allegramente tutte le altre tabelle e quindi consentissi l'eliminazione della singola riga dalla mia tabella principale.
Sto prendendo in considerazione questi pro e contro al momento:
- Trigger del database
- (+) invisibile all'applicazione
- (+) Semplifica la logica dell'applicazione - i nuovi oggetti possono essere semplificati
-
(-) Aggiunge complessità alla manutenzione generale - devono mantenere codice e trigger durante le modifiche alla tabella, ecc.
-
Logica dell'applicazione
- (+) Mantiene tutte le attività di manutenzione in un unico punto
- (-) Caricamenti di pagina più lunghi su determinate attività
- (-) Più possibilità di temporizzazione di una richiesta - dati orfani
Se hai ulteriori informazioni, considerazioni a cui non ho pensato qui, fai esperienza con l'una o l'altra o puoi indicarmi qualche lettura sull'argomento, mi piacerebbe sentirla.
Modifica: originariamente pensavo che le mie pagine sarebbero più veloci, ma se creo un trigger Prima di eliminare , la pagina verrà caricata allo stesso modo - come nell'applicazione invia una piccola query ma non verrà eseguito fino a quando non verrà completata l'intera serie di istruzioni nel trigger?