cosa fanno i programmatori di database?


14

Ogni volta che leggo dei programmatori Oracle ecc., Mi confondo. Non so cosa facciano esattamente.

Da quanto ho capito, i programmatori di applicazioni devono sviluppare le funzionalità di base. Le librerie che usano potrebbero aiutare nello sviluppo della GUI o nella connettività del database, ma la funzionalità che rende quell'applicazione quell'applicazione deve essere programmata e che rende ogni applicazione diversa (ben alcune potrebbero essere versioni ottimizzate di altre).

In questa relazione, la programmazione del database non sta fondamentalmente creando una tabella e queste tabelle non vengono elaborate in risposta a istruzioni SQL emesse da un'applicazione che di solito è il front-end? Quindi la creazione di tavoli è così importante?

Risposte:


18

Per apprezzare davvero quali programmatori di database devi davvero provare, lasciami provare a spiegarlo in un altro modo.

Per i mal informati potrebbe sembrare che nel mondo ideale i programmatori di applicazioni non facciano molto: prendono i requisiti e i processi scritti dagli analisti aziendali e li traducono in codice che fa offerte ai programmatori.

Naturalmente chiunque abbia esperienza nella programmazione saprà che non è così che funziona - ignorando per il momento il fatto che i requisiti non specificano mai il comportamento dell'applicazione fino ai minimi dettagli, ci sono una serie di complicazioni

  • I programmatori devono decidere come strutturare l'applicazione
  • Tradurre i requisiti in qualcosa che un computer capisce è spesso tutt'altro che banale.
  • I programmatori devono essere consapevoli delle implicazioni delle prestazioni di
  • Man mano che i programmatori acquisiscono esperienza utilizzando la loro piattaforma preferita, diventano più competenti, offrendo un codice di qualità superiore a una velocità maggiore.

(Naturalmente questo è un elenco notevolmente ridotto, sto solo cercando di raccogliere punti che hanno parallelismi nello sviluppo del database)

Bene, lo sviluppo del database è più o meno lo stesso - per i mal informati sembra piuttosto semplice, ma una volta che sei più coinvolto ti accorgi delle complicazioni specifiche dello sviluppo del database:

  • Decidono come strutturare il database
  • Spesso le query più complesse possono essere tutt'altro che banali da tradurre dai requisiti
  • Gli sviluppatori di database devono preoccuparsi delle prestazioni del database
  • Devono anche preoccuparsi di mantenere l'integrità e la disponibilità dei dati
  • E proprio come gli sviluppatori, i programmatori di database diventano più competenti in tutto ciò che fanno man mano che diventano più esperti.

Proprio come lo sviluppo di applicazioni è pieno di insidie ​​nascoste (problemi di threading ecc ...), così è lo sviluppo del database, e spesso le conseguenze della caduta di questi problemi sono molto gravi (ad es. Perdita di dati o potenzialmente tempi di inattività per tutte le applicazioni che utilizzano il database) .

Penso che la cosa che fa pensare ai programmatori che non ci sia nulla ("Un programmatore non può farlo?") È che ci sono molte sovrapposizioni tra i ruoli e richiedono set di abilità simili - Ho senza dubbio che chiunque abbia la capacità di essere un buon sviluppatore ha anche la capacità di essere un buon programmatore di database, dato il tempo e l'esperienza, tuttavia nessuno dovrebbe sottovalutare il valore di un esperto di database con esperienza.


Grazie per la risposta (avevo perso la speranza di averne uno)! Il motivo per cui ho chiesto questo è che, come "programmatore di applicazioni", ho progettato un piccolo database in msaccess per fare qualcosa per il mio progetto e non mi è sembrato un gran lavoro, ma come programmatore ovviamente non so cosa t "facile". Ma mi manca ancora la prospettiva necessaria per capirlo. Voglio dire, quanto potrebbe essere diverso un dbase da un altro? Come nessun sviluppatore di app "scrive" il codice di gestione dei file ma utilizza le librerie, non ci sono modelli / librerie pronti per l'uso disponibili per la progettazione di dbase? O la programmazione di dbase è in realtà dbase admin?

Un programmatore tipico non farebbe anche questo? Immagino di aver lavorato in organizzazioni troppo piccole per osservare qualsiasi uso di un programmatore di database esclusivamente dal momento che lo sviluppatore dell'applicazione è di solito quello che guida il treno, per così dire. Sa cosa vuole e di solito lo progetta da solo.
Brian,

1
Nella mia esperienza ci sono alcune azioni commerciali che richiedono team di DBA esperti. La più recente di cui ho sentito parlare è stata una fusione tra Coca-Cola e Minute Maid. I loro database (e avevano molto) dovevano essere uniti, e Minute Maid's non era progettato nello stesso modo in cui Coca-Cola aveva i loro e questo, quello e l'altro. Hanno pianificato e testato questa fusione per ben sei mesi prima di fare un giro notturno per eseguirlo. Avere un DBA autonomo non è necessariamente richiesto in una piccola azienda, ma in quelle grandi i team diventano assolutamente necessari per la soddisfazione del cliente.
Mike S,

Detto questo, nelle piccole aziende (<50 persone) che hanno almeno uno (preferibilmente due o tre) DBA standalone è super, super bello avere per quanto riguarda gli sviluppatori di applicazioni. Questo e uno staff IT dedicato per riparare i computer, ma questa è completamente un'altra storia.
Mike S,

2
@ 0A0D, e spesso fino a 6 anni dopo, quando ci sono un miliardo o più di record nelle tabelle e quando l'intero pasticcio è tremendamente lento, assumono un esperto di database per risolvere il pasticcio che non avrebbe mai dovuto essere progettato da un programmatore di applicazioni. I database sono estremamente difficili da refactoring e devono essere progettati per le prestazioni sin dall'inizio, qualcosa che tutti i programmatori di applicazioni sembrano cogliere troppo poco. Tendono anche a progettare in base a ciò che l'interfaccia utente non ha bisogno di ciò di cui il database ha bisogno e quindi omettono controlli interni e vincoli di auditing e integrità dei dati, ecc.
HLGEM

12

I programmatori di database fanno molte cose. Innanzitutto progettano la struttura del database in modo che funzioni correttamente con il numero di record previsti. Le strutture di progettazione che funzionano correttamente per alcune migliaia di record possono rendere inutilizzabile un database in pochi milioni di record. Devono inoltre assicurarsi che i dati mantengano la loro integrità nel tempo e che i dati siano protetti da modifiche o furti non autorizzati. Devono comprendere a fondo la normalizzazione e quando denormalizzare e perché. Devono comprendere le prestazioni e come garantire l'integrità dei dati. Devono comprendere la sicurezza e come impedire che i dati vengano rubati o modificati in modo dannoso.

Ottimizzano le query. Ho modificato le query che richiedono minuti per l'esecuzione in millsecondi. Ho modificato un processo che ha richiesto più di 24 ore per funzionare in meno di 30 minuti. Progettano e mantengono strutture di indicizzazione in grado di bilanciare la velocità degli inserti con la velocità delle selezioni.

Scrivono query complesse, in particolare quelle di reportistica. Personalmente ho scritto query lunghe oltre 1000 righe a causa della complessità del requisito. Dovevano ancora e correvano in fretta.

Creano data warehouse e i relativi processi ETL per supportarli. Spesso hanno bisogno di scrivere processi per portare i dati da altre fonti e devono capire come mappare i campi da alcuni database dei loro clienti ai loro e questi non sono mai una corrispondenza ravvicinata nel tipo di dati, dimensione dei dati, campi obbligatori, valori di ricerca, eccetera.

Devono determinare come refactoring quando cambiano i requisiti del database senza danneggiare i 100.000.000 di record che già possiedono e senza interrompere completamente l'uso del database. I database di grandi dimensioni possono coinvolgere migliaia di tabelle, processi memorizzati e funzioni definite dall'utente. Comprendere una tale struttura richiede tempo e abilità, così come capire cosa sarà influenzato dai cambiamenti e come.

Progettano modi per controllare i dati per motivi normativi e di recupero. Quindi progettano modi per recuperare i dati da tali tabelle di controllo. Esse ricercano problemi con i dati per scoprire se il problema derivava da un bug nel processo di importazione, da un file errato fornito da altri o da un inserimento / aggiornamento errato dall'applicazione o da un accesso non autorizzato. Trovano il modo di correggere i dati errati quando i programmatori delle applicazioni lasciavano un buco aperto agli attacchi degli hacker.

Spesso sono coinvolti nelle conversioni di dati da un sistema a un nuovo sistema. A volte ciò comporta il trasferimento di dati da un prodotto COTS a uno nuovo che l'azienda ha appena acquistato. Come le importazioni descritte in precedenza, si tratta di processi complessi che possono richiedere mesi per pianificare ed eseguire e che richiedono test approfonditi. A differenza delle importazioni, il programmatore del database potrebbe non avere alcun controllo sulle diverse strutture di dati.


6

Alla fine degli anni '90 ho lavorato come programmatore di database per i dati di produzione di un fab wafer di 24 ore. Non so quanto fossero tipici i miei doveri, ma la parte più grande per me è stata quando era necessaria una modifica alla codifica o allo schema del campo, dovevo assicurarmi che la modifica fosse perfetta per la produzione. In sostanza, ciò significava che avrei detto loro di aggiornare la loro applicazione client, cosa che avrebbero fatto in un momento conveniente per loro, e ci si aspettava che tornasse immediatamente con le nuove modifiche.

È stato molto più coinvolto di quanto mi aspettassi. Gli script di conversione e il software client dovevano essere testati a fondo. Spesso due set di dati semanticamente identici ma incompatibili dovevano essere mantenuti in sincronia fino a quando tutti non venivano commutati. A volte era necessario effettuare il passaggio in più fasi, attentamente pianificate per renderlo senza interruzioni. Non era raro prepararsi per settimane per una commutazione avvenuta essenzialmente istantaneamente.

Se un programmatore di database sta facendo bene il suo lavoro, sembrerà agli osservatori che il suo lavoro sia molto semplice. Non mi sorprende che molte persone non sappiano davvero cosa fanno.


2

Questo è piuttosto semplice. Se hai sentito parlare del modello MVC, dovresti conoscere la differenza tra controller e modelli. Ad esempio, se stai scrivendo un ERP, immagina che nel tuo controller tu dica semplicemente "retrieveCashFlow" al tuo modello e che il tuo modello chiami un programma memorizzato nel database. Questo programma memorizzato si occupa di ogni join, filtro, ordinamento e così via e si ottiene indietro i dati elaborati. Nel tuo controller devi solo mettere insieme le cose.

In caso di dubbi sulle procedure memorizzate, consultare questo: perché utilizzare le procedure memorizzate?

In poche parole: gli sviluppatori di database scrivono programmi memorizzati (procedure e funzioni) affinché l'applicazione si occupi della M in MVC (o delle logiche aziendali se non si utilizza mvc).


2

Oracle non è solo un database ma un ambiente di programmazione completo, inclusi moduli e progettisti di report. Come programmatore Oracle, programmi applicazioni utente complete. La codifica del database a cui fai riferimento viene spesso eseguita da amministratori di database specializzati (DBA).

Sybase penso che sia un altro con ambienti di programmazione simili.

Altri database possono limitarsi a "solo" consentire la definizione e l'esecuzione di report, mentre altri potrebbero non offrire alcuna forma o strutture di progettazione / esecuzione di report.


1
"Oracle non è solo un database ma un ambiente di programmazione completo ... Altri database potrebbero limitarsi a" solo "consentire la definizione e l'esecuzione di ..." Questo non lo sapevo. Adesso ha senso.
Thomas,

SQL Server è lo stesso. Oltre alle procedure memorizzate, i pacchetti SSIS consentono la programmazione visiva, chiamando altri codici esistenti, scrivendo programmi vb.net o c # .net e molto altro, il tutto racchiuso in un IDE. Non ho usato SSRS, ma sospetto che sia simile. C'è un sacco di programmazione e un programmatore di database deve conoscere molti strumenti, linguaggi e processi diversi.
giovedì giovedì

2

Direi che uno sviluppatore di database è responsabile di uno o più dei seguenti

  • Design, questo include la creazione (o piuttosto la definizione di relazioni) tabelle
  • Ottimizzazione, impostazione degli indici corretti, scelta delle chiavi, scelta dei giusti tipi di dati
  • Funzioni, scrittura di funzioni utili da utilizzare nelle query
  • Procedure, scrittura di logiche applicative strettamente collegate al livello del database.
  • Creazione di funzioni trigger per rispondere agli eventi
  • Produrre le specifiche di cui sopra.

A seconda del RDBMS in questione, potrebbe includere attività come

  • Creazione di report e moduli
  • Creazione di flussi per l'importazione / esportazione dei dati

Dai un'occhiata a questo elenco di responsabilità

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.