Databázové systémy a jejich architektura

Co je databázový systém a proč na něm záleží

Databázový systém (DBS) je soubor softwarových komponent, který umožňuje systematicky ukládat, spravovat, vyhledávat a chránit data. Základem je databázový stroj (DBMS), jenž zajišťuje vyhodnocování dotazů, transakce, konkurenční přístup a perzistenci dat. Nad DBMS stojí datové modely, schémata, integrační a bezpečnostní vrstvy, nástroje pro replikaci, zálohování a monitoring. Cílem je poskytovat spolehlivý, konzistentní a výkonný přístup k datům napříč aplikacemi a uživateli.

Datové modely: relační, NoSQL, grafové a další

  • Relační model (SQL): data v tabulkách, vazby přes klíče, deklarativní dotazy (SQL), silná konzistence a transakce. Vhodné pro OLTP i analytiku (s omezeními).
  • Dokumentové databáze: flexibilní schéma (JSON/BSON), ideální pro rychlou evoluci datového modelu a agregace nad dokumenty.
  • Klíč–hodnota: extrémně jednoduché rozhraní, velmi nízká latence, typicky pro cache a session storage.
  • Širokosloupcové/column-family: horizontálně škálovatelné pro obrovské objemy, typické pro time-series a rozsáhlá logovací/telemetrická data.
  • Grafové DB: uzly a hrany, výborné pro sociální sítě, doporučování, závislosti a trasování.
  • Time-series a geodatabáze: optimalizace na časové okno, kompresi, downsampling; geodatabáze podporují prostorové indexy a operátory.
  • NewSQL/HTAP: snaha o ACID vlastnosti, horizontální škálování a analytické dotazy v reálném čase.
  • Vektorové databáze: ukládání embeddingů a podobnostní vyhledávání (ANN) pro AI a multimodální aplikace.

Architektura DBMS: od úložiště po optimalizátor

  • Parser a plánovač dotazů: převádí SQL do relační algebry a sestavuje exekuční plán.
  • Katalog a statistiky: metadata o tabulkách, indexech, kardinalitě; klíčové pro odhad nákladů.
  • Optimalizátor: volí pořadí spojů, využití indexů, typy scanů a paralelismus.
  • Exekuční engine: iterátory (Volcano), vektorové zpracování, pipeline, operátory (scan, join, sort, agregace).
  • Úložiště: stránky/stránkování, buffer pool, WAL (write-ahead logging), checkpointing, komprese.
  • Správa souběhu: MVCC vs. 2PL vs. OCC; izolace transakcí; detekce deadlocků.

Relační model a návrh schématu

Relační model stojí na tabulkách (relacích), atributech a integritních omezeních. Kvalitní schéma minimalizuje redundanci a anomálie.

  • Normalizace: 1NF (atomické hodnoty), 2NF (závislosti na celém klíči), 3NF/BCNF (odstranění tranzitivních závislostí). Normalizace usnadňuje údržbu a zvyšuje datovou integritu.
  • Denormalizace: cílené porušení normalizace pro zvýšení výkonu (materiálované sloupce, agregační tabulky) – vždy s jasným SLA a dohledem.
  • Integritní omezení: primární/unikátní klíče, cizí klíče, CHECK, NOT NULL; doménová logika by měla být co nejvíce blízko datům.
  • ER modelování: entity, vztahy (1:1, 1:N, M:N), kardinality, slabé entity, dědičnost (table-per-type vs. per-hierarchy).

Indexy a fyzická organizace dat

  • B-stromy/B+ stromy: univerzální index pro rozsahy i rovnostní dotazy; podporují clustering a pokrytí dotazů.
  • Hash indexy: rychlé rovnostní dotazy, nevhodné pro rozsahové dotazy.
  • Prostorové a fulltextové indexy: R-Tree, GiST, GIN; trigramy, invertované indexy.
  • Bitmapové indexy: běžné v DWH pro sloupce s nízkou kardinalitou.
  • Partitioning a sharding: range/hash/list; routing dotazů, lokální vs. globální indexy.
  • Materializované pohledy a cache: předpočítané agregace; invalidace a refresh (on commit/on demand).

Transakce, izolace a souběh

  • ACID: Atomicita, Konzistence, Izolace, Trvalost – základ bezpečné modifikace dat.
  • Úrovně izolace: Read Uncommitted, Read Committed, Repeatable Read, Serializable; kompromisy mezi anomáliemi (dirty/nonrepeatable/phantom) a výkonem.
  • MVCC: bez-zámková čtení, verze řádků, vacuum/garbage collection; ideální pro read-heavy workloady.
  • 2PL/OCC: dvoufázové zamykání vs. optimistická kontrola – volba závisí na typu konfliktů a požadované latenci.

Replikace, dostupnost a škálování

  • Replikace: synchronní (silná konzistence, vyšší latence) vs. asynchronní (eventual consistency); fyzická vs. logická; multi-leader, leader–follower, MMR.
  • Failover a vysoká dostupnost: detekce výpadku, výběr lídra (Raft/Paxos), fencing a prevence split-brain.
  • Škálování: vertikální (výkon HW) vs. horizontální (sharding, partitioning); CAP a PACELC – dopady na latenci a konzistenci.
  • Geo-distribuce: latency-aware replikace, lokalita přístupu, dodržování pravidel compliance (data residency).

OLTP vs. OLAP, DWH a „lakehouse“

  • OLTP: krátké transakce, vysoká konkurence, nízká latence; row-store, rozsáhlé indexování.
  • OLAP/DWH: rozsáhlé skeny, agregace, menší konkurence; sloupcové formáty (Parquet), vektorové zpracování, masivní paralelismus.
  • Dimenzionální model: hvězda a sněhová vločka, dimenzionální poměry, surrogate keys, SCD (pomalu se měnící dimenze).
  • Data lake a lakehouse: oddělení storage a výpočetních prostředků, ACID nad soubory (Delta/Iceberg/Hudi), unifikace batch a stream processingu.

Integrace dat: ETL/ELT, CDC a streaming

  • ETL vs. ELT: transformace buď před nahráním, nebo přímo v cílovém systému; volba závisí na velikosti dat a dostupných výpočetních prostředcích.
  • CDC (Change Data Capture): replikace založená na logu změn, near-real-time synchronizace a audit.
  • Stream processing: event-driven architektura, okna (tumbling/sliding), exactly-once zpracování s idempotencí a transakcemi.

Bezpečnost a compliance

  • Autentizace a autorizace: role, princip nejnižšího oprávnění, bezpečnost na úrovni řádků/sloupců.
  • Šifrování: data at-rest (TDE) a in-transit (TLS); správa klíčů (KMS, HSM).
  • Audit a monitoring: auditní logy, DLP, detekce anomálií.
  • Regulace: GDPR/CCPA – minimalizace dat, retenční politiky, právo na výmaz, pseudonymizace.

Výkon a ladění

  • Profilace dotazů: EXPLAIN/EXPLAIN ANALYZE, srovnání plánu se skutečností, identifikace kritických operátorů (nested loop/hash join/sort).
  • Statistiky a kardinalita: aktuálnost histogramů, korelace vícesloupcových statistik, adaptivní optimalizace dotazů.
  • Indexová strategie: pokrývající indexy, pořadí sloupců v kompozitních indexech, selektivita; vyvarovat se nadměrnému počtu indexů kvůli dopadům na zápisy.
  • I/O a cache: velikost buffer poolu, velikost stránek, ladění checkpointů, paralelismus a pracovní pooly.
  • Parametry runtime: limity paměti pro sort/hash, work_mem, plánování, nákladové konstanty.

Úložiště a transakční log

  • WAL (write-ahead log): zajištění trvalosti a obnovy; archivace a log shipping.
  • Checkpoints a recovery: rychlost restartu versus runtime režie; redo a undo logy.
  • Storage enginy: row-store (InnoDB), LSM-tree (RocksDB) pro write-heavy workloady, hybridní přístupy.
  • Komprese a kódování: dictionary, run-length, delta; dopad na CPU a latenci.

Sledovatelnost a provoz

  • Observabilita: metriky (latence, QPS, zámky, cache hit), logy a trasování; SLO/SLI a alerting.
  • Zálohování a obnova: plné a inkrementální zálohy, point-in-time recovery, testované runbooky a plány obnovy po havárii.
  • Správa schématu: migrační nástroje, verzování schémat, zpětná kompatibilita, změny s nulovou dobu výpadku.
  • Plánování kapacity: růst dat, index bloat, archivace a hierarchické úložiště (tiered storage).

Distribuovaná konzistence a protokoly

  • Raft/Paxos: konsenzus nad logem operací, volba lídra, linearizovatelné čtení.
  • Konzistenční modely: strong, bounded staleness, session, monotonic reads/writes, eventual.
  • Idempotence a retry: klíčové pro klientské knihovny a stream processing.

Databáze v mikroservisách

  • „Database per service“: izolace schémat a domén; omezení křížových transakcí.
  • Sagá a outbox pattern: distribuované transakce realizované pomocí kompenzačních kroků.
  • API vrstvy: read modely, CQRS, materializované projekce pro dotazy s nízkou latencí.

ORM a přístupové vrstvy

  • Výhody: zvýšená produktivita, typová bezpečnost, migrace.
  • Rizika: N+1 dotazy, skryté kartézské násobení, „magie“ nad plánem; doporučená kombinace ORM a ručního SQL pro kritické dotazy.

Testování a kvalita dat

  • Unit a integrační testy: testcontainers, seedovací data, migrace v CI pipeline.
  • Kvalita dat: constraints jako testy, profilace, pravidla pro detekci anomálií a outlierů.
  • Verzování datových sad: reprodukovatelnost analytiky, data lineage a datové katalogy.

Trendy: serverless, HTAP, vektory, bezpečná AI

  • Serverless databáze: automatické škálování, platba dle využití, rychlé cold starty (pro čtení), omezení u stavových zápisů.
  • HTAP: kombinace OLTP a OLAP nad jedním úložištěm; vektorová exekuce a sloupcové indexy v OLTP enginu.
  • Vektorové indexy: HNSW/IVF/ScaNN pro podobnostní vyhledávání; hybridní filtrace (metadata + vektory).
  • Privacy-by-design: minimální sběr dat, anonymizace, diferencované soukromí, řízení přístupu na úrovni polí.

Best practices: stručný checklist

  • Navrhujte schéma vycházející z domény; normalizujte a denormalizujte cíleně.
  • Měřte – bez EXPLAIN a metrik je optimalizace naslepo.
  • Indexy používejte dle dotazových vzorů; pravidelně je revidujte.
  • Zaveďte zálohy, PITR a pravidelné testované obnovy.
  • Nastavte role, šifrování a audit; minimalizujte oprávnění.
  • Automatizujte migrace a CI testy proti reálným verzím databáze.
  • Plánujte kapacitu, spravujte bloat a archivujte stará data.
  • Pro distribuované systémy jasně definujte konzistenci a SLA.

Závěr

Databázové systémy představují kritickou infrastrukturu pro byznys, vědu i veřejné služby. Úspěch nezávisí pouze na volbě technologie, ale na správném návrhu datového modelu, disciplíně provozu, bezpečnosti a měření. V době cloudových služeb, streamingu a AI je klíčová pružnost – schopnost kombinovat relační, sloupcové, grafové či vektorové přístupy podle konkrétní domény a požadovaných SLA.