DB migrace (např. s Nextras/Migrations) – co, jak a proč?

- fary
 - Člen | 155
 
Ahoj, soráč :-D že se tak blbě ptám (jestli si už teď říkáte, proč se ten bl* nepodívá na google), ale prostě nechápu a nikde nemůžu najít uspokující odpověď, co jsou to ty DB migrace. K čemu je to dobré? Co se s tím dá všechno dělat? Jakým způsobem to může ovlivnit práci a vývoj aplikací? Ještě jednou se poníženě omlouvám. :-D

- David Kudera
 - Člen | 455
 
No myslím, že je to hrozně super věc. Používám doctrine/migrations a je to fajn.. Prostě tak, jako se ti mění kód, tak se mění i databáze. Jenže co uděláš s takovou změnou? Co s ní udělají kolegové? Co se s ní udělá v produkci?
Např. chci přidat nový sloupec uživateli, třeba api token. Jednoduše mu
v jeho entitě vytvořím novou property $apiToken a vytvořím
novou třídu pro db migraci (nechám vygenerovat), např. migraci verze 6..
V ní mám 2 metody up a down. No a už jen v
up napíšu kód (klidně obyč. SQL) pro přidání nového
sloupce. V down metodě naopak napíšu kód na odstranění toho
sloupce.
Jakmile tohle mám, tak tuhle změnu jednoduše commitnu a je to :-)
Kolega si stáhne změny a spustí migrace. Nemusím mu říkat, co má
upravit někde třeba v admineru apod. Migrace zajistí, že máme oba
správnou verzi databáze bez starostí. Pokud se potřebuju vrátit ke starší
verzi, tak nechám db migrovat dolů (na to se použijí ty metody
down). Takhle si potom můžu v gitu prohlídnout změny v db,
což se třeba taky může hodit.
No a produkce je taky úplně bomba. Stačí si jen do deploy procesu hodit migraci databáze a web se zaktualizuje úplně sám i s databází.

- Jiří Nápravník
 - Člen | 710
 
@DavidKudera muzes poradit jak pouzivat Doctrine Migrations? Pouzivam implementaci pres Kdyby. A ruha vec, tyhle migrace pokud mam jen tupy deploy pres FTP, jde je na produkci nejak rozumne spustit?

- David Kudera
 - Člen | 455
 
@JiříNápravník Když počkáš pár dní, tak o tom zkusím napsat nějaký „článek“ ;-) Taky to používám s Kdyby a je pravda, že ohledně migrations jsem docela dlouho bloudil.. Dokumentace nedokumentuje všechno, článků málo… Zrovna právě teď si balím věci, abych se zítra mohl přestěhovat, takže fakt až tak za pár dní.
Jinak osobně mám deploy z gitu, ale jestli používáš třeba ftp deploy od @DavidGrudl , tak mám pocit, že docela nedávno jsem někde zahlídl zprávu, že už by měl umět pouštět skripty na cílovým serveru. Přesně ale nevím, nikdy jsem to nepoužil.
Jo vlastně teď mě napadá, jestli jsi myslel třeba na hostingu a ne na VPS. Hm.. Tam nevím teda, i když snad by to mohlo být možný spustit ty migrace i přes skript, který se spustí na nějaké URL… Možná...... Asi… :-/

- Jiří Nápravník
 - Člen | 710
 
@DavidKudera jasně počkám, článek by byl super. Myslím jen tupý hosting, nicméně i kdyby to nešlo na produkci, tak by mi stačilo i pro vývoj jenom…

- hrach
 - Člen | 1844
 
@fary migrace jsou v podstate zmeny databaze ulozene ve verzovatelne podobe. Verzovatelne podoba je vetsinou nejaky kod (sql, nebo php, ktery treab to sql vygeneruje). Diky tomu pri deploy je mozne automaticky upravit db do stavu, kterou vyzaduje kod. Migrace muzou byt dopredne, ale i zpetne, tj. pri vraceni se v historii ti vytvori z aktualni db tu, aby kod fungoval.
Ad nextras migrations: to jsou migrace ulozene jako ciste sql. Tj. vytvoris soubor s sql, ktery upravuje db, a normalne ho commitnes spolu s kodem. Potom pri deploy staci zavolat nextras a ono ti spusti jen potrebne migrace. Mj. hlida konzistenci a tak. Neumi zpentne migrace (v 99 % nepotrebujes), ale ma pro to jiny mechanimus – tzv. reset. Ten spusti vzdy vsechny migrace od zacatku – to dava smysl a pouziva se pouze na localu. Kdyz si neco pokazis, nextras ti to dostane do stavu pred pokazenim.

- castamir
 - Člen | 629
 
Já osobně používám Phinx. Instalace pomocí composeru umožňuje takřka
okamžitý start. Lze to napojit přímo na config.neon (teda spíše na
config.local.neon). Lze také rozlišovat více „prostředí“ (např.
úprava tabulek a číselníků může být v prostředí
production, zatímco testovací data v dev apod.).