MySQL, nebo PostgreSQL: co se změní při migraci databáze

Z Mazovia
Wersja z dnia 21:03, 1 paź 2026 autorstwa YWAGeraldo (dyskusja | edycje) (Utworzono nową stronę "Instalace je přímočará. Vytvořte virtuální prostředí, aktivujte ho a nainstalujte pytest pomocí správce balíčků. Ověření provedete příkazem pytest --version. Testy se ukládají do souborů, jejichž název začíná na test_ nebo končí na _test. Samotné testovací funkce musí mít také prefix test_. pytest je sám najde bez jakékoli registrace. Spuštění je pak otázkou příkazu pytest v kořeni projektu. Pro podrobnější výstup pou…")
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

Instalace je přímočará. Vytvořte virtuální prostředí, aktivujte ho a nainstalujte pytest pomocí správce balíčků. Ověření provedete příkazem pytest --version. Testy se ukládají do souborů, jejichž název začíná na test_ nebo končí na _test. Samotné testovací funkce musí mít také prefix test_. pytest je sám najde bez jakékoli registrace. Spuštění je pak otázkou příkazu pytest v kořeni projektu. Pro podrobnější výstup použijte pytest -v, pro zastavení po první chybě pytest -x.

Kde automatizace šetří čas a kde ho ztrác

Poslední věc, která rozhoduje o výsledku, je tón. Zpětná vazba nemá být obhajoba ani hodnocení člověka. Když někdo řekne, že něco nefunguje, není to útok. Facilitátor to musí říct nahlas, jinak se lidé začnou bránit a diskuze se změní v hádku o vině. Struktura drží emoce na uzdě jen do chvíle, kdy ji někdo začne používat jako zbraň. Proto je lepší mluvit o procesech a rozhodnutích než o lidech a jejich vlastnostech.

Práce s daty je v JavaScriptu častý zdroj chyb. Nepředávejte všude celý objekt, když funkce potřebuje jen jednu vlastnost. Ničíte tím čitelnost a ztěžujete testování. Místo uzivatel předávejte uzivatel.email, pokud jde jen o e-mail. U polí používejte map, filter, reduce místo ručních cyklů for s push. Kód je kratší a méně náchylný k chybám s indexy. Pozor ale na přílišné řetězení – tři operace za sebou se ještě čtou, deset už je nečitelných. Rozdělte je do pojmenovaných kroků.

Jak přenést data a neztratit integritu Samotný přenos dat se dělí na dvě části: strukturu a obsah. Strukturu vytvořte ručně nebo převodem DDL, ale vždy ji zkontrolujte. Automatické převodníky často vynechají indexy, cizí klíče nebo výchozí hodnoty. Data exportujte do CSV nebo SQL a importujte po dávkách. U velkých tabulek použijte copy, které je výrazně rychlejší než vkládání jednotlivých řádků. Během importu vypněte cizí klíče a po dokončení je znovu zapněte a ověřte.

Častou chybou je podcenění rozdílů v řetězcích. MySQL ve výchozím nastavení nerozlišuje velikost písmen u porovnávání, PostgreSQL ano. To ovlivní vyhledávání, unikátní indexy i join podmínky. Pokud potřebujete chování bez rozlišení, použijte citext nebo funkční index s lower(). Stejně tak si ověřte práci s NULL — v MySQL je NULL ve sloupci s unique indexem povolen vícekrát, v PostgreSQL také, ale chování u složených indexů se liší.

Důležitá je i otázka, kdo bude podporu ovládat. Pokud s databázemi teprve začínáte, potřebujete řešení s rozumným výchozím nastavením a srozumitelnými výstupy. Naopak zkušený tým ocení možnost zasáhnout do konfigurace a přizpůsobit chování. Nenechte se zlákat tvrzením, že vše zvládne jediné tlačítko. Většina incidentů vzniká v okamžiku, kdy se něco pokazí a není jasné, jak to vrátit zpět.

Migrace z MySQL do PostgreSQL není jen výměna ovladače. Oba systémy mají odlišnou filozofii ukládání dat, typovou kontrolu a chování transakcí. Pokud se na to připravíte předem, vyhnete se nejčastějším chybám, které jinak vedou k tichému poškození dat nebo k výpadku aplikace po přechodu.

Výběr podpory pro databáze nezačíná u ceny ani u seznamu funkcí. Začíná u toho, co vaše aplikace skutečně dělá. Jinou podporu potřebuje skladová evidence s tisíci transakcí za minutu a jinou reportovací nástroj, který se dotazuje jednou denně. Než se pustíte do srovnávání, sepište si tři věci: jaký typ dotazů převažuje, jaký je poměr čtení a zápisu a jak dlouho si můžete dovolit výpadek. Teprve pak má smysl řešit konkrétní řešení.

Před podpisem smlouvy si vyžádejte informace o tom, jak často vycházejí aktualizace a jak jsou oznamovány změny v chování. Zjistěte, zda je možné provozovat podporu odděleně od databázového serveru, aby její pád neohrozil samotná data. A hlavně – ověřte, jak vypadá obnova po výpadku. Ne teoreticky, ale konkrétně: kolik kroků je potřeba udělat a jak dlouho to trvá. Bez toho zůstává volba podpory jen hrou na jistotu, která v ostrém provozu neobstojí.

Zaměřte se na režim provozu, ne na reklamní slogany Podpora pro databáze se dělí podle toho, jak zasahuje do běhu systému. Některá řešení jen sledují stav a upozorní na problém, jiná aktivně přesouvají zátěž nebo automaticky opravují chyby. U sledovacích nástrojů si ověřte, jak často sbírají data a zda zvládnou i krátké špičky. U aktivních zásahů naopak hlídejte, zda nezpůsobí neplánovaný restart nebo zámek, který zablokuje ostatní dotazy. Praxe ukazuje, že příliš agresivní automatika dokáže nadělat víc škody než užitku, pokud není pečlivě nastavená.

Typická chyba je testovat podporu na vývojovém prostředí s malými daty. Tam všechno běží rychle a spolehlivě. Do produkce se ale dostanou miliony řádků a jiné vzorce přístupu. Před nasazením si proto připravte zátěžový test, který odpovídá reálnému provozu. Zjistíte tak, kde jsou limity – ať už jde o počet připojení, velikost mezipaměti nebo rychlost obnovy po selhání.