Víceuživatelský přístup a bezpečnost dat
Transakční zpracování
 Tisk

Transakční zpracování


Základní myšlenkou transakčního zpracování je rozdělit úlohu na malé úseky, které by měly buď proběhnout celé, nebo by měla být data ve stavu, jako by zpracování úseku vůbec nebylo zahájeno.


Prakticky to probíhá tak, že při práci s daty se automaticky v dočasných souborech zapamatovává původní obsah měněných záznamů. Pokud vše proběhne dobře, původní obsah se v dočasných souborech smaže. Pokud dojde k přerušení programu, je po restartu automaticky z těchto změn obnoven stav před zahájením zpracování úseku.


V databázích je obvyklé označit zahájení transakce označit vhodným příkazem (např. BEGIN TRANSACTION). Dokončení transakce se oznámí databázovému systému jiným příkazem (téměř standardně COMMIT). Navíc dostává programátor do rukou nástroj, jak transakci programově přerušit a vrátit data do původního stavu (ROLLBACK).

Na obr. . je vidět průběh transakce v čase. Až do okamžiku zahájení transakce je databáze v konsistentním stavu. Během transakce je databáze dočasně nekonsistentní. Po dokončení transakce je databáze opět konsistentní, buď je v původním stavu, nebo proběhla úspěšně a databáze je změněna.


Na obrázku jsou vidět stavy transakce:

A   ... aktivní (jde o stav od počátku provádění transakce)

PC ... částečně potvrzený (jde o stav po provedení poslední operace transakce)

F   ... chybný (objeví-li se, že v normálním průběhu transakce nelze pokračovat)

AB ... zrušený (po provedení ROLLBACK, databáze je ve stavu před transakcí)

C   ... potvrzený (po úspěšném zakončení, tj. po provedení operace COMMIT)


Složitější úlohy jsou řešeny tzv. dvoufázovým protokolem.


Př. Představme si převod peněz z jedné banky do druhé. Každá má svůj informační systém a svůj počítač. Je třeba zabezpečit, aby převod skutečně proběhl na obou počítačích. Řešení této úlohy přesahuje rozsah tohoto kursu.