Architektura databázových serverů: komponenty a jejich role (front-end a back-end)

Architektura databázových serverů: Komponenty a role (front-end, back-end)

Cíle architektury databázových serverů

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

Logická a fyzická architektura

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

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

  • Proces pro každé spojení vs. vlákno pro každé spojení: jednoduché řešení, které však při vysoké souběžnosti vyžaduje mnoho přepnutí kontextu.
  • Událostmi řízené/asynchronní I/O (proaktory): sdílená vlákna, epoll/kqueue/IOCP, vhodné pro desítky tisíc spojení.
  • Plánovač úloh s přebíráním práce: fronty úloh, přiřazení vláken k uzlům NUMA, minimalizace kontence zámků.

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 často používaných stránek, oddělené seznamy čistých/změněných stránek.
  • Cache redo/undo logu: buffer před synchronizací WAL, group commit snižující režii operace fsync.
  • Alokace s ohledem na NUMA: lokální paměť u patice CPU, rozdělené hashovací tabulky a latche pro snížení latence mezi paticemi.

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

  • Řádkové úložiště (row store): vhodné pro OLTP, přístup k celým řádkům, indexované přístupy.
  • Sloupcové úložiště (column store): OLAP, vektorové skenování, komprese (RLE, slovníková, bit-pack), pozdní materializace.
  • Hybridní/HTAP: architektura Delta-main, vrstvy LSM pro příjem dat a sloupcové snímky pro analytiku.
  • Stránky a extent: pevná velikost (4–32 KB), mapa volného místa, fill factor, heap vs. seskupený index.

Indexy a zrychlení přístupu

  • B+-stromy: standard pro OLTP; workloady s převahou zápisů na konec řeší štěpení stránek, zápis předem a zmírnění problémů s často používanými listovými stránkami.
  • Hashovací indexy: průměrná složitost O(1), nevhodné pro rozsahové dotazy; často se používají v paměti.
  • Vektorové/sloupcové indexy: zóny min/max, Bloomovy filtry, zónové mapy.
  • LSM stromy: sekvenční zápisy, memtable → SSTable → slučování; vhodné pro úlohy s převahou zápisů a logově strukturovaná úložiště.
  • Specializované indexy: GiST/R-Tree (prostorová data), GIN (fulltext), invertované indexy (dokumentové databáze), bitmapové indexy (OLAP).

Transakce, WAL a zotavení

  • ACID: atomicita (undo/kompenzace), konzistence (omezení, triggery), izolace (plánování konfliktů), trvalost (WAL).
  • WAL (Write-Ahead Logging): nejprve zapsat redo záznam do logu na trvalé médium a poté zapsat stránku do datového souboru; group commit, čísla pořadí záznamů v logu.
  • Kontrolní body: pravidelné zapisování změněných stránek na disk, zkrácení obnovy; fuzzy checkpointing minimalizuje pozastavení celého systému.
  • Obnova: analýza → redo → undo, přírůstkový restart bezpečný při pádu, logické dekódování pro CDC.

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

  • Zámky: S/X, zámky záměrů (IS/IX/SIX), granularita (řádek, stránka, tabulka), detekce zablokování a graf čekání.
  • MVCC: verzování řádků, izolace pomocí snímků, čtenáři neblokují zapisující; úklid starých verzí (vacuum, TTL, epochy).
  • Latche/zámky: krátkodobá ochrana struktur v paměti (uzlů B+-stromu); liší se od transakčních zámků.
  • Úrovně izolace: Read Uncommitted, Read Committed, Repeatable Read, Serializable (optimistická validace, SSI).

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

  • Optimalizátor: přepis pomocí pravidel (posunutí predikátů, ořezání projekce), nákladový model (kardinalita, selektivita), výběr plánu (pořadí spojování, typy spojení, přístup přes index vs. úplné skenování).
  • Exekuce: iteratorový model Volcano vs. vektorové dávkové zpracování; SIMD, pozdní materializace, adaptivní výběr operátorů.
  • Spojení: vnořené smyčky, hash join (build/probe, odložení na disk), sort-merge; adaptivní přepínání podle statistik a zpětné vazby za běhu.

Komprese, kódování a šifrování

  • Komprese: slovníková, RLE, delta, bit-pack; snížení I/O a zvýšení míry zásahů do cache v OLAP.
  • Šifrování uložených dat: TDE s klíči pro jednotlivé tabulky nebo stránky, integrace se systémem KMS a rotací klíčů.
  • Šifrování při přenosu: TLS, mTLS pro replikaci i klientská spojení.

Vysoká dostupnost: replikace a přepnutí při selhání

  • Fyzická replikace: přenos bloků/WAL, synchronní vs. asynchronní replikace; potvrzování zápisu kvórem snižuje RPO.
  • Logická replikace/CDC: změny na úrovni řádků/operací, selektivní publikování, následné transformace.
  • Přepnutí při selhání: automatické, s volbou lídra (Raft/Paxos); prevence rozdělení mozku (STONITH, fencing), povýšení uzlu s ohledem na zpoždění replikace.

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

  • Scale-up: více CPU/RAM/NVMe; optimalizace NUMA, přiřazení vláken k CPU, paralelní I/O fronty.
  • Scale-out (shared-nothing): horizontální dělení dat (sharding) pomocí konzistentního hashování, směrování podle rozsahu či adresáře, lokální transakce a dvoufázový commit napříč shardy.
  • Shared-disk: více serverů využívajících jedno úložiště; vyžaduje koherenci cache (DLM) a fencing.
  • Disagregované úložiště/výpočet: výpočetní uzly bezpečně připojené k objektovému úložišti (S3, HDFS), lokální cache, víceúrovňové úložiště.

Rozdělování dat a jejich lokalita

  • Horizontální dělení: podle rozsahu/hash/list; společné dělení pro lokální spojení, prořezávání pro selektivní dotazy.
  • Vertikální dělení: oddělení širokých sloupců, rozdělení na často a zřídka používaná data, archivace.
  • Vrstvení úložiště: NVMe (hot), SSD (warm), objektové úložiště (cold) s pravidly pro migraci stránek.

Distribuované transakce a konzistence

  • 2PC/3PC: koordinátor, příprava/potvrzení, zaznamenání rozhodnutí; latence a blokování při selhání.
  • Konsenzus (Raft/Paxos): replikovaný stavový automat, lineárně uspořádané zápisy, volba lídra.
  • Vzor Saga: posloupnost lokálních transakcí s kompenzačními kroky pro eventual konzistenci v architektuře mikroslužeb.
  • CAP: kompromisy mezi konzistencí a dostupností při poruchách síťového rozdělení; volba CP vs. AP podle domény.

HTAP a architektury pracující v paměti

  • OLTP v paměti: struktury bez zámků, optimistické řízení souběhu, dotazy kompilované do nativního kódu.
  • HTAP: sdílené úložiště s architekturou Delta-main, sloupcový doprovodný modul a replikace změn téměř v reálném čase pro analytiku bez extrakce dat.
  • Akcelerátory: SIMD, GPU (skenování/spojení), XDP/RDMA pro replikaci s nízkou latencí.

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

  • Telemetrie: metriky (latence p99, propustnost, míra zásahů do cache, doba kontrolního bodu), logy (strukturované), trasování (OpenTelemetry).
  • Profilování dotazů: EXPLAIN/EXPLAIN ANALYZE, statistiky plánů, detekce regresí plánů.
  • Řízení zdrojů: správa workloadů, cgroups, kvóty CPU/RAM/IOPS, správce dotazů a řízení přijímání požadavků.

Zálohování, snímky a obnova po havárii

  • Online zálohy: hot snímky zajišťující konzistenci prostřednictvím WAL; přírůstkové zálohy a katalog verzí.
  • Obnova k určitému okamžiku (PITR): kombinace úplné zálohy a logů s časovým bodem obnovy; testy obnovy jako součást cvičení obnovy po havárii.
  • Geografická obnova po havárii: asynchronní replikace, RPO zohledňující zpoždění replikace, pravidelné testy přepnutí při selhání.

Bezpečnost, víceuživatelskost a audit

  • Autentizace a autorizace: RBAC/ABAC, zabezpečení na úrovni řádků/sloupců, oprávnění definer/invoker.
  • Audit: nedestruktivní zaznamenávání změn DDL/DML, integrace se SIEM, detekce anomálií.
  • Víceuživatelské prostředí: schémata vs. instance vs. cluster; izolace od hlučných sousedů, fondy zdrojů.

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

  • Protokoly: binární (minimální režie), multiplexování, ukončení TLS; keep-alive a sdružování spojení zkracují latenci navazování spojení.
  • Zásobník I/O: asynchronní AIO/io_uring, jmenné prostory NVMe, slučování zápisů, disciplína fsync, přímé I/O u datových souborů.

Cloudové a serverless architektury

  • Oddělený výpočet a úložiště: elastické clustery nad objektovým úložištěm, vrstvy cache, automatické pozastavení/obnovení.
  • Serverless databáze: automatické škálování, účtování po malých jednotkách, latence s limity napříč více tenanty a zmírnění prodlevy při studeném startu pomocí trvalých fondů.
  • Dodržování předpisů a suverenita: šifrování, používání vlastního klíče, umístění dat, audit souladu.

Modelování schématu a dopady na architekturu

  • Normalizace vs. denormalizace: OLTP upřednostňuje 3NF, OLAP hvězdicové/sněhové schéma; dopady na indexování a strategie spojování.
  • Časovost: tabulky verzované systémem, bitemporální modely, cestování časem pro audit a analytiku.
  • Doménová omezení: omezení CHECK, triggery, referenční integrita vs. vynucování na úrovni aplikace.

Typické topologie nasazení

Topologie Popis Výhody Rizika/limity
Jedna instance Jeden server s replikací úložiště (RAID) Jednoduchost, nízké celkové náklady na vlastnictví Omezená vysoká dostupnost, škálování pouze vertikálně
Primární uzel–repliky Primární uzel, 1–N replik (synchronních/asynchronních) Čtení z replik, rychlé přepnutí při selhání Zpoždění replikace, složitější konzistence při zápisu
Více primárních uzlů Více uzlů umožňujících zápis (s řešením konfliktů nebo bez něj) Horizontální škálování zápisů Konflikty, potřeba modelů bez konfliktů (CRDT)
Sharded cluster Data dělená podle klíče, směrovací vrstva Lineární škálování Rebalancování, transakce napříč shardy

Osvědčené postupy návrhu a provozu

  • Pro analytiku využívejte vektorový exekuční engine a sloupcové formáty; u OLTP minimalizujte latenci v kritické transakční sekci.
  • Dimenzujte propustnost WAL (NVMe, slučování zápisů) a používejte group commit.
  • Aktivně spravujte statistiky a histogramy pro optimalizátor; monitorujte regrese plánů.
  • Navrhněte WLM (správu workloadů) a řízení přijímání požadavků k ochraně OLTP před náročnými dotazy.
  • Automatizujte zálohování a PITR a provádějte pravidelné testy obnovy po havárii.
  • Zajistěte zabezpečení jako výchozí nastavení: šifrování, minimální oprávnění, audit, pravidelnou rotaci 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í WAL a MVCC, promyšlená replikace a dělení dat a důsledná observabilita a bezpečnost. Kombinací těchto principů lze dosáhnout předvídatelného výkonu a odolnosti napříč scénáři OLTP, OLAP i HTAP, a to v lokálních i cloudových prostředích.