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áklad tvoří 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 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 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 velká 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 + horizontální škálování + 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řevede SQL do rel. algebry a vytvoří exekuční plán.
- Katalog a statistiky: metadata o tabulkách, indexech, kardinalitě; klíčové pro odhady nákladů.
- Optimalizátor: volí pořadí spojů, využití indexů, typy scanů, paralelizaci.
- Exekuční engine: iterátory (Volcano), vektorové zpracování, pipeline, operátory (scan, join, sort, agg).
- Úložiště: stránky/stránkování, buffer pool, WAL (write-ahead logging), check-pointing, komprese.
- Správa souběhu: MVCC vs. 2PL vs. OCC; izolace transakcí; deadlock detekce.
Relační model a návrh schématu
Relační model staví 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ší údržbu a zvyšuje integritu.
- Denormalizace: cílené porušení normalizace pro výkon (materiálované sloupce, agregační tabulky) – pouze s jasným SLA a dohledem.
- Integritní omezení: primární/unikátní klíče, cizí klíče, CHECK, NOT NULL; doménová logika má být blízko dat.
- 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 rovnosti; podpora clusteringu a pokrytí dotazů.
- Hash indexy: rychlé rovnostní dotazy, nevhodné pro rozsahy.
- Prostorové a fulltextové indexy: R-Tree, GiST, GIN; trigramy, invertované indexy.
- Bitmapové indexy: časté 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é změny dat.
- Úrovně izolace: Read Uncommitted, Read Committed, Repeatable Read, Serializable; trade-off mezi anomáliemi (dirty/nonrepeatable/phantom) a výkonem.
- MVCC: bez-zámková čtení, verze řádků, vacuum/garbage collection; skvělé pro read-heavy workload.
- 2PL/OCC: dvoufázové zamykání vs. optimistická kontrola – volba dle konfliktů a latencí.
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, volba lídra (Raft/Paxos), fencing a split-brain prevence.
- Škálování: vertikální (výkon HW) vs. horizontální (sharding, partitioning); CAP a PACELC – důsledky pro latenci a konzistenci.
- Geo-distribuce: latency-aware replikace, locality přístupu, compliance hranice (data residency).
OLTP vs. OLAP, DWH a „lakehouse“
- OLTP: krátké transakce, vysoká konkurence, nízká latence; row-store, bohaté indexy.
- OLAP/DWH: dlouhé skeny, agregace, méně konkurence; sloupcové formáty (Parquet), vektorové zpracování, masivní paralelismus.
- Dimenzionální model: hvězda a sněhová vločka, poměry, surrogate keys, SCD (pomalu se měnící dimenze).
- Data lake a lakehouse: oddělení storage/compute, ACID nad soubory (Delta/Iceberg/Hudi), unifikace batch/streamu.
Integrace dat: ETL/ELT, CDC a streaming
- ETL vs. ELT: transformace buď před nahráním, nebo až v cílovém systému; volba dle velikosti a pružnosti compute.
- CDC (Change Data Capture): log-based replikace změn, near-real-time synchronizace a audit.
- Stream processing: event-driven architektura, okna (tumbling/sliding), exactly-once s idempotencí a transakcemi.
Bezpečnost a compliance
- Autentizace a autorizace: role, least privilege, row-level/column-level security.
- Š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, retenční politiky, 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: aktualita histogramů, multi-column korelace, adaptive query optimization.
- Indexová strategie: pokrývající indexy, composite pořadí sloupců, selektivita; nepřehánět počet indexů (náklady na zápis).
- I/O a cache: velikost buffer poolu, page size, checkpoint tuning, paralelismus a worker pooly.
- Parametry runtime: limity paměti pro sort/hash, work_mem, plánování, cost constants.
Úložiště a transakční log
- WAL (write-ahead log): trvalost a recovery; archiving a log shipping.
- Checkpoints a recovery: rychlost restartu vs. runtime režie; redo/undo logy.
- Storage enginy: row-store (InnoDB), LSM-tree (RocksDB) pro write-heavy workloads, hybridy.
- Komprese a enkódování: dictionary, run-length, delta; dopad na CPU a latenci.
Sledovatelnost a provoz
- Observabilita: metriky (latence, QPS, locks, cache hit), logy a traces; SLO/SLI a alerting.
- Zálohování a obnova: full/incremental, point-in-time recovery, testované runbooky a DR plány.
- Správa schématu: migrační nástroje, verze schématu, backwards kompatibilita, zero-downtime změny.
- Kapacitní plánování: růst dat, index bloat, archivační politiky a 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 přes kompenzační kroky.
- API vrstvy: read modely, CQRS, materializované projekce pro dotazy s nízkou latencí.
ORM a přístupové vrstvy
- Výhody: produktivita, typová bezpečnost, migrace.
- Rizika: N+1 dotazy, skryté kartézské násobení, „magie“ nad plánem; doporučená kombinace ORM + ruční SQL pro kritické dotazy.
Testování a kvalita dat
- Unit/integration testy: testcontainers, seedovací data, migrace v CI.
- Data quality: constraints jako testy, profilace, pravidla pro anomálie a outliery.
- Verzování datových sad: reproducibilita analytiky, datová linie (data lineage) a katalogy.
Trendy: serverless, HTAP, vektory, bezpečná AI
- Serverless databáze: automatické škálování, pay-per-use, rychlé cold-starty (pro čtení), limity u stateful zápisů.
- HTAP: kombinace OLTP a OLAP nad jedním úložištěm; vektorové exekuce a columnar 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, anonymizace, diferencované soukromí, řízení přístupu na úrovni polí.
Best practices: stručný checklist
- Navrhujte schéma od domény; normalizujte, denormalizujte cíleně.
- Měřte – bez EXPLAIN a metrik jsou optimalizace naslepo.
- Indexy používejte podle dotazových vzorů; průběžně je revidujte.
- Zaveďte zálohy, PITR a pravidelné obnovy nanečisto.
- Nastavte role, šifrování a audit; minimalizujte oprávnění.
- Automatizujte migrace a CI testy proti reálným verzím DB.
- 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 jsou kritickou infrastrukturou pro byznys, vědu i veřejné služby. Úspěch nestojí jen na volbě technologie, ale na správném návrhu datového modelu, disciplině 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.