Kas yra lygiagretumo kontrolė?

Duomenų valdymo programavimo metu lygiagretumo kontrolė yra mechanizmas, skirtas užtikrinti, kad vienu metu atliekamos operacijos generuotų tikslius rezultatus. Tie rezultatai taip pat turi būti gauti laiku. Lygiagretumo valdymas labai dažnai matomas duomenų bazėse, kuriose yra paieškos informacijos talpykla, kurią vartotojai gali gauti.

Programuotojai bando sukurti duomenų bazę taip, kad svarbių operacijų poveikis bendrai naudojamiems duomenims būtų serijinis lygiavertis. Tai reiškia, kad duomenys, kurie susisiekia su operacijų rinkiniais, būtų tam tikros būsenos, kai būtų galima gauti rezultatus, jei visos operacijos vykdomos nuosekliai ir tam tikra tvarka. Kartais tie duomenys yra negaliojantys, nes jie keičiami dviem operacijomis vienu metu.

Yra daug būdų, kaip užtikrinti, kad operacijos būtų vykdomos viena po kitos, įskaitant abipusio išskyrimo naudojimą ir išteklių, nusprendžiančių, kurios operacijos turi prieigą, kūrimą. Tačiau tai per daug ir neleis programuotojui gauti naudos iš paskirstytojo sistemos lygiagretumo valdymo. Lygiagretumo kontrolė leidžia vienu metu vykdyti kelias operacijas, tuo pačiu išlaikant šias operacijas atokiau viena nuo kitos, užtikrinant linijiškumą. Vienas iš būdų, kaip įgyvendinti lygiagretumo kontrolę, yra išskirtinio užrakto naudojimas tam tikram ištekliui, kai atliekamos nuoseklios operacijos, kurios dalijasi ištekliais. Sandoriai užrakins objektą, kurį ketinama naudoti, ir jei kuri nors kita operacija pateikia užklausą dėl užrakinto objekto, ta operacija turi palaukti, kol objektas bus atrakintas.

Šio metodo įgyvendinimas paskirstytose sistemose apima užraktų tvarkykles – serverius, kurie išduoda išteklių užraktus. Tai labai panašu į serverius, skirtus centralizuotoms abipusėms išimtims, kur klientai gali prašyti užrakinti ir siųsti pranešimus, kad būtų atlaisvinti tam tikro šaltinio užraktai. Tačiau nuoseklaus vykdymo išsaugojimas vis dar būtinas lygiagretumo kontrolei. Jei dvi atskiros operacijos pasiekia panašų objektų rinkinį, rezultatai turi būti panašūs ir taip, lyg šios operacijos būtų įvykdytos tam tikra tvarka. Siekiant užtikrinti prieigos prie išteklių tvarką, įvestas dviejų fazių užraktas, o tai reiškia, kad atleidus atskirą užraktą, operacijos neleidžiamos naujos užrakinimo.

Dviejų fazių užrakinimo lygiagretumo kontrolei pradinė fazė laikoma augimo faze, kai operacija įgyja reikiamą užraktą. Kitas etapas laikomas mažėjimo faze, kai operacijos užraktai atleidžiami. Yra problemų dėl šio tipo užrakinimo. Jei operacijos nutraukiamos, kitose operacijose gali būti naudojami duomenys iš objektų, kuriuos pakeis ir atrakino nutrauktos operacijos. Dėl to kiti sandoriai būtų nutraukti.