Hva er eventuell konsistens?
Eventuell konsistens er en programmeringsmodell der programmerere antar at over en lang nok tidsperiode og uten endringer i et system, vil den nåværende versjonen av et bestemt program til slutt distribuere til hver kopi av programmet er konsistent. Begrepet eventuell konsistens brukes i programmeringsmetoder som optimistisk replikering, distribuert delt minne og distribuerte transaksjoner. Når det gjelder databaser, oppnås eventuell konsistens gjennom en tretrinnsprosess. Først blir den distribuerte informasjonen tilgjengelig på systemet; dette blir fulgt av en myk tilstand, der forskjellige brukere fremdeles kan jobbe med forskjellige versjoner av dataene; og til slutt oppnås konsistens, og alle datamaskiner har tilgang til identiske data.
En av de mest synlige måtene man eventuelt bruker konsistens på, har å gjøre med programvareoppdateringer distribuert online. De første sekundene etter at en oppdatering er utgitt, vil ingen ha den; det har ikke gått nok tid til at brukere av programvaren kan laste ned og installere oppdateringen. Dette er den "tilgjengelige" staten; oppdateringen eksisterer, men har ennå ikke blitt distribuert. Over tid, når brukerne laster ned oppdateringen, vil noen ha den og noen ikke. Etter at det har gått nok tid, vil imidlertid alle som bruker programvaren ha oppdatert til den nyeste versjonen. Dette er forutsetningen bak tilstanden til eventuell konsistens: gitt nok tid, vil enhver oppdatering forplante seg i hele systemet.
Ettersom systemet fungerer mot en eventuell konsistens, er konflikter uunngåelige. Disse oppstår når programversjonen eller informasjonen som for øyeblikket er på datamaskinen, ikke samsvarer med "modellversjonen" av programmet. Programmer er vanligvis satt opp for å gjenkjenne slike konflikter og håndtere dem. Når filene på en spesifikk datamaskin er eldre enn den nyeste modellversjonen av programvaren eller dataene det gjelder, vil systemet vanligvis be brukeren om å starte en oppdatering for å løse forskjellen.
Tre mulige metoder er tilgjengelige for å utføre disse oppløsningene: skrive reparasjon, lese reparasjon og asynkron reparasjon. Disse metodene bringer versjonen av programmet eller dataene i samsvar med den konsistente modellen. Den viktigste forskjellen mellom disse har å gjøre med hvordan systemet ganger reparasjonsoperasjonen. Alle slike operasjoner har fordeler og ulemper.
I en skrivereparasjon blir det gjort endringer i koden som er lagret på datamaskinen under en skriveoperasjon, når datamaskinen allerede skriver noe til systemets harddisk. Dette reparerer inkonsekvensen og bringer programmet eller dataene i tråd med modellen, men det bremser også den opprinnelige skriveoperasjonen midlertidig. For en leseutbedring skjer den korrigerende operasjonen under en lesesyklus fra harddisken. Dette bremser igjen leseoperasjonen. Ved asynkron reparasjon skjer reparasjonen når verken en lese- eller skriveoperasjon skjer, noe som fører til forbruk av tomgangssykluser på CPU-en.