Architektura databázových serverů

Cíle architektury databázových serverů

Architektura databázového serveru určuje, jak systém dosahuje konzistence, dostupnosti, škálovatelnosti, výkonu a bezpečnosti při zpracování dat. Zahrnuje návrh paměťových struktur, úložiště, plánování dotazů, řízení souběhu, transakční protokolování, replikační a distribuční mechanismy, správu zdrojů a provozní observabilitu. Správná architektura minimalizuje latence, maximalizuje propustnost a poskytuje předvídatelné SLA napříč workloady OLTP, OLAP i HTAP.

Logická vs. fyzická architektura

  • Logická vrstva: model dat (relace, dokumenty, klíč–hodnota, graf), transakční sémantika (ACID), rozhraní (SQL/JSON/Gremlin), bezpečnostní politika.
  • Fyzická vrstva: paměťové struktury (buffer pool, columnar cache), souborový formát (řádkový/ sloupcový), protokol WAL, indexy, plánovač vláken, I/O scheduler a replikace.

Procesní model a plánování vláken

  • Proces-per-connection vs. thread-per-connection: jednoduché, ale náročné na kontextové přepínání při vysoké konkurenci.
  • Event-driven/async I/O (proaktory): sdílená vlákna, epoll/kqueue/IOCP, vhodné pro desítky tisíc spojení.
  • Work-stealing a plánovač úloh: fronty úloh, přichycení na NUMA uzly, minimalizace lock contention.

Paměťová architektura: buffer pool, cache a NUMA

  • Buffer pool: stránkově orientovaná cache datových a indexových stránek; strategie LRU/clock, ochrana hot page, oddělené clean/dirty lists.
  • Redo/undo log cache: předsynchronizační buffer pro WAL, group commit snižující režii Fsync.
  • NUMA-aware alokace: lokální paměť k CPU socketu, partitionované hash tabulky a latche pro snížení mezisocketové latence.

Úložiště: formáty stránek a datové organizace

  • Řádkové (row store): vhodné pro OLTP, přístup po celých řádcích, indexované přístupy.
  • Sloupcové (column store): OLAP, vektorové skeny, komprese (RLE, slovníková, bit-pack), pozdní materializace.
  • Hybrid/HTAP: Delta-main architektura, LSM vrstvy pro ingest a sloupcové snapshoty pro analytiku.
  • Stránky a extent: fixní velikost (4–32 KB), volná mapa, fill factor, heap vs. clustered index.

Indexy a akcelerace přístupu

  • B+-stromy: standard pro OLTP; right-heavy workloady řeší page splits a mitigaci write-ahead a hot leaf problémů.
  • Hash indexy: průměrná složitost O(1), nevhodné pro rozsahové dotazy; často in-memory.
  • Vektorové/sloupcové indexy: min/max zóny, bloom filtry, zone maps.
  • LSM stromy: sekvenční zápisy, proces memtable → SSTable → kompakce; vhodné pro zápisově náročné a log-strukturované úložiště.
  • Specializované indexy: GiST/R-Tree (prostorová data), GIN (fulltextové hledání), invertované indexy (dokumentové DB), bitmapové indexy (OLAP).

Transakce, WAL a zotavení

  • ACID: atomicita (undo/kompenzační operace), konzistence (omezení, triggery), izolace (řízení konfliktů), trvalost (WAL).
  • WAL (Write-Ahead Logging): nejprve zápis redo záznamu do logu na perzistentní médium, následně stránku do datového souboru; group commit, log sequence numbers.
  • Checkpointy: periodické flushování dirty stránek, zkrácení doby zotavení; fuzzy checkpointing pro minimalizaci stop-the-world událostí.
  • Zotavení: sekvence analysis → redo → undo, crash-safe inkrementální restart, logical decoding pro CDC.

Řízení souběhu: zámky, latche a MVCC

  • Zámky: sdílené/exkluzivní (S/X), zámky záměru (IS/IX/SIX), granularita (řádek, stránka, tabulka), detekce deadlocků a wait-for graf.
  • MVCC: verzování řádků, snapshot isolation, readers don’t block writers; garbage collection starých verzí (vacuum, TTL, epochy).
  • Latche/pojíšťky: krátkodobé ochrany in-memory struktur (uzly B+-stromu); liší se od transakčních zámků.
  • Izolační úrovně: Read Uncommitted, Read Committed, Repeatable Read, Serializable (optimistická validace, SSI).

Zpracování dotazů: optimalizátor a exekuční engine

  • Optimalizátor: pravidlové přepisy (predicate pushdown, projekční pruning), nákladový model (kardinálnost, selektivita), výběr plánu (řazení joinů, typy joinů, indexový přístup vs. úplný scan).
  • Exekuce: iterator volcano model vs. vectorized batch processing; SIMD, late materialization, adaptivní výběr operátorů.
  • Joiny: nested loop, hash join (build/probe, spill), sort-merge; adaptivní přepínání na základě statistik a runtime feedback.

Komprese, kodéry a šifrování

  • Komprese: slovníkové, RLE, delta, bit-pack; snižuje I/O a zlepšuje cache hit-rate v OLAP.
  • Šifrování v klidu: transparentní šifrování dat (TDE) s per-tabulačními či per-stránkovými klíči, integrace s KMS a rotací klíčů.
  • Šifrování v přenosu: TLS, mTLS pro replikaci i klientské spojení.

Vysoká dostupnost: replikace a failover

  • Fyzická replikace: bloková/WAL shipping, synchronní vs. asynchronní; quorum commit snižuje RPO.
  • Logická replikace/CDC: změny na úrovni řádků/operací, selektivní publikace, downstream transformace.
  • Failover: automatický s volbou lídra (Raft/Paxos), prevence split-brain (stonith, fencing), lag-aware promotion.

Škálování: scale-up, scale-out a dis-aggregace

  • Scale-up: více CPU/RAM/NVMe; NUMA optimalizace, přichycení vláken, paralelní I/O fronty.
  • Scale-out (shared-nothing): horizontální dělení dat (sharding) s consistent hashing, range či directory-based routováním, lokální transakce a dvoufázový commit přes hranice shardů.
  • Shared-disk: vícero serverů nad jedním úložištěm; nutná koherence cache (DLM) a fencing.
  • Dis-aggregated storage/compute: výpočetní uzly bezpečně napojené na objektové úložiště (S3, HDFS), lokální cache, tiered storage.

Partitioning a datová lokalita

  • Horizontální dělení: range/hash/list; co-partitioning pro lokální joiny, pruning pro selektivní dotazy.
  • Vertikální dělení: oddělení širokých sloupců, hot/cold data, archivace.
  • Tiering: NVMe (hot), SSD (warm), objektové úložiště (cold) s politikami migrace stránek.

Distribuované transakce a konzistence

  • 2PC/3PC: koordinátor, fáze prepare/commit, logování rozhodnutí; latence a blokování při selhání.
  • Konsenzus (Raft/Paxos): replikovaný stavový stroj, lineární zápisy, volba lídra.
  • Saga vzor: sekvence lokálních transakcí s kompenzačními kroky pro eventual konzistenci v mikroservisní architektuře.
  • CAP: kompromisy mezi konzistencí a dostupností při síťových poruchách; volba CP vs. AP dle domény použití.

HTAP a in-memory architektury

  • In-memory OLTP: lock-free datové struktury, optimistic concurrency, compile-to-native dotazy.
  • HTAP: sdílené úložiště s delta-main architekturou, columnar sidecar a near-real-time replikací změn pro analytiku bez nutnosti extrahovat data.
  • Akcelerátory: SIMD, GPU (skenování/joiny), XDP/RDMA pro nízkolatenční replikaci.

Provoz: observabilita, ladění a řízení zdrojů

  • Telemetrie: metriky (latence p99, propustnost, cache hit rate, doba checkpointu), logy (strukturované), trasování (OpenTelemetry).
  • Profilace dotazů: EXPLAIN/EXPLAIN ANALYZE, statistiky plánů, detekce regresí plánů.
  • Řízení zdrojů: workload management, cgroups, kvóty CPU/RAM/IOPS, query governor a admission control.

Zálohování, snapshoty a obnova po havárii

  • Online zálohy: hot snapshoty s konzistencí přes WAL; inkrementální zálohy a katalog verzí.
  • Point-in-time recovery (PITR): kombinace plné zálohy a logů s časovým kurzorem; testy obnovy jako součást havarijních cvičení.
  • Geo-DR: asynchronní replikace, lag-aware RPO, pravidelný failover drill.

Bezpečnost, víceuživatelskost a audit

  • Autentizace a autorizace: RBAC/ABAC, row/column-level security, práva definer/invoker.
  • Audit: nedestruktivní logování změn DDL/DML, integrace se SIEM, detekce anomálií.
  • Multitenancy: schémata vs. instance vs. cluster; izolace hluku (noisy neighbor), resource pools.

Síť a I/O: latence, propustnost, protokoly

  • Protokoly: binární s minimální reží, multiplexing, TLS terminace; keep-alive a connection pooling snižují latenci handshaku.
  • I/O stack: asynchronní AIO/io_uring, NVMe namespaces, write combining, fsync discipline, direct I/O u datových souborů.

Architektury v cloudu a serverless

  • Oddělený compute/storage: elastické clustery nad objektovým úložištěm, cache vrstvy, auto-suspend/resume.
  • Serverless databáze: automatický autoscaling, mikroúčtování, limitní latence přes více tenantů a mitigace studených startů persistentními pooly.
  • Compliance a suverenita: šifrování, bring-your-own-key, lokalizace dat, audit shody.

Modelování schématu a dopady na architekturu

  • Normalizace vs. denormalizace: OLTP preferuje 3NF, OLAP hvězdicové/sněhové schéma; dopady na indexování a strategie joinů.
  • Temporalita: system-versioned tabulky, bitemporální modely, time travel pro audit a analytiku.
  • Doménové omezení: check constrainty, triggery, referenční integrita versus vynucení v aplikační vrstvě.

Typické topologie nasazení

Topologie Popis Výhody Rizika/limity
Single instance Jeden server s replikací úložiště (RAID) Jednoduchost, nízké TCO Omezená vysoká dostupnost, scale-up pouze vertikálně
Primary–replica Primární uzel, 1–N replik (synchronní/asynchronní) Čtení ze replik, rychlý failover Lag, složitější konzistence při zápisu
Multi-primary Více zapisujících uzlů (konfliktní/bezkonfliktní) Horizontální zápis Konflikty, potřeba conflict-free modelů (CRDT)
Sharded cluster Data dělená podle klíče, vrstva routerů Lineární škálování