Zpět na znalosti

Zkušenosti

Databáze a datový návrh

Databázi nevnímám jen jako úložiště aplikace. Dobře navržené schéma, integrita dat a předvídatelné dotazy jsou základem stabilního systému.

  • PostgreSQL
  • Doctrine
  • MySQL
  • MariaDB
  • SQLite

Datový návrh je součástí návrhu aplikace.

Při práci s relačními databázemi začínám u vztahů mezi daty, jednoznačných constraintů a transakcí. Až potom přichází ORM, repository nebo konkrétní dotaz — nástroje mají podporovat správný model, ne ho nahrazovat.

Dnes nejčastěji pracuji s PostgreSQL. Dříve jsem používal MySQL a MariaDB, takže při návrhu vnímám i rozdíly platforem a volím řešení podle potřeb aplikace, objemu dat a provozních nároků.

Co při práci s daty řeším

Od správného modelu po výkon v provozu.

  1. Model dat

    Vztahy a omezení přímo v databázi

    Přemýšlím nad tím, co musí databáze garantovat sama: unikátnost, povinné vazby, referenční integritu i doménově důležitá omezení. Tím se snižuje prostor pro nekonzistentní data.
  2. Bezpečná změna

    Transakce a migrace

    Související změny dat musí proběhnout společně, nebo vůbec. Schéma rozvíjím pomocí migrací tak, aby změna byla dohledatelná, opakovatelná a co nejbezpečnější pro nasazenou aplikaci.
  3. Výkon

    Indexy, dotazy a N+1

    Při zpomalení nehádám. Dívám se na tvar dotazu, potřebné indexy, počet načtených záznamů a na to, zda ORM nevytváří N+1 problém. Podle výsledku upravuji model, načítání nebo konkrétní SQL.
  4. Objem dat

    Importy a dávkové zpracování

    U větších importů je důležité nenačíst vše do paměti, zpracovávat data po dávkách, rozumně transakčně vymezit práci a mít možnost navázat na bezpečný stav.

Praktický postup

ORM je prostředek, databázový návrh zůstává rozhodnutím.

Doctrine používám pro běžnou práci s entitami a konzistentní mapování modelu. Pokud konkrétní dotaz vyžaduje přesnější kontrolu, agregace nebo lepší výkon, je přímo napsané SQL správnou a čitelnou volbou.

Nesnažím se za každou cenu schovat databázi za abstrakci. Důležitější je správnost dat, srozumitelnost a přiměřený výkon.

Návrh a změna schématu

Jak držet data konzistentní

  1. Entity a jejich vztahy
  2. Constrainty a referenční integrita
  3. Transakce pro související změny
  4. Dohledatelné migrace

Čtení a zpracování dat

Jak udržet dotazy efektivní

  1. Doctrine pro běžný model
  2. Profily dotazů a potřebné indexy
  3. Cílené SQL pro specifické případy
  4. Stránkování a dávky pro velké objemy

Používané databáze a nástroje

Od relačního návrhu po práci v aplikaci

  • PostgreSQL
  • Doctrine
  • Redis
  • SQLite
  • MySQL
  • MariaDB
  • DataGrip
  • Migrace

Potřebujete navrhnout nebo zrychlit práci s daty?

Rád pomohu od návrhu schématu přes migrace až po hledání konkrétního problému v dotazech nebo importech.

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.