Architektura DB serverů

Architektura DB 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é 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.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *