Aktivní databáze Michal Ficek Tomáš Pop

Slides:



Advertisements
Podobné prezentace
Zpracování SQL Lubomír Andrle 5. přednáška
Advertisements

Přednáška č. 1 Úvod, Historie zpracování dat, Základní pojmy
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.
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á.
Přednáška č. 5 Proces návrhu databáze
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
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 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
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,
Radek Špinka Přepínače MSSQL výběr.
1IT Relační datový model
Databáze Jiří Kalousek.
Hana Kotinová Struktura a cíl práce Metody předzpracování dat Systémy předzpracování dat Historie vývoje DPT Jak program pracuje Budoucnost.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Sémantická analýza Jakub Yaghob
Databázové systémy teorie a návrh relačních databázových systémů část II.
Relační databáze.
Konceptuální návrh 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 – základní pojmy Ing. Roman Danel, Ph.D.
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.
Konceptuální návrh databáze
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í
Databázové systémy Informatika pro ekonomy, př. 18.
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.
XQuery Dotazovací jazyk XML Daniel Privalenkov. O čem bude prezentace Nutnost dotazovacího jazyku v XML Rychlý přehled XQuery Několik příkladů.
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.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2015.
1 Syntaxe a sémantika aktivních databází Databázové triggery Aktivní pravidla 10. listopadu 2004 Zuzana Reitermanová & Vojtěch Hlaveš.
Databázové systémy Úvod, Základní pojmy. Úvod S rozvojem lidského poznání roste prudce množství informací. Jsou kladeny vysoké požadavky na ukládání,
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.
Databáze MS ACCESS 2010.
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
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
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
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
Transkript prezentace:

Aktivní databáze Michal Ficek Tomáš Pop

2 Obsah úvod –co jsou aktivní databáze, terminologie problémy aktivních databází vybrané modely –Starburst –Oracle –DB2 –Chimera –SQL Server taxonomie aktivních databází literatura a odkazy

3 Úvod databáze –obraz skutečnosti –reálná data a na ně kladené požadavky omezení dat –integritní omezení jednoduché, rychlé ne vždy postačuje

4 Aktivní pravidla aktivní pravidla (active rules)‏ –pro vyhodnocení složitých podmínek kladených na data (tzv. business rules)‏ –kontrola na databázové úrovni –usnadnění práce – auditovatelnost, bezpečnost triggery (triggers)‏ –v překladu „spoušť“, „kohoutek“ –jiný název pro aktivní pravidla –v dalším textu mu budeme často dávat přednost AKTIVNÍ PRAVIDLA = TRIGGERY

5 Zaměření referátu syntax –zápis triggeru v daném DB systému sémantika –kdy se pustí –jak proběhne –jak se navzájem volají –nekonečné cykly –… vybrané modely aktivních pravidel –historicky významné nebo prakticky používané –zajímavě implementované

6 Problémy s triggery standardizace –není –snaha by byla od 80. let v SQL-92 stále nejsou proprietární řešení výrobců DB systémů –rozdíly v syntaxi i sémantice –vazba aplikace na konkrétního výrobce technické problémy –nekonečné vzájemné volání triggerů (retriggering)‏ několik možných řešení používají se všechny (od omezení po pštrosí hlavu)‏

Starburst

8 Starburst Active Rule System –DDL rozšíření projektu Starburst –jednoduchá syntaxe i sémantika událost – podmínka – akce (Event-Condition- Action, ECA)‏ –princip fungování triggerů –„Když nastane událost a je splněna podmínka, vykonej akci“ zní to jednoduše má to spousty háčků

9 událost – podmínka – akce událost –INSERT, DELETE, UPDATE manipulační primitiva podmínka –libovolná SQL podmínka akce –libovolný SQL příkaz SELECT, INSERT DELETE, UPDATE –příkaz řízení transakce ROLLBACK WORK

10 Syntaxe aktivních pravidel Starburst CREATE RULE ON WHEN [ IF ] THEN [ PRECEDES ] [ FOLLOWS ]

11 Příklad vytvoření aktivního pravidla CREATE RULE platy2 ON zamestnanci WHEN INSERTED, DELETED, UPDATED IF (SELECT avg(plat) FROM zamestnanci) > 100 THEN UPDATE zamestnanci SET plat = 0.9 * plat FOLLOWS platy1

12 Doplnění syntaxe unikátní jméno pravidla –asociováno se specifickou tabulkou – cílem pravidla použití –pravidlo sleduje více událostí –stejná událost více pravidly příkazy PRECEDES a FOLLOW –použít lze pouze v době vzniku pravidla –určují částečné uspořádání (partial order)‏ –vztah uspořádání musí být acyklický sdružování pravidel do skupin aktivace a deaktivace pravidel  

13 Sémantika – terminologie Pravidlo je: spuštěné (triggered)‏ –pokud nastane jím sledovaná událost –ostatní pravidla nespuštěná –spuštěné neznamená „vykonává se akce“, „vyhodnocuje se podmínka“ bráno v úvahu (considered)‏ –podmínka pravidla je vyhodnocena provedeno (executed)‏ –příslušná akce je vykonána –vykonání je odložené ve chvíli provedení příkazu COMMIT WORK explicitně voláním PROCESS RULE

14 Sémantika – spuštění pravidel pravidlo je spuštěno –poté co nastane událost –pokud událost sleduje více pravidel, pak tvoří konfliktní množinu (conflict set)‏ algoritmus vyhodnocení pravidel DOKUD je množina spuštěných pravidel M neprázdná { vyber pravidlo R s nejvyšší prioritou z M a označ jako nespuštěné POKUD je podmínka R splněna { proveď akci R } jednoznačně opakovatelné –díky úplnému uspořádání

15 Sémantika - cykly mohou nastat –trigger T1 způsobí akci která znovu spustí trigger T1… konečný stav (quiescent state)‏ –je určen prázdnou konfliktní množinou zajistit konečnost konečnost vyvolávání triggerů je na autorovi pravidel 

16 Sémantika – detaily stavové přechody (state transitions)‏ –transformace jednoho stavu databáze do druhého –vykonání SQL příkazů transakcemi vloženo, vymazáno, změněno (inserted, deleted, updated)‏ –množiny popisující přechody –plní se n-ticemi změněnými SQL příkazy –představují všechny změny, které povedou ze stavu S1 do stavu S2 čistý efekt (net effect)‏ –znamená, že se každá n-tice změněných dat objeví právě v jedné z množin vloženo, vymazáno, změněno –např. vložení a následné vymazání n-tice má nulový efekt –insert a následný update má čistý efekt insert nové hodnoty

17 Sémantika - detaily probíhá algoritmus vyhodnocování pravidel pravidlo je spuštěno –pokud je množina operací pravidlem sledovaných neprázdná vztaženo k aktuálnímu přechodovému stavu přechodový stav se mění s vykonáváním pravidel –akce spuštěného pravidel vyústí ve změnu množin –znovu se utvoří konfliktní množina končí se prázdnou konfliktní množinou –konečným stavem

Oracle

19 Oracle – triggery podpora se vyvíjí –v dřívějších verzích četná omezení událost sleduje pouze jeden trigger nebylo možné ovlivňovat pořadí spouštění Dva typy triggerů: řádkové (row-level)‏ –událostí je změna každého jednotlivého řádku příkazové (statement-level)‏ –událostí je příkaz provádějící změny

20 Syntaxe Oracle triggerů CREATE OR REPLACE TRIGGER [FOLLOWS ] [ ] {BEFORE | AFTER} [OR [ OR ]] [OF ] ON REFERENCING NEW AS OLD AS PARENT AS [[ FOR EACH ROW ] WHEN ( ) ]] DECLARE BEGIN EXCEPTION END ;

21 Syntaxe Oracle triggerů - detaily událost –manipulační primitiva INSERT, DELETE, UPDATE podmínka –libovolná SQL podmínka –pouze pro řádkové triggery akce –libovolný PL/SQL kód velmi silné! nesmí obsahovat DDL příkazy

22 Syntaxe Oracle triggerů - detaily predikáty –dostupné jsou INSERTING, DELETING, UPDATING reference –staré a nové hodnoty OLD, NEW –lze je přejmenovat –pouze pro řádkové triggery

23 Sémanitka Oracle triggerů spouštění –probíhá okamžitě při události –nelze spustit explicitně (uživatelským příkazem)‏ vnořené spouštění triggerů –činností triggeru dojde ke spuštění jiného triggeru nebo sebe sama –probíhající se přeruší, uloží se jeho kontext a provádí se jiný –omezena maximální hloubka zanoření 32, poté je vyvolána vyjímka vyjímky nebo chyby –všechny změny původní SQL operace a následné změny provedené triggery odrolovány –Oracle podporuje částečný rollback (oproti transakčnímu)‏

24 Sémanitka Oracle triggerů spouštění –probíhá okamžitě při události –nelze spustit explicitně (uživatelským příkazem)‏ vnořené spouštění triggerů –činností triggeru dojde ke spuštění jiného triggeru nebo sebe sama –probíhající se přeruší, uloží se jeho kontext a provádí se jiný –omezena maximální hloubka zanoření 32, poté je vyvolána vyjímka vyjímky nebo chyby –všechny změny původní SQL operace a následné změny provedené triggery odrolovány –Oracle podporuje částečný rollback (oproti transakčnímu)‏

25 Sémanitka Oracle triggerů řazení (klauzule FOLLOWS)‏ –podporováno nedlouho –ve verzi 11.1 –zajištěno předcházení triggerů –úplné uspořádání určené vznikem triggeru novější bude spuštěn dříve

26 Sémanitka Oracle triggerů algoritmus prokládání SQL příkazu triggery během jeho vykonávání Proveď statement-level before triggery Pro každý řádek v tabulce Proveď row-level before triggery proveď změnu řádku (a kontroly integrity)‏ Proveď row-level after triggery Proveď kontrou integrity na úrovni příkazu Proveď statement-level after triggery

Triggery v DB2

28 DB2 triggery pro DB2 Common Server –navrženy IBM, vychází ze zkušenosti se systémem Starburst –zaměřeno na jednoduchost syntaxe jednoznačnost sémantiky kontrola integritních omezení dva typy triggerů –řádkové –sloupcové každý trigger monitoruje pouze jednu událost –ale více triggerů může monitorovat stejnou událost –hlavní změna oproti Starburst

29 Syntaxe DB2 triggerů CREATE TRIGGER [ NO CASCADE BEFORE | AFTER ] { INSERT | DELETE | UPDATE [OF COLUMN,... ] } ON [ FOR EACH ROW MODE DB2SQL | FOR EACH STATEMENT ] [ REFERENCING [OLD AS ] [ NEW AS ] [ OLD_TABLE AS ] [ NEW_TABLE AS ] ] WHEN BEGIN ATOMIC END

30 SyntaxeDB2 triggerů - detaily událost –manipulační primitivum INSERT, DELETE, UPDATE podmínka –libovolná SQL podmínka akce –!! závisí na konkrétním typu triggeru –SQL příkaz ne DDL ne transakční přechodové hodnoty –pro řádkové triggery OLD, NEW –pro příkazové triggery OLD_TABLE, NEW_TABLE

31 Sémantika DB2 triggerů BEFORE triggery –ke kontrole chyb, integritních omezení –podmínka je vyhodnocena ke stavu databáze před událostí –nemohou měnit databázi použitím UPDATE, INSERT, DELETE  nemohou aktivovat jiné triggery –mohou vyvolávat chyby AFTER triggery –k implementaci aplikační logiky –spuštěny po změně dat –stav tabulky T před událostí lze zjistit (T MINUS NEW_TABLE) UNION OLD_TABLE

32 Sémantika DB2 triggerů více triggerů může monitorovat stejnou událost –úplné uspořádání –klíčem je čas vytvoření vykonávání řádkové a příkazové triggerů se prolíná –na rozdíl od Oracle (pořadí typů triggerů určeno)‏ –umožňují akce řádkových triggerů, které mají více příkazů

33 Sémantika DB2 triggerů - detaily algoritmus pro situaci „příkaz P v akci A způsobí událost U“ Pozastav akci A, ulož její kontext Spočti hodnoty NEW a OLD vzhledem k události U Proveď všecny before-triggery pro událost U (mohou měnit NEW)‏ Propaguj obsah NEW do databáze, stav DB odpovídá stavu po události U Proveď všechny after-triggery pro událost U. Obsahují-li akci B která aktivuje jiný trigger, volej rekurzivně tuto proceduju pro akci B. Vyzvedni akci A ze zásobníku a pokračuj

34 Sémantika DB2 triggerů – ošetření chyb chybu způsobí příkaz –měl teprve trigger spustit –odroluje se do stavu před prováděním příkazu chyba při propagaci NEW do databáze –bod 4 předchozího algoritmu poruší referenční omezení integritní omezení omezení pohledů –nastává řada kompenzačních akcí např. nastavení hodnoty na NULL mohou vyvolat další řadu triggerů

35 Sémantika DB2 triggerů – ošetření chyb chyba při propagaci NEW do databáze –Aplikuj hodnoty NEW. Pro každé porušené integritní omezení naplánuj kompenzační akci A i, která je napraví –spočti hodnoty OLD a NEW relativně k akci A i –spusť before-triggery relativně k akci A i (možná změna NEW)‏ –propaguje nové hodnoty NEW do databáze –vlož všechny after-triggery do fronty uspaných triggerů

36 DB2 triggery – poznámka Podobné propojení kontroly integrity a spouštění triggerů bylo prosazeno do standardu SQL3 

Chimera

38 Chimera - terminologie objektově orientovaný jazyk třídy (object class)‏ –základ definice dat atributy třídy –určují jeho stav –definovány konstruktory record set list třídy hierarchicky uspořádány triggery jsou určovány pro třídu (targetted triggers)‏

39 Chimera – příklady objektů define object class Zamestnanec attributes Jméno: string, Plat: integer end; define object class Oddelení attributes Jméno: string, Zamestnanci: set-of(Zamestnanec)‏ end;

40 Chimera – deklarativní výrazy atomické termy –proměnné, konstanty –X (proměnná), 5 (konstanta)‏ složené termy –z atomických pomocí konstruktorů, –za pomocí funkcí Chimery (selektory, operátory, atributy)‏ –X.jméno, set-of(Zaměstnanec)‏

41 Chimera – deklarativní výrazy atomické formule –predikátový symbol a seznam parametrů –integer(X) zavádí proměnnou typu integer –X.jméno=‘John’ porovnání složené formule –konjunkce a disjunkce atomických formulí –Zaměstnanec(X), Oddělení(Y)‏ –Y.jméno=hračky, not(X in Y.Zaměstnanci)‏

42 Chimera – procedurální výrazy create()‏ –create(Zaměstnanci, ['John', 4000])‏ select()‏ –select(X where Zaměstnanci(X),X.jméno='John')‏ delete()‏ –delete(Zaměstnanci, X)‏ modify()‏ –modify(Zaměstnanci.plat, X, X.plat * 1.01)‏

43 Chimera – triggery nejmenší jednotky, kterých se může trigger zachytit jsou transakční řádky (transaction lines)‏ –zřetězení procedurálních výrazů do řádek –oddělena čárkou, ukončena středníkem –platnost proměnných je v rámci jedné řádky

44 Chimera – syntaxe triggerů define trigger [ for ] events condition actions [ { before | after } ] end

45 Chimera – syntaxe triggerů volba –consumption-opt event-consuming event-preserving –execution-opt deferred immediate –standardně nastaveno deferred a consuming události –create, display, modify, deisplay, generalize, specialize

46 Chimera – sémantika triggerů odložené (deffered) triggery –volány příkazy commit nebo savepoint –okamžité triggery spuštěné akcí odloženého triggeru se zařadí do fronty s odloženými triggery okamžité (immediate) triggery –volány po dokončení transakční řádky pořadí –before a after určují částečné uspořádání –úplné uspořádání určeno systémem čas vytvoření triggeru

47 Chimera – sémantika více triggerů množina spuštěných triggerů –stejně jako u Starburstu výběr z množiny DOKUD je množina spuštěných neprázdná { vyber jeden trigger nejvyšší v pořadí POKUD je podmínka splněna { vykonej akci triggeru }

Triggery v SQL Server

49 SQL Server, triggery DML triggery –kontrola složitých omezení na data –dodatečná validace dat –změny v jiné tabulce –automatické zaznamenávání auditovatelných událostí DDL triggery –jako datový trigger, ale na systémových tabulkách –zejména jako prevence a záznam změn ve struktuře databáze –audity, bezpečnostní management např. salámový útok změnami uložených procedur

50 Syntaxe DML triggerů CREATE TRIGGER jméno_triggeru ON {table|view} [WITH ENCRYPTION] { {{FOR {AFTER|INSTEAD OF} {[INSERT] [,] [UPDATE] [,] [DELETE]} AS [{IF [UPDATE (sloupec) [{AND|OR} UPDATE (sloupec)] ] ] COLUMNS_UPDATE()] sql_kód}}

51 Sémantika DML triggerů AFTER trigger –událost (provede se)  INSTEAD OF triggery  omezení dat (constraints)  AFTER trigger spustí –nelze použít na kontrolu vkládaných dat! INSTEAD OF trigger –událost (neprovede se)  akce INSTEAD OF triggeru  omezení dat OK – akce AFTER triggeru KO – INSTEAD OF akce je odrolována  AFTER trigger se neprovede

52 Sémantika DML triggerů INSTEAD OF trigger na tabulce –nespouští se rekurzivně (došlo by k vyvolání stejného triggeru)‏ –akce triggeru se provede jako by tabulka již tento trigger neměla –následuje opět ošetření dat a vykonání AFTER triggerů INSTEAD OF trigger na pohledu –opět není rekurzivní –akce triggeru je vztažena k základním tabulkám pod pohledem INSTEAD OF trigger přínosy –umožňuje upravovatelné (updatable) pohledy –hodí se na správu pohledů vytvořených z více tabulek –umožní úspěch dávky příkazů při zamítnutí části dávky

53 Sémantika DML triggerů granularita sledování změn –na úrovni příkazů –neexistuje řádková alternativa triggerů –při změně více řádků mají logické tabulky také více řádků vnoření triggerů –nastaveno na maximální hloubku 32 triggerů

54 Sémantika DML triggerů přechodové hodnoty –uloženy v logických systémových tabulkách INSERTED a DELETED –změna (update) hodnot je implicitní –trigger na tabulce logické tabulky mají stejnou strukturu jako tabulka na níž byl trigger definovaný –trigger na pohledu logické hodnoty mají strukturu seznamu sloupců v příkazu SELECT definovaném na pohledu

55 Sémantika DML triggerů - rekurze nepřímá rekurze –T1 spustí TR1, upraví T2, spustí TR2, upraví T1… omezeno maximální hloubkou zanoření vypnutí - lze nastavit hloubka zanoření na 0 přímá rekurze –T1 spustí TR1, změní T1, spustí TR1… pouze při zapnutém RECURSIVE_TRIGGERS nastavení

56 DDL triggery reagují na události spojené se správou databáze –trigger může příslušet jedné nebo více akcím –příklady událostí: CREATE_TABLE DROP_VIEW CREATE_SYNONYM CREATE_FUNCTION ALTER_FUNCTION CREATE_PROCEDURE DROP_PROCEDURE DROP_TRIGGER CREATE_EVENT_NOTIFICATION DROP_EVENT_NOTIFICATION ALTER_INDEX …….. (je jich opravdu hodně)‏

57 DDL triggery serverové události je možné zachytit také CREATE_LOGIN ALTER_LOGIN DROP_LOGIN CREATE_HTTP_ENDPOINT DROP_HTTP_ENDPOINT GRANT_SERVER_ACCESS DENY_SERVER_ACCESS REVOKE_SERVER_ACCESS CREATE_CERT ALTER_CERT DROP_CERT (to jsou všechny)‏ –pozn.: není možné vytvořit trigger aktivní při serverové i databázové události

58 syntaxe DDL triggerů CREATE TRIGGER jméno_triggeru ON {ALL SERVER|DATABASE} [WITH ENCRYPTION] { {{FOR |AFTER } {typ_události,…} AS sql_kód}}

59 DDL triggery k dispozici nejsou logické tabulky –nelze využít hodnot v INSERTED a DELETED lze použít funkci EVENTDATA()‏ –vrací XML datový typ –obsah závisí na typu události

60 příklad XML dokumentu pro událost na databázové úrovni datum_a_čas SQLServer_proces_ID name jméno

Taxonomie konceptů aktivních databází

62 Základní pojmy události (events)‏ –změna stavu databáze –časové události –externí, definované aplikací podmínky (conditions)‏ –databázový predikát –databázový dotaz akce (actions)‏ –libovolná manipulace s daty transakční příkazy pravidla zpracování externí procedury

63 Vyhodnocení triggeru okamžité (immediate)‏ –před událostí –po událost –namísto události odložené (deferred)‏ –na konci transakce (odstartované příkazem COMMIT WORK)‏ –po uživatelském příkazu –následkem uživatelského příkazu (např. PROCESS RULES)‏ oddělené (detached)‏ –v kontextu samostatné transakce vypuštěné z počáteční transakce poté, co nastala událost možné kauzální závislosti počáteční a oddělené transakce

64 Vykonání akce okamžité (immediate)‏ –následuje ihned po vyhodnocení podmínky odložené (deferred)‏ –akce je odsunuta na konec transakce –akci vyvolá uživatelský příkaz oddělené (detached)‏ –probíhá v kontextu samostatné transakce vypuštěné z počáteční transakce ihned po vyhodnocení podmínky možné kauzální závislosti počáteční a oddělené transakce

65 Úroveň granularity sledování změn na úrovni instancí (instance level)‏ –událostí je změna řádku tabulky –nebo změna jednotlivých objektů v třídách (v případě objektově orientovaných databází)‏ –přechodové hodnoty postihují pouze jednu n-tici nebo objekt proměnné OLD a NEW na úrovni příkazů (statment level)‏ –událostí je příkaz provádějící manipulaci s daty –přechodové hodnoty jsou společné shromážděné v tabulkách INSERTED a DELETED explicitní změna dat – tabulky OLD-UPDATED a NEW-UPDATED implicitní změna dat – tabulky DELETED a INSERTED

66 Aktivace více triggerů konfliktní množina (conflict set)‏ –skupina aktivních pravidel, která mohou být aktivována současně –je zapotřebí metoda, která určí pořadí v konfliktní množině výběr dalšího pravidla –po každém vyhodnocení podmínky a případném vykonání příkazů nějakého triggeru –seznam všech aktivovaných triggerů a provádí se jeden po druhém

67 Výběr triggeru z konfliktní množiny Priority úplné uspořádání –pravidlo je svázáno s číselnou prioritou částečné uspořádání –pravidla obsahují číselnou nebo relativní prioritu –soulad úplného systémového uspořádání a uživatelsky definované priority udržuje systém nedeterministický výběr z nejvyšších priorit bez priorit –systémově definované úplné uspořádání –nedeterminismus u všech pravidel

68 Další vlastnosti triggerů opakovatelnost –transakce1 = transakce2  výsledek1 = výsledek2 –stejná posloupnost vykonávaných příkazů aktivovace a dektivovace –velmi nebezpečné kvůli integritě databáze –jsou součástí autorizační politiky databáze změny provádí administrátor nebo pověřený uživatel (např. explicitním GRANT PRIVILEGE)‏ seskupování

69 Odkazy a literatura informativi/allegati/23-triggers_in_sql_server.pdfhttp:// informativi/allegati/23-triggers_in_sql_server.pdf fall/notes/sql.htmlhttp:// fall/notes/sql.html