Adatbzis rendszerek II Aktv adatbzisok TPCA rszlet GYFLSZMLA
Adatbázis rendszerek II Aktív adatbázisok
TPC-A részlet ÜGYFÉLSZÁMLA ukod név részleg összeg BANKRÉSZLEG bkod cím r_összeg AUTOMATA cím a_összeg NAPLÓ időpont ukod d_összeg mozgás
Működési feltételek: - minden objektum egyértelműen azonosítható legyen - r_összeg = ügyfel in részleg összeg - a legkisebb felvehető összeg 100 - minden mozgás jelenjen meg a naplóban - objektumok kapcsolata ábrázolható legyen - minden tranzakció fusson le 2 sec-on belül - a napló adatok nem törölhetők Mit hogyan valósíthatunk meg?
DBMS Adat tárolás Statikus integritási feltételek alkalmazás Működési logika Dinamikus int. feltételek felhasználói környezet Működési szabályok Cél : a feltételek mind nagyobb hányadát a DBMS-be integrálni DBMS alkalmazás felhasználói környezet
Számos alkalmazásnál előfordulnak ismétlődő, jól definiálható esetekben bekövetkező események alkalmazások több feladat + passzív DBMS Aktív DBMS modul aktív DBMS DB KL
Aktív elemek az adatbázis kezelőknél Szabály: a DBMS aktív viselkedésének megadási módja szabály kiváltó esemény válasz tevékenység feltétel UPDATE dolgozo SET fiz = 34; UPDATE dolgozo SET kat = 2; fiz > 30 KL
Active Database Management Manifesto (1996) Re-active vagy pre-active működés? ECA működési modell (Event-Condition-Action) Működési lépések: Det. Sign. események detektálása szabály aktiválások elindítása feltételek kiértékelése válaszok aktiválása válaszok ütemezése válaszok végrehajtása Trig. Eval. Sche. Exec.
Aktív elemek az adatbázis kezelőknél Aktív elemek megvalósítása szabály definíciós nyelv szabály vezérlő DBMS szabály végrehajtó SQL motor szabályok DB KL
Active Database Management Manifesto Kritériumok - A normál DBMS tulajdonságokat meg kell őrizni - ECA elven működjön, de lehet EA és CA típusú is - különböző eseménytípusokat lehessen definiálni - elemi vagy összetett - időbeliség jelzése - feltételeket lehessen definiálni - választevékenységeket lehessen definiálni - szabály menedzselő modult tartalmazzon (változások, felfüggesztések, lekérdezések, . . . ) - események automatikus detektálása - különböző szintekhez köthetőek legyenek az események (set vagy instance)
Active Database Management Manifesto Kritériumok (folyt. ) - Különböző E-C-A kapcsolódási módokat támogasson (közvetlen, késleltetett, szétcsatolt) - Összetett események kezelése (net-effect számítás) - Esemény naplózás biztosítása - Konfliktus kezelő mechanizmussal rendelkezzen (prioritás, állapot, . . ) - Rendelkezzen programozási környezettel (rule browser, designer, analyser, debugger, . . ) - Legyen hangolható, optimalizálható
Szabályok feldolgozása alkalmazás SQL …. DBMS aktiv DB modul SQL …. aktiv DB modul alkalmazás aktiv DB SQL …. modul különálló modul DBMS-be épített DBMS alkalmazásba épített KL
Szabályok feldolgozása Aktív DB modul struktúrája SQL szabály vezérlő értelmező aktív SQL feltétel ellenőrző kód generáló parancs végrehajtó szabály katalógus KL
ECA modell ON esemény IF feltétel DO tevékenység Esemény paraméterei - esemény forrása szemcsézettség típus összetétel képzési operátorok feldolgozási, ütemezési elv jelleg a(x 1, x 2, …)
Esemény forrása: - adatkezelő utasítások - adatlekérdező utasítások - időfigyelés - alkalmazás specifikus - tranzakció kezelés - kivételek UPDATE dolgozo SET. . . SELECT fiz FROM. . . Time() > {12: 00} messagebox (23) ROLLBACK raise(51) Esemény szemcsézettsége - egyed, rekord szintű - halmaz, tábla szintű UPDATE dolgozo SET. . WHERE fiz > 100000 DELETE FROM dolgozo KL
Esemény típusa - elemi - összetett UPDATE dolgozo SET. . WHERE fiz > 100000 Sequence( DELETE FROM dolgozo, Összetett események, operátorok: INSERT INTO nyugdijas first, reduction, negation, last, . . ) disjunction, conjuction, sequence, . . after, before, between, . . Esemény jellege ECA - kötelező - opcionális - nem megengedett ECA vagy CA CA
Feldolgozás ütemezése - legaktuálisabb - időbeli sorrend - folytonos - egyesítő sequence (E 1, E 2) e 1 – e 1’ – e 2 (e 1’, e 2) (e 1, e 2) (e 1’, e 2) ((e 1, e 1’), e 2) a(x 1, x 2, …) kb. 300 esemény mód
ECA modell ON esemény IF feltétel DO tevékenység Feltétel paraméterei - jellege - kiértékelési mód Tevékenység paraméterei - végrehajtási mód szemcsézettség összhatás ciklikusság ütemezés hibakezelés
Feltétel jellege ECA vagy EA - opcionális - nem megengedett Feltétel kiértékelési mód - közvetlen - tranzakción belül késleltetett - más tranzakcióba elkülönített EA e 1 – c 1 - e 2 – c 2 - co e 1 – e 2 - … - c 1 – c 2 - co e 1 – e 2 - co -… - e 3 – c 1 - co
Válasz célhelye: - adatkezelő utasítások - adatlekérdező utasítások - alkalmazás specifikus - tranzakció kezelés UPDATE dolgozo SET. . . SELECT fiz FROM. . . messagebox (23) ROLLBACK Válasz csatlakozási módja: - közvetlen - tranzakción belül késleltetett - más tranzakcióba elkülönített - helyettesítő e 1 – a 1 - e 2 – a 2 - co e 1 – e 2 - … - a 1 – a 2 - co e 1 – e 2 - co -… - e 3 – a 1 - co a
Válasz szemcsézettsége: - rekord (1: 1) - halmaz (N: 1) e 1 – a 1 - e 2 – a 2 e 1 – e 1 - e 3 – a 1 - Válasz összhatása: - egyedi - összevont e 1 – a 1 - e 2 – a 2 (e 1 – e 1 - e 3)= e 4 – a 4 - Válasz egymásrahatása: - iteratív - rekurzív e 1 – a 1 - e 2 – a 1 -
Válaszok ütemezése: - prioritás - időbélyeg - véletlen CA modell +: állapot orientált megközelítés kevesebb programozói feladat -: bonyolultabb kezelés költségesebb e 1 – a 1 - e 2 – a 2 (e 1 – e 1 - e 3)= e 4 – a 4 -
Aktív elemek az adatbázis kezelőknél Választevékenység megadása: - SQL - beágyazott SQL DBMS saját programozási nyelv SQL + procedurális elemek Tárolt eljárások Szabályok PL/SQL - korlátozott nyelv - szoros kapcsolat a DB-vel KL
PL/SQL nyelv A PL/SQL végrehajtási egysége a blokk DECLARE deklarációs rész BEGIN műveleti, törzs rész EXCEPTION hibakezelő rész nincs név, más objektumokba foglalt változók megadása vezérlési és SQL utasítások fellépő hibák lekezelése END; blokk KL
PL/SQL nyelv A deklarációs rész felépítése adattípus kezdőérték DECLARE nev CHAR(10); kor NUMBER(5, 1) : = 12; tip konstans érték CONSTANT CHAR(2) : = ‘AL’; ig EMBER. IGSZ%TYPE; auto AUTO%ROWTYPE; változó neve DB tábla megadott mezőjének típusát veszi fel rekord típus, DB tábla rekordtípusát veszi fel KL
PL/SQL nyelv A törzs rész felépítése értékadás BEGIN nev : = ‘mars’; IF x > 4 THEN. . ELSE. . END IF; UPDATE auto SET ar = x WHERE …; SELECT ar, ig, . . INTO x, y. . FROM. . feltételes végrehajtás SQL parancsok gazdanyelvi változó Egy rekord lekérdezése gazdanyelvi változóba KL
PL/SQL nyelv A törzs rész felépítése alapciklus BEGIN LOOP. . EXIT [WHEN felt]; END LOOP; WHILE x < 2 LOOP. . END LOOP; FOR x IN [REVERSE] … LOOP. . END LOOP; kilépés [feltétel esetén] feltételes ciklus léptetéses ciklus Egy halmaz elemeire KL
PL/SQL nyelv Kurzor szerkezet, több rekord beolvasása a DB-ből DECLARE CURSOR cnev(param) IS SELECT. . ; BEGIN OPEN cnev(aparam); LOOP FETCH cnev INTO vlista; EXIT WHEN cnev%NOTFOUND; END LOOP; CLOSE cnev; DBMS kurzor deklaráció, paraméterrel nyitás rekord olvasás kilépés a ciklusból lezárás PL/SQL blokk KL
PL/SQL nyelv Hibakezelés DECLARE hnev EXCEPTION; BEGIN RAISE hnev ; EXCEPTION WHEN hiba THEN …. . WHEN OTHERS THEN …. saját hibakód deklarálás hiba explicit generálása hiba azonosítása hibakezelő rutin egyéb hibák kezelése KL
Triggerek trigger DB művelet DML DQL DB művelet PL/SQL blokk feltétel BEFORE ROW AFTER ROW UPDATE …. AFTER KL
Triggerek CREATE TRIGGER tnev AFTER | BEFORE Insert or Update or Delete ON tábla FOR EACH ROW WHEN feltétel BEGIN PL/SQL END; : OLD : NEW ROW szintű rekordnál el lehet érni az érintett rekordot CREATE TRIGGER t 1 AFTER UPDATE ON d FOR EACH ROW BEGIN : NEW. mezo = : OLD. mezo; END; KL
Tárolt eljárás CREATE PROCEDURE pnev (p 1 IN | OUT tipus, …) IS BEGIN …. END; CREATE FUNCTION pnev (p 1 IN | OUT tipus, …) RETURN tip IS BEGIN …. END; DB PL/SQL KL
Munkaköteg JOB: időponthoz kötött indulású tárolt eljárások DB 12 9 3 6 PL/SQL DBMS_JOB. SUBMIT DBMS_JOB. RUN DBMS_JOB. NEXT_DATE … átadás a várakozósorba futtatás következő indulás ideje KL
Riasztás ALERT : alkalmazásokhoz kötött szinkronizációs eszköz alkalmazás 1 alkalmazás 2 feliratkozás várakozás riasztás értesülés, tovább futás DBMS_ALERT. REGISTER DBMS_ALERT. SIGNAL DBMS_ALERT. WAITONE … KL
Szabályok feldolgozása Kijelölési háló: a szabályok által érintett objektumok dinamikus nyilvántartási gráfja Elemei: gyökér csomópont select csomópont alfa-csomópont P csomópont A változás hatását vezeti végig a gráfon szelekció egy táblára eredmény join eredmény KL
Szabályok feldolgozása when dogozo. kor > 30 and uzem. lsz < 20 and gyar. varos = Dorog and uzem. kod = dolgozo. uzem and gyar. kod = uzem. gyar dolgozo kor > 30 uzem lsz < 20 gyar varos = Dorog szelektált dolgozók szelektált üzemek szelektált gyárak uzem. kod = dolgozo. uzem gyar. kod = uzem. gyar KL
Szabályok feldolgozása Aktualizálás algoritmusa INSERT INTO DOLGOZO VALUES (…); dolgozo kor > 30 uzem lsz < 20 gyar varos = Dorog szelektált üzemek szelektált gyárak + szelektált dolgozók + uzem. kod = dolgozo. uzem + gyar. kod = uzem. gyar KL
Szabályok feldolgozása Parancsátírási módszer: a bejövő SQL parancs módosítása az aktív szabályoknak megfelelően SQL …. aktiv DB modul szabály katalógus kód generáló módosított SQL …. feldolgozás lépései: - SQL felbontása érintett és nem érintett részek uniójára - új kifejezés meghatározása - az érintett rész helyettesítése a join művelettel KL
Szabályok feldolgozása SELECT fiz, nev FROM dolgozo WHERE kor < 23 aktiv DB modul ON SELECT fiz FROM Dolgozo WHERE nev =P DO INSTEAD SELECT 3*fiz FROM Dolgozo WHERE nev=L SELECT fiz, nev FROM dolgozo WHERE kor < 23 AND nev<>P UNION SELECT fiz, nev FROM dolgozo WHERE kor < 23 AND nev=P SELECT …. . UNION SELECT 3*b. fiz, a. nev FROM dolgozo a, dolgozo b WHERE a. kor < 23 AND a. nev=P AND b. nev = L A join több problémát is jelenthet (NULL, többszörözés, . . ) KL
- Slides: 38