Awọn iṣowo ati awọn ilana iṣakoso wọn

Awọn iṣowo

Idunadura jẹ ọkọọkan awọn iṣẹ lori data ti o ni ibẹrẹ ati opin.

Idunadura kan jẹ ipaniyan lẹsẹsẹ ti awọn iṣẹ kika ati kikọ. Ipari ti idunadura le jẹ boya fifipamọ awọn ayipada (ifaramo) tabi fagile awọn ayipada (yipopada). Ni ibatan si aaye data kan, idunadura kan ni awọn ibeere pupọ ti a tọju bi ibeere ẹyọkan.

Awọn iṣowo gbọdọ ni itẹlọrun awọn ohun-ini ACID

Atomiki. Idunadura naa ti pari patapata tabi rara rara.

Iduroṣinṣin. Nigbati o ba n pari idunadura kan, awọn ihamọ ti o paṣẹ lori data (fun apẹẹrẹ, awọn ihamọ ninu ibi ipamọ data) ko gbọdọ ru. Iduroṣinṣin tumọ si pe eto naa yoo gbe lati ipo to pe si ipo to pe miiran.

Ìyàraẹniṣọ́tọ̀. Awọn iṣowo ti n ṣiṣẹ ni afiwe ko yẹ ki o ni ipa lori ara wọn, fun apẹẹrẹ, iyipada data ti o lo nipasẹ iṣowo miiran. Abajade ti ṣiṣe awọn iṣowo ti o jọra yẹ ki o jẹ kanna bi ti o ba ṣe awọn iṣowo naa ni atẹlera.

Iduroṣinṣin. Ni kete ti o ti ṣe, awọn ayipada ko yẹ ki o sọnu.

Iwe iṣowo

Logi naa tọju awọn ayipada ti a ṣe nipasẹ awọn iṣowo, ṣe idaniloju atomity ati iduroṣinṣin ti data ni iṣẹlẹ ti ikuna eto

Iwe akọọlẹ naa ni awọn iye ti data ti ni ṣaaju ati lẹhin ti o yipada nipasẹ idunadura naa. Ilana iwe kikọ-iwaju nilo fifi titẹ sii log kan nipa awọn iye iṣaaju ṣaaju ibẹrẹ, ati nipa awọn iye ikẹhin lẹhin ti idunadura naa ti pari. Ni iṣẹlẹ ti idaduro lojiji ti eto naa, data data ka iwe-ipamọ ni ọna iyipada ati fagile awọn iyipada ti o ṣe nipasẹ awọn iṣowo. Lẹhin ti o ba pade idunadura idalọwọduro kan, data data ṣiṣẹ rẹ ati ṣe awọn ayipada nipa rẹ si akọọlẹ naa. Ti o wa ni ipinle ni akoko ikuna, ibi ipamọ data naa ka iwe-ipamọ ti o wa ni iwaju ati awọn iyipada ti o ṣe nipasẹ awọn iṣowo. Ni ọna yii, iduroṣinṣin ti awọn iṣowo ti a ti ṣe tẹlẹ ati atomity ti idunadura ti o dawọ duro.

Nikan tun-ṣiṣe awọn iṣowo ti o kuna ko to fun imularada.

Apeere. Olumulo naa ni $500 ninu akọọlẹ rẹ ati pe olumulo pinnu lati yọ kuro lati ATM kan. Awọn iṣowo meji wa ni ilọsiwaju. Ni igba akọkọ ti o ka iye iwọntunwọnsi ati pe ti awọn owo to ba wa lori iwọntunwọnsi, o funni ni owo si olumulo. Awọn keji iyokuro awọn ti a beere iye lati dọgbadọgba. Jẹ ki a sọ pe eto naa ṣubu ati iṣẹ akọkọ kuna, ṣugbọn ekeji ṣe. Ni idi eyi, a ko le tun gbe owo pada si olumulo laisi ipadabọ eto naa si ipo atilẹba rẹ pẹlu iwọntunwọnsi rere.

Awọn ipele idabobo

Ka Ifaramo

Iṣoro Dirty Ready ni pe idunadura kan le ka abajade agbedemeji ti idunadura miiran.

Apeere. Iye iwọntunwọnsi ibẹrẹ jẹ $0. T1 ṣe afikun $50 si iwọntunwọnsi rẹ. T2 ka iye iwọntunwọnsi ($ 50). T1 asonu awọn ayipada ati awọn ijade. T2 tẹsiwaju ipaniyan pẹlu data iwọntunwọnsi ti ko tọ.

Ojutu ni lati ka awọn data ti o wa titi (Ka Ifaramọ), eyiti o ṣe idiwọ kika data ti o yipada nipasẹ idunadura naa. Ti idunadura A ba ti yi eto data kan pada, lẹhinna idunadura B, nigbati o wọle si data yii, ti fi agbara mu lati duro fun idunadura A lati pari.

Ka leralera

Sọnu Updates isoro. T1 fipamọ awọn ayipada lori oke ti awọn ayipada T2.

Apeere. Iwọn iwọntunwọnsi akọkọ jẹ $ 0 ati awọn iṣowo meji ni akoko kanna tun ṣe iwọntunwọnsi. T1 ati T2 ka iwọntunwọnsi ti $0. T2 lẹhinna ṣafikun $200 si $0 ati fi abajade pamọ. T1 ṣe afikun $100 si $0 ati fi abajade pamọ. Abajade ikẹhin jẹ $ 100 dipo $ 300.

Unrepeatable kika isoro. Kika data kanna leralera da awọn iye oriṣiriṣi pada.

Apeere. T1 ka iye iwọntunwọnsi ti $0. T2 lẹhinna ṣafikun $ 50 si iwọntunwọnsi ati pari. T1 tun ka data naa lẹẹkansi ati ki o wa aiṣedeede pẹlu abajade iṣaaju.

Ka tun ṣe idaniloju pe kika keji yoo da abajade kanna pada. Awọn data kika nipasẹ idunadura kan ko le yipada ni awọn miiran titi ti idunadura naa yoo pari. Ti idunadura A ti ka data kan pato, lẹhinna idunadura B, nigbati o wọle si data yii, ti fi agbara mu lati duro fun idunadura A lati pari.

Ti paṣẹ kika (Serializable)

Phantom Reads isoro. Awọn ibeere meji ti o yan data ti o da lori ipo kan da awọn iye oriṣiriṣi pada.

Apeere. T1 n beere nọmba gbogbo awọn olumulo ti iwọntunwọnsi wọn tobi ju $0 ṣugbọn o kere ju $100 lọ. T2 yọ $1 kuro lọwọ olumulo kan pẹlu iwọntunwọnsi ti $ 101. T1 tun ṣe ibeere naa.

Ti paṣẹ kika (Serializable). Awọn iṣowo ti wa ni ṣiṣe bi ilana-ilana patapata. O jẹ eewọ lati ṣe imudojuiwọn tabi ṣafikun awọn igbasilẹ ti o ṣubu laarin awọn ofin ti ibeere naa. Ti idunadura A ba ti beere data lati gbogbo tabili, lẹhinna gbogbo tabili ti wa ni didi fun awọn iṣowo miiran titi idunadura A yoo pari.

Eto iṣeto

Ṣeto aṣẹ ninu eyiti awọn iṣẹ yẹ ki o ṣe lakoko awọn iṣowo ti o jọra.

Pese ipele ipinya kan pato. Ti abajade awọn iṣẹ ko da lori aṣẹ wọn, lẹhinna iru awọn iṣẹ jẹ commutative (Permutable). Awọn iṣẹ kika ati awọn iṣẹ ṣiṣe lori oriṣiriṣi data jẹ commutative. Awọn iṣẹ kika-kikọ ati kikọ-kikọ kii ṣe commutative. Iṣẹ-ṣiṣe ti oluṣeto ni lati ṣe awọn iṣẹ ṣiṣe nipasẹ awọn iṣowo ti o jọra ki abajade ipaniyan jẹ deede si ipaniyan lẹsẹsẹ ti awọn iṣowo.

Awọn ọna ẹrọ fun ṣiṣakoso awọn iṣẹ ti o jọra (Iṣakoso Concurrency)

Ireti da lori wiwa ati ipinnu awọn ija, ireti da lori idilọwọ awọn ija lati dide.

Ni ọna ireti, ọpọlọpọ awọn olumulo ni awọn ẹda ti data naa ni ọwọ wọn. Eniyan akọkọ lati pari ṣiṣatunṣe fi awọn ayipada pamọ, lakoko ti awọn miiran gbọdọ dapọ awọn ayipada. Algoridimu ireti jẹ ki ija waye, ṣugbọn eto naa gbọdọ gba pada lati rogbodiyan naa.

Pẹlu ọna aipe, olumulo akọkọ lati mu data naa ṣe idiwọ fun awọn miiran lati gba data naa. Ti awọn ija ba ṣọwọn, o jẹ ọlọgbọn lati yan ilana ireti, nitori o pese ipele ti o ga julọ ti concurrency.

Titiipa

Ti iṣowo kan ba ni data titiipa, lẹhinna awọn iṣowo miiran gbọdọ duro titi ti yoo ṣii nigbati o wọle si data naa.

Àkọsílẹ le jẹ bò lori ibi ipamọ data, tabili, kana, tabi abuda. Titiipa Pipin le ti paṣẹ lori data kanna nipasẹ awọn iṣowo pupọ, ngbanilaaye gbogbo awọn iṣowo (pẹlu ọkan ti o paṣẹ) lati ka, ṣe idiwọ iyipada ati gbigba iyasoto. Titiipa Iyasoto le jẹ ti paṣẹ nipasẹ idunadura kan ṣoṣo, ngbanilaaye eyikeyi awọn iṣe ti iṣowo gbigbe, ṣe idiwọ eyikeyi awọn iṣe nipasẹ awọn miiran.

Titiipa kan jẹ ipo nibiti awọn iṣowo pari ni ipo isunmọ ti o wa titilai.

Apeere. Idunadura akọkọ nduro fun data ti o gba nipasẹ keji lati tu silẹ, lakoko ti keji nduro fun data ti o gba nipasẹ akọkọ lati tu silẹ.

Ojutu ti o ni ireti si iṣoro titiipa ti o gba laaye titiipa lati waye, ṣugbọn lẹhinna gba eto naa pada nipa yiyi ọkan ninu awọn iṣowo ti o kan ninu titiipa naa pada.

Awọn titiipa ti wa ni wiwa fun ni awọn aaye arin kan. Ọkan ninu awọn ọna wiwa jẹ nipasẹ akoko, iyẹn ni, ro pe titiipa kan ti waye ti idunadura naa ba gun ju lati pari. Nigbati a ba rii titiipa kan, ọkan ninu awọn iṣowo ti yiyi pada, gbigba awọn iṣowo miiran ti o ni ipa ninu titiipa lati pari. Yiyan olufaragba le da lori iye ti awọn iṣowo tabi oga wọn (Duro-Die ati Awọn eto iduro-ọgbẹ).

Gbogbo idunadura T a timestamp ti wa ni sọtọ TS ti o ni awọn ibere akoko ti awọn idunadura.

Duro-Die.

ti o ba ti TS (Ti) < TS (Tj)lẹhinna Ti duro, bibẹkọ ti Ti yipo pada ki o si bẹrẹ lẹẹkansi pẹlu kanna timestamp.

Ti iṣowo ọdọ ba ti gba orisun ati idunadura agbalagba kan beere awọn orisun kanna, lẹhinna idunadura agbalagba gba ọ laaye lati duro. Ti iṣowo agbalagba ba ti ni orisun kan, lẹhinna idunadura ti o kere ju ti o n beere fun orisun naa yoo yiyi pada.

Egbo-duro.

ti o ba ti TS (Ti) < TS (Tj)lẹhinna Tj yipo pada ki o si bẹrẹ lẹẹkansi pẹlu kanna timestamp, bibẹkọ ti Ti nduro.

Ti iṣowo ọdọ ba ti ni orisun ati idunadura agbalagba kan beere awọn orisun kanna, lẹhinna idunadura kékeré yoo yiyi pada. Ti iṣowo agbalagba ba ti ni orisun kan, lẹhinna idunadura ti o kere ju ti o n beere fun orisun naa ni a gba laaye lati duro. Aṣayan olufaragba ti o da lori iṣaaju ṣe idilọwọ awọn titiipa, ṣugbọn yipo awọn iṣowo pada ti kii ṣe titiipa. Iṣoro naa ni pe awọn iṣowo le ṣe yiyi pada ni ọpọlọpọ igba nitori… idunadura agbalagba le mu awọn oluşewadi naa duro fun igba pipẹ.

Ojutu aifokanbalẹ si iṣoro titiipa ko gba laaye idunadura kan lati bẹrẹ ṣiṣe ti eewu titiipa kan ba wa.

Lati rii titiipa kan, a ti ṣe iwọn aworan kan (iwọn idaduro, iwọn-duro-fun-graph), awọn ibi-ipin ti eyiti o jẹ awọn iṣowo, ati awọn egbegbe ti wa ni itọsọna lati awọn iṣowo ti nduro fun itusilẹ data si idunadura ti o gba data yii. Titiipa kan ni a gba pe o ti waye ti ayaworan naa ba ni lupu kan. Ṣiṣẹda aworan iduro, paapaa ni awọn apoti isura infomesonu ti a pin, jẹ ilana ti o gbowolori.

Titiipa alakoso-meji - ṣe idiwọ awọn titiipa nipa gbigba gbogbo awọn orisun ti o lo nipasẹ idunadura kan ni ibẹrẹ iṣowo ati idasilẹ wọn ni ipari

Gbogbo awọn iṣẹ ìdènà gbọdọ ṣaju ọkan ṣiṣi akọkọ. O ni awọn ipele meji - Ipele Idagba, lakoko eyiti awọn idimu n ṣajọpọ, ati Ipele Idinku, lakoko eyiti awọn imudani ti tu silẹ. Ti ko ba ṣee ṣe lati gba ọkan ninu awọn orisun, idunadura naa bẹrẹ lẹẹkansi. O ṣee ṣe pe idunadura kan kii yoo ni anfani lati gba awọn orisun ti o nilo, fun apẹẹrẹ, ti awọn iṣowo pupọ ba dije fun awọn orisun kanna.

Iṣe ipele-meji ṣe idaniloju pe ifaramo naa ti wa ni ṣiṣe lori gbogbo awọn ẹda data

Ipamọ data kọọkan n tẹ alaye sii nipa data ti yoo yipada sinu akọọlẹ ati dahun si Alakoso O DARA (Ipele Idibo). Lẹhin ti gbogbo eniyan ti dahun O DARA, oluṣeto nfi ifihan agbara ranṣẹ ti o jẹ dandan fun gbogbo eniyan lati ṣe. Lẹhin ṣiṣe, awọn olupin dahun O dara; ti o ba kere ju ọkan ko dahun O DARA, lẹhinna oluṣakoso fi ami kan ranṣẹ lati fagile awọn ayipada si gbogbo awọn olupin (Ipari Ipari).

Timetamp ọna

Idunadura agbalagba ti yiyi pada nigbati o ngbiyanju lati wọle si data ti o kan nipasẹ idunadura kékeré kan

Idunadura kọọkan ti wa ni sọtọ a timestamp TS ni ibamu si awọn ibere akoko ti ipaniyan. Ti o ba jẹ Ti agbalagba Tjlẹhinna TS (Ti) < TS (Tj).

Nigba ti a idunadura ti yiyi pada, o ti wa ni sọtọ titun timestamp. Ohun elo data kọọkan Q lowo ninu idunadura ti wa ni samisi pẹlu meji aami. W-TS(Q) - timestamp ti iṣowo abikẹhin ti o pari igbasilẹ ni aṣeyọri Q. R-TS(Q) - timestamp ti iṣowo abikẹhin ti o ṣe igbasilẹ kika lori Q.

Nigbati idunadura naa T ibeere lati ka data Q Awọn aṣayan meji wa.

ti o ba ti TS(T) < W-TS(Q), iyẹn ni, data ti ni imudojuiwọn nipasẹ idunadura ọdọ, lẹhinna idunadura naa T yipo pada.

ti o ba ti TS(T) >= W-TS(Q), ki o si awọn kika ti wa ni ošišẹ ti ati R-TS(Q) di MAX(R-TS(Q), TS(T)).

Nigbati idunadura naa T ibeere data ayipada Q Awọn aṣayan meji wa.

ti o ba ti TS(T) < R-TS(Q), iyẹn ni, data ti tẹlẹ ti ka nipasẹ idunadura ọdọ ati ti o ba ṣe iyipada, ija kan yoo dide. Idunadura T yipo pada.

ti o ba ti TS(T) < W-TS(Q), iyẹn ni, idunadura naa n gbiyanju lati kọ iye tuntun kan, idunadura T ti yiyi pada. Ni awọn igba miiran, iyipada ti wa ni ti gbe jade ati W-TS(Q) di dogba TS(T).

Ko si gbowolori idaduro awonya ikole wa ni ti beere. Awọn iṣowo agbalagba da lori awọn tuntun, nitorinaa ko si awọn iyipo ninu aworan iduro. Ko si awọn titiipa nitori awọn iṣowo ko duro ṣugbọn yiyi pada lẹsẹkẹsẹ. Cascading rollbacks ṣee ṣe. Ti o ba jẹ Ti yiyi kuro ati Tj Mo ka data ti Mo yipada Tilẹhinna Tj yẹ ki o tun yiyi pada. Ti o ba wa ni akoko kanna Tj ti ṣẹ tẹlẹ, lẹhinna yoo jẹ irufin ilana ti iduroṣinṣin.

Ọkan ninu awọn ojutu si cascading rollbacks. Iṣowo kan pari gbogbo awọn iṣẹ kikọ ni ipari, ati awọn iṣowo miiran gbọdọ duro fun iṣẹ yẹn lati pari. Awọn iṣowo duro lati ṣe adehun ṣaaju kika.

Thomas kọ ofin - iyatọ ti ọna timestamp ninu eyiti data imudojuiwọn nipasẹ idunadura ọdọ ti ni idinamọ lati kọkọ nipasẹ agbalagba

Idunadura T ibeere data ayipada Q... Ti o ba ti a TS(T) < W-TS(Q), iyẹn ni, idunadura naa n gbiyanju lati tun kọ iye tuntun kan, idunadura T ko yiyi pada bi ni ọna timestamp.

orisun: www.habr.com

Fi ọrọìwòye kun