Datenkonsistenz bezieht sich normalerweise darauf, ob die logische Beziehung zwischen zugehörigen Daten korrekt und vollständig ist, während das Konsistenzmodell der Datenspeicherung dies kann gilt als Vereinbarung zwischen dem Speichersystem und dem Datennutzer. Wenn der Nutzer dieser Vereinbarung folgt, kann er oder sie die vom System versprochenen Zugriffsergebnisse erhalten.
Häufig verwendete Konsistenzmodelle sind:
Strikte Konsistenz:
Lesen Sie die Daten Ausgabe sind immer die zuletzt geschriebenen Daten. Diese Konsistenz ist nur möglich, wenn eine globale Uhr vorhanden ist, und ist in einer verteilten Netzwerkumgebung nicht zu erreichen.
b. Sequentielle Konsistenz:
Alle Benutzer sehen Vorgänge für dieselben Daten in derselben Reihenfolge, aber die Reihenfolge erfolgt nicht unbedingt in Echtzeit.
Causale Konsistenz:
Nur Schreibvorgänge mit Kausalzusammenhängen erfordern, dass alle Benutzer sie in derselben Reihenfolge sehen. Bei Schreibvorgängen ohne Kausalzusammenhänge wird dies ausgeführt parallel und es gibt keine Bestellgarantie. Kausale Konsistenz kann als Optimierung der sequentiellen Konsistenzleistung angesehen werden, es ist jedoch ziemlich schwierig, während der Implementierung ein kausales Abhängigkeitsdiagramm zu erstellen und aufrechtzuerhalten.
d. Pipeline-Konsistenz:
schwächt das kausale Konsistenzmodell weiter und erfordert, dass von einem Benutzer abgeschlossene Schreibvorgänge von allen anderen Benutzern verwendet werden können , und die Schreibvorgänge verschiedener Benutzer müssen die Reihenfolge nicht garantieren, genau wie eine Pipe nach der anderen. Es ist relativ einfach umzusetzen.
e. Schwache Konsistenz:
Erfordert nur Zugriff auf gemeinsam genutzte Datenstrukturen, um sequentielle Konsistenz sicherzustellen. Operationen auf Synchronisationsvariablen haben sequentielle Konsistenz, sind global sichtbar und können nur ausgeführt werden, wenn keine Schreiboperationen auf die Verarbeitung warten, um den sequentiellen Zugriff auf kritische Bereiche sicherzustellen. Zum Zeitpunkt der Synchronisierung können alle Benutzer dieselben Daten sehen.
f. Release-Konsistenz:
Eine schwache Konsistenz kann nicht unterscheiden, ob der Benutzer den kritischen Abschnitt betreten oder verlassen möchte. Die Release-Konsistenz verwendet zwei verschiedene Operationsanweisungen ausgezeichnet. Wenn ein Schreibvorgang erforderlich ist, erwirbt der Benutzer das Objekt und gibt es nach dem Schreiben frei. Zwischen dem Erwerb und der Freigabe wird ein kritischer Abschnitt gebildet. Die Gewährleistung der Freigabekonsistenz bedeutet, dass alle Benutzer den Vorgang sehen können, wenn der Freigabevorgang stattfindet.
g, letztendliche Konsistenz:
Wenn keine neuen Updates vorhanden sind, werden die Updates schließlich an alle Replikatpunkte über das Netzwerk weitergegeben, und alle Replikatpunkte werden dies schließlich tun Mit anderen Worten: Benutzer können nicht garantieren, dass sie neu geschriebene Daten im Zwischenprozess vor dem endgültigen Zeitpunkt sehen. Es gibt eine wichtige Voraussetzung für die Einführung eines letztendlich konsistenten Modells: Es ist zulässig, veraltete Daten auszulesen.
h, inkrementelle Konsistenz:
Das System erreicht die Konsistenz innerhalb der Delta-Zeit. Während dieses Zeitraums wird es ein inkonsistentes Fenster geben, das möglicherweise durch den Protokollversandprozess verursacht wird.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere spannende Inhalte finden Sie in den entsprechenden Tutorial-Kolumnen auf der chinesischen PHP-Website! ! !
Das obige ist der detaillierte Inhalt vonWas ist Datenkonsistenz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!