1 Syntaxe a sémantika aktivních databází Databázové triggery Aktivní pravidla 10. listopadu 2004 Zuzana Reitermanová & Vojtěch Hlaveš.

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

Základy jazyka SQL Jan Tichava
Ladislav Hofman, Jan Slavík TUL Předmět databázové systémy
Zpracování SQL Lubomír Andrle 5. přednáška
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
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.
LOV, Listbox, Poplist a Combobox v Oracle Forms LOV – seznam hodnot, které se zobrazí po stisku klávesy Enter v textovém poli. LOV – seznam hodnot, které.
 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á.
Databázové systémy Přednáška č. 3 Proces návrhu databáze.
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
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 II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Fakulta elektrotechniky a informatiky
Databázové systémy II Přednáška č. 5 RNDr. David Žák, Ph.D. 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é.
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
Vítězslav Čížek, Roman Kučera.  Advanced Database Systems by Zaniolo, Ceri, Faloutsos, Snodgrass, Subrahmanian and Zicari Morgan Kaufmann,
PL/SQL Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. Rozšířením jazyka SQL.
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á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.
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.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy II Přednáška č. 9. Transakce je logická jednotka práce sestávající z jednoho nebo více SQL příkazů, které jsou atomické z hlediska.
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é systémy I Cvičení č. 10 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Informatika II PAA DOTAZOVACÍ JAZYKY
PA152Notes 101 CS 245: Database System Principles Notes 10: More TP Hector Garcia-Molina Pavel Rychlý.
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.
Databázové systémy SQL Výběr dat.
TEMPORÁLNÍ DATABÁZE A TSQL2
Aktivní databáze Michal Ficek Tomáš Pop
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.
Teorie zpracování dat RELAČNÍ DATOVÝ MODEL.
Databáze ● úložiště dat s definovaným přístupem ● typy struktury – strom, sekvence, tabulka ● sestává z uspořádaných záznamů ● databáze – struktura – záznam.
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
Databázové systémy přednáška 8 – Transakce
Roman Danel Institut ekonomiky a systémů řízení 2016
Dotazovací jazyk SQL - III
A5M33IZS – Informační a znalostní systémy
Databázové systémy a SQL
Databázové systémy I Přednáška 11 Databázové systémy 1 – KIT/IDAS1
Informatika pro ekonomy přednáška 8
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Databázové systémy a SQL
Databázové systémy a SQL
Přednáška 9 Triggery.
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
Databázové systémy a SQL
Transkript prezentace:

1 Syntaxe a sémantika aktivních databází Databázové triggery Aktivní pravidla 10. listopadu 2004 Zuzana Reitermanová & Vojtěch Hlaveš

2 Obsah  Historie a standardizace triggerů  Aktivní pravidla v databázi Starburst Definice Příklady  Triggery v databázi Oracle Vylepšení oproti Starburstu Problém se zanořováním triggerů  Shrnutí

3 Co je to trigger a jeho vývoj…  Trigger („spoušť“) je “procedura”, která se spustí při výskytu nějaké sledované události.  V relačních databázích trigger = aktivní pravidlo  Konec 80. let první snahy o formální definici  SQL92 triggery neobsahuje nedostatky ve standardizačních dokumentech  SQL1999 triggery již obsahuje

4 Starburst  IBM, Almaden Research Center Starburst Active Rule System  Získalo popularitu Jednoduchá syntaxe a sémantika  Množinově orientovaná  Pravidla založena na ECA-paradigmatu (Event-Condition-Action)

5 ECA-paradigma  Událost (Event) SQL-příkazy pro manipulaci s daty (INSERT, DELETE, UPDATE)  Podmínka (Condition) booleovský predikát nad stavem databáze, vyjádřen pomocí SQL  Akce (Action) provádí libovolné SQL dotazy (například SELECT, INSERT, DELETE, UPDATE) navíc mohou obsahovat příkazy pro manipulaci s aktivními pravidly a transakční instrukci ROLLBACK WORK

6 Sémantika aktivních pravidel  Jednoduchá a intuitivní  Když nastane Událost, pokud je splněna Podmínka, proveď Akci.  Říkáme, že pravidlo je: spuštěno (triggered) – pokud nastane příslušná Událost vyhodnoceno (considered) – po vyhodnocení dané Podmínky vykonáno (executed) – po provedení jeho Akce

7 Vlastnosti aktivních pravidel (triggerů)  Jsou přidané do schématu databáze a jsou sdílené všemi aplikacemi.  Mohou být dynamicky aktivovány a deaktivovány každou transakcí.  Mohou tvořit skupiny.  Každé pravidlo ve Starburstu má jedinečné jméno a je spojeno s jednou určitou tabulkou, zvanou rule’s target.  Každé aktivní pravidlo může sledovat více Událostí, tzv. rule’s triggering operations.  Jeden SQL příkaz může být sledován více pravidly. Pořadí pravidel je určeno na základě jejich částečného uspořádání.

8 Syntaxe příkazu CREATE RULE ::= CREATE RULE ON WHEN [ IF ] THEN [ PRECEDES ] [ FOLLOWS ] ::= INSERTED | DELETED | UPDATED [( )]

9 Příklad I. – vytvoření aktivního pravidla  Řízení platu zaměstnanců: CREATE RULE RegulacePlatu ON Zaměstnanci WHEN INSERTED, DELETED, UPDATED (Plat) IF (SELECT AVG(Plat) FROM Zaměstnanci) > 100 THEN UPDATE Zaměstnanci SET Plat = 0.9 * Plat  Pravidlo sleduje přijímání a propouštění zaměstnanců a změnu jejich platů.  Kdykoli průměrný plat překročí daný práh (100), sníží platy všem zaměstnancům (na 90%).

10 Sémantika aktivních pravidel  Aktivní pravidla jsou ve Starburstu zpracovávány v souvislosti s danou transakcí.  Zpracování pravidel může být vyvoláno implicitně, když transakce vydá příkaz COMMIT WORK.  To vede k odloženému vykonání explicitně příkazem PROCESS RULES.

11 Stavy aktivních pravidel  Nespuštěno (untriggered) Při zahájení transakce  Spuštěno (triggered) Když nastane jeho spouštějící událost  Spuštěná aktivní pravidla v daný časový okamžik tvoří konfliktní množinu.

12 Algoritmus zpracování aktivních pravidel WHILE konfliktní množina ≠ Ø DO 1. Vyber jedno pravidlo P z konfliktní množiny z aktivních pravidel s nejvyšší prioritou; změň stav P na „nespuštěno“. 2. Vyhodnoť podmínku pravidla P. 3. Pokud je podmínka P splněna, proveď akci pravidla P.

13 Další příkazy pro práci s aktivními pravidly ::= DEACTIVATE RULE ON ::= ACTIVATE RULE ON ::= DROP RULE ON ::= PROCESS RULES | PROCES RULESET | PROCES RULE

14 Příkazy pro práci s množinami pravidel ::= CREATE RULESET ::= ALTER RULESET [ ADDRULES ] [ DELRULES ] ::= DROP RULESET

15 Příklad I. – pokračování CREATE RULE RegulacePlatu ON Zaměstnanci WHEN INSERTED, DELETED, UPDATED (Plat) IF (SELECT AVG(Plat) FROM Zaměstnanci) > 100 THEN UPDATE Zaměstnanci SET Plat = 0.9 * Plat  Průměrný plat zaměstnance je 97.  Uvažujme transakci, která přidá záznamy  Vložení spustí pravidlo Regulace platu.  Nový průměrný plat je 112  podmínka je splněna  provede se akce ZaměstnanecPlat Božena90 Jan90 Josef110 Bořivoj150 Oldřich120

16 Příklad I. – pokračování  Nový stav databáze po provedení pravidla:  Operace UPDATE v akci pravidla způsobí, že se pravidlo spustí znovu.  Průměrný plat je nyní 101  podmínka je splněna  provede se akce  Nový stav databáze: ZaměstnanecPlat Božena81 Jan81 Josef99 Bořivoj135 Oldřich108 ZaměstnanecPlat Božena73 Jan73 Josef89 Bořivoj121 Oldřich97

17 Příklad I. – dokončení  Pravidlo je opět spuštěno díky operaci UPDATE.  Pravidlo je vyhodnoceno, ale již se neprovede Průměrný plat je teď 91.  Algoritmus provádění aktivních pravidel končí.  Nebezpečí „zacyklení“ v případě špatně definovaných pravidel.

18 Příklad II.  Uvažujme databázi jako na začátku Příkladu I.  K databázi přidáme nové aktivní pravidlo VysocePlacení, Pravidlo vkládá do pohledu VysocePlaceníZaměstnanci (VPZ) ty nově přidané zaměstnance, kteří mají plat vyšší než 100. CREATE RULE VysocePlacení ON Zaměstnanci WHEN INSERTED IF EXISTS (SELECT * FROM INSERTED WHERE Plat > 100) THEN INSERT INTO VPZ (SELECT * FROM INSERTED WHERE Plat > 100) FOLLOWS RegulacePlatu

19 Příklad II. - pokračování  Uvažujme nyní znovu přidání Bořivoje a Oldřicha do databáze.  Operace INSERT spustí obě pravidla.  Algoritmus zpracovávání pravidel vybere nejprve pravidlo RegulacePlatu.  Pravidlo RegulacePlatu se provede díky rekurzi dvakrát. ZaměstnanecPlat Božena90 Jan90 Josef110 Bořivoj150 Oldřich120

20 Příklad II. – dokončení  Tabulka Zaměstnanci se dostane do stavu jako v Příkladě I.  Nyní je pravidlo RegulacePlatu „nespuštěno“ a pravidlo VysocePlacení je „spuštěno“.  Pravidlo pokládá za vloženou tuto dočasnou tabulku:  Pouze řádek (Bořivoj,121) je vložen do VPZ. ZaměstnanecPlat Božena73 Jan73 Josef89 Bořivoj121 Oldřich97 Bořivoj121 Oldřich97

21 Oracle  Podporuje triggery definované v předběžné dokumentaci k SQL3  Akce triggerů mohou zahrnovat libovolný PL/SQL kód  Podpora dvou odlišných přístupů (granularita) Řádková úroveň (row level) – Daty řízené triggery Příkazová úroveň (statement level) – Událostmi řízené triggery  Okamžité spouštění triggerů (čas aktivace) Před sledovanou operací (before) Po sledované operaci (after)

22 Definice triggeru v Oracle ::= CREATE TRIGGER {BEFORE | AFTER} ON [ [ REFERENCING FOR EACH ROW ] [ WHEN ] ] ::= INSERTED | DELETED | UPDATED [ OF ] ::= OLD AS | NEW AS

23 Algorimus zpracování triggerů  Proveď statement-level before triggery  Pro každou řádku v cílové tabulce Proveď row-level before triggery Kontrola integritních omezení Proveď modifikaci tabulky  Kontrola integritních omezení  Proveď statement-level after triggery  Možnost zacyklení – v Oracle maximálně 32 zanořených triggerů

24 Příklad III. CREATE TRIGGER Přiobjednej AFTER UPDATE OF Na_skladě ON Sklad WHEN (New. Na_skladě < New.Mez_přiobjednání) FOR EACH ROW DECLARE NUMBER X BEGIN SELECT COUNT (*) INTO X FROM Objednávky WHERE Součástka = New.Součástka IF X=0 THEN INSERT INTO Objednávky VALUES (New.Součástka, New.Počet) END IF; END; SoučástkaNa_skladěMez_přiob.Počet Tabulka Sklad:

25 Příklad III. – pokračování  Tabulka Sklad:  Transakce 1: UPDATE Sklad SET Na_skladě = Na_skladě - 70 WHERE Součástka = 1  Transakce 2: UPDATE Sklad SET Na_skladě = Na_skladě - 60 WHERE Součástka >= 1 SoučástkaNa_skladěMez_přiob.Počet

26 Ukončení zanořování triggerů  Lze sestrojit orientovaný graf, kde vrcholy jsou jednotlivá pravidla. Hrana z vrcholu R1 do R2 vede právě když vykonáním R1 se spustí pravidlo R2. R1 R2 R3 R5 R4

27 Ukončení zanořování triggerů  Poznáme z grafu, že proces zanořování někdy skončí? Pokud je graf acyklický, jistě po n krocích skončí. Avšak cykličnost grafu je pouze nutná podmínka k tomu, aby zanořování neskončilo. R1R2R3 Ra R1R2

28 Ukončení zanořování triggerů  Uvažujme dvě nezávislé databáze nad stejným schématem, obě s jedním pravidlem Ra resp. Rb – Ra skončí, Rb nikoliv. CREATE RULE Rb ON Zaměstnanci WHEN INSERTED, DELETED, UPDATED (Plat) IF (SELECT AVG(Plat) FROM Zaměstnanci) > 100 THEN UPDATE Zaměstnanci SET Plat = 1.1 * Plat Ra Rb CREATE RULE Ra ON Zaměstnanci WHEN INSERTED, DELETED, UPDATED (Plat) IF (SELECT AVG(Plat) FROM Zaměstnanci) > 100 THEN UPDATE Zaměstnanci SET Plat = 0.9 * Plat

29 Shrnutí  Událost => Podmínka => Akce  Algoritmy zpracování triggerů Výběr podle priorit  Vyhodnocení a provádění triggerů Okamžité (Immediate) - Oracle Odložené (Deffered) - Starburst Oddělené (Detached)  Problémy se zacyklením  Dynamická aktivace a deaktivace triggerů

30 Otázky?