adatbázis rendszerek ii
DESCRIPTION
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 - PowerPoint PPT PresentationTRANSCRIPT
Adatbázis rendszerek II
Aktív adatbázisok
ÜGYFÉLSZÁMLA
ukod név részleg összeg
BANKRÉSZLEG
bkod cím r_összeg
NAPLÓ
időpont ukod d_összeg mozgás
TPC-A részlet
cím a_összeg
AUTOMATA
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 alkalmazás
Adat tárolásStatikus integritásifeltételek
felhasználóikörnyezet
Működési logikaDinamikus int.feltételek
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óikörnyezet
KL
DB
passzív DBMS aktív DBMS
alkalmazások
több feladat
+
AktívDBMSmodul
Számos alkalmazásnál előfordulnak ismétlődő, jól definiálhatóesetekben bekövetkező események
Aktív elemek az adatbázis kezelőknél
KL
Szabály: a DBMS aktív viselkedésének megadási módja
kiváltó esemény
szabály
válasz tevékenység
feltétel
UPDATE dolgozo SET fiz = 34;
fiz > 30
UPDATE dolgozo SET kat = 2;
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: események detektálásaszabály aktiválások elindítása feltételek kiértékeléseválaszok aktiválásaválaszok ütemezéseválaszok végrehajtása
Det. Sign. Trig. Eval. Sche. Exec.
Aktív elemek az adatbázis kezelőknél
KL
Aktív elemek megvalósítása
DBMS
DBszabályok
szabálydefiníciósnyelv
szabály vezérlő
szabály végrehajtó
SQL motor
SQL
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ó
KL
Szabályok feldolgozása
DBMSaktiv DBmodul SQL ….
különálló modulalkalmazásSQL ….
DBMSaktiv DBmodul
DBMS-be építettalkalmazásSQL ….
DBMSaktiv DBmodul
SQL ….alkalmazásba épített
alkalmazás
KL
Szabályok feldolgozása
Aktív DB modul struktúrája
értelmező
szabályvezérlő
aktív SQL
feltételellenőrző
kódgeneráló
parancsvégrehajtó
szabálykatalógus
SQL
ON esemény IF feltétel DO tevékenység
ECA modell
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(x1,x2,…)
KL
- 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)
Esemény forrása:
ROLLBACK
raise(51)
Esemény szemcsézettsége
- egyed, rekord szintű- halmaz, tábla szintű
UPDATE dolgozo SET ..WHERE fiz > 100000
DELETE FROM dolgozo
Összetett események, operátorok:
first, reduction, negation, last, ..disjunction, conjuction, sequence, ..after, before, between, ..
Esemény típusa
- elemi- összetett
UPDATE dolgozo SET ..WHERE fiz > 100000
Sequence( DELETE FROM dolgozo, INSERT INTO nyugdijas)
Esemény jellege
- kötelező- opcionális- nem megengedett
ECA
ECA vagy CA
CA
Feldolgozás ütemezése
- legaktuálisabb- időbeli sorrend- folytonos- egyesítő
(e1’,e2)
sequence (E1, E2)e1 – e1’ – e2
(e1,e2)
(e1,e2) (e1’,e2)
((e1,e1’),e2)
a(x1,x2,…)kb. 300 esemény mód
ON esemény IF feltétel DO tevékenység
ECA modell
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
- opcionális- nem megengedett
ECA vagy EA
EA
Feltétel kiértékelési mód
- közvetlen- tranzakción belül késleltetett- más tranzakcióba elkülönített
e1 – c1- e2 – c2 - co
e1 – e2- … - c1 – c2 - co
e1 – e2- co -… - e3 – c1 - co
- adatkezelő utasítások - adatlekérdező utasítások - alkalmazás specifikus - tranzakció kezelés
UPDATE dolgozo SET ...
SELECT fiz FROM ...
messagebox (23)
Válasz célhelye:
ROLLBACK
- közvetlen- tranzakción belül késleltetett- más tranzakcióba elkülönített- helyettesítő
Válasz csatlakozási módja:e1 – a1- e2 – a2 - co
e1 – e2- … - a1 – a2 - co
e1 – e2- co -… - e3 – a1 - co
a
- rekord (1:1) - halmaz (N:1)
e1 – a1- e2 – a2 -Válasz szemcsézettsége:
e1 – e1- e3 – a1 -
- egyedi - összevont
e1 – a1- e2 – a2 -Válasz összhatása:
(e1 – e1- e3)= e4 – a4 -
- iteratív - rekurzív
e1 – a1- e2 – a2 -Válasz egymásrahatása:
e1 – a1- e2 – a 2 – a1 -
- prioritás - időbélyeg - véletlen
e1 – a1- e2 – a2 -Válaszok ütemezése:
(e1 – e1- e3)= e4 – a4 -
CA modell
+: állapot orientált megközelítés kevesebb programozói feladat
-: bonyolultabb kezelés költségesebb
Aktív elemek az adatbázis kezelőknél
KL
Választevékenység megadása: - SQL- beágyazott SQL
DBMS
Tárolt eljárásokSzabályok
SQL +procedurális elemek
PL/SQL
- korlátozott nyelv - szoros kapcsolat a DB-vel
saját programozási nyelv
PL/SQL nyelv
KL
A PL/SQL végrehajtási egysége a blokk
blokkEND;
DECLAREdeklarációs rész
BEGINműveleti, törzs rész
EXCEPTIONhibakezelő rész
változók megadása
vezérlési és SQL utasítások
fellépő hibáklekezelése
nincs név, más objektumokba foglalt
KLKL
PL/SQL nyelv
DECLARE nev CHAR(10); kor NUMBER(5,1) := 12; tip CONSTANT CHAR(2) := ‘AL’;
ig EMBER.IGSZ%TYPE; auto AUTO%ROWTYPE;
A deklarációs rész felépítése
változó neve
adattípus
kezdőérték
konstans érték
DB tábla megadottmezőjének típusát veszi fel
rekord típus, DB táblarekordtípusát veszi fel
KLKL
PL/SQL nyelv
BEGIN nev := ‘mars’; IF x > 4 THEN
.. ELSE
.. END IF;
UPDATE auto SET ar = x WHERE …;
SELECT ar,ig,.. INTO x, y.. FROM ..
A törzs rész felépítése értékadás
feltételes végrehajtás
gazdanyelvi változó
SQL parancsok
Egy rekord lekérdezése gazdanyelviváltozóba
KLKL
PL/SQL nyelv
BEGIN LOOP ..
EXIT [WHEN felt]; END LOOP; WHILE x < 2 LOOP
.. END LOOP;
FOR x IN [REVERSE] … LOOP..
END LOOP;
A törzs rész felépítése alapciklus
kilépés [feltétel esetén]
feltételes ciklus
léptetéses ciklusEgy halmaz elemeire
KLKL
PL/SQL nyelvKurzor szerkezet, több rekord beolvasása a DB-ből
DBMSPL/SQL
blokkkurzor
DECLARE CURSOR cnev(param) IS SELECT ..;BEGIN OPEN cnev(aparam); LOOP FETCH cnev INTO vlista; EXIT WHEN cnev%NOTFOUND; END LOOP; CLOSE cnev;
deklaráció,paraméterrel
nyitásrekord olvasás
kilépés a ciklusbóllezárás
KLKL
PL/SQL nyelv
Hibakezelés
EXCEPTIONWHEN hiba THEN …..
WHEN OTHERS THEN ….
hibakezelő rutin
hiba azonosítása
egyéb hibák kezelése
BEGIN RAISE hnev ;
DECLARE hnev EXCEPTION;
saját hibakód deklarálás
hiba explicit generálása
KL
Triggerek
DB műveletDMLDQL
trigger
DB műveletPL/SQL blokk
feltétel
UPDATE ….
BEFORE
AFTER
BEFORE ROW
AFTER ROW
KL
CREATE TRIGGER tnev AFTER | BEFORE Insert or Update orDelete ON tábla FOR EACH ROW WHEN feltétel BEGIN PL/SQL END;
Triggerek
:OLD :NEW
ROW szintű rekordnál el lehet érni az érintett rekordot
CREATE TRIGGER t1 AFTER UPDATE ON d FOR EACH ROWBEGIN :NEW.mezo = :OLD.mezo;END;
KL
Tárolt eljárás
CREATE PROCEDURE pnev (p1 IN | OUT tipus,…) ISBEGIN ….END;CREATE FUNCTION pnev (p1 IN | OUT tipus,…) RETURN tip ISBEGIN ….END;
PL/SQL
DB
KL
JOB: időponthoz kötött indulású tárolt eljárások
Munkaköteg
PL/SQL
DB12
6
39
DBMS_JOB.SUBMIT átadás a várakozósorbaDBMS_JOB.RUN futtatásDBMS_JOB.NEXT_DATE következő indulás ideje…
KL
ALERT : alkalmazásokhoz kötött szinkronizációs eszköz
Riasztás
DBMS
alkalmazás1 alkalmazás2feliratkozásvárakozás
riasztás értesülés,tovább futás
DBMS_ALERT.REGISTERDBMS_ALERT.SIGNALDBMS_ALERT.WAITONE…
KL
Szabályok feldolgozása
Kijelölési háló: a szabályok által érintett objektumok dinamikusnyilvántartási gráfja
Elemei: gyökér csomópont select csomópont alfa-csomópont P csomópont
szelekció egy táblára
eredmény
join eredményA változás hatását
vezeti végig a gráfon
KL
Szabályok feldolgozása
dolgozokor > 30
szelektáltdolgozók
szelektáltüzemek
uzem.kod =dolgozo.uzem
uzemlsz < 20
gyarvaros = Dorog
when dogozo.kor > 30 anduzem.lsz < 20 and gyar.varos = Dorog anduzem.kod = dolgozo.uzem andgyar.kod = uzem.gyar
szelektáltgyárak
gyar.kod =uzem.gyar
KL
Szabályok feldolgozása
szelektáltdolgozók
szelektáltüzemek
uzem.kod =dolgozo.uzem
uzemlsz < 20
gyarvaros = Dorog
INSERT INTO DOLGOZOVALUES (…);
szelektáltgyárak
gyar.kod =uzem.gyar
dolgozokor > 30
+
++
Aktualizálás algoritmusa
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
modulkód
generáló
szabálykatalógus
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
ON SELECT fiz FROMDolgozo WHERE nev =P
DO INSTEADSELECT 3*fiz FROM
Dolgozo WHERE nev=L
aktiv DBmodul
SELECT fiz, nev FROM dolgozo WHERE kor < 23
SELECT fiz,nev FROM dolgozo WHERE kor < 23 AND nev<>PUNIONSELECT fiz,nev FROM dolgozo WHERE kor < 23 AND nev=P
SELECT ….. UNIONSELECT 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,..)