unnecessarily couples application and storage code
È meglio che accoppiare la tua app ad un particolare database? Penso che la grande domanda sia: voglio unire i miei sviluppatori al database?
Se lavorerai con un database, penso che dovresti capire come funziona il codice, ma ciò non significa che lo sviluppatore debba scrivere direttamente ogni singola istruzione. Usare il linguaggio di scelta è abbastanza difficile senza il lavoro aggiuntivo di scrivere sql. La maggior parte dei programmatori separerebbe le preoccupazioni inserendo la logica del dominio (cosa fa realmente l'app) e la memorizzazione all'interno dell'applicazione. Esistono framework che si occupano di molte "risorse di database" per il programmatore e possono persino utilizzare lo stesso codice e passare da un RDBMS a un altro. Aggiungi una proprietà a un modello di dati e lascia che l'ORM crei una posizione nel database.
Vantaggi della stored procedure Contengono il testo per uno script. Sì, è stato controllato dal db per vedere se verrà eseguito (notare che non ho detto che funzioni). Come tutte le query inviate a molti database, cercherà di memorizzare nella cache alcuni piani di esecuzione per le prestazioni (la procedura di archiviazione non è richiesta). La tabella e altri accessi agli oggetti possono essere bloccati e controllati nella sproc per utenti / gruppi. Sono d'accordo, che grande caratteristica. Perché un programmatore dovrebbe preoccuparsi di tutto questo nel codice dell'app. Scaricalo dal database in modo simile ad alcuni servizi Web o altre API.
Ecco perché questa è una cattiva idea per molti sviluppatori. Non vogliono scrivere sql e avere un DBA amabile 24/7 è difficile da trovare. Lo sviluppo del database può diventare un collo di bottiglia. Quando è necessario un requisito o si trova un bug, il nome del film è "Amico! Dov'è il mio codice?" è tutto nella sezione del dominio.
RDBMS non piace Sorprese: ecco perché alcuni tipi di codifica non sono adatti alla maggior parte dei linguaggi di scripting del database Se solo questo ha funzionato:
Seleziona @ListOfFields FROM @TheTableOfYourChoice WHERE @TheColumnYouWant = @OnlyParameterValueWhichWouldActuallyWork;
Tanto più che questa stored procedure che fa in modo che tutto il materiale del database suoni così bene, ci sono dei limiti. Buona fortuna scrivere la dichiarazione di sql per l'opzione di filtro a 8 parti che il tuo cliente desidera. "Ma cosa succede se ho bisogno di cercare il nome completo o solo l'abbreviazione e possibilmente il numero di telefono? Potrebbe succedere."