Share via


Datenkohärenz

Daten, die kohärent sind, sind Daten, die im gesamten Netzwerk identisch sind. Mit anderen Worten: Wenn Daten kohärent sind, werden die Daten auf dem Server und allen Clients synchronisiert. Ein Softwaresystemtyp, der Datenkohärenz bereitstellt, ist ein Revisionssteuerungssystem (RCS). Ein solches System ist in der Regel ziemlich einfach, da nur ein Benutzer eine angegebene Datei gleichzeitig ändern darf. Andere 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 sie von einem anderen Benutzer ausgecheckt werden.

Ein RCS erfordert das aktive Eingreifen der Benutzer, um sinnvoll zu arbeiten. Ein Dateisystem, das in einem Netzwerk arbeitet, sollte das Problem automatisch behandeln.

Die lokale Zwischenspeicherung kohärenter Daten ist relativ einfach, wenn Sie über einen Thread auf einem Client verfügen, der gleichzeitig über das Netzwerk auf eine Datei zugreift. In den meisten Fällen können jedoch viele verschiedene Threads auf einem oder mehreren Computern dieselbe Datei lesen. Diese Situation ist noch recht einfach. Da die Daten in der Datei statisch sind, kann jeder Clientcomputer über eine eigene lokale Kopie verfügen, die keine Auswirkungen auf die Datenkohärenz hat.

Eine häufigere Situation ist ein Thread, der die Datei ändert, und viele andere Threads, die sie lesen. Sobald ein Schreibvorgang ausgeführt wird, 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 Netzwerk ausgeführt werden.

In einer anderen häufigen Situation versuchen mehrere Threads auf einem oder mehreren Netzwerkclients, in dieselbe Datei zu schreiben. Diese Situation ähnelt einer Situation, in der mehrere RCS-Benutzer alle Änderungen an derselben Datei vornehmen möchten. Jeder Benutzer muss die Datei nacheinander auschecken, Änderungen vornehmen und dann die Datei wieder einchecken. Ebenso muss der Server in einem lokalen Zwischenspeicherungsschema die Berechtigung zum Schreiben in eine Datei auf jeweils einen Clientthread übertragen.