Što je konačna dosljednost?

Eventualna dosljednost je model programiranja u kojem programeri pretpostavljaju da će tijekom dovoljno dugog vremenskog razdoblja i bez promjena u sustavu, trenutna verzija određenog programa na kraju distribuirati sve dok svaka replika programa ne bude dosljedna. Koncept eventualne konzistentnosti koristi se u metodama programiranja kao što su optimistična replikacija, distribuirana zajednička memorija i distribuirane transakcije. Što se tiče baza podataka, konačna dosljednost postiže se kroz proces u tri koraka. Prvo, distribuirane informacije postaju dostupne u sustavu; nakon toga slijedi meko stanje, u kojem različiti korisnici još uvijek mogu raditi s različitim verzijama podataka; i konačno je postignuta dosljednost, a sva računala imaju pristup identičnim podacima.

Jedan od najvidljivijih načina primjene konačne dosljednosti odnosi se na ažuriranja softvera koja se distribuiraju online. Prvih nekoliko sekundi nakon objave ažuriranja nitko ga neće imati; nije prošlo dovoljno vremena da korisnici softvera preuzmu i instaliraju ažuriranje. Ovo je stanje “dostupno”; ažuriranje postoji, ali se tek treba distribuirati. S vremenom, kako korisnici preuzimaju ažuriranje, neki će ga imati, a neki neće. Međutim, nakon što prođe dovoljno vremena, svi koji koriste softver ažurirat će se na najnoviju verziju. Ovo je premisa iza stanja konačne konzistentnosti: ako ima dovoljno vremena, svako ažuriranje će se u potpunosti širiti kroz sustav.

Kako sustav radi prema konačnoj dosljednosti, sukobi su neizbježni. To se događa kada verzija programa ili informacije koje se trenutno nalaze na računalu ne odgovaraju “verziji modela” programa. Programi su obično postavljeni da prepoznaju takve sukobe i upravljaju njima. Kada su datoteke na određenom računalu starije od najnovije verzije modela softvera ili podataka o kojima je riječ, sustav će obično zatražiti od korisnika da pokrene ažuriranje kako bi se riješio nesrazmjer.

Dostupne su tri moguće metode za postizanje ovih rješenja: popravak pisanja, popravak čitanja i asinkroni popravak. Sve ove metode dovode verziju programa ili podataka u skladu s dosljednim modelom. Ključna razlika među njima ima veze s načinom na koji sustav mjeri operaciju popravka. Sve takve operacije imaju prednosti i nedostatke.

U popravku pisanja, promjene koda pohranjenog na računalu vrše se tijekom operacije pisanja, kada računalo već nešto upisuje na tvrdi disk sustava. To popravlja nedosljednost, usklađujući program ili podatke s modelom, ali također privremeno usporava izvornu operaciju pisanja. Za popravak čitanja, korektivna operacija se događa tijekom ciklusa čitanja s tvrdog diska. To, pak, usporava radnju čitanja. U asinkronom popravku, popravak se događa kada se ne dogodi ni operacija čitanja ni pisanja, što dovodi do potrošnje ciklusa mirovanja na CPU-u.