Hvad er eventuel konsistens?
Eventuel konsistens er en programmeringsmodel, hvor programmerere antager, at over en lang nok periode og uden ændringer til et system, vil den aktuelle version af et bestemt program til sidst distribuere, indtil hver kopi af programmet er konsistent. Begrebet eventuel konsistens bruges i programmeringsmetoder såsom optimistisk replikation, distribueret delt hukommelse og distribuerede transaktioner. Med hensyn til databaser opnås eventuel konsistens gennem en tretrinsproces. Først gøres de distribuerede oplysninger tilgængelige på systemet; dette efterfølges af en blød tilstand, hvor forskellige brugere muligvis stadig arbejder med forskellige versioner af dataene; og endelig opnås konsistens, og alle computere har adgang til identiske data.
En af de mest synlige måder, hvor eventuel konsistens anvendes, har at gøre med softwareopdateringer, der distribueres online. I de første få sekunder efter, at en opdatering er frigivet, har ingen den; der er ikke tid nok til brugere af softwaren til at downloade og installere opdateringen. Dette er den "tilgængelige" tilstand; opdateringen findes, men er endnu ikke distribueret. Efterhånden som brugerne downloader opdateringen, vil nogle have den og andre ikke. Efter at der er gået nok tid, vil alle, der bruger softwaren, have opdateret til den nyeste version. Dette er forudsætningen bag tilstanden med eventuel konsistens: givet tilstrækkelig tid, vil enhver opdatering fuldt ud propagere i hele systemet.
Idet systemet fungerer mod en eventuel konsistens, er konflikter uundgåelige. Disse opstår, når programversionen eller informationerne, der i øjeblikket findes på computeren, ikke matcher programmodellets "modelversion". Programmer er normalt oprettet til at genkende sådanne konflikter og styre dem. Når filerne på en bestemt computer er ældre end den seneste modelversion af den pågældende software eller data, vil systemet normalt bede brugeren om at starte en opdatering for at løse forskellen.
Tre mulige metoder er tilgængelige til at gennemføre disse opløsninger: skriv reparation, læse reparation og asynkron reparation. Disse metoder bringer alle versionen af programmet eller dataene i overensstemmelse med den konsistente model. Den vigtigste forskel mellem disse har at gøre med den måde, hvorpå systemet betaler reparationsoperationen. Alle sådanne operationer har fordele og ulemper.
Ved en skrivereparation foretages ændringer af koden, der er gemt på computeren, under en skrivning, når computeren allerede skriver noget til systemets harddisk. Dette reparerer inkonsekvensen, hvilket bringer programmet eller dataene i overensstemmelse med modellen, men det bremser også den oprindelige skrivehandling midlertidigt. For en læsereparation forekommer den korrigerende handling under en læsecyklus fra harddisken. Dette bremser igen læsefunktionen. Ved asynkron reparation finder reparationen sted, når hverken en læse- eller skriveoperation finder sted, hvilket fører til forbrug af tomgangscyklusser på CPU'en.