Ako na verzovanie databáz?

Ako na verzovanie databáz?
« kdy: 26. 10. 2010, 20:19:01 »
Ahojte

Riešim čo ste určite riešili aj ďalší 1000x - verzovanie databáz.
Pracujem na dvoch projektoch klasika php+mysql. V prvom prípade máme jednu databázu a každý svoju working copy, pracujeme v jednej miestnosti. Druhý prípad je taký, že pracujeme v podstate po celom Slovensku, každý má svoju databázu a working copy. V oboch prípadoch používame subversion.
V prvom prípade db neverzujeme vôbec, v druhom prípade síce verzujeme, ale nemáme v tom žiadny systém. Je to totálny bordel. Aj tak sa musíme kontaktovať mailom a upozorniť na zmeny v db. Pravdupovediac, nenapadá mi, ako do toho systém zaviesť.
Ako to robíte vy?


Ahmul

Re: Ako na verzovanie databáz?
« Odpověď #1 kdy: 26. 10. 2010, 20:37:54 »
V RoR jsou na tohleto migrace (http://guides.rubyonrails.org/migrations.html) plus exportované schema db ve stejném zápisu, které se nechá verzovat společně se zbytkem kódu. Pro PHP byste mohl najít něco podobného, nebo napsat vlastní. 

pecko007

Re: Ako na verzovanie databáz?
« Odpověď #2 kdy: 26. 10. 2010, 21:01:56 »
pokial ide o kod, preco nepouzivate git? svn je uz vycerpany prezitok:)

Re: Ako na verzovanie databáz?
« Odpověď #3 kdy: 26. 10. 2010, 22:02:00 »
V oboch prípadoch je svn hyperluxus :) Nabudúce určite skúsim niečo novšie.

Tie migrations vyzerajú výborne, ale v projekte, kde ešte len trochu zavádzam objekty do kódu písaného za raných čias php4 by to bolo už moc :) A hlavne je to robota navyše, ktorú kolegov nedonútim robiť.
« Poslední změna: 26. 10. 2010, 22:10:08 od rooobertek »

Logik

  • *****
  • 1 034
    • Zobrazit profil
    • E-mail
Re: Ako na verzovanie databáz?
« Odpověď #4 kdy: 26. 10. 2010, 22:09:25 »
svn je hyperluxus do tý doby, než např. přesuneš jeden adresář jinam (včetně debilního .svn podadresáře) apod - vrátit to pak do funkčního stavu je opruz.

Jinak, co se týče verzování, tak buďto dump databáze, nebo zmíněné migrace
(můžou bejt např. realizovaný i jednoduchym upgrade skriptem), nrbo sofistikovanější systém alá railsy.

Imho nejlepší přístup je mít databázi podobně jako třídy rozdělenou po tabulkách nebo alespoň (v postgres) po schématech a přistupovat k verzování úplně stejně jako se přistupuje k verzování zdrojáků.


Re: Ako na verzovanie databáz?
« Odpověď #5 kdy: 26. 10. 2010, 22:16:10 »
Tie upgrade skripty ako by som tam mal ukladať? Dátum zmeny? Verzia? Nejaké poradové číslo? Teraz tam máme zmes súborov pomenovaných zhruba podľa popisu zmeny, ale zrejme niektorým kolegom dochádza predstavivosť, tak dopisujú do tých súborov a je z toho chaos.

2. bolo by teoreticky možné napísať skript, ktorý by z diffu dvoch dumpov vedel spoľahlivo robiť tie upgrady?

pecko007

Re: Ako na verzovanie databáz?
« Odpověď #6 kdy: 26. 10. 2010, 22:44:21 »
heh, svn ako hyperluxus:D vazne skus git, potom uvidis intergalaktickymegahyperluxus:D ale teraz vazne. spominal si aj kod, preto som ti na to odporucil tento nastroj. co sa db tyka, hm, no mozno aj tie dumpy by sli. s gitom potom trivialna vec. treba si len ozrejmit system a dodrziavat ho. pred skoncenim prace pushnut do repa a rano na zaciatku pullnut. vsetko veci na sekundy:) a mozno by sa to dalo aj zautomatizovat. ale urcite by som uvazoval nad gitom. jednoznacne:)

PCnity

  • *****
  • 692
    • Zobrazit profil
    • E-mail
Re: Ako na verzovanie databáz?
« Odpověď #7 kdy: 26. 10. 2010, 22:59:17 »
U nas ma kazdy dev svoj branch a svoju working copy... Avsak kazdu zmenu db layoutu musia dat do db_layout update sql suboru... S tym potom riesia svoj branch a ked maju svoje upravy dokoncene ziadaju o schvaldenie ich db layout uprav.

Samotna prod databaza obsahuje tabulky v ktorych su uvedene vsetky doteraz aplikovane upravy.

Nasli si proste nejaky system aj na db... Kod je v csv alebo gite ale zeby mali nieco podobne aj na db si nemyslim.

Logik

  • *****
  • 1 034
    • Zobrazit profil
    • E-mail
Re: Ako na verzovanie databáz?
« Odpověď #8 kdy: 27. 10. 2010, 19:26:40 »
Citace
Tie upgrade skripty ako by som tam mal ukladať?
no je tisíc možností. Od nejhloupější varianty jednoho obrovskýho dumpu - kdy prostě provedeš merge dvou souborů a občas to budeš muset řešit rúčo, po systém, kdy je databáze rozdělená např. po tabulkách - málokdy se sejdou updaty stejnejch tabulek (imho nejčistší řešení), nebo kdy má každej vývojář "svoje" soubory (např. ve tvaru datum.vyvojar.sql) a skript je pak provede ve spravnym pořadí.

Klíčovej je IMHO pohled: "správný" je to, co je v souborech jako definice struktury, nikoli to, co je reálně v databázi (stejně jako člověk nepovažuje za správnej stav zkompilovanej zdroják).

Developer

Re: Ako na verzovanie databáz?
« Odpověď #9 kdy: 28. 10. 2010, 12:14:34 »
Da sa pouzit javovsky opensource DbDeploy http://dbdeploy.com/ v kombinacii s Phingom.

asdfasdf

Re: Ako na verzovanie databáz?
« Odpověď #10 kdy: 28. 10. 2010, 13:25:06 »
Zrovna vo včerajšej Sklizni je popísaný Another PostgreSQL Diff Tool:

http://www.root.cz/clanky/softwarova-sklizen-27-10-2010/#apgdiff

Re: Ako na verzovanie databáz?
« Odpověď #11 kdy: 28. 10. 2010, 13:29:37 »
apgdiff vyzerá fajne, ale som zvedavý, čo to spraví s mysql dumpom. Ak by sa mi moc chcelo, spravím fork :)

asdfasdf

Re: Ako na verzovanie databáz?
« Odpověď #12 kdy: 28. 10. 2010, 19:19:06 »
Samozrejme existuje nejeden diff pre mysql, stačí použiť google než vytiahneš ťažkú artilériu.