Există un sistem de control al versiunii pentru modificările intervenite în structura bazei de date?

voturi
104

de multe ori am rula în următoarea problemă.

Eu lucrez la unele modificări la un proiect care necesita noi tabele sau coloane în baza de date. Eu fac modificările bazei de date și de a continua munca mea. De obicei, îmi amintesc să scrie schimbările, astfel încât acestea să poată fi replicate pe sistemul viu. Cu toate acestea, nu-mi amintesc mereu ce m-am schimbat și nu-mi amintesc întotdeauna să-l scrie în jos.

Deci, eu fac un impuls la sistemul live și obține o mare eroare, evident că nu există NewColumnX, uf.

Indiferent de faptul că acest lucru nu poate fi cea mai bună practică pentru această situație, există un sistem de control al versiunii pentru baze de date? Nu-mi pasă de tehnologia specifică bazelor de date. Vreau doar să știu dacă există. Dacă se întâmplă să lucreze cu MS SQL Server, apoi mare.

Întrebat 02/08/2008 la 02:52
sursa de către utilizator
În alte limbi...                            


22 răspunsuri

voturi
56

În Ruby on Rails, există un concept al unei migrație - un script rapid pentru a schimba baza de date.

Generați un fișier de migrare, care are reguli pentru a crește versiunea db (cum ar fi adăugarea unei coloane) și reguli de a retrograda versiunea (cum ar fi eliminarea unei coloane). Fiecare migrare este numerotat, și un tabel ține evidența versiunea curentă dB.

Pentru a migra în sus , executați o comandă denumită „db: migra“ , care se uită la versiunea dvs. și aplică script - urile necesare. Puteți migra în jos într - un mod similar.

Script-urile de migrare înșiși sunt păstrate într-un sistem de control al versiunii - ori de câte ori modificați baza de date verificați într-un script nou, și orice dezvoltator poate aplica pentru a aduce db local la cea mai recentă versiune.

Publicat 02/08/2008 la 07:23
sursa de către utilizator

voturi
29

Sunt un copil de școală biți, în care am folosi fișierele sursă pentru crearea bazei de date. Sunt de fapt 2 fișiere - proiect-database.sql și proiectul-updates.sql - prima pentru schema si datele persistente, iar a doua pentru modificări. Desigur, ambele sunt sub control sursă.

Atunci când se schimbă baza de date, pot actualiza mai întâi schema principală în proiectul-database.sql, apoi copiați informațiile relevante pentru proiect-updates.sql, de exemplu, ALTER TABLE. Pot aplica apoi actualizările bazei de date de dezvoltare, testare, iteram până la făcut bine. Apoi, verificați în fișiere, testați din nou, și se aplică producției.

De asemenea, am de obicei un tabel în db - config - cum ar fi:

SQL

CREATE TABLE Config
(
    cfg_tag VARCHAR(50),
    cfg_value VARCHAR(100)
);

INSERT IGNORE  INTO Config(cfg_tag, cfg_value) VALUES
( 'db_version', '$Revision: $'),
( 'db_revision', '$Revision: $');

Apoi, am adăuga următoarele la secțiunea de actualizare:

UPDATE Config SET cfg_value='$Revision: $' WHERE cfg_tag='db_revision';

db_versionDoar devine schimbat când baza de date este recreat, iar db_revisionîmi dă o indicație cât de departe dB este în afara liniei de bază.

Aș putea păstra actualizările în propriile lor fișiere separate, dar am ales să le zdrobesc împreună și de a folosi cut & paste pentru a extrage secțiunile relevante. Un pic mai mult menaj este în ordine, și anume, eliminarea „:“ de la $ Revizie 1.1 $ pentru a le îngheța.

Publicat 26/09/2008 la 21:29
sursa de către utilizator

voturi
11

Redgate are un produs numit SQL Sursa de control . Se integrează cu TFS, SVN, SourceGear bolta, bolta Pro, Mercurial, Perforce și Git.

Publicat 08/07/2011 la 15:51
sursa de către utilizator

voturi
11

MyBatis (fostă iBatis) are o migrare schemă , instrument pentru utilizarea pe linia de comandă. Este scris în Java , deși poate fi folosit cu orice proiect.

Pentru a realiza o bună practică de management al schimbării bazei de date, trebuie să identificăm câteva obiective-cheie. Astfel, Sistemul de MyBatis Schema de migrare (sau MyBatis migrații pentru scurt) urmărește să:

  • Lucrul cu orice bază de date, noi sau existente
  • Efectul de levier sistemul de control sursă (de exemplu, Subversion)
  • Permite dezvoltatorilor concurente sau echipe pentru a lucra în mod independent,
  • Se lasă conflicte foarte vizibil și ușor de gestionat
  • Se lasă pentru mersul înainte și migrația înapoi (evolueze, respectiv involua)
  • Asigurați-vă starea curentă a bazei de date ușor accesibile și ușor de înțeles
  • Activați migrări în ciuda privilegii de acces sau de birocrație
  • Lucrul cu orice metodologie
  • Încurajează bunele practici, consecvente
Publicat 10/07/2010 la 22:56
sursa de către utilizator

voturi
10

Mă întreb că nimeni nu a menționat instrument open source liquibase , care este bazat pe Java și ar trebui să lucreze pentru aproape fiecare bază de date care suportă JDBC. Comparativ cu șine se folosește XML în loc rubin pentru a efectua modificările de schemă. Desi imi place XML pentru limbaje specifice domeniului avantajul foarte cool XML este că liquibase știe cum să se rostogolească înapoi anumite operații , cum ar fi

<createTable tableName="USER"> 
   <column name="firstname" type="varchar(255)"/>
</createTable>

Deci, nu este nevoie să se ocupe de acest propriei

Declarații sql pure sau importuri de date sunt, de asemenea, sprijinite.

Publicat 10/07/2010 la 22:26
sursa de către utilizator

voturi
10

Am foarte recomanda SQL Delta . Eu doar l utilizați pentru a genera scripturile dif când am terminat de codificare caracteristica mea și a verifica aceste script - uri în meu instrument de control sursă (Mercurial :))

Ei au atât un server SQL si versiunea Oracle.

Publicat 28/05/2009 la 03:12
sursa de către utilizator

voturi
9

Cele mai multe motoare de baze de date ar trebui să sprijine dumping baza de date într-un fișier. Știu MySQL face, oricum. Acest lucru va fi doar un fișier text, astfel încât ai putea să susțin că Subversion, sau orice ai folosi. Ar fi ușor pentru a rula o dif pe fișierele prea.

Publicat 02/08/2008 la 02:56
sursa de către utilizator

voturi
8

Dacă utilizați SQL Server ar fi greu de învins de date Dude (alias Edition Baza de date a Visual Studio). Odată ce te obișnuiești cu ea, face o schemă compara între versiunea controlată sursă a bazei de date și versiunea în producție este o briza. Și cu un clic vă puteți genera DDL dvs. de dif.

Există o instruire video de pe MSDN care este foarte util.

Știu despre DBMS_METADATA și Toad, dar dacă cineva ar putea veni cu un tip de date pentru Oracle, atunci viata ar fi foarte dulce.

Publicat 10/09/2008 la 20:49
sursa de către utilizator

voturi
7

Aruncati o privire la pachetul Oracle DBMS_METADATA.

În special, următoarele metode sunt deosebit de utile:

  • DBMS_METADATA.GET_DDL
  • DBMS_METADATA.SET_TRANSFORM_PARAM
  • DBMS_METADATA.GET_GRANTED_DDL

Odată ce sunteți familiarizați cu modul în care acestea funcționează (destul de sine explicativ), puteți scrie un script simplu pentru a arunca rezultatele acestor metode în fișiere text care pot fi puse sub control sursă. Mult noroc!

Nu sunt sigur dacă există ceva atât de simplu pentru MSSQL.

Publicat 01/09/2008 la 21:57
sursa de către utilizator

voturi
7

Au inițial dvs. crea declarații de masă în controler versiune, apoi se adaugă ALTER de masă, dar niciodată edita fișiere, doar mai modifica fișierele denumite în mod ideal secvențial, sau chiar ca un „set de schimbare“, astfel încât să puteți găsi toate modificările pentru o anumită desfășurare.

Hardiest Partea pe care le pot vedea, este de urmărire dependențe, de exemplu, pentru o implementare specială a tabelului B ar putea avea nevoie să fie actualizate înainte de masă A.

Publicat 31/08/2008 la 12:25
sursa de către utilizator

voturi
7

Pentru Oracle, folosesc Toad , care poate arunca o schemă la un număr de fișiere discrete ( de exemplu, un fișier per tabel). Am niște script - uri care gestionează această colecție în Perforce, dar cred că ar trebui să fie ușor de greu de realizat , în doar despre orice sistem de control de revizuire.

Publicat 02/08/2008 la 07:05
sursa de către utilizator

voturi
6

PLSQL Developer, un instrument de la toate Automations jurul, are un plug-in pentru arhive, care funcționează OK (dar nu mare) cu Visual Source Safe.

De pe Web:

Versiunea de control plug-in-oferă o integrare strânsă între PL / SQL orice sistem de control versiune care acceptă Microsoft SCC Interface Specification Developer IDE >> și. >> Aceasta include cele mai populare sisteme de control al versiunii, cum ar fi Microsoft Visual SourceSafe, >> Merant ESV și MKS Sursa de Integritate.

http://www.allroundautomations.com/plsvcs.html

Publicat 17/09/2008 la 16:50
sursa de către utilizator

voturi
6

Am făcut acest lucru și pe off de ani de zile - gestionarea (sau încercarea de a administra) versiuni de schemă. Cele mai bune abordări depind de instrumentele pe care le au. Dacă puteți obține instrumentul Quest Software „Schema Manager“ vei fi în formă bună. Oracle are propriul său instrument, inferior, care este, de asemenea, numit „Manager de schemă“ (confuz mult?) Pe care nu le recomand.

Fără un instrument automat (a se vedea alte comentarii aici despre date Dude), atunci vei folosi script-uri și fișiere DDL direct. Alegeți o abordare, documentul acesta, și urmați-l riguros. Îmi place având capacitatea de a re-crea baza de date la un moment dat, așa că prefer să aibă un plin de export DDL întregii baze de date (dacă eu sunt DBA), sau a schemei de dezvoltator (dacă sunt în produs modul -dezvoltarea).

Publicat 15/09/2008 la 16:01
sursa de către utilizator

voturi
6

Eu mi scrie script-uri de eliberare db, în ​​paralel cu codificare, și să păstreze script-urile de lansare într-o secțiune specifică în proiect SS. Dacă aș face o modificare a codului care necesită o schimbare dB, apoi am actualiza script-ul de presă, în același timp. Înainte de a elibera, am rula script-ul de eliberare de pe un db dev curat (structură copiat înțelept din producție) și de a face testarea mea finală pe ea.

Publicat 30/08/2008 la 19:58
sursa de către utilizator

voturi
5

ER Studio vă permite să inverseze schema bazei de date în instrumentul și îl puteți compara cu trăi baze de date.

Exemplu: Reverse schema de dezvoltare în ER Studio - l compara cu producția și va lista toate diferențele. Acesta poate script-ul modificările sau doar le împinge prin automat.

Odată ce aveți o schema în ER Studio, puteți fie salva scriptul de creare sau salvați-l ca un binar de proprietate și salvați-l în controlul versiunilor. Dacă doriți vreodată să se întoarcă la o versiune anterioară a schemei, trebuie doar să-l verificați și împingeți-l la platforma db.

Publicat 17/09/2008 la 19:04
sursa de către utilizator

voturi
5

Există un PHP5 „cadru de migrare a bazei de date“ , numit Ruckusing. Nu l - am folosit, dar exemplele arată ideea, dacă utilizați limba pentru a crea baza de date ca și atunci când este necesar, trebuie doar să urmăriți fișierele sursă.

Publicat 02/08/2008 la 08:48
sursa de către utilizator

voturi
3

Puteți utiliza Instrumente Microsoft SQL Server de date în Visual Studio pentru a genera script - uri pentru obiectele de bază de date ca parte a unui proiect SQL Server. Puteți adăuga apoi script - uri pentru a controla sursă folosind integrarea sursă de control care este construit în Visual Studio. De asemenea, SQL Server Proiectele vă permit să verificați obiectele bazei de date folosind un compilator și de a genera scripturi de implementare pentru a actualiza o bază de date existentă sau să creați unul nou.

Publicat 22/12/2014 la 11:58
sursa de către utilizator

voturi
2

Schema Compara pentru Oracle este un instrument special conceput pentru a migra schimbările din baza noastră de date Oracle la alta. Vă rugăm să vizitați URL-ul de mai jos pentru link-ul de descărcare, în cazul în care va fi capabil de a utiliza software-ul pentru un proces complet funcțional.

http://www.red-gate.com/Products/schema_compare_for_oracle/index.htm

Publicat 10/01/2010 la 03:59
sursa de către utilizator

voturi
2

Am folosit MS Team System Edition Baza de date cu succes destul de bine. Se integrează cu TFS de control al versiunilor și Visual Studio mai mult sau mai puțin perfect și ne permite să gestionează procs stocate, vizualizări, etc, cu ușurință. Rezolvarea conflictelor poate fi o durere, dar istoria versiune este completă după ce a făcut. Ulterior, migrații către AC și de producție sunt extrem de simple.

Este corect să spunem că este un produs de versiunea 1.0, deși, și nu este fără câteva probleme.

Publicat 26/09/2008 la 19:12
sursa de către utilizator

voturi
1

Aș recomanda una din cele două abordări. În primul rând, să investească în PowerDesigner de la Sybase. Enterprise Edition. Acesta vă permite să proiecteze datamodels fizice, și un întreg mult mai mult. Dar vine cu un depozit care vă permite să verificați în modelul. Fiecare nou check - in poate fi o versiune nouă, se poate compara cu orice versiune la orice altă versiune și chiar la ceea ce este în baza de date la acel moment. Acesta va prezenta apoi o listă de orice diferență și întrebați care ar trebui să fie migrat ... și apoi construiește script - ul pentru a face acest lucru. Nu este ieftin , dar este o afacere de două ori prețul și este rentabilitatea investiției este de aproximativ 6 luni.

Cealaltă Ideea este de a activa DDL de audit (funcționează în Oracle). Acest lucru va crea un tabel cu fiecare schimbare a face. Dacă interogarea modificările din timestamp-ul ultima te-ai mutat modificările bazei de date prod chiar acum, veți avea o listă ordonată de tot ce ai făcut. Câteva clauze în cazul în care pentru a elimina zero sumă modificări, cum ar crea foo tabel; urmată de foo tabel picătură; și vă puteți construi cu ușurință un script mod. De ce păstrați modificările într-un wiki, care este dublu de lucru. Să baza de date le urmăriți pentru tine.

Publicat 26/09/2008 la 18:53
sursa de către utilizator

voturi
1

Două recomandări de carte: „Baze de date“ de Refactoring Ambler și Sadalage și „Tehnici de baze de date Agile“ de Ambler.

Cineva a menționat Rails migrații. Cred că mare lucru, chiar și în afara Rails. Le - am folosit pe o aplicație ASP cu SQL Server pe care am fost în procesul de mutare a șinelor. Ai verificat scripturile de migrare se în VCS. Iată un post de Dave Thomas Pragmatic pe această temă.

Publicat 22/09/2008 la 19:17
sursa de către utilizator

voturi
1

În absența unei schimbări de masă pentru VCS am conectându-le într-un wiki. Cel puțin atunci eu pot vedea când și de ce a fost schimbat. Este departe de a fi perfect, ca nu toata lumea o face și avem mai multe versiuni de produs în uz, dar mai bine decât nimic.

Publicat 01/09/2008 la 08:29
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more