Proč vůbec uvažovat o NoSQL ve velkých datech
NoSQL databáze vznikly jako odpověď na potřebu horizontálního škálování, práce s polostrukturovanými a nestrukturovanými daty a obsluhy dotazů s nízkou latencí při masivní zátěži. V projektech Big Data mohou nabídnout pružné schéma, vysokou propustnost zápisu, geografickou distribuci a odolnost vůči výpadkům. Nejsou však univerzálním řešením – volba NoSQL dává smysl tam, kde omezení relačních systémů (plnohodnotné ACID, rigidní schéma, vertikální škálování) brání dosažení obchodních SLA.
Klasifikace NoSQL a typické silné stránky
- Key-value (např. in-memory cache, distribuované KV úložiště): extrémní rychlost O(1), TTL, jednoduché datové struktury, vhodné pro relace, limity počtu požadavků, idempotentní tokeny.
- Dokumentové (JSON/BSON): schéma řízené aplikací, bohaté indexy, agregace; ideální pro katalogy, profily a telemetrii s proměnlivou strukturou.
- Širokosloupcové (column-family): zápisy s vysokou propustností, časové řady, logy s převahou připojování dat; lineární škálování a předvídatelné latence.
- Grafové: procházení grafu, centralita, vzory vztahů; detekce podvodů, doporučování, znalostní grafy.
- Časové řady: komprese, downsampling, retention, časová okna; observabilita, IoT, průmyslová telemetrie.
- Vyhledávací (full-text, invertovaný index): skóre relevance, facety, fuzzy matching; katalogy, vyhledávání v logách, textová analytika.
Kdy zvažovat NoSQL: rozhodovací kritéria
- Horizontální škálování: potřebujete lineárně přidávat uzly a udržet latenci pod 10 ms při milionech RPS.
- Proměnlivé schéma: doména se vyvíjí (atributy produktů, události) a rigidní tabulky by vyžadovaly časté migrace.
- Zátěž s převahou zápisů: proudy událostí, logy, IoT metriky > 100k zápisů/s; NoSQL lépe absorbuje nárazovou zátěž.
- Globální distribuce: více regionů, nízká latence pro uživatele po celém světě, geografická replikace s lokálním zápisem.
- Datové modely mimo 3NF: přirozeně denormalizovaná data, přístupové vzory známé předem.
- Ekonomika: náklady na TB a operace čtení/zápisu ve srovnání s licencemi a vertikálním hardwarem u RDBMS.
Kdy NoSQL nepoužívat
- Silná podpora ACID a ad hoc JOINy: složité transakce napříč tabulkami, uzávěrky a odvozování údajů pomocí JOINů patří do RDBMS.
- Neznámé přístupové vzory: NoSQL se modeluje podle dotazů; pokud je analytika převážně ad hoc, zvažte DWH/lakehouse.
- Silná referenční integrita: její vynucování na úrovni databáze (FK, CHECK) často chybí nebo je omezené.
- Nutnost standardního SQL: pokud je investice do ekosystému SQL zásadní, zvolte kompatibilní systémy (NewSQL/HTAP).
CAP a PACELC: jak chápat konzistenci a latenci
V distribuovaných systémech nelze při síťové partition současně zaručit silnou konzistenci a dostupnost (CAP). Model PACELC doplňuje, že mimo případ partition volíme mezi latencí a konzistencí. NoSQL často nabízí eventual konzistenci nebo nastavitelné parametry (např. read/write quorum). Klíčem je sladění s obchodním SLA: kolik čtení zastaralých dat je přijatelné a jaká latence zápisu je tolerovatelná?
Modelování v NoSQL: nejprve přístupové vzory, potom schéma
- Návrh podle dotazů: definujte 10 hlavních dotazů (PK, řazení, filtry, rozsahy) a podle nich vytvořte klíče a materializované pohledy.
- Denormalizace: ukládání redundantních dat (vyžaduje rozesílání zápisů do více úložišť nebo asynchronní projekce).
- Kompozitní klíče: předpony pro shardování a time-bucket pro časové řady; vyhněte se úzkým místům.
- TTL a retence: automatizovaný životní cyklus – mazání starých dokumentů či měření.
- Indexy: používejte střídmě; každý sekundární index představuje skrytou daň za zápis.
Typy zátěže, ve kterých NoSQL obvykle vyniká
- Telemetrie a logy: stovky tisíc událostí/s, časové okno, downsampling, souhrnné agregace.
- Personalizace v reálném čase: profily, úložiště relací, příznaky funkcí, doporučení s latencí < 10 ms.
- Katalog e-commerce: dokumentové modely s bohatými filtry a full-textovým vyhledáváním vedle sebe.
- Herní průmysl a IoT: vysoký objem krátkých zápisů, geografická distribuce, synchronizace s přístupem offline.
- Grafová analytika: detekce komunit, podvodů, procházení do vzdálenosti K skoků.
Transakce v NoSQL: co skutečně získáte
- Jemnozrnné ACID: často na úrovni jednoho klíče nebo jedné partition (atomický zápis dokumentu/řádku).
- Transakce napříč více dokumenty: bývají k dispozici, ale s omezeními (výkon, velikost, pouze v rámci shardu nebo s vyšší latencí).
- Idempotence a at-least-once: aplikace musí počítat s opakováním a kompenzačními akcemi (ságy) v distribuovaných scénářích.
Škálování a distribuce dat
- Shardování: hashovací / rozsahové / kompozitní; klíč vybírejte pečlivě, abyste předešli úzkým místům (např. přidáním náhodné složky nebo bucketů).
- Replikace: leader-follower, multi-leader, CRDT pro struktury bez konfliktů; volba ovlivňuje konzistenci i SLA.
- Více regionů: směrování podle latence, lokální zápis s eventual konzistencí oproti globálnímu quorum s vyšší latencí.
Observabilita a provoz
- Metriky: latence p99, zesílení zápisu, míra zásahů cache, compaction/GC, velikost SSTable/segmentů.
- Optimalizace: správná velikost souborů partition, omezení počtu malých souborů, řízení zpětného tlaku u konzumentů.
- Zálohování a obnova: snapshoty jednotlivých shardů, obnova k určitému bodu v čase, testy obnovy po havárii (failover, přepnutí regionu).
Bezpečnost, governance a compliance
- IAM: RBAC/ABAC, podrobné vymezení oprávnění pro jednotlivé kolekce/klíčové prostory.
- Šifrování: uložených dat i dat přenášených po síti, rotace klíčů, audit přístupů, šifrování jednotlivých polí u citlivých atributů.
- Kvalita dat: validační schémata (JSON Schema), pravidla validace při zápisu, pravidla retence a právního mazání.
Ekonomika provozu a FinOps
- Nákladový model: platby za kapacitu (vCPU/RAM/IOPS) oproti jednotkám požadavků či operacím; sledování špiček i průměrů.
- Vrstvení úložiště: rychlá, teplá a studená úložiště, komprese, object storage jako sekundární archiv.
- Optimalizace dotazů: omezte
scan, využívejte projekce, materializované pohledy a předpočítané agregace.
Hybridní přístupy: polyglot persistence a HTAP
Jedna databáze zpravidla nevyřeší vše. Polyglot persistence kombinuje NoSQL pro OLTP (nízká latence, škálování) s relačním DWH/jezerem pro analytiku a vyhledávacím enginem pro full-textové vyhledávání. Systémy HTAP či „NewSQL“ přinášejí distribuované ACID s rozhraním SQL; mohou být vhodné tam, kde je nutná transakční konzistence i horizontální škálování.
Migrace z RDBMS na NoSQL: postup a úskalí
- Mapování dotazů: zjistěte N nejčastějších dotazů a přístupových vzorů a definujte SLA.
- Doménové agregáty: určete hranice konzistence (kořen agregátu) a převeďte tabulky na dokumenty/partition.
- Synchronizace řízená událostmi: CDC z RDBMS → fronta → projekce do NoSQL; obousměrné konflikty řešte pomocí CRDT/ság.
- Doplnění historických dat a validace: znovu vytvořte indexy, ověřte kontrolní součty, proveďte výběrovou kontrolu a shadow traffic před přepnutím.
Anti-patterny při nasazení NoSQL
- „Lift-and-shift“ tabulek do dokumentů bez změny modelu – skončíte s JOINy v aplikaci a výkonem horším, než jste očekávali.
- Univerzální sekundární indexy – zhoršení výkonu zápisu a compaction; indexujte pouze dotazy, které skutečně potřebujete.
- Monolitický partition key – úzká místa, omezování provozu, nerovnoměrné rozdělení dat mezi shardy.
- Nerespektování limitů velikosti dokumentu/řádku – neúplné zápisy, neefektivní přenosy; použijte vzor rozdělení nebo příloh.
Kontrolní seznam pro rozhodnutí „je NoSQL vhodné?“
- Máte jasně definované přístupové vzory (klíče, rozsahy, filtry) a SLA (p95/p99, RPS)?
- Je datový model přirozeně denormalizovaný a snese eventual konzistenci nebo nastavitelné quorum?
- Potřebujete zápis/čtení ve více regionech a automatický failover bez zásahu?
- Převažují v zátěži zápisy, nebo je vysoce proměnlivá (nárazová)?
- Máte plán na validaci schémat, governance a bezpečnost (PII, pravidla retence)?
- Existuje strategie zálohování, PITR a otestované scénáře obnovy po havárii?
- Je vypočítáno TCO a vychází výhodněji než RDBMS a jeho škálování?
Modelové scénáře
| Scénář | Doporučený typ | Klíčové důvody |
|---|---|---|
| IoT telemetrie 500k událostí/s | Širokosloupcová / časová řada | Lineární škálování, TTL, kompakce podle času |
| Produktový katalog s bohatým filtrováním | Dokumentové + vyhledávací | Proměnlivé schéma, full-text, facety |
| Antifraud nad převody | Grafové | Procházení grafu, vztahy, vzory chování |
| Úložiště relací a limitování požadavků | Key-value (in-memory) | Latence pod jednu milisekundu, TTL, atomická počítadla |
Minimální provozní standardy pro NoSQL v produkci
- Automatizované zřizování a pravidla schématu (kolekce/klíčové prostory jako kód).
- Monitorování p99, vytížení CPU/IO, heap/GC, velikosti partition a zpoždění replikace.
- SLA pro repair/compaction, rotaci klíčů a testy chaos engineeringu (výpadek regionu/uzlu).
- Pravidla TTL/retence a automatické vrstvení dat do objektového úložiště.
Závěr: NoSQL jako cílený nástroj, nikoli dogma
NoSQL dává smysl, když doména vyžaduje elasticitu, škálování a proměnlivé schéma, přístupové vzory jsou dobře známé a aplikace dokáže pracovat s nastavitelnou či eventual konzistencí. Správná implementace začíná návrhem podle dotazů, pečlivým výběrem klíčů a indexů, observabilitou a provozní disciplínou. V kombinaci s relačními a analytickými technologiemi umožňuje budovat systémy, které zvládnou objem, rychlost i rozmanitost dat bez kompromisů v uživatelském zážitku.
