12.08.2013 Views

konspekt - Tartu Ülikool

konspekt - Tartu Ülikool

konspekt - Tartu Ülikool

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

11.2 Transaktsiooni mõiste<br />

Kui ütleme, et server teostab atomaarseid operatsioone, siis see tähendab, et suvalise<br />

kliendi teostatav operatsioon ei ole mõjutatud teiste klientide operatsioonidest.<br />

Lisaks, see operatsioon kas lõpetati edukalt või ei oma mingit efekti. mõnikord on<br />

nõutav teatud päringujärjendite atomaarsus (näiteks vestluse korral).<br />

Kliendi seisukohalt on transaktsioon operatsioonide järjend (vestlus), mis viib<br />

andmed/serveri ühelt kooskõlaliselt olekult teisele.<br />

Atomaarsust iseloomustavad kaks omadust:<br />

¯ kõik või mitte midagi. Transaktsioon kas lõpetab edukalt ja tema tegevuste<br />

tulemus on salvestatud või tema tegevusega ei kaasne mingit efekti. Kõik<br />

või mitte midagi omadusega kaasnevad omakorda kaks omadust:<br />

– tõrke atomaarsus. Transaktsiooni täitmise tulemus on atomaarne ka<br />

serveri tõrgete korral.<br />

– kestus. Kui transaktsioon lõpetab edukalt, salvestatakse teostatud muudatused<br />

püsivale kandjale. Salvestatud andmes elavad üle ka serverprotsessi<br />

tõrked.<br />

¯ isolatsioon. Transaktsioonid ei tohi segada üksteise tööd.<br />

Transaktsioon taastatavatelt andmetelt on atomaarne. Atomaarsete transaktsioonide<br />

omaduste meeldejätmiseks soovitatakse kasutada sõna ACID (Hårder ja<br />

Reuter).<br />

atomic (atomaarsus)<br />

consistency (konsistents, kooskõla)<br />

isolation (isolatsioon)<br />

durability (kestus)<br />

Transaktsioone võib kasutada paralleelselt, kui nad on seriaalselt ekvivalentsed.<br />

Transaktsiooniline teenus on tavaliselt mingi teenuse laiendus, mille korral<br />

saab ressursse kasutada transaktsioonidena.<br />

Klient määrab transaktsiooni kasutades ÇÔÒÌ ÖÒ× ØÓÒ ja ÐÓ×Ì ÖÒ× ØÓÒ<br />

primitiive. Transaktsiooni katkestamiseks on primitiiv ÓÖØÌ ÖÒ× ØÓÒ. transaktsiooni<br />

kinnitamine (commit).<br />

ÇÔÒÌ ÖÒ× ØÓÒ ØÁ ÐÓ×Ì ÖÒ× ØÓÒ ÓÑÑØ ÓÖØ<br />

ÓÖØÌ ÖÒ× ØÓÒ ÓÖØ<br />

Transaktsiooni kasutamisel on kolm võimalust: transaktsioon lõpetab edukalt,<br />

klient katkestab transaktsiooni või server katkestab transaktsiooni.<br />

Serveri tõrke korral katkestatakse käsilolev transaktsioon. Serveri uuesti käivitamisel<br />

taastatakse viimase edukalt lõpetanud transaktsiooni loodud andmete<br />

olek.<br />

113<br />

Kliendi tõrke tuvastamiseks saame kasutada näiteks taimereid. Atomaarne transaktsioon<br />

saavutatakse kliendi ja transaktsioonilise teenuse koostööna.<br />

11.3 Samaaegse täitmise probleemid<br />

Vaatleme siinkohal “uuenduste kaotsimineku” ja “poolikute lugemiste” probleeme.<br />

Uuenduste kaotsiminek Olgu meil kontod , ja .<br />

Transaktsioon Ì kannab $4 kontolt kontole ja transaktsioon Í kannab $3<br />

kontolt kontole . Tulemus peaks olema , ja .<br />

Ì Í<br />

ÐÒ Ê $100<br />

Ï ÖØ ÐÒ $96<br />

ÐÒ Ê $300<br />

Ï ÖØ ÐÒ $297<br />

ÐÒ Ê $200<br />

ÐÒ Ê $200<br />

Ï ÖØ ÐÒ $203<br />

Ï ÖØ ÐÒ $204<br />

Tabel 11.1: Uuenduste kaotsimineku probleem<br />

Nagu tabelis 11.1 toodud näitest näha, oleme kaotanud transaktsiooni Í töö<br />

tulemuse.<br />

Pooliku lugemise probleem Olgu meil kontod , ja <br />

. Transaktsioon Ì kannab $100 kontolt kontole ja transaktsioon Í summerib<br />

kontod , ja . Tulemus peaks olema , ja summa 600.<br />

Nagu tabelis 11.2 toodud näitest näha, on transaktsioon Í eksinud 100 ühiku<br />

võrra, kuna ta “ei märganud” transaktsiooni Ì poolt kontole kantud summat.<br />

11.4 Seriaalne ekvivalents<br />

Kui iga transaktsioon ükisikuna käivitades lõpetab edukalt, siis nende transaktsioonide<br />

rakendamine ükshaaval mingis järjekorras on samuti edukas.<br />

114

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!