Scorpio
2008-06-03 20:44:42 UTC
Salve a tutti,
solita domanda un po' oziosa un po' seria. Tempo fa stavo revisionando il
codice di un collega e mi sono accorto che, per eseguire l'accesso ai dati,
il collega aveva fatto ricorso in modo esclusivo a delle stored procedures.
Chiestogli il perchè di questa scelta, ha risposto, un po' con l'aria di chi
la sa lunga che *deve* far capire le cosa a chi non la sa altrettanto lunga,
che l'adozione delle stored procedure per accedere ai dati è di gran lunga
la più efficiente.
Io l'ho lasciato ovviamente terminare il lavoro, però dentro la mia testa ha
cominciato a girare una rotellina, ossia un dubbio, su quando sia necessario
ricorrere a delle stored procedure e quando no.
A ben pensarci l'uso delle stored procedures ha dei vantaggi che va al di là
della pura efficienza: ad esempio mi viene in mente la possibilità di
ricompilare le stored procedures "al volo" in caso di modifica dei criteri
per estrarre un certo cursore dal database. Altro esempio che mi viene in
mente è un'operazione di "write" intesa come "insert/update": se fallisce
una insert (perchè il dato esiste già), esegui una update usando una certa
chiave.
Il problema di questo approccio è, chiaramente, la dipendenza dal "dialetto"
specifico del dbms per scrivere le stored procedures. Ma, a parte questo
inconveniente - che può essere nullo se per forza o per amore ci si lega ad
un certo vendor - quali altri svantaggi presentano le s.p ?
La butto lì - un po' provocatoriamente : se (grande SE) non ci fossero i
vari dialetti ma un linguaggio standard per ogni vendor, avrebbe ancora
senso la "rincorsa continua" ai motori di persistenza ?
Scorpio.
solita domanda un po' oziosa un po' seria. Tempo fa stavo revisionando il
codice di un collega e mi sono accorto che, per eseguire l'accesso ai dati,
il collega aveva fatto ricorso in modo esclusivo a delle stored procedures.
Chiestogli il perchè di questa scelta, ha risposto, un po' con l'aria di chi
la sa lunga che *deve* far capire le cosa a chi non la sa altrettanto lunga,
che l'adozione delle stored procedure per accedere ai dati è di gran lunga
la più efficiente.
Io l'ho lasciato ovviamente terminare il lavoro, però dentro la mia testa ha
cominciato a girare una rotellina, ossia un dubbio, su quando sia necessario
ricorrere a delle stored procedure e quando no.
A ben pensarci l'uso delle stored procedures ha dei vantaggi che va al di là
della pura efficienza: ad esempio mi viene in mente la possibilità di
ricompilare le stored procedures "al volo" in caso di modifica dei criteri
per estrarre un certo cursore dal database. Altro esempio che mi viene in
mente è un'operazione di "write" intesa come "insert/update": se fallisce
una insert (perchè il dato esiste già), esegui una update usando una certa
chiave.
Il problema di questo approccio è, chiaramente, la dipendenza dal "dialetto"
specifico del dbms per scrivere le stored procedures. Ma, a parte questo
inconveniente - che può essere nullo se per forza o per amore ci si lega ad
un certo vendor - quali altri svantaggi presentano le s.p ?
La butto lì - un po' provocatoriamente : se (grande SE) non ci fossero i
vari dialetti ma un linguaggio standard per ogni vendor, avrebbe ancora
senso la "rincorsa continua" ai motori di persistenza ?
Scorpio.