Domanda

ho una piccola quantità di esperienza con SVN sui miei progetti di sviluppo, e ho altrettanto poca esperienza con i database relazionali. So che i concetti di base come le tabelle, e le istruzioni SQL, ma sono ben lungi dall'essere un esperto.

Quello che mi piacerebbe sapere è se ci sono generici sistemi di tipo di controllo di versione, come SVN, ma che il lavoro con un database, piuttosto che file. Vorrei lo stesso tipo di caratteristiche che si ottiene con SVN, come la possibilità di creare filiali, creare tag, e fondere insieme i rami. Invece di un numero di revisione viene associato ad una versione di un repository di file sarebbe associato a una versione del database.

loro sono eventuali soluzioni generiche disponibili che possono aggiungere questo tipo di funzionalità indipendenti dello schema del database vero e proprio? Sarei interessato a soluzioni che funzionano con MySQL o MS SQL Server.

Vorrei anche precisare che io sto cercando di controllo di versione i dati non lo schema. Mi aspetto lo schema a rimanere costante. Quindi, in realtà sembra che io voglio un modo per creare un registro di tutte le istruzioni INSERT, UPDATE e DELETE richieste inviate al database tra ogni versione dei dati. In questo modo qualsiasi versione potrebbe essere ricreato inviando nuovamente tutte le istruzioni SQL che sono state salvate fino alla versione desiderata.

È stato utile?

Soluzione

È possibile creare script tutta la vostra DDL, stored procedure e tali da normali file di testo.

Poi si può semplicemente utilizzare SVN per il controllo delle versioni del database.

Altri suggerimenti

Non ho mai trovato una soluzione che funziona bene come Subversion, ma ecco un paio di cose che ho fatto, che hanno contribuito:

  1. Fare script che creerà lo schema e popolano tutti i dati iniziali. Poi fare uno script di aggiornamento per ogni modifica dopo. E 'un processo abbastanza manuale, ma funziona. Ci sono cose in più che aiutano come memorizzare il numero di versione corrente in una tabella nel db e fare in modo che gli script sono idempotente .

  2. Conservare il db pieno sviluppo in Subversion. Questo di solito non funziona troppo bene per me, se c'è un sacco di dati o è spesso cambiato. Ma in alcuni progetti è potrebbe funzionare.

I tenere e conservare creare script nel mio sistema di controllo versione.

Ci sono due cose che mi vengono in mente:

  • http://www.liquibase.org/ - fornisce un modo di gestire in genere modifiche al database. Crea file che vengono commessi nel controllo del codice sorgente, e aiuta a gestire i cambiamenti attraverso diversi database di sviluppo, ecc.
  • http://www.viget.com/extend/ di backup-your-Database-in-git / - questo descrive una strategia per il backup di un database in controllo del codice sorgente, ma la stessa strategia può essere utilizzata solo sullo schema. In questo schema, il database si troverebbe in una zona separata dal codice principale. (Questo può essere utilizzato con altri sistemi di controllo sorgente troppo.)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top