Is er een versie controle systeem voor database-structuur verandert?

stemmen
104

Ik loop vaak in het volgende probleem.

Ik werk op een aantal wijzigingen in een project dat nieuwe tabellen of kolommen in de database nodig zijn. Ik maak de database wijzigingen en mijn werk voort te zetten. Meestal, ik herinner me te schrijven van de veranderingen, zodat ze kunnen worden gerepliceerd op de live-systeem. Maar ik weet niet altijd herinneren wat ik heb veranderd en ik niet altijd onthouden om het op te schrijven.

Dus, maak ik een duw naar de live-systeem en krijgt een grote, duidelijke fout dat er geen NewColumnX, ugh.

Los van het feit dat dit niet de best practice voor deze situatie kan zijn, is er een versie controle systeem voor databases? Kan me niet schelen over de specifieke database-technologie. Ik wil gewoon weten als deze bestaat. Als het gebeurt om te werken met MS SQL Server, dan is dat geweldig.

De vraag is gesteld op 02/08/2008 om 02:52
bron van user
In andere talen...                            


22 antwoorden

stemmen
9

De meeste database engines moeten steunen dumpen uw database in een bestand. Ik weet MySQL doet, hoe dan ook. Dit zal gewoon een tekstbestand te zijn, dus je zou kunnen stellen dat aan Subversion, of wat u gebruikt. Het zou makkelijk zijn om een ​​diff op de bestanden te lopen.

antwoordde op 02/08/2008 om 02:56
bron van user

stemmen
7

Voor Oracle, gebruik ik Toad , die een schema kan dumpen om een aantal afzonderlijke bestanden (bijvoorbeeld een bestand per tabel). Ik heb een aantal scripts die deze collectie beheren in Noodgedwongen, maar ik denk dat het moet gemakkelijk uitvoerbaar in zowat elke revisie controle systeem.

antwoordde op 02/08/2008 om 07:05
bron van user

stemmen
56

In Ruby on Rails, is er een concept van een migratie - een snelle script om de database te veranderen.

U genereert een migratie-bestand, dat regels om de db versie te verhogen (zoals het toevoegen van een kolom) en de regels om de versie downgraden (zoals het verwijderen van een kolom) heeft. Elke migratie is genummerd, en een tafel houdt uw huidige db versie.

Om te migreren waarbij wordt gekeken naar uw versie en de benodigde scripts van toepassing is: heb je een commando genaamd "migreren db" run. U kunt naar beneden migreren op een vergelijkbare manier.

De migratie scripts zelf worden bewaard in een versie controle systeem - wanneer u de database die u in te checken een nieuw script te veranderen, en een ontwikkelaar kan toepassen op hun lokale db naar de laatste versie te brengen.

antwoordde op 02/08/2008 om 07:23
bron van user

stemmen
5

Er is een PHP5 "database migratie framework" genoemd Ruckusing. Ik heb niet gebruikt, maar de voorbeelden tonen aan het idee, als je de taal te gebruiken om de database en wanneer dat nodig is, hoeft u alleen bronbestanden sporen te creëren.

antwoordde op 02/08/2008 om 08:48
bron van user

stemmen
6

Ik schrijf mijn db vrijlating scripts in parallel met de codering, en in een project specifieke sectie in SS houden de release scripts. Als ik een wijziging in de code die een db verandering vereist, dan update ik de release script op hetzelfde moment. Voorafgaand aan de release, loop ik de release script op een schone dev db (gekopieerd structuur wijze van productie) en doe mijn laatste tests op.

antwoordde op 30/08/2008 om 19:58
bron van user

stemmen
7

Heeft u uw eerste create table statements in versie controller, voeg dan veranderen tafel uitspraken, maar nooit bestanden bewerken, alleen maar meer veranderen bestanden ideaal achtereenvolgens genoemd, of zelfs als een "change set", zodat u alle wijzigingen voor een bepaalde implementatie kan vinden.

De sterkste deel dat ik kan zien, is het bijhouden van afhankelijkheden, bijvoorbeeld voor een bepaalde inzet tafel B zou moeten worden bijgewerkt voordat tabel A.

antwoordde op 31/08/2008 om 12:25
bron van user

stemmen
1

Bij het ontbreken van een VCS voor wijzigingen in de tabel Ik heb loggen ze in een wiki. Tenminste dan kan ik zien wanneer en waarom het werd veranderd. Het is verre van perfect, want niet iedereen doet het en we hebben meerdere versies van het product in gebruik is, maar beter dan niets.

antwoordde op 01/09/2008 om 08:29
bron van user

stemmen
7

Neem een ​​kijkje op het orakel pakket DBMS_METADATA.

Met name de volgende methoden zijn bijzonder bruikbaar:

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

Zodra u vertrouwd bent met hoe ze werken zijn (vrij duidelijk) kun je een eenvoudig script om de resultaten van deze methoden in tekstbestanden die onder bron controle kunnen worden gebracht dumpen schrijven. Succes!

Niet zeker of er iets is dit eenvoudig voor MSSQL.

antwoordde op 01/09/2008 om 21:57
bron van user

stemmen
8

Als u gebruik maakt van SQL Server zou het moeilijk zijn om gegevens Dude verslaan (aka de Database Edition van Visual Studio). Als je eenmaal onder de knie, het doen van een schema te vergelijken tussen uw bron gecontroleerde versie van de database en de versie in productie is een eitje. En met een klik kunt u uw diff DDL genereren.

Er is een instructie video op MSDN dat is heel behulpzaam.

Ik weet over DBMS_METADATA en Toad, maar als iemand met een Data Dude voor Oracle kon komen dan is het leven zou heel lief zijn.

antwoordde op 10/09/2008 om 20:49
bron van user

stemmen
6

Ik heb dit uit gedaan en voor de komende jaren - het beheren (of probeert te beheren) schema versies. De beste aanpak is afhankelijk van de tools die je hebt. Als je de Quest Software functie "Schema Manager" kan je je in goede vorm. Oracle heeft zijn eigen, inferieure hulpmiddel dat ook "Schema Manager" wordt genoemd (verwarrend veel?) Dat ik niet aan te raden.

Zonder een geautomatiseerd instrument (zie andere opmerkingen hier over gegevens Dude) dan zul je direct worden met behulp van scripts en DDL-bestanden. Pick een aanpak, documenteren, en volg het kader nauwgezet. Ik vind het leuk met de mogelijkheid om opnieuw te maken van de database op een bepaald moment, dus ik de voorkeur aan een volledige DDL export van de gehele database hebben (als ik ben de DBA), of van de ontwikkelaar schema (als ik in product -Ontwikkelmodus).

antwoordde op 15/09/2008 om 16:01
bron van user

stemmen
6

PLSQL Developer, een tool van All Arround Automations, heeft een plugin voor repositories die OK (maar niet geweldig) met Visual Source Safe werkt.

Vanaf het web:

De Version Control Plug-in biedt een nauwe integratie tussen de PL / SQL Developer IDE >> en eventuele Version Control System, dat de Microsoft SCC Interface Specification ondersteunt. >> Dit omvat populairste Version Control Systems, zoals Microsoft Visual SourceSafe, >> Merant PVCS en MKS Source Integrity.

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

antwoordde op 17/09/2008 om 16:50
bron van user

stemmen
5

ER Studio kunt u uw database schema te keren in het gereedschap en je kunt dan vergelijken met databases te leven.

Voorbeeld: Reverse je ontwikkeling schema in ER Studio - vergelijk het met de productie en het zal allemaal de verschillen te noemen. Het kan script de veranderingen of gewoon duw ze door middel van automatisch.

Zodra u een schema in ER Studio, kunt u besparen de creatie script of opslaan als een eigen binaire en opslaan in versie controle. Als je ooit wilt terug naar een verleden versie van de regeling gaan, check it out en duw hem naar uw db platform.

antwoordde op 17/09/2008 om 19:04
bron van user

stemmen
1

Twee aanbevelingen boek: "Refactoring Databases" van Ambler en Sadalage en "Agile Database Techniques" van Ambler.

Iemand heeft gezegd Rails migraties. Ik denk dat ze werken geweldig, zelfs buiten Rails applicaties. Ik gebruikte ze op een ASP-toepassing met SQL Server, die we in het proces van het verplaatsen naar Rails. Je controleert de migratie scripts zich in de VCS. Hier is een bericht door Pragmatisch Dave Thomas over het onderwerp.

antwoordde op 22/09/2008 om 19:17
bron van user

stemmen
1

Ik zou een van de twee benaderingen. In de eerste plaats investeren in PowerDesigner van Sybase. Bedrijfseditie. Hiermee kunt u fysieke datamodellen te ontwerpen, en nog veel meer. Maar het komt met een repository die u toelaat om in uw modellen. Elke nieuwe check-in kan een nieuwe versie zijn, kan het een versie te vergelijken met andere versies en zelfs wat er in uw database op dat moment. Het zal vervolgens een lijst van elk verschil en vragen die moeten worden gemigreerd ... en dan bouwt hij het script om het te doen. Het is niet goedkoop, maar het is een koopje dubbele van de prijs en het is ROI is ongeveer 6 maanden.

De ander idee is het inschakelen van DDL auditing (werkt in Oracle). Dit zal een tabel te maken met elke verandering die je maakt. Als u de wijzigingen ten opzichte van de timestamp te vragen u voor het laatst verhuisd uw database wijzigingen aan te porren om nu, dan moet je een geordende lijst van alles wat je hebt gedaan. Een paar waar de clausules om zero-sum elimineren verandert als create table foo; gevolgd door valtafel foo; en je kunt gemakkelijk een mod script. Waarom de veranderingen in een wiki te houden, dat is het dubbele van het werk. Laat de database ze op te sporen voor u.

antwoordde op 26/09/2008 om 18:53
bron van user

stemmen
2

We hebben gebruikt MS Team System Database Edition met vrij goed succes. Het integreert met TFS versiebeheer en Visual Studio meer of minder naadloos en laat ons toe om beheert ontwerp en bouw, uitzicht, enz., Gemakkelijk. Conflictoplossing kan lastig zijn, maar versie geschiedenis is voltooid zodra het klaar is. Daarna migraties QA en productie uiterst eenvoudig.

Het is eerlijk om te zeggen dat het een versie 1.0 product, hoewel, en is niet zonder een paar problemen.

antwoordde op 26/09/2008 om 19:12
bron van user

stemmen
29

Ik ben een beetje old-school, in die ik gebruik bronbestanden voor het maken van de database. Er zijn eigenlijk 2 bestanden - project-database.sql en project-updates.sql - de eerste voor het schema en de aanhoudende data, en de tweede voor de wijzigingen. Uiteraard zijn er zowel onder de bron te beheersen.

Als de wijzigingen in de database, ik voor het eerst de belangrijkste schema in project-database.sql te werken, dan is de relevante informatie te kopiëren naar de project-updates.sql, bijvoorbeeld ALTER TABLE. Dan kan ik de updates van toepassing zijn op de ontwikkeling database, test, herhaal tot goed gedaan. Controleer vervolgens in bestanden, test opnieuw, en gelden voor de productie.

Ook heb ik meestal een tafel in de db - Config - zoals:

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: $');

Dan heb ik het volgende toevoegen aan de sectie update:

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

De db_versionenige gewijzigd wordt, wanneer de database opnieuw wordt gemaakt, en het db_revisiongeeft me een indicatie hoe ver de db is uit de baseline.

Ik kon de updates in hun eigen aparte bestanden te bewaren, maar ik koos ervoor om ze allemaal samen puree en gebruik knippen en plakken om relevante onderdelen te halen. Een beetje meer schoonmaak in orde is, dat wil zeggen, verwijder ':' vanaf $ Revision 1.1 $ om ze te bevriezen.

antwoordde op 26/09/2008 om 21:29
bron van user

stemmen
10

Ik beveel SQL delta . Ik gebruik gewoon het aan de diff scripts genereren wanneer ik klaar ben het coderen van mijn functie en laat de scripts in mijn bron controle-instrument (Mercurial :))

Ze hebben zowel een SQL server en Oracle-versie.

antwoordde op 28/05/2009 om 03:12
bron van user

stemmen
2

Schema Vergelijk voor Oracle is een hulpmiddel dat specifiek is ontworpen om veranderingen ten opzichte van onze Oracle-database naar de andere migreren. Ga naar de URL hieronder voor de download link, waar u in staat om de software te gebruiken voor een volledig functionele proef zal zijn.

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

antwoordde op 10/01/2010 om 03:59
bron van user

stemmen
10

Ik vraag me af dat niemand genoemd de open source tool liquibase die op Java gebaseerde en zou moeten werken voor bijna elke databank die jdbc ondersteunt. Vergeleken met de rails het gebruikt xml plaats Ruby naar de schema veranderingen uit te voeren. Hoewel ik een hekel xml voor domeinspecifieke talen het erg cool voordeel van XML is dat liquibase weet hoe om terug bepaalde bewerkingen, zoals rollen

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

U hoeft dus niet nodig om dit te verwerken van je eigen

Pure sql verklaringen of gegevens invoer worden ook ondersteund.

antwoordde op 10/07/2010 om 22:26
bron van user

stemmen
11

MyBatis (voorheen iBatis) heeft een schema migratie , hulpmiddel voor gebruik op de opdrachtregel. Het is geschreven in Java maar kan worden gebruikt met elk project.

Om een ​​goede database change management praktijk te bereiken, moeten we een paar belangrijke doelen te identificeren. Zo is de MyBatis Schema Migration System (of MyBatis Migrations in het kort) streeft naar:

  • Werken met elke database, nieuwe of bestaande
  • Maak gebruik van de broncontrolesysteem (bijv Subversion)
  • Enable gelijktijdige ontwikkelaars of teams om zelfstandig te werken
  • Laat conflicten zeer zichtbaar en makkelijk hanteerbaar
  • Zorgen voor voorwaartse en achterwaartse migratie (ontwikkelen, draag aan respectievelijk)
  • Maak de huidige status van de database gemakkelijk toegankelijke en begrijpelijke
  • Inschakelen migraties ondanks toegangsrechten of bureaucratie
  • Werken met een methodologie
  • Moedigt goede, consistente praktijken
antwoordde op 10/07/2010 om 22:56
bron van user

stemmen
11

Redgate heeft een product met de naam SQL Source Control . Het integreert met TFS, SVN, SourceGear Vault, Vault Pro, Mercurial, Perforce, en Git.

antwoordde op 08/07/2011 om 15:51
bron van user

stemmen
3

U kunt gebruik maken van Microsoft SQL Server Data tools in Visual Studio om scripts voor database-objecten te genereren als onderdeel van een SQL Server Project. Vervolgens kunt u de scripts toe te voegen aan de bron controle met behulp van de bron controle integratie die in Visual Studio is ingebouwd. Ook SQL Server Projecten kunt u controleren of de database-objecten met behulp van een compiler en het genereren van deployment scripts om een bestaande database te updaten of een nieuwe maken.

antwoordde op 22/12/2014 om 11:58
bron van user

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