Kaj je končna doslednost?

Eventualna doslednost je model programiranja, pri katerem programerji domnevajo, da se bo trenutna različica določenega programa v dovolj dolgem časovnem obdobju in brez sprememb sistema sčasoma distribuirala, dokler ni konsistentna vsaka replika programa. Koncept morebitne doslednosti se uporablja v metodah programiranja, kot so optimistična replikacija, porazdeljeni pomnilnik v skupni rabi in porazdeljene transakcije. Kar zadeva baze podatkov, se končna doslednost doseže s postopkom v treh korakih. Prvič, porazdeljene informacije so na voljo v sistemu; temu sledi mehko stanje, v katerem lahko različni uporabniki še vedno delajo z različnimi različicami podatkov; in končno je dosežena doslednost in vsi računalniki imajo dostop do enakih podatkov.

Eden od najbolj vidnih načinov uporabe končne doslednosti je povezan s posodobitvami programske opreme, ki se distribuirajo na spletu. Prvih nekaj sekund po izdaji posodobitve je nihče ne bo imel; ni minilo dovolj časa, da bi uporabniki programske opreme prenesli in namestili posodobitev. To je stanje »na voljo«; posodobitev obstaja, vendar je še ni treba distribuirati. Sčasoma, ko uporabniki prenesejo posodobitev, jo bodo nekateri imeli, drugi pa ne. Po preteku dovolj časa bodo vsi, ki uporabljajo programsko opremo, posodobili na najnovejšo različico. To je predpostavka za stanje končne doslednosti: če ima dovolj časa, se bo vsaka posodobitev v celoti razširila po sistemu.

Ker sistem deluje v smeri končne doslednosti, so konflikti neizogibni. Do njih pride, ko se različica programa ali informacije, ki so trenutno v računalniku, ne ujemajo z “različico modela” programa. Programi so običajno nastavljeni tako, da prepoznajo takšne konflikte in jih obvladajo. Ko so datoteke v določenem računalniku starejše od najnovejše različice modela zadevne programske opreme ali podatkov, bo sistem običajno pozval uporabnika, naj sproži posodobitev, da odpravi neskladje.

Za izvajanje teh rešitev so na voljo trije možni načini: popravilo pisanja, popravilo branja in asinhrono popravilo. Vse te metode uskladijo različico programa ali podatkov z doslednim modelom. Ključna razlika med njimi je povezana z načinom, na katerega sistem meri operacijo popravila. Vse takšne operacije imajo prednosti in slabosti.

Pri popravilu pisanja se spremembe kode, shranjene v računalniku, izvedejo med operacijo pisanja, ko računalnik že nekaj zapisuje na trdi disk sistema. To popravi nedoslednost in uskladi program ali podatke z modelom, vendar tudi začasno upočasni prvotno operacijo pisanja. Za popravilo branja se popravljalna operacija izvede med ciklom branja s trdega diska. To pa upočasni postopek branja. Pri asinhronem popravilu se popravilo izvede, ko se ne zgodi niti branje niti zapisovanje, kar vodi do porabe ciklov mirovanja na CPE.