180 likes | 339 Vues
Transaktsioonid. Hajutatud rakendused (vabandust – klient-server rakendused). Mis on transaktsioon. Muudatused (reeglina) andmekihis Seotud muudatused Terviklikkus Transaktsioon: minimaalne muudatus see kas toimub või ei toimu tõrke korral kogu muudatus tagasi.
E N D
Transaktsioonid Hajutatud rakendused (vabandust – klient-server rakendused)
Mis on transaktsioon • Muudatused (reeglina) andmekihis • Seotud muudatused • Terviklikkus • Transaktsioon: • minimaalne muudatus • see kas toimub või ei toimu • tõrke korral kogu muudatus tagasi
Transaktsiooni 4 nõuet - ACID • Atomaarsus (A - atomicity) • Sellest väiksemat muudatust iseseisvalt teha ei saa • Terviklikkus (C – consistence) • Muudatused erinevates andmetes moodustavad terviku • Isoleeritus (I – isolation) • Muutmise ajal on muudetavad andmed muust maailmast (teistest muudatustest ja ka lugemisest) isoleeritud • Kestvus (D – duration) • Muudatus on püsiv (jääb kestma)
Isolatsiooniprobleemid • Isoleerimata protsess teeb vigaste andmete baasil vigaseid otsustusi • Dirty read • Teine protsess näeb “kinnitamata” andmeid • Phantom read • Teine protsess näeb olematuid andmeid (kirjeid) • Non-Repeatable read • Transaktsiooni ajal korduvalt loetud samad andmed on muutunud
Transaktsioonide isoleeritus • Enamasti vajalik • Vahel segab • Eri tasemed • Read Commited • Read Uncomited • Repeatable Read • Serializable • Chaos
Transaktsioonid ja lukustus • Transakstioonid kontrollivad isoleeritust lukustustega • Kirje mida muudetakse, lukustatakse exclusively transakstiooni lõpuni • Kirjed, mida loetakse, lukustatakse shared lukuga • Kirjevahemikud, mida küsitakse, lukustatakse shared lukuga (võtmed)
Read commited • Protsess näeb ainult kinnitatud ja lõplikke andmeid • Kõik, mida ma vaatan, lukustatakse (Share) minu transaktsiooni lõpuni • Ebakorrektne tulemus • Ei garanteerita, et kord loetud andmeid ei muuda teine protsess (nonrepeatable)
Read uncommited • Protsess näeb ka kinnitamata andmeid • Kirje, mida ma vaatan, lukustatakse vaatamise ajaks • Kõige nõrgem isolatsioon • Annab ebakorrektseid tulemusi • Dirty Read • Phantom Read • NonRepeatable Read
Repeatable read • Transaktsiooni käigus tehtud küsimused annavad samu tulemusi • Kirjed, mida mulle näidatakse, lukustatakse transaktsiooni lõpuni • Segab vähe koostööd (sama osakonna töötajad segavad üksteist) • Annab ebakorrektseid tulemusi • Phantom Read
Serializable • Transaktsiooni käigus vaadatud andmed ei muutu • Ainult see, mida mulle näidatakse, lukustatakse (kirjed) • Segab pisut vähem • Kõige rangem
Kaos • Enamik andmebaasisüsteem ei toeta • Muudatused lukustamata • Vajalik reaalajasüsteemides
Transaktsiooni kestvus • Muudatuste tagasivõetavus • Muudatuste püsivus • Kaks tehnikat • Change log (transaction log) • Original log (undo file)
Transaktsiooni hajutamine • Transaktsioonid on aatomid • Transaktsioonid on lühiajalised • Transaktsioonid on ühes andmehoidlas • Probleem • Kuidas venitada ajas (bensujaam) • Kuidas venitada ruumis (kaks panka)
Ajas venitatud transaktsioonid • Transaktsioon jagatakse osadeks • Osaline lukustus • Tagasivõetavus
Ruumis hajutatud transaktsioonid • Muudatused korraga mitmes serveris • Distributed transaction (DTX) • Ressursid ja ressursihaldajad (RM) • Transaktsioonikorraldajad (TM) • Kaheosaline kinnitus (2 phase commit)
APP TM RM • RM regib end TM juures • RM alustab oma transaktsiooni • TM küsib kõigilt, kas on valmis • RM vastab ja jääb ootele • TM annab kõigile loea lõpetada RM RM