Relační databáze, nebo NoSQL: co vybrat pro váš projekt

Z Mazovia


Testování reduxové logiky bez běžícího prohlížeče nebo vývojového serveru stojí na dvou pilířích: čisté funkce a izolované thunky. Reducer je čistá funkce, která dostane stav a akci a vrátí nový stav. Async akce je funkce, která dostane dispatch a getState a uvnitř volá další akce. Když obojí otestujete samostatně, integrační prostředí nepotřebujete. Stačí testovací runner a knihovna pro mockování.

Kontejnerizace není žádná magie. Je to způsob, jak zabalit aplikaci i s jejím prostředím do jednoho celku, který poběží stejně na vašem notebooku, na testovacím serveru i v produkci. Docker je nástroj, který s těmito kontejnery pracuje. Pro začátečníka je klíčové pochopit, že kontejner není virtuální stroj. Nesimuluje celý hardver, jen izoluje procesy na úrovni operačního systému. Proto startuje v sekundách a nežere půlku paměti.

Při nasazení NoSQL se vyhněte několika častým chybám. První z nich je podcenění návrhu přístupových vzorů – v NoSQL se data modelují podle dotazů, ne podle entit. Pokud začnete bez analýzy, If you cherished this posting and you would like to receive more information concerning návod najdete zde kindly take a look at the page. skončíte s duplicitami a pomalými dotazy. Druhou chybou je spoléhání na to, že NoSQL automaticky znamená vysoký výkon. Bez správného indexování, klíčů a pochopení distribuce dat na uzlech na tom bude stejně špatně jako špatně navržená relační databáze.

Moduly nahrazují dřívější globální proměnné a vzory s okamžitě volanými funkcemi. Exportovat lze pojmenovaně i jako výchozí hodnotu, ale kombinace obou přístupů v jednom souboru mate. Držte se jednoho stylu. Dále mějte na paměti, že importy jsou statické a musí být na začátku souboru; dynamické načítání řeší až funkce import(). Asynchronní funkce s async a await zjednodušují práci s promisemi, ale nezapomeňte na try/catch. Neodchycená chyba v asynchronní funkci jinak skončí jako neobsloužené odmítnutí promise.

Praktické doporučení zní: začněte s relační databází, dokud narazíte na konkrétní limit, který už nedokáže uspokojivě řešit. Teprve pak přejděte na NoSQL, a to pouze pro tu část aplikace, kde to dává smysl. Klidně oba přístupy zkombinujte – relační databáze pro transakční jádro a NoSQL pro okrajové, vysoce zatížené nebo nestrukturované části. Rozhodujte se podle dat a dotazů, ne podle popularity technologie.

Na co si dát pozor: nikdy neodhadujte pod tlakem a nikdy neslibujte termín, který jste sami nevytvořili. Pokud vám někdo řekne „to musí být hotové do pátku", místo souhlasu řekněte, co vše se stihne a co ne. Rozdělte práci na fáze a u každé uveďte, co je hotové a co zbývá. Malé kroky umožňují včas odhalit zpoždění a upravit plán dřív, než se zpoždění nasčítá do katastrofy.

Začni postupně. Není nutné přepisovat celý projekt naráz. Vytvoř soubor tsconfig.json a nastav v něm režim, který dovolí JavaScript i TypeScript vedle sebe. Překladač spustíš příkazem tsc. Zpočátku zapni jen základní kontrolu, např. strict nech vypnutý a zapni ho, až bude většina souborů převedená. Tento postup ti umožní pracovat dál a zároveň snižovat počet chyb v každém souboru, který převedeš z .js na .ts.

Každý, kdo někdy vedl softwarový projekt, zná ten pocit: na začátku se zdá vše jasné, termíny vypadají reálně a rozpočet sedí. Po pár týdnech se ale objeví skryté závislosti, nejasné zadání a nečekané technické komplikace. Odhad času není věštění z křišťálové koule. Je to dovednost, kterou lze trénovat a která stojí na datech, rozkladu práce a ochotě přiznat nejistotu.

Největší problém bývá asynchronní časování. Nepoužívejte pevné prodlevy, ale čekejte na Promise nebo použijte fake timers. U opakovaných volání ověřte, že se dispatch nezavolá vícekrát, než má. U chybových stavů zkontrolujte, že se po rejectu dispatchne chybová akce a že se stav nezasekne v načítání. Častá chyba je zapomenutý return uvnitř thunku – bez něj test nepozná, kdy je hotovo, a může předčasně skončit.

Dalším rizikem je ignorování konzistenčního modelu. Mnoho NoSQL databází nabízí eventual consistency, což znamená, že se změny mohou projevit se zpožděním. Pro některé aplikace je to přijatelné, pro jiné naprosto ne. Vždy si ověřte, jak zařídit malou kuchyniý model konzistence konkrétní databáze poskytuje a zda odpovídá vašim požadavkům. Stejně tak nezapomeňte na zálohování a obnovu – u distribuovaných systémů je to složitější než u jednoho relačního serveru.

Než se rozhodnete pro NoSQL, musíte přesně vědět, jaká data budete ukládat a jak s nimi budete pracovat. Dokumentová databáze se hodí pro obsah s proměnlivou strukturou, jako jsou katalogy produktů s různými atributy, uživatelské profily nebo protokoly událostí. Klíč-hodnota exceluje u jednoduchých rychlých dotazů, například pro ukládání relací nebo mezipaměti. Sloupcové databáze zvládají obrovské objemy zápisů a analytické dotazy nad širokými tabulkami. Grafové databáze řeší vztahy – sítě přátel, doporučovací systémy nebo detekci podvodů.