Datenkohärenz
Daten, die kohärente sind Daten, die im gesamten Netzwerk identisch sind. Anders ausgedrückt: Wenn Daten kohärent sind, werden Daten auf dem Server und alle Clients synchronisiert. Eine Art von Softwaresystem, das Datenkohärenz bereitstellt, ist ein Revisionskontrollessystem (RCS). Ein solches System ist in der Regel ziemlich einfach, wobei nur ein Benutzer eine bestimmte Datei gleichzeitig ändern darf. Andere Personen können die Datei lesen, aber nicht ändern.
Der Benutzer, der eine Datei ändern kann, soll sie ausgecheckt haben. Der Benutzer checkt dann die geänderte Datei ein, damit andere die Änderungen sehen können. Erst nachdem der Benutzer eine Datei wieder eingecheckt hat, kann ein anderer Benutzer sie auschecken.
Ein RCS erfordert eine aktive Intervention der Benutzer, um auf nützliche Weise zu arbeiten. Ein Dateisystem, das über ein Netzwerk ausgeführt wird, sollte das Problem automatisch behandeln.
Das Bereitstellen einer lokalen Zwischenspeicherung kohärenter Daten ist relativ einfach, wenn Sie jeweils einen Thread auf einem Client haben, auf den eine Datei über das Netzwerk zugreift. In den meisten Fällen können jedoch viele verschiedene Threads auf einem oder mehreren Computern dieselbe Datei lesen. Diese Situation ist immer noch recht einfach. Da die Daten in der Datei statisch sind, kann jeder Clientcomputer eine eigene lokale Kopie ohne Auswirkungen auf die Datenkohärenz haben.
Eine häufigere Situation ist ein Thread, der die Datei ändert, und viele andere Threads, die sie lesen. Im Moment, in dem ein Schreibvorgang auftritt, sind alle lokalen Caches dieser Datei veraltet. Der Server muss jeden Client benachrichtigen, um seinen Cache aufzugeben. Alle nachfolgenden Lesevorgänge für die Datei müssen im gesamten Netzwerk ausgeführt werden.
In einer anderen gängigen Situation können mehrere Threads auf einem oder mehreren Netzwerkclients versuchen, in dieselbe Datei zu schreiben. Diese Situation ähnelt einem, in dem mehrere RCS-Benutzer alle Änderungen an derselben Datei vornehmen möchten. Jeder Benutzer in Sequenz muss die Datei auschecken, Änderungen vornehmen und die Datei dann wieder einchecken. Ebenso muss der Server in einem lokalen Zwischenspeicherungsschema gleichzeitig die Berechtigung zum Schreiben in eine Datei in einen Clientthread übergeben.