Tranzakció fogalmak
Tranzakció
\[
D\xRightarrow{T} D'
\]
Konzisztenciát megtartó adatkezelő műveletek sorozata
- Feltehetjük, hogy ha egy
Ttranzakció- Konzisztens állapotból indul
- Egymagában lefut
- Konzisztens állapotban hagyja DB-t amikor kész
ACID
EA újra átveszi, akinek kell, nosztalgiázzon egy kört az ACID tranzakciókkal 😉
Konzisztencia
Az adatok előre megadott predikátumoknak (megkötéseknek) megfelelése
Ilyenek az indexek, sor és globális megszorítások, indexek és/vagy funkcionális függések is...
Például
XazRreláció egy kulcsaX\(\to\)Rfüggőség teljesülR-benXértéke korlátozott- pl.: \(\text{dom}_X =\{\red{\text{piros}},\green{\text{zöld}},\blue{\text{kék}}\}\)
- ea notation:
Domain(x)
- ea notation:
- pl.: \(\text{dom}_X =\{\red{\text{piros}},\green{\text{zöld}},\blue{\text{kék}}\}\)
- \(alpha\) indexfájl az
RrelációXattribútumának érvényes indexe - "Semelyik dolgozó sem kereshet többet, mint az átlagfizetés duplája"
Konzisztens állapot
Megfelel minden megszorításnak
Konzisztens adatbázis
Az adatbázis konzisztens állapotú
Általánosabb megszorítások
Tranzakciós megszorítások
- pl.: módosítással csak magasabb lehet a fizetés, alacsonyabb nem
- Állapotból nem lehet megállapítani, mert az előző állapotot nem tároljuk el
Tranzakciós megszorítások hiányossága
- Az adatbázis valódi jelenségeket próbál reprezentálni, de sosem lesz tökéletes
- Az adatbázis nem lehet állandóan konzisztens
pl.:
ÖSSZEG\(= a_1 + a_2 + \cdots + a_n\) - Megszorítás
- \(a_2 := a_2 + 100\)
- inkonzisztens állapot itt még
ÖSSZEG := ÖSSZEG + 100
Helyesség feltétele
- Ha leáll egy vagy több tranzakció (abort vagy hiba miatt)
- Konzisztens
Dkiindulási állapotot kell előállítani - Minden tranzakció induláskor konzisztens
Dadatbázist lát
Tranzakció - tulajdonságok
- A lekérdezéseket és bármi más tevékenységet tranzakcióba csoportosítjuk
- A konzisztenciát mindig adottnak tekintjük
- A többi tulajdonságról a DBMS.nek kell gondoskodnia, ettől ea eltekint időnként
- Egy-egy ad hoc utasítás, ami csak kiadunk a rendszernek, azokat per utasítás egy-egy tranzakcióként kezeli
- Amenyiben a beágyazott SQL-interfészen keresztül a feljelsző maga nyit egy tranzakciót, akkor abba már több utasítás is adható
- Jellemzően egy DML utasítással kezdődik és
COMMITvagyROLLBACKutasítással ér véget - Ha a tranzakcióban egy utasítás triggert vált ki, az is a tranzakció részének tekintendő
- és a trigger által kiváltott további triggerek
- Jellemzően egy DML utasítással kezdődik és