Bogarting del livello di accesso ai dati


9

Situazione: il dba è un contraente esterno che mantiene l'intero codice DAL estratto in TFS. Sarebbe bello come lo sviluppatore del front-end essere in grado di aggiungere colonne e modificare proc e quant'altro, senza dover fare affidamento sull'attesa che questo tizio risponda alle tue e-mail per fare il lavoro.

Domanda: quale sarebbe una soluzione / processo raccomandato che consentirebbe uno sviluppo più rapido / agile, mantenendo allo stesso tempo l'integrità dei dati nonché la pace, l'amore e la felicità tra il team?


Sono preoccupato qui perché hai bisogno di aggiungere una colonna e quali regole aziendali sono associate a questa colonna. Potresti trovare dei modi per aggirarlo ed eventualmente aggiungere la colonna, ma cosa succede se hai usato il tipo di dati sbagliato, le impostazioni null, la definizione dell'indice, peggio se la colonna non dovesse appartenere alla tabella o se manchi una tabella di intersezione del tutto? Penso che qualcuno debba essere responsabile dell'impatto sul business della definizione di nuovi dati e anche qualcuno dovrebbe essere responsabile dell'impatto di una modifica del database sul codice (diverso dal DBA). I 2 ruoli possono essere interpretati dalla stessa persona.
NoChance,

Richiede il DBA per lavorare nel proprio ramo. Non concedere loro i diritti di checkout per il ramo di sviluppo principale. In alternativa, crea il tuo ramo di sviluppo e unisci le modifiche in base alle esigenze.
SoylentGray,

Risposte:


11

Martin Fowler e Pramod Sadalage hanno scritto un eccellente articolo su questo argomento.

Ogni sviluppatore ha il proprio database in cui è possibile apportare modifiche. Queste modifiche vengono quindi comunicate (come un changeset) al DBA che le implementa nel database principale, quindi è ancora coinvolto nel processo, probabilmente conosce comunque meglio le strutture e le esigenze del database. Penso che sia l'approccio migliore in quanto soddisfacente per tutte le persone coinvolte nel processo ed è anche molto agile.

È possibile modificare il DAL in modo simile. Apporta le modifiche e fornisci un changeset per il DBA quando pensi di aver finito, in modo che possa esaminarlo e unirlo al suo master.


1
oooh mi piace ... questa è la mia prima Q qui, quindi non posso ancora esprimere il mio voto ma ne hai sicuramente uno ... forse / probabilmente anche la risposta, ma mi piace aspettare un po 'per vedere cosa dicono gli altri
spaghetticowboy

Il problema è che lo sviluppatore fa tutto il suo lavoro supponendo che il dba approverà.
HLGEM,

@HLEGM: Nella mia esperienza questo è raramente un caso, il più delle volte il DBA lo approverà o lo cambierà solo leggermente. È ancora meglio che avere sviluppatori inattivi seduti in giro. Inoltre, probabilmente porterà alla soluzione migliore se il DBA e lo sviluppatore sono entrambi persone ragionevoli.
Falcon,

+1 per spiegare perché questo è un articolo eccellente invece di pubblicare un link.
JeffO,

@HLGEM - Penso che sia necessario che entrambe le parti giustificino ciò che stanno facendo. Il DBA dovrebbe trarre beneficio dal dubbio in materia di db, ma entrambi devono rispondere a qualcun altro che avrebbe la decisione finale.
JeffO,

3

Bene, quando sto facendo la cosa DBA, sono stato conosciuto per bloccare tutto in modo che i dannati programmatori sporchi non possano metterci la testa. Tutti pensano di sapere come farlo meglio, e "modificano" le cose per renderle più facili per se stesse, e provoca un disordine diabolico.

L'altra alternativa è spalancarlo e lasciare che i programmatori si mischino su di esso per un po ', quindi saltino dentro e impongano l'ordine mentre le cose iniziano a concludersi ... Questo è sicuramente più "agile", ma può essere un vero incubo a seconda di cosa deve essere tagliato o modificato ... I DBA hanno spesso una migliore comprensione del progetto nel suo insieme e alcuni cambiamenti che sembrano innocui possono essere problematici.

Se sarà l'unico gatekeeper, dovrà avere una specifica fissa o essere in grado di "vendere" la sua visione al resto degli sviluppatori.


siamo abbastanza dannatamente sporchi ... e a volte siamo anche dannatamente impazienti e dobbiamo fare le cose da soli
spaghetticowboy

@spaghetti: Sì ... probabilmente sono peggio della maggior parte perché ho fatto molto lavoro DBA, quindi ho il doppio del "So come farlo meglio!" rispetto alla maggior parte dei programmatori. Dirò questo: con i database, è molto più importante farlo presto ... Se continui ad aggiungere fino a tardi nel progetto, quasi sicuramente causerà problemi.
Satanicpuppy,

3

C'è un grosso problema che sostituisce qualsiasi altro problema:

  1. Perché il contraente ha sempre verificato il codice?

Perché gli è permesso farlo? Nessuno dovrebbe fare il check-out di un file a meno che non stiano apportando modifiche attivamente. Dovrebbe esserci una politica di squadra sui checkout.

L'appaltatore (che gli piaccia o no) lavora come parte di una squadra, e talvolta altri membri della squadra potrebbero dover apportare modifiche. Questo è un problema di comunicazione. Purtroppo non esiste un modo automatico per risolvere questo problema di comunicazione.


1

Invece di strati orizzontali, preferisco lavorare nei silos su più livelli.

In questo modo nessuna persona / squadra può bloccare in questo modo.

Significa anche che i tuoi sviluppatori sono multi-qualificati e in grado di spostarti tra le funzioni molto più facilmente.

Ovviamente, ci sono sezioni (progettazione dell'interfaccia utente e progettazione del database) che potrebbero richiedere un lavoro più specialistico, ma ti viene l'idea.


1

Semplice, se non lo hai già fatto, dovresti avere 3 ambienti:

  • Sviluppo dell'ambiente
  • Ambiente QA
  • Ambiente di produzione

L'ambiente di sviluppo dovrebbe essere gestito dai tuoi sviluppatori.

Potresti anche voler aggiungere un ambiente RC.

Un'altra risposta, se più ambienti non sono possibili, potresti sviluppare un repository beffardo ... In questo modo costruisci i tuoi modelli e quindi il tuo appaltatore è responsabile per far corrispondere i tuoi modelli al DB. In un certo senso è meglio poiché libera i tuoi sviluppatori dal preoccuparsi del database.


1
L'OP sta parlando del codice che è stato estratto. Ambienti diversi non avrebbero alcun impatto.
NotMe

1

Il tuo problema mi sembra essere di forza lavoro. È opportuno e necessario che tutte le potenziali modifiche al daatbase siano approvate da uno specialista del database. Se la persona attuale non riesce a tenere il passo con il lavoro in modo tempestivo, sono necessari più specialisti del database.


+1: questa può anche essere una causa del problema. Molte aziende hanno troppi DBA.
Falcon,

1

Questo è un problema di gestione tanto quanto tecnico.

Esistono certamente validi motivi per cui un DBA (indipendentemente dal fatto che sia in loco o fuori, appaltatore o dipendente) per impedire agli sviluppatori di apportare qualsiasi tipo di modifica del database.

Tuttavia, il problema principale che hai definito è di disponibilità. Il tuo manager sa che sprecare tempo / denaro in attesa di questa persona? Altrimenti, potresti voler far capire come sono tutti seduti.

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.