Jump to content

Přechod z MySQL na PostgreSQL: praktický průvodce migrací databáze

From Babylon SIGNALIS Wiki
Revision as of 18:48, 21 August 2026 by TammiCheatham (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Přispívání do open source projektů může být skvělý způsob, jak se učit, budovat si portfolio a spolupracovat s lidmi z celého světa. Ale zejména na začátku je snadné udělat zbytečné chyby, které vás stojí čas i motivaci. Než začnete psát první kód, věnujte čas tomu, abyste projekt pochopili a našli si svou cestu.

Prakticky to vypadá tak, že pro funkci, která sčítá dvě čísla, napíšete test, který ověří součet kladných čísel, ale také součet se záporným číslem a součet s nulou. Každý scénář by měl být samostatný test. Tím získáte přehled o tom, který konkrétní případ selhává. Mnoho začátečníků dělá chybu, že testy píší až po dokončení funkce a snaží se pokrýt všechno najednou. Lepší je psát testy průběžně, klidně dřív než samotnou implementaci – pak vám testy ukazují, co má funkce dělat.

Pro nasazení na produkci vždy vyžadujte ruční schválení, pokud nejde o kritický projekt. To zařídíte pomocí environment s ochranou – GitHub nabízí možnost přidat schvalovatele, kteří musí build odsouhlasit. Tím předejdete situaci, kdy se automaticky nasadí chybná verze. Zároveň si nastavte retenci běhů a pravidelně kontrolujte logy, abyste měli přehled o tom, co se děje. S GitHub Actions můžete dosáhnout stabilní a transparentní automatizace, ale jen pokud konfiguraci pečlivě promyslíte a otestujete na bezpečné větvi.

Kromě kódu můžete přispívat i jinak. Projektům často chybí dokumentace, překlady nebo testy. Napsat srozumitelný návod, opravit překlep v dokumentaci nebo vymyslet reprodukční scénář pro bug je stejně hodnotné jako nová funkce. A navíc si u toho procvičíte schopnost číst cizí kód a orientovat se v projektu, což se vám bude hodit při každé další spolupráci. Pokud nevíte, kde začít, podívejte se, jestli projekt nemá sekci pro označení problémů s dokumentací nebo s designem.

Nezapomínejte na chybové hlášky. Když databáze vrátí chybu, nezobrazujte ji uživateli v plném znění. Chybová hláška může útočníkovi prozradit strukturu tabulek nebo přesné znění dotazu. Místo toho logujte podrobnosti do souboru a uživateli zobrazte obecnou zprávu. Stejně tak si hlídejte, co se dostane do URL parametrů a formulářových polí. Pravidelně testujte svou aplikaci automatizovanými nástroji, které hledají SQL injection, ale nezapomeňte, že žádný nástroj nenahradí kódu. Zaměřte se na místa, kde se pracuje s databází, a projděte každý dotaz.

Když začnete psát první unit test, nejčastější chybou je snaha pokrýt najednou příliš mnoho logiky. Test by měl ověřovat přesně jednu věc – jednu funkci, jednu metodu, jeden scénář. Než začnete, otevřete si kód, který chcete testovat, a napište si na papír tři základní věci: co funkce přijímá, co vrací a jaké má vedlejší efekty. Pokud funkce komunikuje s databází, soubory nebo sítí, test se výrazně zkomplikuje – proto je lepší začít u čistých funkcí, které jen zpracují vstup a vrátí výstup.

Začněte u sebe, ne u žebříčků popularity Pokud vás zajímá analýza dat nebo strojové učení, sáhněte po Pythonu. Jeho syntaxe je čitelná i pro úplného nováčka a má obrovskou podporu knihoven. Díky tomu se můžete rychle dostat k praktickým úkolům, jako je zpracování tabulek nebo tvorba grafů. Pozor ale na to, že Python má pomalejší běh – pro velké aplikace nebo hry to není ideální volba. Také si dejte pozor na to, abyste se nezasekli jen u „příkazů z tutoriálů" a nesnažili se naučit všechno nazpaměť. Programování je o řešení problémů, ne o memorování.

Na závěr si dejte pozor na dva časté nešvary. Za prvé: nevěřte těm, kdo tvrdí, že existuje jeden správný jazyk. Je to nesmysl. Za druhé: nepodceňujte základy algoritmizace. Můžete se naučit syntaktická pravidla tisíce jazyků, ale bez schopnosti rozložit problém na menší kroky nenapíšete nic užitečného. Začněte proto s jednoduchými úlohami, pište kód ručně, čtěte cizí kód a hlavně se nebojte chyb – ty jsou přirozenou součástí učení.

Během migrace se vyhněte přímému připojení aplikace k nové databázi bez předchozího ověření. Spusťte paralelně obě databáze a porovnejte výstupy na vzorku dat. Dbejte na konfiguraci připojovacího řetězce – PostgreSQL vyžaduje jiné ovladače a často i úpravu konektorů v aplikaci. Po úspěšném importu spusťte ANALYZE, aby optimalizátor měl aktuální statistiky, a ověřte, že indexy fungují správně. Nezapomeňte také na migraci uživatelských účtů a oprávnění – PostgreSQL používá role, zatímco MySQL uživatele.

Struktura úloh a jejich závislostí Workflow se dělí na jednotlivé joby, které běží paralelně, pokud mezi nimi není definovaná závislost. Pro typický CI pipeline mějte job pro build a test, a pokud vše projde, job pro nasazení. Závislost nastavíte pomocí needs, takže nasazení počká na úspěšné dokončení testů. V rámci jobu pak jednotlivé stepy provádějí konkrétní příkazy – instalace závislostí, spuštění testů, build artifactu. Doporučuji rozdělit kroky na menší části, protože potom v logu snadno najdete, kde nastal problém.