La creazione di oggetti come tabelle e indici è abbastanza essenziale, anche se il codice deve essere autorizzato o creato dal dba. Quali altre aree normalmente eseguite da DBS dovrebbero essere a conoscenza dello sviluppatore esperto?Quali sono le competenze dba essenziali che uno sviluppatore dovrebbe imparare?
risposta
I dettagli di archiviazione e ottimizzazione del database sono enormi. Sapere come indicizzare e partizionare le tabelle è una conoscenza inestimabile.
Inoltre, come leggere un piano di esecuzione della query.SQL è un linguaggio talmente interessante che ti dirà esattamente il come farà il tuo codice, a patto che tu lo chieda gentilmente. Questo è assolutamente essenziale per ottimizzare il codice e trovare i colli di bottiglia.
La manutenzione del database (backup, restringimento di file, ecc.) È sempre importante per mantenere il server in esecuzione senza intoppi. È qualcosa che è spesso trascurato, anche.
Gli sviluppatori devono sapere tutto sui trigger e sulle stored procedure, ovvero far funzionare il database al posto tuo. Queste cose possono aiutare ad automatizzare così tante attività, e spesso gli sviluppatori le ignorano e cercano di gestirle da tutte le parti delle applicazioni, quando dovrebbero essere gestite da qualcosa che pensa nei set.
Il che mi porta al punto più importante, gli sviluppatori di database devono pensare nei set. Spesso sento "Per ogni riga, voglio ..." e questo è generalmente un allarme nella mia testa. Dovresti pensare a come l'insieme interagisce e le azioni che vuoi intraprendere su intere colonne.
Alcuni punti positivi, thx – DBMarcos99
Ottimizzazione. Il tuo codice deve sempre usare poche risorse quante ne puoi ottenere.
Mi piace questa risposta! (anche se posso pensare a scenari in cui l'utilizzo delle risorse non è un problema prevalente) – DBMarcos99
Uno sviluppatore è responsabile di fare tutto ciò che rende il suo codice a) corretto e b) veloce.
Questo ovviamente include la creazione di indici e tabelle.
Fare in modo che uno DBA
responsabile per gli indici sia una cattiva idea. Cosa succede se il codice funziona lentamente? Di chi si deve incolpare: uno sviluppatore con codice errato o uno DBA
con un indice errato?
A DBA
A deve trasportare le operazioni di supporto del database come eseguire backup, creare l'infrastruttura ecc. E segnalare la mancanza di risorse.
Lui o lei non dovrebbe essere l'unica persona a prendere le decisioni che influiscono sulle prestazioni dell'intero sistema di database.
database relazionali, come per ora, non sono ancora in quello stato che avrebbe permesso la divisione di responsabilità in modo che gli sviluppatori potrebbero rendere le query destra e la DBA
potrebbero renderli veloce. Questo è un mito.
Se v'è una mancanza di risorse (ad esempio, un indice fa qualche ricerca veloce a spese di qualche DML
funzionamento è lento), questo dovrebbe essere segnalato da un DBA, non fisso.
Ora, è un tempo di decisione. Di cosa abbiamo bisogno di più, una query veloce o un inserimento veloce?
Questa decisione deve essere presa dal responsabile del programma (e non dallo DBA
o dallo sviluppatore).
E quando la decisione viene presa, allo sviluppatore dovrebbe essere assegnata la nuova attività: "rendere la query SELECT
la più veloce possibile, tenendo conto che non si dispone di questo indice". Oppure "crea una query INSERT
il più veloce possibile, tenendo conto che avrai questo indice".
Uno sviluppatore dovrebbe sapere tutto su come funziona un database, quando funziona normalmente.
A DBA
dovrebbe sapere tutto su come far funzionare normalmente un database.
Quest'ultimo include la possibilità di eseguire un backup, la possibilità di ripristinare da un backup e la capacità di rilevare e segnalare un conflitto di risorse.
Thx per l'input. Posso pensare a molti scenari in cui il dba è responsabile dell'ottimizzazione delle query: lo sviluppatore parte, la struttura db cambia, la funzionalità viene cambiata, sono necessari nuovi indici ecc. – DBMarcos99
'DBMarcos99': tutto ciò che hai appena descritto (tranne quando lascia lo sviluppatore) comporta il processo decisionale. Questa non è la responsabilità di 'DBA', questa è la responsabilità del responsabile del programma. – Quassnoi
@Quassnoi: non sono d'accordo; essere un DBA è "TUTTO" sul processo decisionale e sulla responsabilità. Non è possibile eseguire ogni singola decisione da parte di un program manager, non si farebbe mai nulla. Il business, che è tutto ciò che siamo in fin dei conti, riguarda la consegna dei risultati e questo è ciò che facilita il ruolo di DBA. –
Una cosa che viene subito in mente è come navigare e comprendere le informazioni che le tabelle/viste del "sistema" del database ti forniscono. Per esempio. in sql server le viste che si trovano sotto il database master. Queste viste contengono informazioni come accessi correnti, elenchi di tabelle e partizioni ecc. Che sono tutte cose utili nel cercare di rintracciare elementi come gli accessi bloccati o se gli utenti sono attualmente connessi ecc.
Thx per quella risposta. – DBMarcos99
Relazioni delle vostre tabelle. Dovresti sempre avere una stampa recente e una copia morbida del tuo database. È necessario conoscere le chiavi primarie, le chiavi esterne, le colonne obbligatorie e quelle automatiche, senza che io pensi che non sia possibile scrivere query efficienti o assicurarsi che il proprio database stia trasportando solo ciò di cui ha bisogno.
Penso che tutti gli altri lo coprissero.
Si consiglia di sviluppare una comprensione dell'architettura di sicurezza per il DBMS rilevante.
Fare ciò potrebbe facilitare lo sviluppo di codice sicuro.
Con SQL Server specifico in mente, ad esempio:
- capire perché il vostro “codice gestito” (come ad esempio CLR .NET) non dovrebbe essere concesso privilegi elevati. Quali sarebbero le implicazioni di farlo?
- Che cos'è il concatenamento di proprietà tra database? Come funziona?
- Comprendere il contesto di esecuzione.
- Come funziona la crittografia SQL Server nativa?
- Come si può firmare una procedura memorizzata? Perché vorresti farlo?
- Ecc
Come regola generale, più si capisce sul motore si sta lavorando, più prestazioni si può spremere da esso.
Questo è un bell'esempio di ciò che considero essere * veramente * un compito di 'DBA' che gli sviluppatori dovrebbero capire. +1. – Quassnoi
Avere una buona conoscenza dell'architettura del proprio sistema di database sarà sicuramente d'aiuto. Puoi disegnare un diagramma a memoria per mostrare i componenti del tuo DBMS e le loro interazioni?
- 1. Sviluppatore incorporato, quali sono le competenze importanti
- 2. Quali sono le competenze di cui uno sviluppatore Drupal ha bisogno?
- 3. Quali sono le principali differenze tra IE7 e IE8 che uno sviluppatore web dovrebbe conoscere?
- 4. Competenze essenziali di un Data Scientist
- 5. Ci sono motivi per cui uno sviluppatore C# dovrebbe imparare Emacs/Vim?
- 6. Tutto ciò che uno sviluppatore C++ dovrebbe conoscere sulla programmazione di rete?
- 7. Suggerimenti per uno sviluppatore iOS per imparare la programmazione Mac?
- 8. Quali sono le trasformazioni Spark che causano uno Shuffle?
- 9. Quali sono le migliori risorse per imparare Ant?
- 10. Essere uno sviluppatore pigro o non essere uno sviluppatore pigro?
- 11. Quali sono le somiglianze e le differenze essenziali tra Scala e Gosu (correlate a Java)?
- 12. Quali parti dell'ecosistema e del linguaggio Java dovrebbero uno sviluppatore imparare a ottenere il massimo da Scala?
- 13. Quali sono alcuni suggerimenti che un algoritmo dovrebbe parallelizzare?
- 14. Quali sono i cinque concetti JavaScript che devo comprendere per essere un buon sviluppatore di AngularJS?
- 15. Quali sono alcune strategie per mantenere uno schema di database comune con un team di sviluppatori e nessun DBA?
- 16. Perché uno sviluppatore del database utilizza LINQ
- 17. Quali sono le librerie e le utilità Java essenziali per un utente di lingua dinamica di ritorno?
- 18. Script di PowerShell che ogni sviluppatore dovrebbe conoscere
- 19. Perché i mutabili sono ammessi in F #? Quando sono essenziali?
- 20. Quali sono le fortune?
- 21. Dovrebbe imparare angularjs senza jQuery?
- 22. In che modo Lisp può diventare uno sviluppatore C# migliore?
- 23. Sono uno sviluppatore esperto di C#, quali cose dovrei sapere per codificare efficacemente in c/C++?
- 24. Come creare competenze orientate agli oggetti?
- 25. Quali sono le librerie Java più importanti?
- 26. Quali sono gli elenchi di Pattern e Principi che un programmatore deve/dovrebbe sapere?
- 27. Learning Python per uno sviluppatore .NET
- 28. Quali sono le librerie che collegano le opzioni in Xcode?
- 29. Quanto è difficile per uno sviluppatore di software imparare come programmare un microcontrollore?
- 30. Prepararsi a imparare html5
Gli sviluppatori dovrebbero (e quasi sempre fanno) sapere più dei DBA. –
Si prega di rendere questo un wiki della comunità. –
Con rispetto, Neil, non sono d'accordo.I DBA hanno accesso a runstats o piani di esecuzione effettivi, in modo che * sappiano * quali sono i colli di bottiglia. Gli sviluppatori si basano semplicemente sull'ipotesi basata sui dati previsti. A volte queste supposizioni sono corrette, a volte no. Ma loro * sono * ipotesi. – paxdiablo