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é konkurenčnosti.
- Event-driven/async I/O (proaktory): sdílené thready, epoll/kqueue/IOCP, vhodné pro desítky tisíc spojení.
- Work-stealing a plánovač úloh: fronty úloh, pinning 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, hot page ochrana, oddělené clean/dirty lists.
- Redo/undo log cache: předsynchronizační buffer pro WAL, group commit snižující Fsync overhead.
- NUMA-aware alokace: lokální paměť ke 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, dictionary, 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, write-ahead a hot leaf mitigace.
- Hash indexy: O(1) průměrně, nevhodné pro range dotazy; často in-memory.
- Vektorové/columnar indexy: min/max zóny, bloom filtry, zone maps.
- LSM stromy: sekvenční zápisy, memtable → SSTable → compaction; vhodné pro write-heavy a log-structured úložiště.
- Specializované indexy: GiST/R-Tree (prostorová data), GIN (fulltext), invertované indexy (dokumentové DB), bitmapové indexy (OLAP).
Transakce, WAL a zotavení
- ACID: atomicita (undo/compensation), konzistence (constrainty, triggery), izolace (plánování konfliktů), trvalost (WAL).
- WAL (Write-Ahead Logging): nejprve zapsat redo záznam do logu na perzistentní médium, poté stránku do datového souboru; group commit, log sequence numbers.
- Checkpointy: periodické flush dirty stránek, zkrácení recovery; fuzzy checkpointing pro minimalizaci stop-the-world.
- Recovery: analysis → redo → undo, crash-safe inkrementální restart, logical decoding pro CDC.
Řízení souběhu: zámky, latche a MVCC
- Locky: S/X, intention (IS/IX/SIX), granularita (řádek, stránka, tabulka), deadlock detection 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átké, in-memory ochrany struktur (B+-stromové uzly); odlišné od transakčních locků.
- Izolační úrovně: Read Uncommitted, Read Committed, Repeatable Read, Serializable (optimistická validace, SSI).
Zpracování dotazů: optimalizátor a exekuční engine
- Optimalizátor: přepis pravidly (predicate pushdown, projekční pruning), nákladový model (cardinality, selectivity), výběr plánu (join řád, typy joinů, index access vs. full 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í dle statistik a runtime feedback.
Komprese, kodéry a šifrování
- Komprese: dictionary, RLE, delta, bit-pack; snížení I/O a zlepšení cache hit-rate v OLAP.
- Šifrování v klidu: 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í.
High Availability: replikace a failover
- Fyzická replikace: bloková/WAL shipping, synchonní vs. asynchronní; quorum commit snižuje RPO.
- Logická replikace/CDC: změny na úrovni řádků/operací, selektivní publikace, down-stream transformace.
- Failover: automatický s volbou lídra (Raft/Paxos), split-brain prevence (stonith, fencing), lag-aware promotion.
Škálování: scale-up, scale-out a dis-aggregace
- Scale-up: více CPU/RAM/NVMe; NUMA optimalizace, pinning 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 shard hranice.
- Shared-disk: vícero serverů nad jedním úložištěm; nutné cache-koherence (DLM) a fencing.
- Dis-aggregated storage/compute: výpočetní uzly bezpevně 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ý store (cold) s politikami migrace stránek.
Distribuované transakce a konzistence
- 2PC/3PC: koordinátor, prepare/commit, logování rozhodnutí; latence a blokování při selhání.
- Consensus (Raft/Paxos): replikovaný stavový stroj, lineární zápisy, leader election.
- 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 partičních poruchách; volba CP vs. AP dle domény.
HTAP a in-memory architektury
- In-memory OLTP: lock-free struktury, optimistic concurrency, compile-to-native dotazy.
- HTAP: sdílené úložiště s delta-main, columnar sidecar a near-real-time replikací změn pro analytiku bez extrahování dat.
- Akcelerátory: SIMD, GPU (scan/join), XDP/RDMA pro nízkolatenční replikaci.
Provoz: observabilita, ladění a řízení zdrojů
- Telemetrie: metriky (latence p99, throughput, cache hit, checkpoint time), logy (strukturované), trasy (OpenTelemetry).
- Profilace dotazů: EXPLAIN/EXPLAIN ANALYZE, plánové statistiky, detekce plan regressions.
- Ří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 konsistencí 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 DR 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, definer/invoker práva.
- 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í (minimální overhead), multiplexing, TLS terminace; keep-alive a connection pooling zkracují handshake latence.
- 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 studený start mitigovaný persistentními pooly.
- Compliance a suverenita: šifrování, bring-your-own-key, lokace dat, audit shody.
Modelování schématu a dopady na architekturu
- Normalizace vs. denormalizace: OLTP preferuje 3NF, OLAP hvězda/sníhová vločka; dopady na indexaci a join strategie.
- Temporalita: system-versioned tabulky, bitemporální modely, time travel pro audit a analytiku.
- Doménové omezení: check constrainty, triggers, referenční integrita vs. aplikační enforcement.
Typické topologie nasazení
| Topologie | Popis | Výhody | Rizika/limity |
|---|---|---|---|
| Single instance | Jeden server s replikací storage (RAID) | Jednoduchost, nízké TCO | Omezená HA, scale-up pouze vertikálně |
| Primary–replica | Primární uzel, 1–N repliky (sync/async) | Č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á dle klíče, router vrstvy | Lineární škálování | Rebalancování, cross-shard transakce |
Best practices návrhu a provozu
- Využívejte vektorový exekuční engine a sloupcové formáty pro analytiku; pro OLTP minimalizujte latence v kritické sekci transakcí.
- Dimenzujte WAL throughput (NVMe, write combining) a používejte group commit.
- Aktivně spravujte statistiky a histogramy pro optimalizátor; monitorujte regrese plánů.
- Navrhněte WLM (workload management) a admission control k ochraně OLTP před těžkými dotazy.
- Automatizujte zálohy, PITR a provádějte pravidelné DR testy.
- Zajistěte security by default: šifrování, minimální práva, audit, pravidelné rotace klíčů a certifikátů.
Závěr
Moderní architektura databázových serverů je výsledkem kompromisu mezi přísnou transakční konzistencí, vysokou dostupností a škálovatelností. Klíčem je volba vhodného datového modelu, správné fyzické organizace dat a indexů, robustního WAL a MVCC, promyšlené replikace a partitioningu a důsledná observabilita a bezpečnost. Kombinací těchto principů lze dosáhnout předvídatelného výkonu a odolnosti napříč OLTP, OLAP i HTAP scénáři v on-premise i cloudových prostředích.