Vad är eventuell konsekvens?
Eventuell konsistens är en programmeringsmodell där programmerare antar att under en tillräckligt lång tid och utan förändringar i ett system kommer den aktuella versionen av ett visst program så småningom att distribueras tills varje replik av programmet är konsekvent. Begreppet eventuell konsistens används i programmeringsmetoder som optimistisk replikering, distribuerat delat minne och distribuerade transaktioner. När det gäller databaser uppnås eventuell konsistens genom en trestegsprocess. Först görs den distribuerade informationen tillgänglig på systemet; detta följs av ett mjukt tillstånd, där olika användare fortfarande kan arbeta med olika versioner av data; och slutligen uppnås konsistens, och alla datorer har tillgång till identiska data.
Ett av de mest synliga sätten för eventuell konsistens tillämpas har att göra med programuppdateringar som distribueras online. Under de första sekunderna efter det att en uppdatering har släppts kommer ingen att ha den; det har inte gått tillräckligt med tid för användare av programvaran att ladda ner och installera uppdateringen. Detta är det "tillgängliga" tillståndet; uppdateringen finns men har ännu inte distribuerats. Med tiden när användare laddar ner uppdateringen kommer vissa att ha den och andra inte. Efter att tillräckligt med tid har gått har alla som använder programvaran uppdaterat till den senaste versionen. Detta är förutsättningen bakom tillståndet för eventuell konsistens: ges tillräckligt med tid kommer varje uppdatering att spridas fullt ut i systemet.
Eftersom systemet arbetar för en eventuell konsistens är konflikter oundvikliga. Dessa inträffar när programversionen eller informationen som för närvarande finns på datorn inte matchar programmodellens "modellversion". Program skapas vanligtvis för att känna igen sådana konflikter och hantera dem. När filerna på en specifik dator är äldre än den senaste versionen av programvaran eller data i fråga kommer systemet vanligtvis att uppmana användaren att initiera en uppdatering för att lösa skillnaden.
Tre möjliga metoder finns tillgängliga för att genomföra dessa upplösningar: skriva reparation, läsreparation och asynkron reparation. Dessa metoder ger versionen av programmet eller data i linje med den konsekventa modellen. Den viktigaste skillnaden mellan dessa har att göra med hur systemet tider på reparationsoperationen. Alla sådana operationer har fördelar och nackdelar.
Vid en skrivreparation görs ändringar av koden som lagras på datorn under en skrivoperation, när datorn redan skriver något till systemets hårddisk. Detta reparerar inkonsekvensen, vilket gör programmet eller data i linje med modellen, men det bromsar också tillfälligt den ursprungliga skrivoperationen. För en läsreparation sker korrigeringen under en läscykel från hårddisken. Detta i sin tur bromsar läsoperationen. Vid asynkron reparation sker reparationen när varken en läsning eller skrivning sker, vilket leder till konsumtion av viloläge på CPU: n.