Ma'amaloli da hanyoyin sarrafa su

Ma'amaloli

Ma'amala shine jerin ayyuka akan bayanan da ke da farko da ƙarshe.

Ma'amala ita ce aiwatar da ayyukan karantawa da rubutu a jere. Ƙarshen ciniki na iya zama ko dai adana canje-canje (ƙaddara) ko soke canje-canje (juyawa). Dangane da bayanan bayanai, ma'amala ta ƙunshi buƙatu da yawa waɗanda ake ɗaukar su azaman buƙatu ɗaya.

Dole ne ma'amaloli su gamsar da kaddarorin ACID

Atomity. An kammala cinikin gaba ɗaya ko a'a gaba ɗaya.

Daidaitawa. Lokacin kammala ma'amala, hane-hane da aka sanya akan bayanan (misali, takurawa a cikin bayanan) ba dole ba ne a keta su. Matsakaicin yana nuna cewa za'a canza tsarin daga wannan madaidaicin jiha zuwa wata madaidaicin jiha.

Kaɗaici. Ma'amalolin da ke gudana a layi daya bai kamata su yi tasiri ga juna ba, misali, canza bayanan da wata ma'amala ke amfani da ita. Sakamakon aiwatar da ma'amaloli daidai gwargwado ya kamata ya zama daidai da idan an aiwatar da ma'amaloli a jere.

Dorewa. Da zarar an aikata, bai kamata a rasa canje-canje ba.

log ɗin ciniki

Login yana adana canje-canjen da aka yi ta hanyar ma'amaloli, yana tabbatar da atomity da kwanciyar hankali na bayanai a cikin yanayin gazawar tsarin

Login ya ƙunshi ƙimar da bayanan ke da su kafin da kuma bayan an canza shi ta hanyar ciniki. Dabarun log na gaba yana buƙatar ƙara shigarwar log game da ƙimar da ta gabata kafin farawa, da kuma game da ƙimar ƙarshe bayan an gama ciniki. A cikin yanayin dakatarwar kwatsam na tsarin, ma'aunin bayanai yana karanta log a juyi tsari kuma ya soke canje-canjen da ma'amaloli suka yi. Bayan ci karo da ma'amala da aka katse, ma'aunin bayanai yana aiwatar da shi kuma yana yin canje-canje game da shi zuwa log ɗin. Kasancewa a cikin jihar a lokacin gazawar, bayanan yana karanta log in gaba tsari kuma ya dawo da canje-canjen da ma'amaloli suka yi. Ta wannan hanyar, ana kiyaye kwanciyar hankali na ma'amaloli da aka riga aka yi da atomity na cinikin da aka katse.

Kawai sake aiwatar da ma'amaloli da suka gaza bai wadatar ba don murmurewa.

Misali. Mai amfani yana da $500 a cikin asusunsa kuma mai amfani ya yanke shawarar cire shi daga ATM. Ana ci gaba da ciniki guda biyu. Na farko yana karanta ƙimar ma'auni kuma idan akwai isassun kuɗi akan ma'auni, yana ba da kuɗi ga mai amfani. Na biyu yana cire adadin da ake buƙata daga ma'auni. Bari mu ce tsarin ya fadi kuma aikin farko ya kasa, amma na biyu ya yi. A wannan yanayin, ba za mu iya sake ba da kuɗi ga mai amfani ba tare da mayar da tsarin zuwa matsayinsa na asali tare da ma'auni mai kyau ba.

Matakan rufi

Karatu Yayi Alkawari

Matsalar karanta Dirty shine cewa ma'amala na iya karanta matsakaiciyar sakamakon wata ma'amala.

Misali. Ma'auni na farko shine $0. T1 yana ƙara $50 zuwa ma'aunin ku. T2 yana karanta ƙimar ma'auni ($ 50). T1 yana watsar da canje-canje da fita. T2 yana ci gaba da aiwatarwa tare da bayanan ma'auni mara daidai.

Maganin shine karanta ƙayyadaddun bayanai (Karanta Committed), wanda ke hana karanta bayanan da aka canza ta hanyar ciniki. Idan ma'amala A ta canza wani sashe na bayanai, to, ma'amala B, lokacin samun damar wannan bayanan, ana tilastawa jiran ciniki A don kammalawa.

Maimaituwa Karatu

Matsalar Sabuntawa da aka ɓace. T1 yana adana canje-canje a saman canje-canjen T2.

Misali. Ƙimar ma'auni na farko shine $0 kuma ma'amaloli biyu a lokaci guda suna cika ma'auni. T1 da T2 sun karanta ma'auni na $0. T2 sannan ya kara $200 zuwa $0 kuma ya adana sakamakon. T1 yana ƙara $100 zuwa $0 kuma yana adana sakamakon. Sakamakon karshe shine $100 maimakon $300.

Matsalar karatu mara maimaitawa. Karanta bayanai iri ɗaya akai-akai yana dawo da ƙima daban-daban.

Misali. T1 yana karanta ƙimar ma'auni na $0. T2 sannan yana ƙara $50 zuwa ma'auni kuma ya ƙare. T1 ya sake karanta bayanan kuma ya sami sabani tare da sakamakon baya.

Maimaitawa Karatu yana tabbatar da cewa karatun na biyu zai dawo da sakamako iri ɗaya. Bayanan da aka karanta ta hanyar ciniki ɗaya ba za a iya canza su a wasu ba har sai an kammala ciniki. Idan ciniki A ya karanta takamaiman saitin bayanai, to, ma'amala B, lokacin samun damar wannan bayanan, ana tilastawa jiran ciniki A don kammalawa.

Karatun da aka yi oda (Serializable)

Matsalar Karatun Fatalwa. Tambayoyi biyu waɗanda suka zaɓi bayanai dangane da wani yanayi suna dawo da ƙima daban-daban.

Misali. T1 yana buƙatar adadin duk masu amfani waɗanda ma'aunin su ya fi $0 amma ƙasa da $100. T2 yana cire $1 daga mai amfani tare da ma'auni na $101. T1 ya sake fitar da bukatar.

Karatun da aka yi oda (Serializable). Ana aiwatar da ma'amaloli a matsayin gabaɗaya. An haramta sabunta ko ƙara bayanan da suka faɗi cikin sharuɗɗan buƙatar. Idan ma'amala A ta nemi bayanai daga duka tebur, to, gabaɗayan tebur ɗin yana daskarewa don wasu ma'amaloli har sai ciniki A ya cika.

Mai tsara jadawalin

Yana saita tsarin da yakamata a gudanar da ayyuka yayin ma'amaloli iri ɗaya.

Yana ba da ƙayyadadden matakin keɓewa. Idan sakamakon ayyukan bai dogara da odar su ba, to, irin waɗannan ayyukan suna canzawa ( Permutable). Ayyukan karantawa da ayyuka akan bayanai daban-daban suna da alaƙa. Ayyukan karanta-rubutu da rubuta-rubutu ba sa canzawa. Aikin mai tsara jadawalin shine ya shiga tsakani ayyukan da aka yi ta hanyar ma'amaloli guda ɗaya domin sakamakon aiwatarwa yayi daidai da aiwatar da ma'amaloli a jere.

Hanyoyi don sarrafa ayyukan layi daya (Concurrency Control)

Kyakkyawan fata yana dogara ne akan ganowa da magance rikice-rikice, rashin tausayi yana dogara ne akan hana rikice-rikice daga tasowa.

A cikin kyakkyawan tsari, masu amfani da yawa suna da kwafin bayanai a wurinsu. Mutum na farko da ya kammala gyara yana adana canje-canje, yayin da sauran dole ne su haɗa canje-canje. Kyakkyawan algorithm yana ba da damar rikici ya faru, amma dole ne tsarin ya dawo daga rikici.

Tare da tsarin rashin hankali, mai amfani na farko don ɗaukar bayanan yana hana wasu karɓar bayanan. Idan rikice-rikice ba su da yawa, yana da hikima don zaɓar dabarun da ke da kyakkyawan fata, tun da yake yana ba da babban matakin daidaitawa.

Kulle

Idan ma'amala ɗaya ta kulle bayanai, to dole ne sauran ma'amaloli su jira har sai an buɗe su yayin shiga bayanan.

Ana iya rufe toshe akan ma'ajin bayanai, teburi, jere, ko sifa. Makullin Shared za a iya sanya shi akan bayanai iri ɗaya ta hanyar ma'amaloli da yawa, yana ba da damar duk ma'amaloli (ciki har da wanda ya sanya shi) karantawa, yana hana gyarawa da kama keɓantacce. Makullin keɓance za a iya sanya shi ta hanyar ma'amala ɗaya kawai, yana ba da damar kowane ayyuka na tilasta ma'amala, haramta duk wani aiki na wasu.

Matsala yanayi ne inda hada-hadar kasuwanci ke ƙarewa a cikin yanayin da ake jira wanda zai dawwama har abada.

Misali. Ma'amala ta farko tana jira don fitar da bayanan da na biyu ya kama, yayin da na biyun yana jiran bayanan da na farkon ya kama.

Maganin kyakkyawan fata ga matsalar kullewa yana ba da damar kullewa ya faru, amma sai ya dawo da tsarin ta hanyar mayar da ɗaya daga cikin ma'amaloli da ke tattare da kulle-kullen.

Ana nemo makulli a wasu tazara. Ɗaya daga cikin hanyoyin ganowa shine ta lokaci, wato, la'akari da cewa kulle ya faru idan ciniki ya ɗauki tsawon lokaci don kammalawa. Lokacin da aka sami maƙulli, ɗaya daga cikin ma'amaloli za a koma baya, yana ba da damar sauran ma'amaloli da ke cikin makullin su kammala. Zaɓin wanda aka azabtar zai iya dogara ne akan ƙimar ma'amaloli ko girman su (tsarin jira-Die da Wound-wait).

Kowane ciniki T an sanya tambarin lokaci TS dauke da farkon lokacin ciniki.

Dakata-Mutu.

idan TS (Ti) < TS (Tj), to, Ti jira, in ba haka ba Ti mirgina baya kuma ya sake farawa tare da tambarin lokutan lokaci guda.

Idan ma'amalar matasa ta sami albarkatu kuma tsohuwar ma'amala ta buƙaci albarkatun iri ɗaya, to ana barin tsohuwar ma'amala ta jira. Idan tsohuwar ma'amala ta sami albarkatu, to ƙaramar ma'amalar da ke neman wannan albarkatun za a mayar da ita.

Rauni- jira.

idan TS (Ti) < TS (Tj), to, Tj jujjuya baya kuma yana farawa tare da tambarin lokaci guda, in ba haka ba Ti jira.

Idan ƙaramin ma'amala ya sami albarkatu kuma tsohuwar ma'amala ta buƙaci albarkatu iri ɗaya, to ƙaramin ma'amalar za a mayar da ita. Idan tsohuwar ma'amala ta sami albarkatu, to ƙaramin ma'amalar da ke neman albarkatun ana barin ta jira. Zaɓin wanda aka zalunta da ya dogara da fifiko yana hana ƙulle-ƙulle, amma yana mayar da ma'amaloli waɗanda ba a kulle su ba. Matsalar ita ce ana iya juyar da ciniki sau da yawa saboda... tsohuwar ma'amala na iya riƙe albarkatun na dogon lokaci.

Maganin rashin hankali ga matsalar kulle-kulle ba zai ƙyale ciniki ya fara aiwatarwa ba idan akwai haɗarin kulle-kulle.

Don gano maƙasudin, an gina jadawali (jigon jira, jira-jari), wanda ƙarshensa shine ma'amaloli, kuma gefuna ana jagorantar su daga ma'amaloli da ke jiran fitar da bayanai zuwa ma'amalar da ta kama wannan bayanan. Ana ɗaukar kulle-kulle ya faru idan jadawali yana da madauki. Ƙirƙirar jadawalin jira, musamman a cikin ɗakunan bayanai da aka rarraba, hanya ce mai tsada.

Kulle kashi biyu - yana hana kulle-kulle ta hanyar ƙwace duk albarkatun da ciniki ke amfani da shi a farkon ciniki da sake su a ƙarshen.

Duk ayyukan toshewa dole ne su gabaci buɗewa ta farko. Yana da matakai guda biyu - Girman Matsayi, lokacin da grips ke taruwa, da kuma Tsarkakewa, lokacin da ake sakin riko. Idan ba zai yiwu a kama ɗaya daga cikin albarkatun ba, cinikin yana farawa a kan. Yana yiwuwa ma'amala ba za ta iya samun albarkatun da ake buƙata ba, misali, idan ma'amaloli da yawa suna gasa don albarkatun iri ɗaya.

Aiwatar da kashi biyu yana tabbatar da cewa an aiwatar da aikin akan duk kwafin bayanai

Kowane rumbun adana bayanai yana shigar da bayanai game da bayanan da za a canza zuwa cikin log ɗin kuma suna ba da amsa ga Coordinator Ok (Matsayin Zaɓe). Bayan kowa ya amsa Ok, kodinetan ya aika da sigina yana wajabta kowa ya aikata. Bayan an gama, sabobin sai su amsa da kyau, idan aƙalla ɗaya bai amsa da Ok ba, to mai haɗin gwiwa ya aika da sigina don soke canje-canjen zuwa duk sabobin (Kammala Phase).

Hanyar tambarin lokaci

An dawo da tsohuwar ma'amala lokacin ƙoƙarin samun damar bayanan da ƙaramin ma'amala ke ciki

Kowane ma'amala an sanya tambarin lokaci TS daidai da lokacin farawa na kisa. Idan Ti girmi Tj, to, TS (Ti) < TS (Tj).

Lokacin da aka mayar da ma'amala, ana sanya ta sabon tambarin lokaci. Kowane abu data Q An sanya hannu a cikin ma'amala tare da lakabi biyu. W-TS(Q) - timestamp na mafi ƙarancin ma'amala wanda yayi nasarar kammala rikodin rikodi Q. R-TS(Q) - timestamp na ƙaramin ma'amala wanda yayi rikodin karantawa akan Q.

Lokacin ciniki T buƙatun karanta bayanai Q Akwai zaɓuɓɓuka biyu.

idan TS (T) < W-TS(Q), wato, an sabunta bayanan ta hanyar ƙaramin ciniki, sannan ciniki T mirgina baya.

idan TS (T) >= W-TS(Q), sai a yi karatun kuma R-TS(Q) zama MAX(R-TS(Q), TS(T)).

Lokacin ciniki T buƙatun canje-canjen bayanai Q Akwai zaɓuɓɓuka biyu.

idan TS (T) < R-TS(Q), wato, an riga an karanta bayanan ta hanyar ƙaramin ma'amala kuma idan an sami canji, rikici zai tashi. Ma'amala T mirgina baya.

idan TS (T) < W-TS(Q), wato, ciniki yana ƙoƙarin sake rubuta sabon ƙima, ciniki T ya koma baya. A wasu lokuta, ana aiwatar da canjin kuma W-TS(Q) ya zama daidai TS (T).

Ba a buƙatar ginin jadawali mai tsada mai tsada. Tsofaffin ma'amaloli sun dogara da sababbi, don haka babu hawan keke a cikin jadawalin jira. Babu makullai saboda ba a jira ma'amaloli amma an dawo da su nan take. Yiwuwar sake dawowa. Idan Ti birgima kuma Tj Na karanta bayanan da na canza Ti, to, Tj kamata kuma a mirgina baya. Idan a lokaci guda Tj an riga an aikata shi, to za a sami saba wa ka'idar kwanciyar hankali.

Daya daga cikin mafita ga cascading rollbacks. Ma'amala ta kammala duk ayyukan rubutawa a ƙarshe, kuma dole ne sauran ma'amaloli su jira wannan aikin ya kammala. Ma'amaloli suna jira a yi kafin a karanta su.

Thomas ya rubuta ƙa'ida - bambancin hanyar tambarin lokaci wanda aka haramta sabunta bayanan da ƙaramin ma'amala ya yi daga wani babba ya sake rubutawa.

Ma'amala T buƙatun canje-canjen bayanai Q. Idan TS (T) < W-TS(Q), wato, ciniki yana ƙoƙarin sake rubuta sabon ƙima, ciniki T ba a jujjuya shi ba kamar yadda yake a cikin hanyar tambarin lokaci.

source: www.habr.com

Add a comment