Distribuované riadenie transakcií
Distribuované riadenie transakcií.
Transakcia v DDBS môže vyžadovať vykonanie operácií vo viacerých uzloch a DSRBD musí mať nástroje na riadenie takýchto transakcií.
Každá transakcia sa môže skladať z agentov. Agent je časť danej transakcie v jednom uzle. Pri riadení takýchto transakcií sa používa protokol dvojfázového potvrdzovania (TWO-PHASE COMMIT protocol). Tento proces zahŕňa uzol, tzv. koordinátor (zvyčajne uzol, kde bola transakcia iniciovaná), a jeden alebo viac uzlov, ktoré na transakcii participujú. Algoritmus protokolu dvojfázového potvrdzovania je takýto:
• Koordinátor pošle detaily transakcie participujúcim uzlom, pýta sa, či sú schopné vykonať danú časť transakcie a čaká na odpoveď z každého uzla.
• Každý uzol odpovedá, či je pripravený transakciu vykonať, alebo nie.
• Ak všetky uzly súhlasia, koordinátor vyšle inštrukciu, aby uzly potvrdili úspešné ukončenie svojej časti transakcie. Ak niektorý z uzlov odmietne potvrdenie, alebo ak neprídu všetky odpovede v danom časovom intervale, koordinátor vyšle inštrukcie na ROLLBACK.
• Podľa toho teda všetky transakcie alebo potvrdia úspešné ukončenie transakcie (COMMIT), alebo vrátia databázu do pôvodného stavu (ROLLBACK).
Ďalším dôležitým prvkom pri distribuovanom riadení transakcií je kontrola konkurencie. Pretože každá transakcia pracuje vždy v nejakom uzle, ktorý umožňuje normálny proces uzamykania, nikdy nedôjde k problému stratenej zmeny dát. Pri uzamykaní záznamov cez niekoľko uzlov môže nastať problém globálneho deadlocku.
Uvedieme príklad (obrázok):
1. Agent transakcie T2 v uzle X čaká, kým agent transakcie T1 v uzle X uvoľní uzamknutie záznamu.
2. Agent transakcie T1 v uzle X čaká, kým agent transakcie T1 v uzle Y ukončí operáciu.
3. Agent transakcie T1 v uzle Y čaká, kým agent transakcie T2 v uzle Y uvoľní uzamknutie záznamu.
4. Agent transakcie T2 v uzle Y čaká, kým agent transakcie T2 v uzle X ukončí operáciu. Nastal globálny deadlock.
Riešenie problému globálneho deadlocku si vyžaduje, aby mal jeden uzol prehľad o celom procese, lebo iba tak môžeme zistiť, či rôzne transakcie na seba navzájom čakajú. Pokus o aplikovanie nejakej globálnej kontroly však porušuje jedno z dvanástich pravidiel – autonómiu uzla.