Alcuni sostengono che la logica aziendale non ha spazio nelle stored procedure e risulta in sistemi non gestibili. Vorrei sottolineare che questi argomenti provengono principalmente dai punti di vista di DDD e N-Tier che cercano di ospitare tutte le logiche di business in una regione specifica all'interno del livello dell'applicazione. Mentre questo è un obiettivo degno, ci sono altri punti di vista là fuori che vale la pena considerare. Gli SP possono anche fare molto di più della semplice logica aziendale.
Incidentalmente, il mondo Oracle crede che la sua migliore pratica sia quella di avere tutte le logiche di business nel codice PL/SQL sul DB, e sanno una cosa o due sui database relazionali!
Considerare questi usi della SP:
Performance. È spesso utile eseguire più istruzioni SQL in un SP e quindi evitare che l'applicazione effettui più round trip nel DB, con conseguenti miglioramenti delle prestazioni a volte considerevoli.
Gestione modifiche. Gli SP sono semplici da mantenere e modificare, a condizione di disciplinare il controllo della versione e il processo di distribuzione.
Gli SP possono essere rilasciati per sistemi di produzione dal vivo senza un'interruzione, che può rappresentare un notevole vantaggio nelle operazioni 24/7. Ovviamente è ancora necessario uno stretto controllo sul processo di rilascio.
Strato di astrazione. Gli SP possono astrarre i dettagli dello schema DB dall'applicazione, a condizione che tutte le interazioni app/db siano tramite SP. Questo può essere un concetto molto potente. Considera che la durata di vita del DB supererà spesso l'app - le app vanno e vengono, e vengono riscritte ogni tanto con le ultime tecnologie e modelli di architettura, ma i dati preziosi rimangono nello stesso vecchio DB relazionale per eoni. Spesso, le app multiple sono sviluppate sullo stesso DB, anche se questo non è mai stato l'intento originale. Gli SP in questi scenari vengono utilizzati per fornire un'API stretta e ben definita tra app e DB, che può essere controllata con attenzione per garantire interazioni coerenti con più app e persino più versioni della stessa app.
Questa separazione di problemi tra schema db e app lascia ai programmatori di applicazioni liberi di fare ciò che sanno fare meglio, lasciando al DBA la mano libera per migliorare lo schema nel tempo senza rompere le app.
Indipendentemente dal modello di architettura utilizzato, gli SP possono svolgere un ruolo prezioso. Non escludere quindi alcun progetto e, come qualsiasi altro strumento, utilizzarlo dove ha senso.
Più facile allora? Questa domanda è priva di significato senza sapere cosa confrontare. – SquareCog