Coherency van gegevens
Gegevens die coherente zijn gegevens die hetzelfde zijn in het netwerk. Met andere woorden, als gegevens coherent zijn, worden de gegevens op de server en alle clients gesynchroniseerd. Eén type softwaresysteem dat coherentie van gegevens biedt, is een revisiebeheersysteem (RCS). Een dergelijk systeem is meestal vrij eenvoudig, waarbij slechts één gebruiker tegelijk een opgegeven bestand mag wijzigen. Anderen kunnen het bestand lezen, maar niet wijzigen.
De gebruiker die een bestand kan wijzigen, wordt gezegd dat het is uitgecheckt. De gebruiker controleert vervolgens het gewijzigde bestand, zodat anderen de wijzigingen kunnen zien. Pas nadat de gebruiker een bestand weer heeft ingecheckt, kan een andere gebruiker het uitchecken.
Een RCS vereist dat de actieve tussenkomst van gebruikers op een nuttige manier werkt. Een bestandssysteem dat via een netwerk werkt, moet het probleem automatisch afhandelen.
Lokale caching van coherente gegevens is vrij eenvoudig wanneer u één thread op één client hebt die toegang heeft tot een bestand via het netwerk tegelijk. In de meeste gevallen kunnen echter veel verschillende threads op een of meer computers hetzelfde bestand lezen. Deze situatie is nog vrij eenvoudig. Omdat de gegevens in het bestand statisch zijn, kan elke clientcomputer een eigen lokale kopie hebben zonder gevolgen voor de coherentie van gegevens.
Een veelvoorkomende situatie is dat één thread het bestand wijzigt en veel andere threads die het lezen. Het moment waarop een schrijfbewerking plaatsvindt, zijn alle lokale caches van dat bestand verouderd. De server moet elke client op de hoogte stellen om de cache ervan te verlaten. Eventuele volgende leesbewerkingen voor het bestand moeten worden uitgevoerd via het netwerk.
In een andere veelvoorkomende situatie proberen meerdere threads op een of meer netwerkclients naar hetzelfde bestand te schrijven. Deze situatie is vergelijkbaar met een situatie waarin meerdere RCS-gebruikers allemaal wijzigingen willen aanbrengen in hetzelfde bestand. Elke gebruiker in volgorde moet het bestand uitchecken, wijzigingen aanbrengen en het bestand vervolgens weer inchecken. Op dezelfde manier moet de server in een lokaal cacheschema de bevoegdheid voor het schrijven naar een bestand naar één clientthread tegelijk overdragen.