Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[db] een versie systeem voor databases?

Pagina: 1
Acties:

  • rob3rt
  • Registratie: Maart 2009
  • Laatst online: 17-11 21:12
Kent iemand een systeem zoals SVN / GIT maar dan specifiek voor databases?
Het is voornamelijk bedoeld om versies van postgresql en mysql databases te moeten kunnen beheren.

Het versie systeem moet wijzigingen kunnen bijhouden die zijn gemaakt in de structuur van de database en deze dmv een commit opslaan en via een update weer te implemeteren te zijn op een ander systeem (bv de live,test of develop omgeving).

Het gaat dus niet om de inhoud van de DB maar echt puur om de structuur, de tabellen, rijen, triggers, values etc

  • dev10
  • Registratie: April 2005
  • Laatst online: 21-11 13:56
De term waar je naar op zoek bent, is migrations. In het geval van PHP en Doctrine, zou je hier eens naar kunnen kijken: http://docs.doctrine-proj...ference/introduction.html

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 00:45

The Eagle

I wear my sunglasses at night

Kijk ook even naar STAT, van Quest (nu Dell) :)

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Red gate heeft tal van dergelijke tools voor verschillende RDBMS'en. Maar wat ik gek vind is dat je zélf niet even [google=sql version control tools] doet; daar komt toch méér dan genoeg zinnige informatie uit :?

[ Voor 42% gewijzigd door RobIII op 31-07-2014 21:56 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Het enige wat je in de gaten moet houden is dat er geen tools zijn die echt daadwerkelijk version control doen op je database. 99% moet je simpelweg tussen je app en je prog stouwen (dmv custom db-laag) zodat die bijhouden wat er richting db gestuurd wordt en op basis daarvan versies kan aanmaken.

En omdat het ertussen moet zitten heeft het een heel grote kans op fouten / errors als iemand met een ander tooltje (zonder source control) je db wijzigt.

Bijv php heeft allerlei db-lagen die ook changes / versions kunnen bijhouden, alleen als er dan toevallig ooit eens 1 iemand komt die met bijv phpmyadmin een key/column extra aanmaakt dan kan je je lol op.

Maar ik ken bijv ook verhalen van mensen die uit nood/woede via sqlcmd een cascaded delete trigger eruit mieterde en die verwijdering ging dus niet mee in het versie-systeem, toen werd er een release gemaakt en toen stond die trigger er dus nog wel in. Oeps...

  • Kettrick
  • Registratie: Augustus 2000
  • Laatst online: 21-11 20:24

Kettrick

Rantmeister!

Liquibase doet precies dat, of dat in je project past zal je even moeten bekijken :).

  • Black Eagle
  • Registratie: December 2002
  • Niet online
Niet wat je vraagt, maar wellicht een alternatief voor wat je zoekt. Deze vergelijkt verschillende database's en genereert scripts om de wijzigingen door te voeren in een andere database. Deze gebruik ik zelf om onze live database te syncen met onze ontwikkeldatabase.

http://www.sqlmanager.net/en/products/studio/mysql

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
Waarom niet bij je SVN/Git project zelf in?
Heb je meteen de database bij de werkende broncode.

Bij nieuwere versie broncode met een oudere db versie schema bijwerken (vanuit gaande in nieuwere versie v.d. db de velt types niet wijzigen of bestaande velden/tabellen zomaar verwijderd worden in een nieuwere versie).

[ Voor 21% gewijzigd door BoringDay op 02-08-2014 11:50 ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

De basis hiervoor kun je ook heel makkelijk zelf leggen. Het enige wat je nodig hebt is een sql file waar je structuur in staat (of een tool die die voor je genereert) en script dat je gebruikt om van versie A naar versie B te gaan. Als je een zinnige tagging structuur gebruikt (bijvoorbeeld semantic versioning) is het een fluitje van een cent om gewoon in svn of git o.i.d. je databasestructuur te versionen.

sql/structure.sql
code:
1
CREATE TABLE foo(....);

sql/update-1.1.0.sql
code:
1
ALTER TABLE foo ....;

sql/update/2.0.0.sql
code:
1
DROP TABLE bar ....;


Als je het dan nog iets mooier wil doen schrijf je een wrapper tooltje die in een tabel bijhoudt op welke versie de database zodat als je het tooltje draait hij weet welke patch scripts hij uit moet voeren.

edit:
Ik vergeet er nog bij te zeggen dat het voordeel van deze manier t.o.v. migrations is dat je ook wijzigingen in je data mee kunt nemen, zoals bijvoorbeeld een herstructurering van je datamodel waarbij ook allerlei updates/inserts/deletes gedaan moeten worden.

[ Voor 14% gewijzigd door drm op 02-08-2014 13:35 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • las3r
  • Registratie: Augustus 2006
  • Laatst online: 21-11 12:44
.NET kent hiervoor ook zogenaamde migrations. Hij checkt de verschillen in je huidige data model tov de database versie, en genereert dan een migration script. Op die manier kun je zowel up als downgraden e.d.

zie: MSDN: Entity Framework Code First Migrations

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:32
Ik heb wel eens migratordotnet gebruikt:

http://code.google.com/p/migratordotnet/

Het ziet er wel naar uit dat verdere development op een laag pitje/stil staat, wat jammer is want het is best een leuk project.

https://fgheysels.github.io/


  • Oyster
  • Registratie: Januari 2003
  • Niet online

Oyster

Prince

Je kan eventueel een GIT hook gebruiken om je DB te pushen en pullen.

Bijvoorbeeld:
http://ben.kulbertis.org/...e-with-git-and-git-hooks/

Maar zo te lezen ben je inderdaad op zoek naar migrations. :)

[ Voor 20% gewijzigd door Oyster op 05-08-2014 00:32 ]

Pagina: 1