16.10.2012 Vítězslav Čížek, Roman Kučera.  Advanced Database Systems by Zaniolo, Ceri, Faloutsos, Snodgrass, Subrahmanian and Zicari Morgan Kaufmann,

Slides:



Advertisements
Podobné prezentace
Databázové systémy Zabezpečení DBS. Cíle, které je třeba vzít v úvahu při návrhu databázové aplikace z pohledu bezpečnosti: •Důvěrnost - informace by.
Advertisements

Databázové systémy 2 Cvičení č. 8
Základy jazyka SQL Jan Tichava
Zpracování SQL Lubomír Andrle 5. přednáška
A5M33IZS – Informační a znalostní systémy Dotazovací jazyk SQL - I.
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
Přednáška č. 3 Normalizace dat, Datová a funkční analýza
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
Fakulta elektrotechniky a informatiky
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
Informatika pro ekonomy II přednáška 11
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Fakulta elektrotechniky a informatiky
Temporální databáze a TSQL
Databázové triggery Aktivní pravidla Jan Plonka. Přehled Co jsou to triggery? Historie Pojmy a členění triggerů Jednotlivé realizace + příklady Známé.
TEMPORÁLNÍ DATABÁZE A TSQL2
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
AKTIVNÍ DATABÁZE Milan Plachý Dan Kobr 2010/2011.
Aktivní databáze Šípek, Chudoba Obsah ●Zdroj ●Aktivní databáze - definice ●Reálné systémy ○ Starburst ○ Oracle ○ DB2 ○ Chimera ●Příklady použití.
Ladislav Novák Dotazovací jazyky I - NDBI001
1IT Relační datový model
Databáze Jiří Kalousek.
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Databáze Úvod.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
BEZPEČNOST DAT 2 Složky bezpečnosti dat  Integrita dat (Integrity)  Ochrana dat (Security)  Zotavení z chyb (Recovery)  Paralelní zpracování (Concurrency)
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Databázové systémy teorie a návrh relačních databázových systémů část II.
Relační databáze.
Vypracoval: Ondřej Dvorský Třída: VIII.A
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Informatika pro ekonomy II přednáška 10
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy Přednáška č. 6.
Rauer Luboš Kopic Petr Blažek Tomáš. Structured Query Language - dotazovací jazyk -> pracuje s dotazy - neprocedurální jazyk - mocný, ale přitom jednoduchý.
Databázové systémy II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Objektový přístup v databázích Objektová identita (místo primárních klíčů) –Reference (místo cizích klíčů) Objektový přístup k návrhu – objekty stejného.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Transakční zpracování v SQL P. Částek. Transakce Transakce = logická jednotka práce Podaří-li se všechny části transakce, potvrdíme je. COMMIT Jestliže.
Databázové modelování
Dynamic SQL P. Částek. Dynamic SQL Embedded SQL je překládaný preprocesorem => za běhu nelze nechat uživatele rozhodovat o vzhledu samotných SQL příkazů.
Aplikační a programové vybavení
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Základní obeznámení s jazykem SQL Databázové systémy.
TEMPORÁLNÍ DATABÁZE A TSQL2
Aktivní databáze Michal Ficek Tomáš Pop
Databázové Aplikace Slidy ke cvičení DBI026, část 3 KSI MFF UK Verze
Databázové systémy Zabezpečení DBS. Cíle, které je třeba vzít v úvahu při návrhu databázové aplikace z pohledu bezpečnosti: Důvěrnost - informace by neměly.
Administrace Oracle Paralelní zpracování.
SQL Další dotazy a pohledy Databázové systémy. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
1 Syntaxe a sémantika aktivních databází Databázové triggery Aktivní pravidla 10. listopadu 2004 Zuzana Reitermanová & Vojtěch Hlaveš.
Úvod do databází zkrácená verze.
Databázové systémy přednáška 8 – Transakce
Roman Danel Institut ekonomiky a systémů řízení 2016
Databázové systémy I Přednáška 11 Databázové systémy 1 – KIT/IDAS1
Dotazovací jazyk SQL I.
Informatika pro ekonomy přednáška 8
Databázové systémy a SQL
Šablona 32 VY_32_INOVACE_038.ICT.34
Počítačová cvičení z předmětu Datové sklady #1 Relační model dat
Přednáška 9 Triggery.
Databázové jazyky Jaroslav Pokorný FI BVŠP Bratislava
Databázové systémy a SQL
Transkript prezentace:

Vítězslav Čížek, Roman Kučera

 Advanced Database Systems by Zaniolo, Ceri, Faloutsos, Snodgrass, Subrahmanian and Zicari Morgan Kaufmann, 1997

 Co jsou aktivní databáze?  Syntax a sémantika  Příklady použití  Shrnutí

 Aktivní databáze monitoruje schéma a operace které ho mění  Automaticky provádí akce při splnění nějakých podmínek  Aktivně spolupracuje s aplikacemi ◦ aplikace nepřímo spustí nějaké pravidlo  Architektura řízená událostmi

 Přesouvá úkoly z aplikace přímo na databázi  Vyjmutí znalosti z aplikací a převedení na pravidla db  Znalosti zakódovány ve schématu  Aplikace nemusí vědět o dalším zpracování  Sdílená všemi aplikacemi protože je přímo v db  Při změně stačí upravit schéma db místo modifikace všech aplikací

 kontrola vstupních dat (constraints)  upozorňování na situace (alerts)  správa odvozených dat  správa zdrojů (resource management)  Správa znalostí (knowledge management)  autorizace

 interní ◦ Kontrola integrity ◦ Správa odvozených dat ◦ Správa replikací  Rozšířené ◦ Workflow management ◦ Správa verzí ◦ Sledování a zaznamenávání událostí  business rules

 Co jsou aktivní databáze?  Syntax a sémantika  Příklady použití  Shrnutí

 Lehký úvod do vlastností aktivních databází  4 konkrétní implementace ◦ Výzkumné prototypy Starburst a Chimera ◦ Prakticky využívané Oracle a DB2  Shrnutí společných vlastností a rozdílů

 Aktivní pravidlo = trigger, tedy aktivní databáze je taková, která podporuje triggery  Ve standardu SQL jsou triggery až od SQL:1999, zatímco popisované implementace vznikaly již od začátku 90. let ◦ Z toho plynou různé odchylky  Základem aktivních databází je princip Událost-Podmínka-Akce (Event-Condition- Action, či jen ECA)

 Událost v aktivní databázi znamená změnu stavu databáze  Typickým příkladem jsou události INSERT, UPDATE, nebo DELETE, které nastávají při provedení stejnojmenného SQL příkazu. ◦ Některé systémy mohou mít i další události, spouštěné zvenčí další aplikací, nebo vázané na určitý čas. Tyto typy událostí nebudeme v prezentaci uvažovat.

 Podmínka je databázový predikát, nebo dotaz.  Výsledkem podmínky je vždy pravdivostní hodnota, pokud je podmínkou databázový dotaz, pak prázdná odpověď znamená hodnotu FALSE, neprázdná TRUE.  Pokud je podmínka splněna, dojde k vyhodnocení akce, jinak se neděje nic.

 Akcí může být libovolná manipulace s daty, ať už těmi, které způsobily událost vedoucí k této akci, nebo s úplně jinými.  Akce může obsahovat komplexní sadu dotazů včetně transakčních příkazů jako například ROLLBACK.

 Starburst je prototyp rozšiřitelné relační databáze vyvíjený v IBM Almaden Research Center v letech  Aktivní pravidla jsou jedním z rozšíření tohoto databázového systému.

CREATE RULE ON WHEN [ IF ] THEN [ PRECEDES ] [ FOLLOWS ] ::= INSERTED | DELETED | UPDATED [ ( ) ]

 Pravidla jsou vyhodnocována až po potvrzení transakce (COMMIT WORK), nebo po explicitním vyžádání (PROCESS RULES). ◦ Tzv. odložené (deffered) zpracování.  Každé pravidlo je buď aktivováno (triggered), pokud nastala jeho událost, nebo nikoliv. ◦ Nikdy není pravidlo aktivované vícekrát najednou. ◦ Pro určení, zda událost nastala, se bere končený výsledek transakce. Pokud byl proveden na stejném řádku UPDATE i DELETE, počítá se pouze jako smazání.

 Dokud existují aktivovaná pravidla ◦ Vyber aktivované pravidlo s nejvyšší prioritou a označ ho za neaktivované.  Definiční jazyk umožňuje definovat částečné uspořádání, systém ho ovšem doplní na úplné uspořádání podle času vzniku pravidla. ◦ Vyhodnoť jeho podmínku. ◦ Pokud je podmínka splněna, spusť akci tohoto pravidla.  Akce může aktivovat další pravidla, včetně toho právě prováděného.

 V podmínce i akci je možné využívat pomocné přechodové tabulky INSERTED, DELETED, OLD-UPDATED a NEW-UPDATED obsahující patřičné řádky ovlivněné událostí, která pravidlo aktivovala.

DEACTIVATE RULE ON ; ACTIVATE RULE ON ; DROP RULE ON ; CREATE RULESET ; ALTER RULESET [ ADDRULES ] [ DELRULES ]; DROP RULESET ; PROCESS RULESET ; PROCESS RULE ;

 Pokud je průměrný plat zaměstnanců větší než 50000, sníží se plat všech zaměstnanců o 10%. CREATE RULE KontrolaPlatu ON Zamestnanci WHEN INSERTED, DELETED, UPDATED (Plat) IF (SELECT AVG(Plat) FROM Zamestnanci) > THEN UPDATE Zamestnanci SET Plat =.9*Plat

 Implementace během začátku 90. let podle předběžného dokumentu pro SQL3 (1999) standard.  Pravidla jsou spouštěna okamžitě.  Akce může spouštět PL/SQL kód, s výjimkou DDL a transakčních příkazů.  Události na úrovni řádku či celého příkazu.  Rozlišuje pravidla vyhodnocovaná před událostí a po události.

CREATE TRIGGER { BEFORE | AFTER } ON [ [ REFERENCING ] FOR EACH ROW [ WHEN ( ) ] ] ::= INSERT | DELETE | UPDATE [ OF ] ::= OLD AS | NEW AS

1. Spuštění příkazových pravidel před událostí (= statement-level before-trigger) 2. Pro každý ovlivněný řádek v cílové tabulce a)Spuštění řádkových pravidel před událostí. b)Provedení události, včetně kontroly referenční integrity apod. c)Spuštění řádkových pravidel po události. 3. Dokončení události, kontroly které nejsou prováděny na úrovni řádku, ale dotazu. 4. Spuštění příkazových pravidel po události.

 Každá změna v akci pravidla může způsobit spuštění dalšího pravidla. ◦ Toto další pravidlo se provádí okamžitě, jako volání vnořené funkce. ◦ Maximální hloubka vnoření je 32, pak se vyhodí výjimka, aby se zabránilo nekonečnému volání.  Původní příkaz, který vyvolal spuštění prvního pravidla, je v tomto případě odrolován a není proveden.

 Pro ty co mají zkušenost s MySQL, ale nikoliv s Oraclem, takto se v syntaxi Oracle píše klíčové slovo AUTOINCREMENT: CREATE SEQUENCE seq_tabulka_id INCREMENT BY 1START WITH 1 NOMAXVALUE MINVALUE 0; CREATE TRIGGER tr_tabulka_id BEFORE INSERT ON tabulka FOR EACH ROW begin SELECT seq_tabulka_id.nextval INTO :new.id FROM dual; end;

 Implementace aktivních pravidel v roce 1996 v IBM Almaden Research Center.  Snaha o precizní a jednoznačnou sémantiku, s využitím zkušeností ze systému Starburst.  Na základě této implementace navržena a schválena úprava standardu SQL3, tedy výsledný standard z roku 1999 je blíže implementaci v DB2 než té od Oracle.  Pravidlo je vždy navázáno jen na jednu událost.

CREATE TRIGGER { BEFORE | AFTER } ON [ REFERENCING ] FOR EACH { ROW | STATEMENT } WHEN ( ) ::= INSERT | DELETE | UPDATE [ OF ] ::= { OLD | NEW | OLD_TABLE | NEW_TABLE } AS

 Pravidlo před událostí může změnit hodnoty před jejich vložením/aktualizací, ale nemůže žádným jiným způsobem modifikovat databázi.  Může existovat více pravidel pro stejnou událost. Jejich vyhodnocování se provádí v takovém pořadí, v jakém byly vytvořeny.

1. ( Pozastav spouštění pravidla A a ulož jeho pracovní stav na zásobník. ) 2. Spočítej přechodové tabulky (OLD a NEW) vzhledem k aktivované události E. 3. Vyhodnoť všechna relevantní pravidla před událostí E, s možností změny tabulky NEW. 4. Aplikuj změny z přechodové tabulky NEW do databáze. 5. Vyhodnoť všechna relevantní pravidla po události E. Pokud jejich akce způsobí událost, která může spustit další pravidla, aplikuj rekurzivně celý proces. 6. ( Vyber ze zásobníku pracovní stav pro A a pokračuj v jeho vyhodnocování. )

 Pokud je v bodu 4 (aplikace změn) porušeno integritní omezení s definovanou kompenzací (například kaskádové mazání), nastává i zde rekurzivní zpracování pravidel a vyhodnocování těchto kompenzačních akcí.

 Při každé aktualizaci tabulky dodavatelů zaznamenáme do auditní tabulky uživatele, datum a kolik záznamů aktualizoval. CREATE TRIGGER AuditDodavatele AFTER UPDATE ON Dodavatele REFERENCING OLD_TABLE AS ot FOR EACH STATEMENT INSERT INTO Audit VALUES (USER, CURRENT_DATE, (SELECT COUNT(*) FROM ot))

 Objektově orientovaný dotazovací jazyk  Výzkumný prototyp  Podporuje okamžité i odložené zpracování.  Podporuje různé módy zpracování.  … celkově podporuje spoustu různých možností a kombinací které vás mohou napadnout …

define object class Employee attributes Name: string, Salary: integer end; define object class Department attributes Name: string, Empoyees: set-of(Employee) end;

define [ { event-consuming | event-preserving } ] [ { deferred | immediate } ] trigger [ for ] events condition action [ { before | after } ] end ::= create | delete | modify [ ( )]

 Vyhodnocení pravidel může být okamžité, odložené, či dokonce odpojené v samostatné transakci. ◦ Vyhodnocení akce pravidla může být vůči vyhodnocení podmínky opět v těchto variantách  Vyhodnocování může mít různé úrovně granularity.  Změna způsobující událost bývá uložená v pomocné tabulce.  Systémy mají různá pravidla pro pořadí vyhodnocování pravidel a pro vyhodnocení rekurzivních událostí.

 Co jsou aktivní databáze?  Syntax a sémantika  Příklady použití  Shrnutí

 Popsána pomocí predikátů – integritní pravidla  Constraints - Statická omezení ◦ Ke každému zaměstnanci musí být oddělení ◦ Predikáty vyhodnocovány nad stavy databáze  Rules - Dynamická omezení ◦ Vynucují constraints při změně stavů ◦ Predikáty vyhodnocovány nad přechody stavů ◦ porovnávají stavy produkované transakcí

 Implicitní ◦ specifikovány jazykem, popisem dat ◦ v SQL: NOT NULL, UNIQUE, atd  Obecné ◦ specifikovány obecnými predikáty nebo dotazy ◦ př. check clause a assertion v SQL 92 standardu

 Pohledy (VIEW)  Odvozené atributy  Virtuální pohledy ◦ počítány na vyžádání ◦ Implementovány pomocí změny dotazu ◦ Illustra  Materializované pohledy ◦ trvale uloženo v databázi ◦ nutnost přepočítat při změně zdrojových dat

 Refresh ◦ Celé znovu přegenerovat ◦ Jednoduchá pravidla  Inkrementální údržba ◦ Složitější - specificky generované pro strukturu odvozujících pravidel ◦ Počítá rozdíly (delty) které budou přidány nebo odebrány z pohledu ◦ Problémy s rekurzí, duplikáty, vícenásobným odvozováním

 Pohled který vybírá oddělení, kde alespoň jeden zaměstnanec bere více než 100K DEFINE VIEW HodnePlacenaOddeleni AS (SELECT DISTINCT Odd.Jmeno FROM Odd, Zam WHERE Odd.CisloOdd = Zam.CisloOdd AND Zam.Plat > 100K)  Kritické události: ◦ INSERT do Zam, Odd ◦ DELETE ze Zam, Odd ◦ UPDATE na Zam.CisloOdd, Zam.Plat, Odd.CisloOdd

CREATE RULE ObnovHodnePlacenaOddeleni1 ON Zam WHEN INSERTED, DELETED, UPDATED(CisloOdd), UPDATED(Plat) THEN DELETE * FROM HodnePlacenaOddeleni; INSERT INTO HodnePlacenaOddeleni: (SELECT DISTINCT Odd.Jmeno FROM Odd, Zam WHERE Odd.CisloOdd = Zam.CisloOdd AND Zam.Plat > 100K ) CREATE RULE ObnovHodnePlacenaOddeleni2 ON Odd WHEN INSERTED, DELETED, UPDATED(CisloOdd) THEN DELETE * FROM HodnePlacenaOddeleni; INSERT INTO HodnePlacenaOddeleni: (SELECT DISTINCT Odd.Jmeno FROM Odd, Zam WHERE Odd.CisloOdd = Zam.CisloOdd AND Zam.Plat > 100K)

 Inkrementální pravidlo obnovy pro INSERT do Odd: CREATE RULE InkremObnovHodnePlacenaOddeleni ON Odd WHEN INSERTED THEN INSERT INTO HodnePlacenaOddeleni: (SELECT DISTINCT Odd.Jmeno FROM INSERTED, Zam WHERE INSERTED.CisloOdd = Zam.CisloOdd AND Zam.Plat > 100K)  Pravidlo není nutné, pokud existuje FOREIGN KEY constraint ze Zam do Odd  Pravidla pro jiné události než INSERT jsou složitější

 Udržování několika kopií stejných informací ◦ v podstatě podmnožina odvozování dat  Distribuované databázové servery  Asynchronní propagování změn mezi kopiemi  Většinou není nutné mít kopie sesynchronizovány  Delty aplikovány na sekundární kopie

 Jedna primární a více sekundárních kopií ◦ sekundární kopie asynchronně aktualizovány ◦ sekundární jsou pro aplikace jen pro čtení  Symetrické replikace ◦ dvě kopie mohou asynchronně přijímat změny ◦ fungují jako primární i sekundární zároveň ◦ paralelní aktualizace bez synchronizac  => možnost ztráty konzistence

CREATE RULE Pridano ON Primarni WHEN INSERTED THEN INSERT INTO PridanoDelta (SELECT * FROM INSERTED)  Obdobná pravidla pro DELETE a UPDATE

= „Workflow management“  Popis procesu v systému  Monitorování přidělených úkolů a pomoc s rozdělováním  Reaktivní proces  Monitoruje události v systému a spouští podle toho aktivity

define trigger PostupPriNehode for Nehoda events create (Nehoda) condition Nehoda(N) occured(create, N) Rezervace(R) R.Auto = N.PoskozeneAuto Actions create(Varovani, [R.Cislo, R.Agent], X) end

 Vnější události které souvisejí s obsahem databáze  Nemohou být deklarativně popsána  Sledování určitých cílů ◦ Maximalizace zisku ◦ Optimální logistika

 Řízení provozu  Inventární systémy  Logistika a plánování  Pravidla pro obchod s akciemi

 Pro složité systémy se ale aktivní pravidla ukazují jako nepraktická  XCON ◦ pravidel neúnosné na údržbu ◦ S přidáváním nových pravidel je stále těžší určit pořadí v jakém se mají procházet ◦ Přidání nových pravidel může způsobit nečekané efekty  Pokusy o zlepšení situace nepřinesli dostatečná zlepšení ◦ Chimera

 Co jsou aktivní databáze?  Syntax a sémantika  Příklady použití  Shrnutí

 Aktivní pravidla jsou mocný nástroj, který výrazně rozšiřuje možnosti databázového systému.  Všechny moderní SQL databáze jsou aktivní, tj. podporují aktivní pravidla. ◦ Jednotlivé implementace se drobně liší v syntaxi i sémantice, ale základ je podobný  V praxi se používají spíše jednodušší aktivní pravidla, komplexní sada pravidel může být velmi nepřehledná a matoucí.