Kihagyás

Tranzakció fogalmak

Tranzakció

\[ D\xRightarrow{T} D' \]

Konzisztenciát megtartó adatkezelő műveletek sorozata

  • Feltehetjük, hogy ha egy T tranzakció

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

  • X az R reláció egy kulcsa
  • X \(\to\) R függőség teljesül R-ben
  • X értéke korlátozott
    • pl.: \(\text{dom}_X =\{\red{\text{piros}},\green{\text{zöld}},\blue{\text{kék}}\}\)
      • ea notation: Domain(x)
  • \(alpha\) indexfájl az R reláció X attribú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 D kiindulási állapotot kell előállítani
  • Minden tranzakció induláskor konzisztens D adatbá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 COMMIT vagy ROLLBACK utasí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