Migrace relační databáze do MongoDB bez výpadku
Přechod z relační databáze na MongoDB není univerzální řešení. Vyplatí se ve chvíli, kdy narazíte na limity pevného schématu, potřebujete horizontální škálování nebo pracujete s daty, jejichž struktura se často mění. Typickým případem je ukládání produktových katalogů s rozdílnými atributy, logů, telemetrie nebo uživatelských profilů s volitelnými poli. Naopak pokud stavíte na složitých transakcích napříč mnoha tabulkami a silné konzistenci, zůstaňte u relační databáze. Rozhodnutí by nemělo vycházet z popularity technologií, ale z konkrétních požadavků na čtení, zápis a vývojovou rychlost.
Než začnete cokoli migrovat, zmapujte, které dotazy skutečně používáte. Často zjistíte, že většina joinů se dá nahradit vnořenými dokumenty nebo referencí s ručním dotahováním. Pomůže vám k tomu i přehled o tom, co je NoSQL a kdy ho použít, který vysvětluje rozdíly mezi modely a jejich dopady na návrh schématu. Výsledkem analýzy by měl být cílový dokumentový model, nikoliv mechanický přepis tabulek na kolekce. Špatně navržené schéma se později opravuje mnohem dráž než samotný přenos dat.
Migraci bez výpadku řešte ve třech fázích. Nejprve spusťte obousměrnou replikaci mezi původní databází a MongoDB a nechte oba systémy běžet paralelně. Potom postupně přesměrujte čtení na novou databázi a porovnávejte výsledky, abyste odhalili chybějící pole nebo odlišné řazení. Nakonec přepněte zápisy, ověřte konzistenci a starý systém vypněte až po několika dnech provozu. Klíčové je mít možnost se vrátit zpět a testovat na produkčních datech, ne jen na anonymizované kopii.
Po dokončení migrace se zaměřte na indexy a sledování výkonu. MongoDB odměňuje správně navržené dotazy, ale neodpouští chybějící indexy u velkých kolekcí. Nastavte si monitoring pomalých operací a pravidelně kontrolujte velikost dokumentů, protože rostoucí pole mohou narazit na limit 16 MB. Migrace je hotová teprve tehdy, když nový systém zvládá špičkovou zátěž a tým rozumí tomu, proč je schéma uspořádané právě takto.