Relační a nerelační databáze: zásadní rozdíly a datové modely

Relační a nerelační databáze: Principiální rozdíly a modely

Proč rozlišovat relační a nerelační databáze

Databázové systémy tvoří základ většiny informačních aplikací. Relační databáze (RDBMS) stavějí na tabulkách, relacích a deklarativním dotazování pomocí SQL, zatímco nerelační databáze (NoSQL) nabízejí alternativní datové modely – klíč–hodnota, dokumentový, sloupcově orientovaný či grafový – s důrazem na horizontální škálování, flexibilní schéma a specifické přístupové vzory. Správná volba ovlivňuje konzistenci dat, výkon, náklady i rychlost vývoje.

Relační model: tabulky, relace a integritní omezení

  • Relační schéma – data jsou organizována do tabulek (relací) s pevně definovanými sloupci a datovými typy.
  • Klíče – primární klíč (jedinečná identifikace řádku) a cizí klíč (odkaz na jinou tabulku) vynucují referenční integritu.
  • Integritní omezení – NOT NULL, UNIQUE, CHECK a TRIGGERY zajišťují konzistenci na úrovni databáze.
  • SQL – standardizovaný deklarativní jazyk (DDL/DML/DCL/TCL) pro definici, manipulaci s daty a řízení přístupu i transakcí.

Normalizace a návrh schématu

Cílem normalizace je odstranění redundance a anomálií při vkládání, aktualizaci a mazání. Běžně používané formy:

  • 1NF – atomické hodnoty ve sloupcích, žádné opakující se skupiny.
  • 2NF – žádná parciální závislost na části složeného klíče.
  • 3NF – žádné tranzitivní závislosti neklíčových atributů.
  • BCNF – posílená 3NF, každý determinant je kandidátským klíčem.

V praxi se normalizace často kombinuje s denormalizací pro zvýšení výkonu (méně operací JOIN) za cenu řízené redundance.

Transakce, ACID a izolace

  • ACID – atomicita, konzistence, izolace a trvalost (Durability) definují spolehlivé provádění transakcí.
  • Úrovně izolace – READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE; jejich volba ovlivňuje jevy jako dirty read, non-repeatable read či phantom read.
  • MVCC – vícenásobné verzování řádků (snapshoty) umožňuje vysokou souběžnost s minimálním počtem zámků.

Fyzická organizace, indexy a optimalizace dotazů (RDBMS)

  • Úložiště – stránky/bloky, heap/clustered organizace tabulek, write-ahead log (WAL) pro obnovu po havárii.
  • Indexy – B-stromy (rozsahové dotazy), hashovací indexy (rovnostní dotazy), bitmapové indexy (nízká kardinalita), covering indexy, indexy pro dělení na oddíly.
  • Optimalizátor – volí plán vykonávání (hash join, vnořené smyčky, merge join) a používá statistiky selektivity a nákladový model.
  • Materializované pohledy – předpočítané agregace/denormalizace pro OLAP; správa obnovy (on commit/on demand).

Nerelační modely: přehled a principy

  • Klíč–hodnota – mimořádně jednoduchý model pro přímý přístup podle klíče; velmi rychlé operace PUT/GET, často s daty uloženými v paměti.
  • Dokumentové – ukládání polostrukturovaných dokumentů (např. JSON) s možností dotazů nad vnořenými strukturami a sekundárními indexy.
  • Sloupcově orientované (wide-column) – data organizovaná do sloupců či rodin sloupců; efektivní pro rozsáhlé škálování a časové řady.
  • Grafové – uzly a hrany s vlastnostmi pro domény s bohatými vztahy (cesty, centralita, vzory podgrafů).
  • Časové řady – optimalizace pro sekvenční vkládání, kompresi a zmenšování rozlišení metrik.

BASE a modely konzistence v NoSQL

  • BASE – Basically Available, Soft-state, Eventually consistent; upřednostňuje dostupnost a škálovatelnost.
  • Konzistence – silná, eventual, read-your-writes, monotonic reads, causal; lze ji nastavit pro jednotlivé operace či klienty.
  • Replikace – synchronní vs. asynchronní; leader–followers, bez vůdce (kvóra R/W), anti-entropy a řešení konfliktů.

CAP a PACELC: limity distribuovaných databází

CAP naznačuje, že při síťové partici nelze současně garantovat plnou konzistenci a dostupnost. Model PACELC rozšiřuje úvahu i na situace bez poruch: Partition → volba mezi C/A; Else (bez poruchy) volba mezi Latency a Consistency. V praxi jde o nastavení kompromisu podle konkrétního případu použití.

Škálování: vertikální vs. horizontální, dělení na oddíly a replikace

  • Vertikální škálování – více CPU/RAM/IO; jednoduché, ale s omezeními a vyššími náklady na hardware.
  • Horizontální škálování – přidávání uzlů; vyžaduje dělení na oddíly (sharding: hash, rozsah, seznam) a strategii převyvažování.
  • Replikace – vysoká dostupnost a škálovatelnost čtení; důraz na členství v clusteru, převzetí služeb při selhání, split brain a kvórum.

Dotazování a transakce v NoSQL

  • Model „query-shapes“ – schéma se často navrhuje podle typických dotazů (přístupových vzorů), nikoli výhradně podle entit.
  • Indexace – sekundární indexy, řídké indexy, složené klíče; dopad na zápis a údržbu.
  • Transakce – některé systémy nabízejí transakce multi-document, jiné pouze atomicitu v rámci single-partition.

OLTP vs. OLAP a HTAP

  • OLTP (operativa) – mnoho krátkých transakcí, nízká latence, vysoká souběžnost, normalizovaná schémata.
  • OLAP (analytika) – rozsáhlé skenování a agregace, sloupcové formáty, komprese, modely star/snowflake.
  • HTAP – hybridní zpracování transakcí i analytiky nad jedním úložištěm; vyžaduje řešení izolace a více replik s různou optimalizací.

Bezpečnost, audit a správa dat

  • Řízení přístupu – RBAC/ABAC, zabezpečení na úrovni řádků a sloupců, maskování a šifrování (TDE, KMS).
  • Audit a dohled – zaznamenávání přístupů, změn schématu a DML; korelace se systémem SIEM.
  • Životní cyklus dat – doba uchovávání, archivace, time-to-live, právní požadavky a GDPR.

Zálohování, obnova a odolnost

  • Zálohy – úplné, přírůstkové, založené na protokolech; testování obnovy a obnova k určitému okamžiku.
  • Geografická replikace – scénáře obnovy po havárii s cíli RPO/RTO; topologie aktivní–aktivní vs. aktivní–pasivní.
  • Migrace schématu – změny za provozu, postupné upgrady, kompatibilita verzí klientů.

Návrhové vzory v dokumentových databázích a databázích klíč–hodnota

  • Agregát jako hranice konzistence – zapouzdření dat, která se mění společně.
  • Předřazené spojení (denormalizace) – vložení relevantních poddokumentů pro čtení bez operace JOIN.
  • Vytváření segmentů a prefixy klíčů – rovnoměrné rozložení shardů, minimalizace přetížených uzlů.
  • Event sourcing/CQRS – oddělení zápisového a čtecího modelu, projekce pro dotazy.

Grafové databáze: procházení grafu a algoritmy

  • Dotazy – vyhledávání podle vzorů (Cypher, Gremlin), vícekrokové procházení grafu s nízkou latencí.
  • Algoritmy – nejkratší cesty, PageRank, komunity; vhodné pro doporučování, detekci podvodů a síťové analýzy.

Ladění výkonu: metriky a úzká hrdla

  • Metriky – latence p50/p95/p99, propustnost, míra zásahů do cache, využití IO/CPU, čekání na zámky, délka front.
  • Diagnostika – plán vysvětlení dotazu, profily dotazů, teplotní mapy indexů, soupeření o prostředky na přetížených oddílech.
  • Optimalizace – vhodné indexy, dávkové zpracování, připravené příkazy, sdružování připojení, komprese a správné datové typy.

Ekonomika provozu: licencování a TCO

  • Licence – komerční vs. open-source, podle jader/uzlů/funkcí; cloudové spravované služby s modelem platby podle skutečného využití.
  • TCO – náklady na hardware/IO, provoz (zálohování, monitoring), škálování, repliky a přenosy dat.

Srovnání modelů – shrnutí

Kritérium Relační DB Nerelační DB
Schéma Pevné, silně typované Flexibilní (často „schema-on-read“)
Dotazování SQL, složité JOIN a agregace Specifická API/jazyky, optimalizace pro vzory dotazů
Transakce Silné ACID, víceřádkové/více tabulek Různorodé – od single-key po multi-dokument
Škálování Především vertikální, dělení na oddíly je možné Především horizontální (sharding) a replikace
Případy použití OLTP, účetnictví, ERP, reporting Vysoká propustnost, katalogy, logy, grafy, cache
Konzistence Silná ve výchozím nastavení Nastavitelná (od silné po eventual)

Rozhodovací rámec: jak vybrat vhodný přístup

  1. Definujte přístupové vzory (čtení vs. zápis, latence, objemy, potřeba JOIN/analytiky).
  2. Určete požadavky na konzistenci a transakce (ACID vs. eventual/causal).
  3. Zvažte škálování – růst objemu dat a provozu, geografickou distribuci, více datových center.
  4. Vyhodnoťte schéma – jeho stabilitu, četnost změn a přítomnost polostrukturovaných dat.
  5. Odhadněte TCO – provoz, správu, kompetence týmu, závislost na dodavateli.

Časté chyby a jak se jim vyhnout

  • Přenášení on-prem modelů do distribuovaného prostředí – ignorování latencí a jevů souvisejících s dělením sítě.
  • Nedostatečná indexace – neoptimalizované dotazy, úplné skenování, vysoké nároky na IO.
  • Nekonzistentní denormalizace – nekontrolované duplikování dat bez procesů pro jejich obnovu.
  • Přehnaný přístup „one-size-fits-all“ – volba jediné technologie pro všechny domény.
  • Nedostatečná správa dat – chybějící standardy pro datové typy, názvosloví, přístupy a dobu uchovávání.

Závěr: komplementarita místo ideologie

Relační databáze vynikají v transakční integritě, standardizovaném dotazování a složitých agregacích. Nerelační přístupy přinášejí škálovatelnost, flexibilitu schématu a optimalizaci pro specifické vzory dotazů. Moderní architektury často kombinují oba světy: relační system of record s garancemi integrity a nerelační úložiště pro služby s vysokým podílem čtení, cache, logy, grafy či analytiku v reálném čase. Klíčem je přesná znalost domény, přístupových vzorů a nedogmatická práce s kompromisy CAP/PACELC.