Domanda

Questa è una domanda per quelli di voi lo sviluppo di un team di sviluppatori in cui tutti avete database separati. Stai delle versioni del database utilizzando il controllo di origine e altri strumenti che porterà automaticamente i database dev fino ad oggi per l'ultima versione del database (schema, dati, SP delle funzioni, ecc).

OK Grande! Ma aspetta! Che cosa succede se si sta sviluppando sulla versione 4.0 del software, ma ora è necessario passare rami per il ramo 3.2 per correggere un bug? Lo schema potrebbe essere (quasi certamente è) molto diverso da adesso ...

Suppongo che se si ha attraversato lo sforzo supplementare per gli script di rollback scrittura insieme con i vostri script di cambiamento, questo potrebbe funzionare. Ma che sembra come un sacco di lavoro -? È davvero valsa la pena

È stato utile?

Soluzione

Molto più facile sarebbe quella di creare un nuovo database 3.2-ramo e il lavoro con che mentre si lavora sul codice 3.2-ramo. Non sembra ragionevole per me per richiedere che ogni sviluppatore ha esattamente un database con cui lavorare.

Altri suggerimenti

sto andando su un arto e assumere che si sta delle versioni del database come un binario? Se tutte le risorse del database erano in forma di codice costruttivo (ad esempio, script SQL e / o dati di testo discariche), la soluzione sarebbe semplice, come suggerito da Mark: memorizzare tali attività come parte del ramo di sviluppo. Per lavorare su versione 3.2, passare il ramo, rieseguire il creare script e presto, 3.2 del database. La fusione sarebbe altrettanto facile come con il codice normale (o altrettanto doloroso, a seconda del sistema di controllo della versione di scelta).

Ecco alcuni suggerimenti per lavorare in questo modo:

  • Se la creazione delle istanze di database di testo è troppo lento, fare una cache su un volume disco condiviso, digitato dal contenuto di tutti i file di schema / dati (o la somma MD5 della stessa).
  • Scrivi una pre-commit hook per garantire che lo schema ei dati discariche nel caso dello sviluppatore sono gli stessi di quelli sotto il controllo di versione. Questo impedisce alle persone di apportare modifiche al loro database dev con uno strumento interattivo, e quindi dimenticando di commetterli.
  • Lei parla di script di cambiamento; trattarli come una passività. Mentre possono essere richiesti dal vostro scenario di distribuzione (ad esempio, per i clienti che desiderano eseguire l'aggiornamento in-place), che duplicano le informazioni dalla storia versione del database, e per mezzo di legge duplicazione di Murphy desincronizzazione prima o poi. Cercate di generare automaticamente gli script cambiamento dalle risorse database di versione utilizzando "diff"; o se questo non può essere raggiunto, dedicare alcuni test di unità gravi agli aggiornamenti del database.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top