Kétfázisú tranzakció jóváhagyás
| Ezt a szócikket némileg át kellene dolgozni a wiki jelölőnyelv szabályainak figyelembevételével, hogy megfeleljen a Wikipédia alapvető stilisztikai és formai követelményeinek. Indoklás: felesleges kiemelések, illetve belső hivatkozások hiánya |
A kétfázisú tranzakció jóváhagyás az informatikában - elsősorban az adatbázisokhoz kapcsolódó területeken - használatos protokoll, mely segítségével a tranzakciók atomi műveletként viselkednek. Az ilyen protokollokat összefoglaló néven Atomi Jóváhagyó Protokolloknak (Angolul ACP) nevezik. Ez a protokoll egy elosztott algoritmust ír le, amely a tranzakcióban résztvevő összes erőforrással kapcsolatban áll, és jóváhagyhatja, illetve visszavonhatja az aktuális tranzakciót. A protokoll célja, hogy egy tranzakció - amely tartalmazhat több, egymástól független műveletet - atomi műveletként viselkedjen. Ehhez alapvetően két feltételnek kell teljesülnie:
- Ha a tranzakció valamely elemén végbement a tranzakció által definiált változás, akkor az összes elemen menyjen végbe.
- Ha valamilyen okból a tranzakció valamely része elbukik, akkor a tranzakció által érintett erőforrások közül egyik se változzon.
Tartalomjegyzék |
Motiváció [szerkesztés]
A kétfázisú tranzakció jóváhagyás fontosságának megértéséhez nézzünk a következő eseménysorozatot. Elkezdődik egy tranzakció, de mielőtt befejeződhetne valamilyen hiba keletkezik a rendszerben. Ez a hiba lehet szoftveres hiba, egy hardver elem meghibásodása, vagy akár egy áramszünet. Mivel a tranzakció nem tudott befejeződni, ezért az adatbázisunk egyes adatai változtak, míg más adatok - melyeknek változniuk kellett volna - az eredeti állapotukban maradtak. Így az adatbázisunk elveszíti a konzisztenciáját, hiszen a tárolt adatok már nem a megfelelő információt tartalmazzák. Azonban, ha alkalmazzuk a kétfázisú tranzakció jóváhagyást (vagy valamilyen más ACP eljárást), akkor az adatok mindig megfelelő állapotban maradnak.
Elméleti algoritmus [szerkesztés]
Az eljárásban mindig van egy koordinátor, és dolgozók. Az utóbbiak felelősek a tranzakció által megkövetelt változások végrehajtásáért, míg az előbbi feladata felügyelni a műveletet. Az eljárás - mint ahogy a nevéből is sejthető - két fázisra osztható:
- Az első fázis a szavazási fázis. Ebben a koordinátor "felszólítja" a dolgozókat, hogy végezzék el a jóváhagyáshoz, és a megszakításhoz szükséges műveleteket. Ezzel tehát felkészül a rendszer arra, hogy a koordinátor jóváhagyja, vagy megszakítsa a tranzakciót. Ezután a dolgozók szavaznak, azaz "igen" értéket küldenek a koordinátorhoz, hogyha készek a jóváhagyásra, és "nem" értéket különben.
- A második fázis a jóváhagyási fázis. Ez az első fázis eredményét felhasználva működik. Ha a koordinátor azt látja, hogy az összes dolgozó "igen"-nel tért vissza, akkor, és csak akkor felszólítja a dolgozókat, hogy hajtsák végre a már előkészített jóváhagyás műveletüket. Ha csak egy dolgozó is "nem" értékkel tér vissza, akkor a koordinátor a megszakítás művelet végrehajtására ad ki utasítást.
Ahhoz, hogy ez a módszer működjön, szükség van a rendszer állapotának tárolására. Erre általában valamilyen loggolási technikát használnak. A loggolás lassú, de a legtöbb rendszerhibát átvészeli.
Az eljárás hátránya [szerkesztés]
A legnagyobb hátrány, hogy a kétfázisú tranzakció jóváhagyás egy blokkoló eljárás. Ez azt jelenti, hogy adott esetben végtelen hosszú ideig blokkolhatja a rendszer működését. Ez az eset akkor fordul elő, ha a koordinátor véglegesen leáll a két fázis határán. Ekkor a dolgozók elküldték a szavazatukat, és blokkolt állapotba kerülnek. Ez a blokkolt állapot csak akkor ér véget, ha a koordinátor utasítja őket valamelyik művelet végrehajtására, azonban a koordinátor leállt, ezért a dolgozók végérvényesen blokkolva maradnak. Ezen hiba elkerülése végett fejlesztették ki - többek között - a háromfázisú tranzakció jóváhagyás protokollt, amely egy nem blokkoló protokoll.
Kapcsolódó linkek (Angol) [szerkesztés]
- Atomic commit
- Commit (data management)
- Three-phase commit protocol
- XA
- Paxos algorithm
- Paxos commit, an alternative fault-tolerant commit algorithm based on the Paxos algorithm for n-process consensus.
- Two Generals' Problem

