Mysql
 sql >> Database >  >> RDS >> Mysql

Le stored procedure MySQL li usano o meno per usarli

A differenza del codice del linguaggio di programmazione effettivo, essi:

  • non portabile (ogni db ha la sua versione di PL/SQL. A volte versioni diverse dello stesso database sono incompatibili - l'ho visto!)
  • non facilmente testabile:hai bisogno di un reale (dev) l'istanza del database per testarli e quindi testare il loro codice come parte di una build è praticamente impossibile
  • non facilmente aggiornabili/rilasciabili - devi rilasciarli/crearli, cioè modificare il db di produzione per rilasciarli
  • non ho il supporto della libreria (perché scrivere codice quando qualcun altro lo ha)
  • non sono facilmente integrabili con altre tecnologie (prova a chiamare da esse un servizio web)
  • usano un linguaggio primitivo quanto Fortran e quindi sono poco eleganti e laboriosi per fare codice utile, quindi è difficile esprimere la logica aziendale, anche se in genere è questo il loro scopo principale
  • non offrono debugging/tracing/message-logging ecc. (alcuni db potrebbero supportarlo, ma non l'ho visto)
  • manca un IDE decente per aiutare con la sintassi e il collegamento ad altre procedure esistenti (ad esempio come fa Eclipse per java)
  • Le persone esperte nella codificazione sono più rare e più costose dei programmatori di app
  • le loro "prestazioni elevate" sono un mito, perché vengono eseguite sul server di database che di solito aumentano il carico del server db, quindi il loro utilizzo di solito riduce la massima velocità effettiva delle transazioni
  • Incapacità di condividere in modo efficiente le costanti (normalmente risolta creando una tabella e ricercandola dall'interno della tua procedura - molto inefficiente)
  • ecc.

Se disponi di un'azione molto specifica per il database (ad es. un'azione durante la transazione per mantenere l'integrità del database) o mantieni le tue procedure molto atomiche e semplici, forse potresti prenderle in considerazione.

Si consiglia cautela quando si specifica "prestazioni elevate" in anticipo. Spesso porta a scelte sbagliate a scapito di un buon design e ti morderà molto prima di quanto pensi.

Usa le stored procedure a tuo rischio e pericolo (da qualcuno che è stato lì e non vuole mai tornare indietro). La mia raccomandazione è di evitarli come la peste.