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ů.