Kas yra galutinis nuoseklumas?

Galutinis nuoseklumas yra programavimo modelis, kuriame programuotojai daro prielaidą, kad per pakankamai ilgą laiką ir nekeičiant sistemos, dabartinė konkrečios programos versija galiausiai bus platinama tol, kol kiekviena programos kopija bus nuosekli. Galutinio nuoseklumo sąvoka naudojama programavimo metoduose, tokiuose kaip optimistinis replikavimas, paskirstyta bendra atmintis ir paskirstytos operacijos. Kalbant apie duomenų bazes, galutinis nuoseklumas pasiekiamas per trijų etapų procesą. Pirma, paskirstyta informacija yra prieinama sistemoje; po to atsiranda minkštoji būsena, kai skirtingi vartotojai vis dar gali dirbti su skirtingomis duomenų versijomis; ir galiausiai pasiekiamas nuoseklumas, ir visi kompiuteriai turi prieigą prie identiškų duomenų.

Vienas iš labiausiai matomų galimo nuoseklumo taikymo būdų yra susijęs su programinės įrangos atnaujinimais, platinamais internete. Pirmąsias kelias sekundes po atnaujinimo išleidimo niekas jo neturės; nepraėjo pakankamai laiko programinės įrangos naudotojams atsisiųsti ir įdiegti naujinimą. Tai yra „pasiekiama“ būsena; naujinimas yra, bet dar turi būti platinamas. Laikui bėgant, kai vartotojai atsisiunčia naujinimą, kai kurie jį turės, o kiti ne. Tačiau praėjus pakankamai laiko, visi programinės įrangos naudotojai bus atnaujinami į naujausią versiją. Tai yra galutinio nuoseklumo būsenos prielaida: suteikus pakankamai laiko, bet koks atnaujinimas bus visiškai paskleistas visoje sistemoje.

Kadangi sistema siekia nuoseklumo, konfliktai yra neišvengiami. Taip atsitinka, kai programos versija arba šiuo metu kompiuteryje esanti informacija neatitinka programos „modelio versijos“. Paprastai yra sukurtos programos, kurios atpažintų tokius konfliktus ir juos valdytų. Kai failai konkrečiame kompiuteryje yra senesni nei naujausio modelio programinės įrangos ar atitinkamų duomenų versija, sistema paprastai paragins vartotoją inicijuoti naujinimą, kad pašalintų skirtumus.

Galimi trys galimi šioms rezoliucijoms pritaikyti būdai: rašymo taisymas, skaitymo taisymas ir asinchroninis taisymas. Visi šie metodai suderina programos ar duomenų versiją su nuosekliu modeliu. Pagrindinis skirtumas tarp jų yra susijęs su būdu, kuriuo sistema laiko taisymo operaciją. Visos tokios operacijos turi privalumų ir trūkumų.

Atliekant rašymo taisymą, kompiuteryje saugomo kodo pakeitimai atliekami rašymo operacijos metu, kai kompiuteris jau kažką rašo į sistemos standųjį diską. Tai pašalina nenuoseklumą, suderindama programą ar duomenis su modeliu, tačiau laikinai sulėtina pradinę rašymo operaciją. Atliekant skaitymo taisymą, korekcinė operacija atliekama skaitymo iš standžiojo disko ciklo metu. Tai savo ruožtu sulėtina skaitymo operaciją. Atliekant asinchroninį taisymą, taisymas įvyksta, kai nevyksta nei skaitymo, nei rašymo operacijos, todėl CPU eikvoja tuščiosios eigos ciklus.