Ci sono state alcune discussioni sul wiki della comunità SO riguardo al fatto che gli oggetti del database debbano essere controllati dalla versione. Tuttavia, non ho visto molte discussioni sulle best practice per la creazione di un processo di automazione della compilazione per gli oggetti di database.
Questo è stato un punto di discussione controverso per il mio team, soprattutto perché gli sviluppatori e gli amministratori di database hanno spesso obiettivi, approcci e preoccupazioni diversi quando valutano i vantaggi e i rischi di un approccio di automazione alla distribuzione del database.
Vorrei ascoltare alcune idee dalla comunità SO su quali pratiche sono state efficaci nel mondo reale.
Mi rendo conto che è in qualche modo soggettivo quali siano le pratiche migliori, ma penso che un buon dialogo su quale lavoro potrebbe essere utile a molte persone.
Ecco alcune delle mie domande teaser sulle aree di interesse in questo argomento. Questi non vogliono essere un elenco definitivo, ma piuttosto un punto di partenza per le persone che mi aiutano a capire cosa sto cercando.
- Gli ambienti di test e di produzione dovrebbero essere costruiti dal controllo del codice sorgente?
- Dovrebbero essere entrambi costruiti utilizzando l'automazione o la produzione dovrebbe essere costruita copiando oggetti da un ambiente di test stabile e finalizzato?
- Come gestisci le potenziali differenze tra gli ambienti di test e di produzione negli script di distribuzione?
- Come si verifica che gli script di distribuzione funzioneranno con la stessa efficacia con la produzione come in test?
- Quali tipi di oggetti dovrebbero essere controllati dalla versione?
- Solo codice (procedure, pacchetti, trigger, java, ecc.)?
- Indici?
- Vincoli?
- Definizioni delle tabelle?
- Script di modifica della tabella? (es. ALTER script)
- Qualunque cosa?
- Quali tipi di oggetti non dovrebbero essere controllati dalla versione?
- Sequenze?
- Borse di studio?
- Profili utente?
- Come dovrebbero essere organizzati gli oggetti del database nel repository SCM?
- Come gestisci cose una tantum come script di conversione o script ALTER?
- Come gestisci il ritiro degli oggetti dal database?
- Chi dovrebbe essere responsabile della promozione degli oggetti dallo sviluppo al livello di test?
- Come coordini le modifiche di più sviluppatori?
- Come gestisci la ramificazione per gli oggetti di database utilizzati da più sistemi?
- Quali eccezioni, se del caso, possono essere ragionevolmente fatte a questo processo?
- Problemi di sicurezza?
- Dati con problemi di anonimizzazione?
- Script che non possono essere completamente automatizzati?
- Come puoi rendere il processo resiliente e applicabile?
- All'errore dello sviluppatore?
- A problemi ambientali imprevisti?
- Per il ripristino di emergenza?
- Come convincere i responsabili delle decisioni che i vantaggi di DB-SCM giustificano davvero il costo?
- Prove aneddotiche?
- Ricerca di settore?
- Consigli di best practice del settore?
- Ricorsi alle autorità riconosciute?
- Analisi costi benefici?
- Chi dovrebbe "possedere" oggetti di database in questo modello?
- Gli sviluppatori?
- DBA?
- Analisti di dati?
- Più di una?