Slovník pojmů

Databáze

Databáze drží dlouhodobá business data. Cache a vyhledávací index mohou čtení zrychlit, ale obvykle nejsou zdrojem pravdy pro objednávky nebo platby.

Stručná definice

Organizované ukládání dat s pravidly pro jejich změnu.

Databáze ukládá fakta aplikace tak, aby je více požadavků, uživatelů nebo služeb mohlo bezpečně číst a měnit. DBMS řeší fyzické uložení, dotazování, souběh, integritu a podle konfigurace také zálohování a obnovu. Aplikace nad ním vytváří business pravidla, ale důležité datové invarianty má často chránit i samotná databáze.

Databáze není nutně relační. Pro objednávky a platby je běžný relační zdroj pravdy, pro krátkodobé výsledky cache a pro fulltext samostatný vyhledávací index. Více úložišť má smysl jen při jasné roli, vlastníkovi dat a způsobu aktualizace odvozených kopií.

Jaký problém řeší

Data, která musejí přetrvat, sdílet se a kontrolovat

Databáze dává aplikaci trvalé místo pro údaje a pravidla, která se nesmějí rozpadnout při paralelní práci.

  • produkty, varianty, ceny a skladové pohyby
  • zákazníci, objednávky, položky, platby a vratky
  • uživatelé, organizace, role a interní dokumenty
  • idempotentní importy s unikátními externími identifikátory
  • auditní údaje a stav integračních procesů

Praktický model

Rozdělení rolí jednotlivých úložišť

PostgreSQL drží objednávku a platbu jako konzistentní data. Redis může krátce uložit již sestavený produktový detail. Elasticsearch drží odvozený dokument pro fulltext nad katalogem. Žádná z odvozených kopií nesmí sama rozhodovat o tom, zda byla objednávka zaplacena.

Tento model umožní každé technologii dělat práci, pro kterou byla vybrána, a současně zachovat dohledatelný základ dat.

Jak funguje

Od business dat po odvozené kopie

E-shop může mít několik úložišť, ale každé musí mít jasnou roli.

  1. Určení faktů Aplikace rozliší produkty, zákazníky, objednávky, platby a sklad jako samostatné business údaje.
  2. Primární úložiště Relační databáze uloží vztahy a pravidla, například jedinečnost externí objednávky nebo vazbu položky na objednávku.
  3. Čtení a změna Aplikace pracuje s daty přes SQL, ORM nebo databázovou vrstvu a kritické lokální změny vymezí transakcí.
  4. Odvozené hodnoty Redis může držet cache produktového detailu a Elasticsearch dokument pro fulltextové vyhledávání.
  5. Obnova a dohled Zálohy, test obnovy a monitoring patří k provozu; samotná záloha není vysoká dostupnost.

Důležité pojmy

Úložiště, systém a zdroj pravdy nejsou stejná věc.

Dobrá architektura pojmenuje, co je hlavní záznam a co pouze jeho kopie.

DBMS a databázový server

DBMS je software pro správu dat, například PostgreSQL. Server je běžné označení pro běžící instanci; databáze jsou data a objekty, se kterými pracuje.

Data a metadata

Řádky objednávek jsou data. Názvy tabulek, typy sloupců, klíče a constrainty jsou metadata, která určují jejich povolený tvar.

Relační, dokumentové a key-value úložiště

Relační model pracuje s tabulkami a vztahy. Dokumentové nebo key-value úložiště volí jiný model; nejsou automaticky lepší ani horší.

Zdroj pravdy

Primární data se mění podle pravidel aplikace. Cache a vyhledávací index mohou být zastaralé a potřebují invalidaci či synchronizaci.

Záloha a obnova

Záloha je kopie pro obnovu po chybě nebo ztrátě dat. Musí se ověřovat i postup obnovy, ne jen existence souboru.

Vztah k podobným pojmům

Databáze je širší pojem než jedna tabulka nebo produkt.

Jednotlivé technologie řeší rozdílné vrstvy práce s daty.

Relační databáze
Konkrétní model založený na tabulkách, klíčích, vztazích a SQL.
PostgreSQL
Konkrétní relační databázový systém s vlastním SQL dialektem a rozšířeními.
Redis a cache
Rychlé dočasné úložiště, které nemá bez dalšího nahrazovat trvalý datový model.
Elasticsearch
Samostatný vyhledávací index nad dokumenty, vhodný pro jiný typ dotazů než relační zdroj pravdy.

Výhody a omezení

Uložení dat samo o sobě nestačí.

Přínosy

  • trvalé uložení a vyhledávání strukturovaných dat
  • řízení souběžného přístupu a transakčních změn
  • možnost vynucovat integritu blízko uloženým datům
  • zálohování a kontrolovaná obnova provozních dat

Časté chyby

  • zaměnění databáze, tabulky a databázového serveru
  • považování cache nebo vyhledávacího indexu za jediný zdroj pravdy
  • předpoklad, že záloha automaticky znamená vysokou dostupnost
  • přidávání dalších úložišť bez vlastnictví, synchronizace a monitoringu
  • spoléhání na databázi místo promyšleného datového modelu

Praktický příklad

E-shop: primární data, cache a vyhledávání

Produkty, zákazníci, objednávky, platby a skladové pohyby mohou být v PostgreSQL. Při změně ceny se nejprve bezpečně změní primární záznam; potom se zneplatní cache a aktualizuje vyhledávací index. Výpadek cache proto nesmí změnit obchodní pravdu, jen dočasně prodloužit její načtení.

Neznamená to, že každá malá aplikace potřebuje tři úložiště. Dokud relační databáze a vhodné indexy řeší reálné potřeby, další systém by jen zvýšil provozní cenu.

Na co myslet

U každých dat určete jejich vlastníka a pravidla změny.

Rozdělení odpovědnosti je důležitější než počet použitých databází.

  • pojmenovat zdroj pravdy pro každý důležitý business údaj
  • chránit vztahy a jedinečnost databázovými pravidly i aplikační validací
  • testovat obnovu záloh a rozumět limitům retenční politiky
  • před přidáním cache nebo indexu změřit skutečný problém
  • navrhnout synchronizaci odvozených dat jako samostatný provozní proces

Časté otázky

Databáze v běžné aplikaci

Je databáze totéž co databázový server?

Ne. Databáze jsou data a databázové objekty; databázový server nebo DBMS je software, který je spravuje.

Proč cache nenahrazuje databázi?

Cache může vypršet, být smazána nebo obsahovat starší hodnotu. Primární data proto musí mít vlastní trvalý a konzistentní zdroj.

Je záloha totéž co vysoká dostupnost?

Ne. Záloha pomáhá obnovit data po chybě. Vysoká dostupnost řeší pokračování služby při výpadku pomocí dalších mechanismů.

Potřebuje každá aplikace více databází?

Ne. Další úložiště se vyplatí až při konkrétní potřebě, například fulltextu nebo sdílené cache, a s jasnou odpovědností za data.

Jak tento princip používám v praxi

Datový model stavím kolem jasného zdroje pravdy.

V e-commerce a integračních aplikacích řeším návrh dat, transakce, importy i odvozené cache tak, aby byly důležité stavy dohledatelné.

Zavolejte mi

Zavolám vám následující pracovní den mezi 9:00 a 17:00.

Můžete mi také zavolat rovnou.

+420 605 181 728

Nechte mi telefonní číslo a pošlete žádost o zpětné zavolání.

Odesláním souhlasíte se zpracováním údajů pro vyřízení žádosti.