Databázové systémy v praxi

V tomto kurzu shrnujeme zkušenosti ze současných i minulých projektů vývoje a údržby datově náročných systémů. Vybrali jsme okruhy, které často způsobují problémy při vývoji a provozu.  Naší ambicí je pomoci studentům neopakovat znovu a znovu známe chyby.

Co se v kurzu dozvíte:

  • Proč je datový model kritický pro výkon jakékoliv aplikace?
  • Jak vybrat správný databázový pattern, a co to vlastně je?
  • V čem spočívá důležitost fyzického datového modelu a jaký je rozdíl mezi fyzickým a logickým modelem?
  • Co to je datová kvalita a metadata, a proč je důležité se jimi měli zabývat?
  • Co znamená optimalizace v oblasti databází; kdy, jak a co optimalizovat.
  • Co můžete čekat od chování transakcí v transakčně zatížených systémech.
  • Možnosti a úskalí přístupu do DB z aplikace, ORM.
  • Jaké jsou nejčastější chyby v SQL a při psaní kódu v databázi obecně? Psaní kódu v databázi je extrémně závislé na konkrétní databázi. Na cvičeních si vyzkoušíte, jak rozdílně se ten samý jednoduchý úkol provádí v Oracle, MS SQL, PostgreSQL nebo Mysql. Kurz předpokládá znalost logického návrhu databáze a základů SQL. Výhodou je zkušenost s nějakým datovým projektem.

 

INFORMACE PRO POSLUCHAČE

Doba konání přednášky a cvičení je dána vždy aktuálním rozvrhem pro daný semestr.

Semestr:

ČVUT FIT v Praze – letní

Rozsah:

2/1 Z, Zk

Přednášející:

Ing. Tomáš Vichta, RNDr. Ondřej Zýka, Ing. Jan Švehla

Uzavření předmětu:

Získaný zápočet a složená zkouška

Požadavky na zápočet:

Účast na cvičení, vyřešení zadaných úloh ze cvičení a semestrální úlohy. Pro řešení většiny semestrální úlohy bude prostor přímo na některých cvičeních.

Požadavky na zkoušku:

Písemný test a ústní zkouška (cca 10 až 20 minut – diskuse nad otázkami z testu).


Obsah předmětu

(skutečné pořadí přednášek i jejich počet se může lišit)

Transakce a paralelismus v datovém systému – čím se liší teorie od praxe
Transakce jsou další oblast, která je pokrytá standardy. V přednášce probereme způsoby realizace obecných principů v jednotlivých databázích. Zmíníme best and bad practices pro jednotlivé implementace, nejčastější chyby a způsoby, jak jim předcházet.

Dialekty SQL – kolik je různých SQL a čím se od sebe liší, co z SQL se skutečně používá
V přednášce probereme oblasti psaní kódu v databázi, které v praxi způsobují největší problémy a vyžadují rozdílný přístup.

ORM – Objektově relační mapování
Objektový a relační model jsou diametrálně odlišné, postavené na jiných základech. Přesto je ORM a na něm postavené frameworky nejčastějším způsobem komunikace mezi aplikací a databází. Probereme teorii okolo object-relational impedance mismatch, jaká to přináší rizika a jak se s nimi vypořádat tak, abychom z obou těchto světů dostali to nejlepší. Včetně konkrétních příkladů.

Optimalizace výkonu – co umí datový server a v čem mu musíme pomoci
Přednáška pokrývá témata jako rozpor mezi optimalizací pro maximální propustnost nebo pro minimální dobu odezvy, řešení rozporu mezi čitelností a výkonností kódu, optimalizace na úrovni kódu a možnosti optimalizace bez zásahu do kódu aplikace.

Architektura datového serveru – co potřebuje vývojář vědět o hardware a OS aby napsal dobrou aplikaci
Probereme základní funkce DBMS, kompromisy v architektuře datových serverů a kritické faktory pro výkonnost DBMS v závislosti na uživatelských požadavcích.

Databáze v aplikační architektuře – Jak navrhnout aplikaci a kam umístit datovou vrstvu pro malý interní systém a jak pro velký eshop s miliony uživatelů?
Podíváme se na několik základních architektornických patternů, a to hlavně z pohledu komunikace s databází. Pobavíme se jestli použít cibulovou nebo vrstvenou architekturu, kde se hodí microservices, zda použít ORM, relační vs. nerelační DB, transakční vs. událostí konzistence, dopady na škálovatelnost, testování, a mnoho dalšího.

Design databázového systému – na čem je založena kvalita datového modelu aplikace
Soustředíme se na nejdůležitější etapu návrhu databázového systému – sběr požadavků. Dále probereme význam procesní matice a její vliv na návrh logického modelu a implementaci byznys logiky.

Fyzický design databáze – kritická část návrhu z pohledu jeho výkonnosti
V přednášce probereme vztah fyzického implementace a logického datového modelu. Budeme se zabývat důvody a způsoby denormalizace modelu a dopadu denormalizace na výkon aplikace a na administraci systému.

Databázové návrhové vzory – osvědčené řešení pro standardní úlohy
Probereme návrhové vzory pro řešení standardních částí datových modelů. Soustředíme se na jednoduché i složitější řešení obdobných situací. Probereme výhody a nevýhody jednotlivých řešení jak ze strany vývoje a údržby, tak ze strany srozumitelnosti.

Dimenzionální modelování – Základní pattern BI
Dimenzionální model je dobře definovaný a standardizovaný přístup pro ukládání dat ve vysoce denormalizovaném tvaru vhodném pro analytické výpočty. Přednáška pokrývá stručný úvod do dimenzionálního programování a představí architekturu systému Teradata určeného pro velké datové sklady.

Správa dat v podniku – data jako majetek organizace
Data a informace uložené v systémech jsou jedním z nejcennějších majetků organizace. Datově orientované systémy je třeba chápat jako prostředky pro správu tohoto majetku. Přednáška pokrývá používané metodiky a přístupy pro správu dat.

Datová kvalita a Metadata – základní kompetence nutné k pro porozumění a správu dat
Datová kvalita je přístup jak definovat, měřit a zvyšovat využitelnost dat pro koncové uživatele. V přednášce jsou probrány přístupy jak definovat kvalitu dat, metody čištění dat a měření datové kvality. Metadata jsou základní nástroj pro porozumění a využití dat. Probereme typy metadat, způsoby jejich získání a příklady jejich použití.

Vývoj Information Management projektů – představení fází vývoje datového projektu
Zdůraznění specifik a rozdílů oproti vývojů klasického transakčního systému. Představení příkladu continuous integration, automatizace testování, správy DB modelu, atp. Diskuze zkušeností ze realizovaných projektů.