Databázové systémy: teorie, architektura a správa

Databázové systémy: Teorie, architektury a správa

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. Jeho základem je databázový stroj (DBMS), jenž zajišťuje vyhodnocování dotazů, transakce, souběž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 dohled. 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 prostřednictvím klíčů, deklarativní dotazy (SQL), silná konzistence a transakce. Vhodný pro OLTP i analytiku (s určitými omezeními).
  • Dokumentové databáze: flexibilní schéma (JSON/BSON), ideální pro rychlý vývoj datového modelu a agregace nad dokumenty.
  • Klíč–hodnota: mimořádně jednoduché rozhraní a velmi nízká latence; typicky se používají pro cache a úložiště relací.
  • Širokosloupcové databáze / column-family: horizontálně škálovatelné pro obrovské objemy dat, typické pro časové řady a rozsáhlá logovací a telemetrická data.
  • Grafové databáze: uzly a hrany, výborné pro sociální sítě, doporučování, závislosti a trasování.
  • Časové řady a geodatabáze: optimalizace pro časová okna, kompresi a redukci vzorkování; geodatabáze podporují prostorové indexy a operátory.
  • NewSQL/HTAP: snaha spojit ACID, horizontální škálování a analytické dotazy v reálném čase.
  • Vektorové databáze: ukládání embeddingů a vyhledávání podle podobnosti (ANN) pro AI a multimodální aplikace.

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

  • Parser a plánovač dotazů: převede SQL do relační algebry a vytvoří plán vykonávání.
  • Katalog a statistiky: metadata o tabulkách, indexech a kardinalitě; klíčová pro odhady nákladů.
  • Optimalizátor: volí pořadí spojení, využití indexů, typy skenování a paralelizaci.
  • Vykonávací engine: iterátory (Volcano), vektorové zpracování, pipeline a operátory (scan, join, sort, agg).
  • Úložiště: stránky a stránkování, buffer pool, WAL (write-ahead logging), checkpointing a 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 je založen 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 zjednodušuje údržbu a zvyšuje integritu.
  • Denormalizace: cílené porušení normalizace kvůli výkonu (materializované sloupce, agregační tabulky) – pouze při jasně definovaném SLA a odpovídajícím dohledu.
  • Integritní omezení: primární a unikátní klíče, cizí klíče, CHECK, NOT NULL; doménová logika by měla být co nejblíže 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í indexy pro rozsahové i rovnostní dotazy; podporují clustering a pokrytí dotazů.
  • Hašovací indexy: rychlé rovnostní dotazy, nevhodné pro rozsahové dotazy.
  • Prostorové a fulltextové indexy: R-Tree, GiST, GIN; trigramy, invertované indexy.
  • Bitmapové indexy: často používané v DWH pro sloupce s nízkou kardinalitou.
  • Partitioning a sharding: podle rozsahu, haše nebo seznamu; směrování dotazů, lokální vs. globální indexy.
  • Materializované pohledy a cache: předpočítané agregace; invalidace a aktualizace (on commit/on demand).

Transakce, izolace a souběh

  • ACID: atomicita, konzistence, izolace, trvalost – základ bezpečných změn dat.
  • Úrovně izolace: Read Uncommitted, Read Committed, Repeatable Read, Serializable; kompromis mezi anomáliemi (dirty/nonrepeatable/phantom) a výkonem.
  • MVCC: čtení bez zámků, verze řádků, vacuum/garbage collection; ideální pro zátěž s převahou čtení.
  • 2PL/OCC: dvoufázové zamykání vs. optimistická kontrola – volba podle četnosti konfliktů a latence.

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ýpadků, volba lídra (Raft/Paxos), fencing a prevence split-brain.
  • Škálování: vertikální (výkon hardwaru) vs. horizontální (sharding, partitioning); CAP a PACELC – důsledky pro latenci a konzistenci.
  • Geografická distribuce: replikace zohledňující latenci, lokální dostupnost dat, požadavky na soulad s předpisy (rezidence dat).

OLTP vs. OLAP, DWH a „lakehouse“

  • OLTP: krátké transakce, vysoká souběžnost, nízká latence; řádkové úložiště, bohaté indexování.
  • OLAP/DWH: dlouhé skeny, agregace, nižší souběžnost; sloupcové formáty (Parquet), vektorové zpracování, masivní paralelismus.
  • Dimenzionální model: hvězdicové a sněhové schéma, fakta, náhradní klíče, SCD (pomalu se měnící dimenze).
  • Datové jezero a lakehouse: oddělení úložiště a výpočetního výkonu, ACID nad soubory (Delta/Iceberg/Hudi), sjednocení dávkového a streamového zpracování.

Integrace dat: ETL/ELT, CDC a streaming

  • ETL vs. ELT: transformace probíhá buď před nahráním, nebo až v cílovém systému; volba závisí na velikosti dat a pružnosti výpočetních zdrojů.
  • CDC (Change Data Capture): replikace změn založená na logu, synchronizace téměř v reálném čase a audit.
  • Stream processing: architektura řízená událostmi, okna (tumbling/sliding), exactly-once s idempotencí a transakcemi.

Bezpečnost a compliance

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

Výkon a ladění

  • Profilace dotazů: EXPLAIN/EXPLAIN ANALYZE, plán vs. skutečnost, kritické operátory (nested loop/hash join/sort).
  • Statistiky a kardinalita: aktuálnost histogramů, korelace mezi více sloupci, adaptivní optimalizace dotazů.
  • Strategie indexování: pokrývající indexy, pořadí sloupců ve složených indexech, selektivita; počet indexů nepřehánět (zvyšují náklady na zápis).
  • I/O a cache: velikost buffer poolu, velikost stránky, ladění checkpointů, paralelismus a fondy pracovních procesů.
  • Parametry za běhu: limity paměti pro sort/hash, work_mem, plánování, konstanty nákladů.

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

  • WAL (write-ahead log): trvalost a obnova; archivace a přenos logů.
  • Checkpointy a obnova: rychlost restartu vs. režie za běhu; redo/undo logy.
  • Úložné enginy: řádkové úložiště (InnoDB), LSM-tree (RocksDB) pro zátěž s převahou zápisů a hybridní řešení.
  • Komprese a kódování: dictionary, run-length, delta; dopad na CPU a latenci.

Sledovatelnost a provoz

  • Observabilita: metriky (latence, QPS, zámky, zásahy do cache), logy a traces; SLO/SLI a upozorňování.
  • Zálohování a obnova: úplné a přírůstkové zálohy, obnova k určitému okamžiku (PITR), otestované provozní postupy a plány obnovy po havárii.
  • Správa schématu: nástroje pro migrace, verzování schématu, zpětná kompatibilita, změny bez výpadku.
  • Plánování kapacity: růst objemu dat, bobtnání indexů, zásady archivace a vrstvené úložiště.

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 opakování pokusů: klíčové pro klientské knihovny a streamové zpracování.

Databáze v mikroslužbách

  • „Database per service“: izolace schémat a domén; omezení napříč transakcemi.
  • Sága a outbox pattern: distribuované transakce prostřednictvím kompenzačních kroků.
  • Vrstvy API: čtecí modely, CQRS, materializované projekce pro dotazy s nízkou latencí.

ORM a přístupové vrstvy

  • Výhody: produktivita, typová bezpečnost, migrace.
  • Rizika: dotazy N+1, skryté kartézské násobení, „kouzla“ ovlivňující plán; doporučuje se kombinace ORM a ručního SQL pro kritické dotazy.

Testování a kvalita dat

  • Unit a integrační testy: testcontainers, počáteční data, migrace v CI.
  • Kvalita dat: omezení jako testy, profilace, pravidla pro anomálie a odlehlé hodnoty.
  • Verzování datových sad: reprodukovatelnost analytiky, datová linie (data lineage) a katalogy.

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

  • Serverless databáze: automatické škálování, platba podle využití, rychlé cold starty (při čtení), omezení při zápisech se stavem.
  • HTAP: kombinace OLTP a OLAP nad jedním úložištěm; vektorové vykonávání a sloupcové indexy v OLTP enginu.
  • Vektorové indexy: HNSW/IVF/ScaNN pro vyhledávání podle podobnosti; hybridní filtrování (metadata + vektory).
  • Ochrana soukromí již při návrhu: minimální sběr dat, anonymizace, diferenciální soukromí, řízení přístupu na úrovni polí.

Osvědčené postupy: stručný kontrolní seznam

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

Závěr

Databázové systémy jsou kritickou infrastrukturou pro podnikání, vědu i veřejné služby. Úspěch nezávisí pouze na výběru technologie, ale také na správném návrhu datového modelu, disciplinovaném 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.