Datenkoherenz
Daten, die einheitlich sind, sind Daten, die im gesamten Netzwerk identisch sind. Anders ausgedrückt: Wenn Die Daten zusammenhängend sind, werden die Daten auf dem Server und allen Clients synchronisiert. Eine Art von Softwaresystem, das Datenkoherenz bietet, ist ein Revisionskontrollsystem (Revision Control System, RCS). Ein solches System ist in der Regel recht einfach, da nur ein Benutzer eine angegebene Datei gleichzeitig ändern darf. Andere benutzer können die Datei lesen, aber nicht ändern.
Der Benutzer, der eine Datei ändern kann, soll sie ausgecheckt haben. Der Benutzer überprüft dann die geänderte Datei, damit andere Benutzer die Änderungen sehen können. Erst nachdem der Benutzer eine Datei wieder eincheckt hat, kann sie von einem anderen Benutzer ausgecheckt werden.
Ein RCS erfordert den aktiven Eingriff von Benutzern, um auf nützliche Weise zu arbeiten. Ein Dateisystem, das über ein Netzwerk betrieben wird, sollte das Problem automatisch behandeln.
Das lokale Zwischenspeichern von konsistenten Daten ist recht einfach, wenn ein Thread auf einem Client gleichzeitig auf eine Datei über das Netzwerk zugreifen kann. In den meisten Fällen lesen jedoch viele verschiedene Threads auf einem oder mehreren Computern möglicherweise dieselbe Datei. Diese Situation ist immer noch recht einfach. Da die Daten in der Datei statisch sind, kann jeder Clientcomputer über eine eigene lokale Kopie verfügen. Dies hat keine Auswirkungen auf die Datenkoherenz.
Eine häufigere Situation ist ein Thread, der die Datei ändert, und viele andere Threads, die sie lesen. Wenn ein Schreibvorgang auftritt, sind alle lokalen Caches dieser Datei veraltet. Der Server muss jeden Client benachrichtigen, seinen Cache zu verabbruchen. Alle nachfolgenden Lesevorgänge für die Datei müssen über das Netzwerk ausgeführt werden.
In einer anderen häufigen Situation können mehrere Threads auf einem oder mehreren Netzwerkclients versuchen, in dieselbe Datei zu schreiben. Diese Situation ähnelt einer Situation, in der mehrere RCS, die alle Änderungen an derselben Datei vornehmen möchten. Jeder Benutzer nacheinander muss die Datei auschecken, Änderungen vornehmen und die Datei dann wieder einchecken. Ebenso muss der Server in einem lokalen Cacheschema die Berechtigung zum Schreiben in eine Datei an einen Clientthread nach dem anderen übertragen.