konspekt - Tartu Ülikool
konspekt - Tartu Ülikool
konspekt - Tartu Ülikool
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