Kdy se vyplatí NoSQL a co získáte místo tabulek?

Z Mazovia

První rekonstrukce koupelny krok za krokem je oddělit odhad od . Když zákazník chce termín, řekněte nahlas, co ten termín znamená: „Tohle je můj odhad za předpokladu, že dostanu podklady do středy a nikdo nezmění zadání." Tím se z odhadu stává podmíněný výrok, ne příslib. Zákazník pak ví, co se musí stát, aby termín platil, a vy máte páku, když se podmínky změní. Bez této věty se každý posun termínu jeví jako vaše selhání.

Větve používejte i v malém týmu. Pro novou funkci si vytvořte větev, na ní dělejte průběžné změny a po ověření ji sloučte zpět. Tím se hlavní linie udrží v použitelném stavu a nasazení na produkci z ní může kdykoli proběhnout. Pozor na dlouho otevřené větve: čím déle žijí odděleně, tím větší konflikty při sloučení přijdou. Slučujte často a v malých kusech.

Na co si dát pozor v praxi První chyba je zvolit NoSQL jen proto, že je moderní. U transakcí, kde potřebujete atomicitu přes více entit, je relační databáze stále bezpečnější volba. NoSQL transakce existují, ale mívají slabší záruky a složitější obsluhu. Druhá chyba je ignorovat modelování podle dotazů. V relační databázi navrhnete tabulky a dotazy přijdou později. U NoSQL je to obráceně: nejdřív zjistěte, jak se data budou číst, a podle toho navrhněte dokumenty nebo klíče. Třetí chyba je podcenit konzistenci. Distribuované systémy často volí dostupnost před okamžitou shodou, takže se můžete setkat s zastaralými daty. Pro platby nebo skladové zásoby je to nepřijatelné.

Testovací pyramida není dogma, ale nástroj na řízení rizika. Většina týmů skončí u opačného extrému: stovky jednotkových testů, které procházejí, a přesto se aplikace rozbije při prvním kliknutí. Problém nebývá v počtu testů, ale v tom, co který test skutečně ověřuje. Pyramidu je proto lepší brát jako poměr mezi rychlostí zpětné vazby a věrností produkčnímu prostředí.

NoSQL není jedna technologie, ale skupina databází, které opouštějí pevné tabulky a cizí klíče. Místo toho ukládají data jako dokumenty, klíč-hodnota páry, široké sloupce nebo grafy. Každý typ řeší jiný problém: dokumentové databáze drží celý objekt pohromadě, klíč-hodnota slouží k bleskovému čtení podle identifikátoru, grafové databáze zvládají vztahy mezi entitami. Než začnete, položte si otázku, jestli vůbec potřebujete měnit přístup. Pokud data sedí v tabulkách a dotazy jsou rychlé, přechod jen přidá práci.

Hlavní důvod, proč NoSQL vzniklo, je škálování a pružnost schématu. Relační databáze zvládne vertikální růst jen do určitého bodu, pak je potřeba rozdělit data na více strojů. Distribuované NoSQL databáze to dělají nativně, často pomocí shardingu a replikace. Druhý důvod je vývoj: když se struktura dat mění každý týden, migrace tabulek zdržuje. Dokumentové databáze umožní uložit různé verze objektu vedle sebe a aplikace si poradí s chybějícími poli. To je výhoda i past, protože bez kontroly schématu snadno vznikne nekonzistentní nepořádek.

Základní cyklus má tři kroky a plete se pořád dokola. git status ukáže, co se změnilo. git add soubor přesune změnu do přípravy (staging). git commit -m "popis" ji uloží jako bod v historii. Kdo vynechá git add, diví se, že commit je prázdný. Kdo naopak přidá omylem celý adresář přes git add ., dostane do historie i to, co tam nechce. Zpráva commitu nemá být „oprava" nebo „změny" — za měsíc nebudeš vědět, co se opravovalo. Piš krátce, ale konkrétně: „oprava dělení nulou v exportu".

Na vrcholu stojí end-to-end testy. Ověřují scénář z pohledu uživatele, ale jsou nejdražší na údržbu. Nemá smysl jimi pokrývat každou kombinaci vstupů. Vyberte kritické cesty: přihlášení, platba, uložení objednávky. Pokud e2e test padá kvůli změně textu v tlačítku, je příliš křehký a patří do nižší vrstvy. Stabilita je důležitější než pokrytí.

Praktický postup: nejdřív napište jednotkový test pro novou logiku, pak integrační pro hranici systému a e2e jen pro scénář, který by jinak nikdo neověřil. Sledujte dobu běhu. Pokud sada jednotkových testů trvá déle než několik sekund, něco děláte špatně. Pokud integrační testy vyžadují ruční spuštění databáze, ztratí se v CI a přestanou se spouštět.

Kdy se NoSQL vyplatí a na co si dát pozor První situace: ukládání dokumentů, jejichž struktura se liší kus od kusu. Typicky produktové katalogy, kde každá kategorie má jiné atributy. Relační databáze by vyžadovala buď mnoho nulových sloupců, nebo tabulku atributů. Dokumentová databáze uloží celý objekt jako jeden záznam a dotaz vrátí přesně to, co potřebujete. Pozor ale na to, že bez schématu snadno vznikne nekonzistentní datový bordel — chybějící pole, různé názvy pro totéž. Vyplatí se zavést validační pravidla už na úrovni aplikace.