Toggle menu
Toggle preferences menu
Toggle personal menu
Neprihlásený/á
Your IP address will be publicly visible if you make any edits.
Verzia z 18:37, 4. január 2025, ktorú vytvoril SKevo (diskusia | príspevky) (Vytvorená stránka „Vlastnosti a príkazy transakcie, princíp ACID, konzistentný stav databázy. {{Pojmová mapa}} == Transakcie == Transakcie sú skupiny operácií, ktoré sa vykonávajú ako jednotka. Buď sa všetky vykonajú úspešne ('''commit'''), alebo sa v prípade chyby vráti databáza do pôvodného stavu ('''rollback'''). Tieto príkazy zaisťujú konzistenciu a integritu dát v databázach. === Základné príkazy === ==== Write (zápis) ==== Skupina operácií, k…“)
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)

Vlastnosti a príkazy transakcie, princíp ACID, konzistentný stav databázy.


Transakcie

Transakcie sú skupiny operácií, ktoré sa vykonávajú ako jednotka. Buď sa všetky vykonajú úspešne (commit), alebo sa v prípade chyby vráti databáza do pôvodného stavu (rollback). Tieto príkazy zaisťujú konzistenciu a integritu dát v databázach.

Základné príkazy

Write (zápis)

Skupina operácií, ktoré ukladajú alebo aktualizujú dáta v databáze (napríklad, INSERT, UPDATE, DELETE). Operácie zápisu menia stav databázy, ale tieto zmeny nie sú trvalé, kým sa nevykoná COMMIT.

BEGIN TRANSACTION;
  INSERT INTO zakaznici (id, meno, priezvisko)
    VALUES (1, 'Jana', 'Sedláková');
  UPDATE zakaznici
    SET priezvisko = 'Nováková'
    WHERE id = 1;
-- zmeny ešte nie sú trvalé...

Read (čítanie)

Skupina operácií, ktoré čítajú aktuálny stav záznamu z databázy (najčastejšie sa jedná o príkaz SELECT). Čítanie môže byť súčasťou transakcie, napríklad pre overenie podmienok pred zápisom.

BEGIN TRANSACTION;
  SELECT meno FROM zakaznici
    WHERE id = 1;
-- táto operácia čítania nemá vplyv na stav databázy.

Potvrdenie transakcie (COMMIT)

Potvrdzuje všetky zmeny vykonané v rámci transakcie a robí ich trvalými. Ak sú všetky operácie v transakcii úspešné, vykoná sa COMMIT, čím sa zmeny trvalo zapíšu do databázy. Po vykonaní tohto príkazu už nie je možné vrátiť transakciu späť (myslíme cez príkaz ROLLBACK) .

BEGIN TRANSACTION;
  INSERT INTO zakaznici (id, meno, priezvisko)
    VALUES (2, 'Jozef', 'Mrkvička');
  UPDATE zakaznici
    SET meno = 'Peter', priezvisko = 'Novák'
    WHERE id = 2;

  COMMIT; -- zmeny sú teraz trvalo zapísané v databáze, a teda je zabezpečená konzistentnosť

Vrátenie transakcie (ROLLBACK)

Zruší všetky zmeny vykonané v rámci transakcie a vráti databázu do stavu pred začiatkom transakcie. Používa sa v prípade chyby alebo nesplnenia podmienok počas transakcie.

BEGIN TRANSACTION;
  INSERT INTO zakaznici (id, meno)
    VALUES (1, 'Martina');

  -- tu môže nastať chyba: primárny kľúč už existuje, nesplnená podmienka, atď...

  ROLLBACK; -- zmeny sú zrušené, žiadny záznam v rámci transakcie sa do databázy nezapíše natrvalo

Konzistentný stav databázy

Konzistentný stav databázy znamená, že všetky dáta v databáze sú v súlade s definovanými pravidlami, obmedzeniami a integritou.

Napríklad, pri prevode peňazí medzi účtami musí byť suma odpočítaná z jedného účtu a zároveň pripočítaná k druhému. Ak dôjde k prerušeniu transakcie, žiadny z účtov nesmie byť aktualizovaný samostatne. Alebo, ak zákazník zadá objednávku v e-shope, databáza musí zaistiť že v sklade je dostatok produktov a objednávka obsahuje platné položky.

Inkonzistencia môže nastať napríklad pri vynechaní kontroly cudzích kľúčov - tabuľka objednavky obsahuje riadok s zakaznik_id = 5, ale tento zákazník neexistuje v tabuľke zakaznici - to znamená že je porušená referenčná integrita databázy (sú narušené vzťahy). Ďalej môže inkonzistencia nastať napríklad ak tabuľka obsahuje duplicitné primárne kľúče - teda vo všeobecnosti vždy vtedy, keď je nejakým spôsobom porušená integrita databázy.

ACID princípy

ACID (Atomicity, Consistency, Isolation, Durability) sú kľúčové vlastnosti transakcií v relačných databázach:

  • Atomicita (Atomicity) - transakcia je celok, buď sa všetky jej operácie vykonajú, alebo žiadna (napríklad, nemôže sa vykonať iba polovica);
  • Konzistentnosť (Consistency) - transakcia zabezpečuje, že databáza zostáva v konzistentnom stave;
  • Izolácia (Isolation) - transakcie sú navzájom izolované, aby sa zabránilo interferencii medzi rôznymi transakciami, napríklad zmenenie tej istej hodnoty súčasne;
  • Trvácnosť (Durability) - po potvrdení (COMMIT) sú zmeny trvalé, aj pri výpadku systému (to znamená že zmeny zapíšeme do perzistentného úložiska, napríklad na disk);