BKM_DATS: Databázové systémy 1. Úvod Vlastislav Dohnal BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 2 Databázové systémy ◼ Účel ◼ Pohled na data ◼ Databázové jazyky ◼ Architektura databázových systémů  Datové modely  Struktura databázového systému  Relační databáze  Objektové databáze  Historie ◼ Návrh databáze ◼ Ukládání dat a dotazování ◼ Zpracování transakcí ◼ Uživatelé a správci databáze BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 3 Databázový systém ◼ Systém řízení báze dat (SŘBD)  Database Management System (DBMS) ◼ DBMS zpracovávají informace konkrétní firmy  Kolekce vzájemně propojených dat  Programy přistupující k datům  Prostředí (rozhraní) pro používání ◼ má být použitelné, ale i efektivní ◼ Databázové aplikace  Bankovnictví – všechny transakce, co známe  Aerolinky – rezervace, plánování  Univerzity – registrace, zápis, hodnocení, …  Obchod – zákazníci, produkty, prodeje ◼ Online – sledování zásilek, doporučení podle uživatelů (customized recommendations)  Výroba – produkce, inventář, objednávky, doprava, dodavatelé  Státní správa – evidence obyvatel, žádosti, daňová správa, … ◼ S databázemi se lze setkat (téměř) všude  Servisní orientace (SOA), microservices => databáze vložené v aplikaci BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 4 Účel databázového systému ◼ Dříve byly databáze vytvořeny přímo nad souborovým systémem. ◼ Nevýhody ukládání dat přímo v souborech:  Redundance a nekonzistence dat ◼ Různé souborové formáty, duplikace informace do více souborů  Data jsou obtížně přístupná ◼ Pro novou úlohu naprogramovat novou aplikaci.  Izolovanost dat ◼ Oddělené soubory, různé formáty  Problémy s udržením integrity ◼ Integritní omezení jsou implementované v uživatelských programech, např. zůstatek účtu >= 0. ◼ Jsou skryté v programech, nikde nejsou „explicitně prezentovány“ ◼ Obtížné přidat nové omezení nebo změnit stávající BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 5 Účel databázového systému ◼ Nevýhody ukládání dat přímo v souborech:  Atomičnost aktualizací dat ◼ Výpadky mohou způsobit nekonzistentní stav  Pouze některé úkoly byly provedeny ◼ Např. převod částky z účtu na účet – musí být provedeno komplet nebo vůbec  Souběžný přístup více uživatelů ◼ Důležité pro výkon systému ◼ Bez kontroly souběžného přístupu lze vytvořit nekonzistence  Např. dva uživatelé přistupují a aktualizují zůstatek téhož účtu  Omezení přístupu k datům (data security) ◼ Obtížné omezit přístup k vybraným datům (část některého souboru) ◼ Databázové systémy  = řešení těchto problémů BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 6 Datové modely ◼ Datový model = sada nástrojů pro popis dat  a vztahů mezi nimi  sémantiky dat  integritních omezení a manipulaci s daty ◼ Příklady  Relační model  Entitně-relační model (zejména při návrhu databáze)  Objektově-relační model, objektově-orientovaný model  Model pro semistrukturovaná data (XML)  Starší modely ◼ Hierarchický model ◼ Síťový model BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 7 Relační model ◼ Příklad dat v relačním modelu Tabulková reprezentace Sloupce Řádky BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 8 Příklad relační databáze BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 9 Jazyk pro definici dat ◼ Data Definition Language (DDL) ◼ Poskytuje výrazy pro definici schéma databáze Např.: create table account ( account-number char(10), balance integer ); ◼ Kompilátor DDL vygeneruje množinu tabulek  Ty jsou uloženy v datovém slovníku ◼ Datový slovník obsahuje metadata (data o datech)  Databázové schéma  Integritní omezení ◼ Omezení domény ◼ Referenční integrita (cizí klíč) ◼ Tvrzení (Assertions)  Přístupová práva  Metody uložení dat BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 10 Jazyk pro manipulaci s daty ◼ Data Manipulation Language (DML) ◼ Jazyk pro přístup a manipulaci s daty organizovanými v konkrétním modelu  Často nazývaný jako dotazovací jazyk (query language) ◼ Dvě třídy jazyků  Procedurální – uživatel specifikuje jak data, která chce, tak i, jak se k nim dostat.  Deklarativní (neprocedurální) – uživatel specifikuje pouze data bez postupu, jak je získat. ◼ SQL = nejčastější (dotazovací) jazyk BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 11 SQL ◼ SQL – Structured Query Language ◼ Často používaný neprocedurální jazyk  Např.: Zjisti jméno zákazníka s id 7465 select customer_name from customer where customer_id = 7465  Např. Vypiš zůstatky všech účtů vlastněných zákazníkem majícím id 7465 select account.balance from depositor, account where depositor.customer_id = 7465 and depositor.account_number = account.account_number ◼ Aplikace obecně přistupují k databázi pomocí  rozšíření programovacího jazyka o zapouzdření SQL  rozhraní (např. ODBC, JDBC) umožňující posílání SQL výrazů  knihoven automaticky generující SQL dotazy (Spring.io & JPA) BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 12 Pohled na data ◼ Architektura databázového systému BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 13 Úrovně abstrakce dat ◼ Fyzická úroveň  Popisuje, jak je datový záznam (např. objednávka) uložen. ◼ Logická úroveň  Popisuje strukturu dat uložených v databázi a vztahy mezi daty. type order = record order_id : integer; created : date; goods : string; customer_id : integer; end; ◼ Úroveň pohledů  Pohled může selektivně ukrývat části dat – řádky i sloupce ◼ Např. výši platu (z bezpečnostních důvodů)  Výpočet hodnot na základě uložených dat ◼ Stáří zákazníka  Kombinace více relací Úrovně abstrakce dat ◼ Fyzická datová nezávislost  = Schopnost změnit fyzické schéma bez změny logického schématu ◼ Aplikace jsou závislé na logickém schématu ◼ Nutné definovat rozhraní mezi jednotlivými úrovněmi  Změny v jedné úrovni co nejméně ovlivnily ostatní úrovně BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 14 BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 15 Instance a schéma databáze ◼ Schéma databáze  = Struktura databáze ◼ Např. kolekce zákazníků, účtů a vztahů mezi nimi  Logické schéma ◼ Návrh databáze na logické úrovni  Fyzické schéma ◼ Návrh databáze na fyzické úrovni ◼ Databáze, resp. instance databáze  Aktuální datový obsah (v daném čase) ◼ Databázový systém  Implementace konkrétního dat. modelu včetně dalšího SW  Např. MariaDB, PostgreSQL, …. BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 16 Návrh databáze ◼ Proces návrhu databáze: 1. Logický návrh ◼ Rozhodnutí, jak má databázové schéma vypadat ◼ Vyžaduje nalezení vhodných relačních schémat ◼ Rozhodnutí zákazníka  Jaké informace (popisy) budeme v databázi ukládat? ◼ Rozhodnutí IT  Jaké relace vytvoříme a jaké budou mít atributy 2. Fyzický návrh ◼ Rozhodnutí o fyzickém rozložení databáze Návrh databáze ◼ Požadavky Chceme evidovat učitele univerzity a jejich příslušnost k fakultě Učitel má jméno a plat Fakulta má své sídlo a rozpočet ◼ Příklad dat Einstein bere 95000 a patří na Physics ve Watson s rozpočtem 70000. BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 17 Návrh databáze ◼ Je tento návrh správný? BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 18 Tabulka instructor Návrh databáze BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 19 Tabulka instructor Tabulka department Návrh databáze ◼ Teorie o normalizaci  Formální nástroje, které určují, co je správně a co ne.  Postupy, jak udělat správný návrh ◼ Entitně-relační model  Modeluje data ISu jako kolekce entit a vztahů ◼ Entita je „věc“ nebo „objekt“ evidovaná v IS, která je jednoznačně odlišitelná od ostatních  Popsána sadou atributů ◼ Vztah je vazba mezi entitami  Reprezentován pomocí E-R diagramu BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 20 Entitně-relační model ◼ Entitní množiny instructor a department vyznačené primární a cizí klíče ◼ Vztahy, např. homedepartment kardinalita n:1 (many-to-one) totální (ze strany instructor) ◼ označeno kolmou čarou u department BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 21 BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 22 Objektově-relační model dat ◼ Rozšiřuje relační model o objekty a konstrukce pro práci s nimi ◼ Umožňuje, aby atributy měly komplexní struktury Např. vnořené relace ◼ Zachovává relační přístup k datům Rozšiřuje jej Je zpětně kompatibilní s existujícími relačními jazyky ◼ SELECT object.name FROM table WHERE object.isValid(); BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 23 XML: Extensible Markup Language ◼ Definovaný W3C konzorciem ◼ Původně jako značkovací jazyk pro dokumenty  Nikoli jako databázový jazyk ◼ Lze definovat nové značky ◼ Značky se mohou vnořovat  Velmi vhodné pro výměnu dat ◼ XML je základy moderních výměnných formátů ◼ Nástroje pro zpracování a dotazování XML BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 24 Struktura databázového systému BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 25 Struktura databázového systému Buffer Manager DDL Compiler DB Admin Query Compiler Transaction Manager User/application Logging & RecoveryExecution Engine Phys. storage mgr. Index/record Manager Buffers Storage Concurrency Control Lock Table read/write pages page commands index/record requests query plan query/update transaction commands DDL commands log pages Storage Manager Query Manager BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 26 Správa úložiště ◼ Správce úložiště (storage manager)  Modul, který poskytuje rozhraní pro fyzické ukládání dat  Úkolem je ◼ Spolupráce se souborovým systémem ◼ Efektivní ukládání, aktualizace a opětovné načítání dat  Spravuje ◼ Přístup k úložišti ◼ Organizuje data, např. do souborů ◼ Provádí indexování BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 27 Zpracování dotazu ◼ Analýza a překlad Parsing and translation ◼ Optimalizace ◼ Vykonání Execution BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 28 Optimalizace dotazu ◼ Více možností zpracování stejného dotazu  Ekvivalence výrazů  Různé algoritmy pro jednotlivé operace ◼ Rozdílné náklady jednotlivých možností  Cena zpracování, obvykle čas  Rozdíly mohou být velmi významné ◼ Potřeba tyto náklady odhadovat  Používání statistik o datech (velikost relací, …)  Statistiky o mezivýsledcích dotazů ◼ Pro odhady složitých dotazů BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 29 Zpracování transakcí ◼ Transakce  Posloupnost operací, které tvoří logický blok, funkci, databázové aplikace ◼ Transakční zpracování (správce transakcí)  Zajištění konzistentního (správného) stavu ◼ bez ohledu na výpadky databázového systému ◼ např. výpadek proudu, pád OS, chyba paměti. ◼ Souběžné zpracování  Zajišťuje konzistenci dat, pokud je spuštěno více transakcí současně ◼ Tj. zajišťuje izolovanost transakcí BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 30 Databázoví uživatelé ◼ Typy uživatelů podle jejich činností Aplikační programátor ◼ Používá DML Znalí uživatelé ◼ Používají přímo dotazovací jazyk databáze Specializovaní uživatelé ◼ Vytvářejí aplikace, kterým tradiční zpracování dat nepostačuje Naivní uživatelé ◼ Používají připravené aplikační programy, rozhraní  Např. webové stránky BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 31 Databázový správce ◼ Koordinuje činnosti prováděné s databázovým systémem  Má znalosti o dostupných zdrojích a potřebách firmy ◼ Činnosti:  Definice schéma databáze  Definice metod ukládání a přístupu k datům  Změny schématu a fyzické organizace  Povolování přístupových práv, vytváření uživatelů  Definice integritních omezení  Prostředník pro komunikaci mezi uživateli  Sledování výkonnosti a ladění systému BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 32 Databázové architektury ◼ Architektura databázového systému je ovlivněna prostředím, ve kterém má DB systém běžet. Centralizovaná (vnitřní součást aplikace) Klient-server Paralelní (multiprocesory) Distribuované BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 33 Historie databázových systémů ◼ 50tá a počátek 60tých let  Zpracování dat na magnetických páskách ◼ Pouze sekvenční přístup  Děrné štítky pro vstup dat ◼ 60tá a 70tá léta  Pevný disk a přímý přístup k datům  Síťový a hierarchický model dat  Ted Codd definuje relační model ◼ IBM Research začíná implementovat System R (dnes jako DB2) ◼ UC Berkeley – prototyp systému Ingres  Vysoce výkonné transakční zpracování ◼ Na svoji dobu BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 34 Historie databázových systémů ◼ 80tá léta  Výzkum relačních systémů vedl ke komerčním systémům ◼ SQL se stalo průmyslovým standardem  Paralelní a distribuované databáze  Objektově-orientované databáze ◼ 90tá léta  Podpora pro rozhodovací procesy (decision support) a dolování znalostí  Obrovské datové sklady (terabajty)  Počátek internetového (webového) obchodování ◼ 2000-dnes  Standardy pro XML a Xquery, JSON  Automatická administrace a ladění databáze  Specializované databázové systémy: ◼ Obrovské datové úložiště, distribuované, NoSQL databáze  Google BigTable, Yahoo PNuts, Amazon Redshift, … Praktická cvičení ◼ PostgreSQL open-source, dostupné pro Linux, macOS, Windows ◼ Řádkové rozhraní psql -h -U -W ◼ Grafické rozhraní pgAdmin ◼ pro Linux, macOS, Windows BKM_DATS, Vlastislav Dohnal, FI MUNI, 2022 35