Муомилот ва механизмҳои идоракунии онҳо

Амалиётҳо

Амалиёт пайдарпайии амалиётҳо оид ба додаҳоест, ки ибтидо ва анҷом дорад.

Амалиёт иҷрои пайдарпайи амалиёти хондан ва навиштан мебошад. Анҷоми транзаксия метавонад ё захира кардани тағирот (созиш) ё бекор кардани тағирот (бозгашт) бошад. Дар робита ба пойгоҳи додаҳо, транзаксия аз якчанд дархостҳо иборат аст, ки ҳамчун як дархост баррасӣ карда мешаванд.

Муомилот бояд хосиятҳои ACID-ро қонеъ гардонанд

Атомизм. Муомилот ё пурра анҷом дода мешавад ё тамоман.

Мутобиқати. Ҳангоми анҷом додани транзаксия, маҳдудиятҳои ба маълумот гузошташуда (масалан, маҳдудиятҳо дар пойгоҳи додаҳо) набояд вайрон карда шаванд. Пайвастагӣ маънои онро дорад, ки система аз як ҳолати дуруст ба ҳолати дурусти дигар интиқол дода мешавад.

Ҷудогона будан. Амалиётҳои мувозӣ набояд ба ҳамдигар таъсир расонанд, масалан, тағир додани маълумоте, ки аз ҷониби транзаксияи дигар истифода мешавад. Натиҷаи иҷрои амалиёти мувозӣ бояд ҳамон тавре бошад, ки агар амалиётҳо пай дар пай иҷро шуда бошанд.

Устуворӣ. Пас аз ворид шудан, тағирот набояд аз даст дода шавад.

Сабти транзаксия

Журнал тағиротҳои тавассути транзаксияҳоро нигоҳ медорад, атомӣ ва устувории маълумотро дар ҳолати нокомии система таъмин мекунад

Журнал дорои арзишҳое мебошад, ки маълумот қаблан ва пас аз он тавассути транзаксия тағир дода шудааст. Стратегияи сабти пешакӣ илова кардани сабти сабтро дар бораи арзишҳои қаблӣ пеш аз оғоз ва дар бораи арзишҳои ниҳоӣ пас аз анҷоми транзаксия талаб мекунад. Дар сурати қатъи ногаҳонии система, базаи маълумот гузоришро бо тартиби баръакс мехонад ва тағиротҳои тавассути транзаксия воридшударо бекор мекунад. Бо муомилоти қатъшуда дучор омадан, базаи маълумот онро иҷро мекунад ва дар бораи он ба гузориш тағйирот ворид мекунад. Дар ҳолати нокомӣ, пойгоҳи додаҳо гузоришро бо тартиби пешравӣ мехонад ва тағиротҳои тавассути транзаксия воридшударо бармегардонад. Бо ин роҳ, устувории муомилоти қаблан анҷомдодашуда ва атомии муомилоти қатъшуда нигоҳ дошта мешавад.

Барои барқарорсозӣ танҳо аз нав иҷро кардани транзаксияҳои ноком кофӣ нест.

Мисол. Корбар дар ҳисоби худ 500 доллар дорад ва корбар тасмим мегирад, ки онро аз банкомат бигирад. Ду транзаксия идома дорад. Якум арзиши тавозунро мехонад ва агар дар тавозун маблағи кофӣ мавҷуд бошад, он ба корбар пул медиҳад. Дуюм аз бақия маблағи заруриро хориҷ мекунад. Фарз мекунем, ки система вайрон шуд ва амалиёти аввал ноком шуд, аммо дуюм. Дар ин ҳолат, мо наметавонем ба корбар дубора пул барорем, ки системаро ба ҳолати аввалааш бо бақияи мусбӣ баргардонем.

Сатҳи изолятсия

Хонда шуд

Мушкилоти Dirty Read дар он аст, ки транзаксия метавонад натиҷаи мобайнии амалиёти дигарро хонад.

Мисол. Арзиши ибтидоии тавозуни $ 0 аст. T1 ба тавозуни шумо $ 50 илова мекунад. T2 арзиши тавозунро мехонад ($50). T1 тағиротҳоро рад мекунад ва хориҷ мешавад. T2 иҷроро бо маълумоти нодурусти тавозун идома медиҳад.

Ҳалли ин хондани маълумоти собит аст (Хондан Committed), ки хондани маълумотро, ки тавассути транзаксия тағир дода шудааст, манъ мекунад. Агар муомилоти А маҷмӯи муайяни маълумотро тағир дода бошад, пас транзаксияи В ҳангоми дастрасӣ ба ин маълумот маҷбур аст, ки то анҷоми амалиёти А интизор шавад.

Хониши такрорӣ

Мушкилоти навсозии гумшуда. T1 тағиротро дар болои тағироти T2 захира мекунад.

Мисол. Арзиши тавозуни ибтидоӣ $0 аст ва ду транзаксия ҳамзамон тавозуни онро пур мекунанд. T1 ва T2 тавозуни $ 0-ро мехонанд. Пас T2 $ 200 ба $ 0 илова мекунад ва натиҷаро захира мекунад. T1 $ 100 ба $ 0 илова мекунад ва натиҷаро захира мекунад. Натиҷаи ниҳоӣ ба ҷои 100 доллар 300 доллар аст.

Мушкилоти хондани такрорнашаванда. Хондани як маълумот такроран арзишҳои гуногунро бармегардонад.

Мисол. T1 арзиши тавозуни $0-ро мехонад. Пас T2 ба тавозуни $ 50 илова мекунад ва ба охир мерасад. T1 маълумотро бори дигар мехонад ва бо натиҷаи қаблӣ номувофиқӣ пайдо мекунад.

Хониши такроршаванда кафолат медиҳад, ки хондани дуюм ҳамон натиҷаро бармегардонад. Маълумоте, ки аз ҷониби як транзаксия хонда шудааст, то анҷоми транзаксия дар дигарон тағир дода намешавад. Агар транзаксияи А маҷмӯи муайяни маълумотро хонда бошад, пас транзаксияи В ҳангоми дастрасӣ ба ин маълумот маҷбур аст, ки то анҷом ёфтани амалиёти А интизор шавад.

Хониши фармоишӣ (сериализатсияшаванда)

Мушкилоти Phantom Reads. Ду дархосте, ки маълумотро дар асоси шарти муайян интихоб мекунанд, арзишҳои гуногунро бармегардонанд.

Мисол. T1 шумораи ҳамаи корбаронеро талаб мекунад, ки тавозуни онҳо аз $0 зиёд, вале камтар аз $100 аст. T2 аз корбаре, ки тавозуни $ 1 дорад, $101 тарҳ мекунад. T1 дархостро дубора нашр мекунад.

Хониши фармоишӣ (Serializable). Амалиётҳо комилан пайдарпай иҷро карда мешаванд. Навсозӣ ё илова кардани сабтҳое, ки ба шартҳои дархост мувофиқанд, манъ аст. Агар транзаксияи А маълумотро аз тамоми ҷадвал дархост карда бошад, пас тамоми ҷадвал барои дигар амалиётҳо то анҷоми амалиёти А яхбандӣ карда мешавад.

Барномасоз

Тартиберо муқаррар мекунад, ки дар он амалиётҳо бояд ҳангоми муомилоти параллелӣ иҷро карда шаванд.

Сатҳи муайяни изолятсияро таъмин мекунад. Агар натиљаи амалњо аз тартиби онњо вобаста набошад, он гоњ ин гуна амалњо коммутативї мебошанд (Ивазшаванда). Амалиётҳои хониш ва амалиётҳо оид ба маълумоти гуногун коммутативӣ мебошанд. Амалҳои хондан-навиштан ва навиштан-коммутативӣ нестанд. Вазифаи банақшагир аз он иборат аст, ки амалиёти бо транзаксияҳои мувозӣ иҷрошаванда ба ҳам пайваст карда шавад, то натиҷаи иҷро ба иҷрои пайдарпайи транзаксияҳо баробар бошад.

Механизмҳои идоракунии корҳои параллелӣ (Назорати ҳамоҳангӣ)

Оптимистӣ ба ошкор ва ҳалли муноқишаҳо асос ёфтааст, пессимистӣ ба пешгирии пайдоиши муноқишаҳо асос ёфтааст.

Дар равиши оптимистӣ, корбарони сершумор нусхаҳои маълумотро дар ихтиёр доранд. Аввалин шахсе, ки таҳрирро анҷом медиҳад, тағиротро захира мекунад, дар ҳоле ки дигарон бояд тағиротро якҷоя кунанд. Алгоритми оптимистӣ имкон медиҳад, ки муноқиша рух диҳад, аммо система бояд аз низоъ барқарор шавад.

Бо равиши пессимистӣ, корбари аввалине, ки маълумотро мегирад, аз гирифтани маълумот ба дигарон монеъ мешавад. Агар муноқишаҳо нодир бошанд, интихоби стратегияи оптимистӣ оқилона аст, зеро он сатҳи баландтари ҳамоҳангиро таъмин мекунад.

Қулф кардан

Агар як транзаксия маълумот баста бошад, пас транзаксияҳои дигар бояд то кушода шудани он ҳангоми дастрасӣ ба маълумот интизор шаванд.

Блокро дар пойгоҳи додаҳо, ҷадвалҳо, сатрҳо ё атрибутҳо фаро гирифтан мумкин аст. Қулфи муштарак метавонад ба як маълумот тавассути якчанд транзаксия гузошта шавад, имкон медиҳад, ки ҳама транзаксияҳо (аз ҷумла оне, ки онро муқаррар кардааст) хонда шаванд, тағирот ва забти истисноиро манъ мекунад. Қулфи истисноӣ метавонад танҳо бо як транзаксия ҷорӣ карда шавад, ба ҳама гуна амалиёти муомилоти таъиншуда иҷозат медиҳад, ҳама гуна амали дигаронро манъ мекунад.

Бунбаст вазъиятест, ки транзаксияҳо дар ҳолати интизорӣ ба охир мерасанд, ки номуайян давом мекунад.

Мисол. Муомилоти аввал мунтазири он аст, ки маълумоти аз ҷониби дуюм гирифташуда озод карда шавад, дар ҳоле ки дуюм мунтазири он аст, ки маълумоте, ки аз ҷониби якум гирифта шудааст, озод карда шавад.

Ҳалли оптимистии мушкилоти бунбаст имкон медиҳад, ки бунбаст ба вуқӯъ ояд, аммо баъдан системаро тавассути баргардонидани яке аз муомилоти дар бунбаст алоқаманд барқарор мекунад.

Қуфлҳои сарбаста дар фосилаҳои муайян ҷустуҷӯ карда мешаванд. Яке аз усулҳои муайянкунӣ аз рӯи вақт аст, яъне ба назар гиред, ки агар транзаксия хеле тӯлонӣ анҷом ёбад, бунбаст ба амал омадааст. Вақте ки бунбаст пайдо мешавад, яке аз транзаксияҳо баргардонида мешавад ва имкон медиҳад, ки дигар муомилоти дар бунбаст алоқаманд ба анҷом расад. Интихоби ҷабрдида метавонад ба арзиши транзаксияҳо ё собиқаи онҳо (нақшаҳои интизорӣ-бидан ва захм-интизор) асос ёбад.

Ҳар як транзаксия T тамғаи вақт таъин карда мешавад TS дорои вақти оғози транзаксия.

Интизор - Бимиред.

агар TS(Ti) < TS(Tj), он гоҳ Ti интизор мешавад, вагарна Ti бармегардад ва боз бо ҳамон тамғаи вақт оғоз меёбад.

Агар транзаксияи ҷавон захираеро ба даст оварда бошад ва транзаксияи кӯҳна ҳамон манбаро талаб кунад, пас транзаксияи кӯҳна иҷозат дода мешавад, ки интизор шавад. Агар транзаксияи кӯҳна захираеро ба даст оварда бошад, пас амалиёти ҷавонтаре, ки ин манбаро дархост мекунад, баргардонида мешавад.

Интизорӣ.

агар TS(Ti) < TS(Tj), он гоҳ Tj бармегардад ва боз бо ҳамон тамғаи вақт оғоз меёбад, дар акси ҳол Ti интизорӣ

Агар транзаксияи ҷавонтар захира ба даст оварда бошад ва транзаксияи кӯҳна ҳамон манбаро талаб кунад, пас транзаксияи ҷавонтар баргардонида мешавад. Агар транзаксияи кӯҳна захираеро ба даст оварда бошад, пас ба муомилоти ҷавонтаре, ки ин манбаро дархост мекунад, иҷозат дода мешавад, ки интизор шавад. Интихоби қурбониёни бартарият аз бунбаст пешгирӣ мекунад, аммо транзаксияҳоеро, ки ба бунбаст наомадаанд, бармегардонад. Мушкилот дар он аст, ки транзаксияҳоро борҳо баргардонидан мумкин аст, зеро... муомилоти кӯҳна метавонад захираро барои муддати тӯлонӣ нигоҳ дорад.

Ҳалли пессимистии мушкилоти бунбаст имкон намедиҳад, ки транзаксия дар сурати мавҷуд будани хатари бунбаст оғоз шавад.

Барои ошкор кардани бунбаст, график сохта мешавад (графики интизорӣ, графики интизорӣ), қуллаҳои он транзаксияҳо мебошанд ва кунҷҳо аз транзаксияҳо, ки мунтазири интишори маълумот ба транзаксияе мебошанд, ки ин маълумотро гирифтаанд. Агар график ҳалқа дошта бошад, бунбаст рух додааст. Сохтани графики интизорӣ, махсусан дар пойгоҳи додаҳои тақсимшуда, як тартиби гаронбаҳост.

Қулфи дуфазавӣ - аз бунбастҳо тавассути мусодираи тамоми захираҳои аз ҷониби транзаксия истифодашуда дар оғози транзаксия ва озод кардани онҳо дар охири муомилот пешгирӣ мекунад

Ҳама амалиётҳои басташавӣ бояд пеш аз кушодани аввалин анҷом дода шаванд. Он ду марҳила дорад - Марҳилаи афзоиш, ки дар давоми он чангҳо ҷамъ мешаванд ва марҳилаи камшавӣ, ки дар давоми он чангҳо озод мешаванд. Агар имконнопазирии гирифтани яке аз захираҳо, транзаксия аз нав оғоз меёбад. Мумкин аст, ки транзаксия захираҳои заруриро ба даст оварда натавонад, масалан, агар якчанд транзаксияҳо барои як захираҳо рақобат кунанд.

Уҳдадории думарҳила кафолат медиҳад, ки ӯҳдадорӣ дар ҳама нусхаҳои пойгоҳи додаҳо иҷро карда мешавад

Ҳар як пойгоҳи додаҳо маълумотро дар бораи маълумоте, ки ба қайд гирифта мешавад, ворид мекунад ва ба координатор OK (Марҳилаи овоздиҳӣ) ҷавоб медиҳад. Пас аз он ки ҳама ба хубӣ ҷавоб доданд, ҳамоҳангсоз сигнал мефиристад, ки ҳамаро ӯҳдадор мекунад. Пас аз анҷом додан, серверҳо ба хубӣ ҷавоб медиҳанд; агар ақаллан як нафар OK ҷавоб надиҳад, координатор сигналро барои бекор кардани тағирот ба ҳама серверҳо мефиристад (Марҳилаи анҷомёбӣ).

Усули тамғаи вақт

Ҳангоми кӯшиши дастрасӣ ба маълумоте, ки амалиёти ҷавонтар алоқаманд аст, транзаксияи кӯҳна баргардонида мешавад

Ҳар як транзаксия тамғаи вақт таъин карда мешавад TS ба вақти оғози иҷро мувофиқат мекунад. Агар Ti бар Tj, он гоҳ TS(Ti) < TS(Tj).

Вақте ки транзаксия баргардонида мешавад, ба он тамғаи вақт таъин карда мешавад. Ҳар як объекти маълумот Q дар муомилот иштирок доранд, бо ду тамғакоғаз қайд карда мешавад. W-TS(Q) — тамғаи вақти аз ҳама ҷавонтарин транзаксия, ки бомуваффақият сабт шудааст Q. R-TS(Q) — тамғаи вақт аз амалиёти ҷавонтарин, ки сабти хонданро иҷро кардааст Q.

Вақте ки транзаксия T дархост барои хондани маълумот Q Ду вариант вуҷуд дорад.

агар TS(T) < W-TS(Q), яъне, маълумот аз ҷониби амалиёти ҷавонтар нав карда шуд, пас муомилот T бармегардад.

агар TS(T) >= W-TS(Q), баъд хониш ичро карда мешавад ва R-TS(Q) табдил меёбад МАКС(R-TS(Q), TS(T)).

Вақте ки транзаксия T тағир додани маълумотро талаб мекунад Q Ду вариант вуҷуд дорад.

агар TS(T) < R-TS(Q), яъне маълумот аллакай аз ҷониби амалиёти ҷавонтар хонда шудааст ва агар тағйирот ворид карда шавад, ихтилоф ба миён меояд. Муомила T бармегардад.

агар TS(T) < W-TS(Q), яъне транзаксия кӯшиш мекунад, ки арзиши навтарро баргардонад, транзаксияи T баргардонида мешавад. Дар ҳолатҳои дигар, тағирот гузаронида мешавад ва W-TS(Q) баробар мешавад TS(T).

Сохтани графики интизории гаронбаҳо талаб карда намешавад. Муомилоти кӯҳна аз амалиёти навтар вобаста аст, бинобар ин дар графики интизорӣ давраҳо вуҷуд надоранд. Ҳеҷ гуна бунбаст вуҷуд надорад, зеро транзаксияҳо интизор намешаванд, вале фавран баргардонида мешаванд. Бозгашти пай дар пай имконпазир аст. Агар Ti ғелонда шуд ва Tj Ман маълумотеро, ки ман тағир додам, хондам Ti, он гоҳ Tj низ бояд баргашт. Агар дар як вакт Tj аллакай содир шуда бошад, пас вайрон кардани принципи устуворй ба амал меояд.

Яке аз роҳҳои ҳалли бозгашти каскадӣ. Амалиёт тамоми амалиёти навиштанро дар охири анҷом медиҳад ва дигар транзаксияҳо бояд то анҷоми ин амалиёт интизор шаванд. Муомилот интизор мешаванд, ки пеш аз хондан анҷом дода шаванд.

Қоидаи навиштани Томас - як варианти усули тамғаи вақт, ки дар он маълумоти аз ҷониби транзаксияи ҷавон навсозӣшуда аз болои як шахси калонсол манъ аст

Муомила T тағир додани маълумотро талаб мекунад Q. Агар TS(T) < W-TS(Q), яъне транзаксия кӯшиш мекунад, ки арзиши навтарро аз нав сабт кунад, транзаксияи T мисли усули тамғаи вақт баргардонида намешавад.

Манбаъ: will.com

Илова Эзоҳ