Jak porovnávám SQL skripty - bez ztráty dat a nervů
Změny v databázi jsou vždycky trochu stresující. Jedna chyba v migration scriptu a máš problém. Proto si dávám záležet na porovnávání SQL změn před tím, než to pustím na produkci.
S čím se setkávám
Schema migrations:
- Přidání tabulky
- Změna typu sloupce
- Nové indexy
Data migrations:
- UPDATE, INSERT pro transformaci dat
Stored procedures/functions:
- Změny v business logice
Views a triggers:
- Změny v odvozených datech
Permissions:
- GRANT, REVOKE statements
Co používám
Pro SQL Server:
- Redgate SQL Compare - porovná schémata mezi databázemi
Pro obecné použití:
- Liquibase - verzované changesets
- Flyway - migration framework s diff
Pro MySQL:
- mysqldiff - command-line porovnání
Pro PostgreSQL:
- pg_dump + diff - klasika
Migration scripty - jak na to
- Porovnej scripty mezi verzemi - co se změnilo?
- Ověř idempotenci - může běžet vícekrát bez problému?
- Zkontroluj rollback - vrátí změny správně?
- Testuj na kopii prod dat - ne na prázdné DB!
Co může rozbít aplikaci
Breaking changes:
- Odebrání tabulky/sloupce - aplikace spadne
- Změna typu sloupce - vyžaduje data migration + update aplikace
- Odebrání indexu - výkon do háje
- Změna FK - integrita dat
- Změna permissions - aplikace ztratí přístup
Na tohle si dávám extra pozor.
Verzování databáze
- Migration scripty v Gitu, společně s kódem
- Migration tool trackuje co už bylo aplikováno
- Tagy synchronně s release aplikace
- Rollback script pro každou migration
Testování změn
Co dělám před každým deployem:
- Testuji na staging s produkčním objemem dat (ne na prázdné DB!)
- Měřím performance impact indexů a schema změn
- Validuji integritu dat po migraci
- Testuji rollback procedure
- Simuluji failure scenarios
Production deployment
- Backup - vždycky před migrací
- Maintenance window - ideálně když je nízký traffic
- Monitoring - performance a error logy během i po
- Rollback plán - připravený na rychlou recovery
- Komunikace - tým a stakeholdeři vědí co se děje
Database změny jsou stresující, ale s procesem to jde. Hlavně testovat, testovat, testovat.
Potřebuješ rychle porovnat dva SQL scripty? Hoď je do Code Diff a hned vidíš rozdíly.
Vyzkoušejte PorovnejText.cz zdarma
Nejrychlejší český nástroj pro porovnání textů. Vše probíhá ve vašem prohlížeči, žádná registrace není potřeba.
Porovnat texty nyní →Související články
Git diff mi nestačí - kdy a proč používám online diff
Jako programátor pracuju s git diff denně. Ale někdy potřebuju rychle porovnat dva kousky kódu a nechce se mi kvůli tomu otvírat IDE. Kdy použít co.
Markdown a README - jak kontroluju změny
Píšete dokumentaci v Markdownu? Tady je jak porovnávám změny v README a dalších md souborech.
Jak automatizuju changelog z Git commitů
Ruční psaní release notes mě nebavilo. Tady je jak jsem to automatizoval pomocí Conventional Commits.