Es gibt Situationen, in denen Sie gerne hätten:
- Die Datenintegrität garantiert serialisierbare Transaktionen.
- Daten können von Benutzern weltweit aktualisiert werden.
- Daten können mit geringer Latenz aktualisiert werden.
Leider ist die Kombination aller oben genannten physikalisch nicht möglich. Sie werden durch die Lichtgeschwindigkeit eingeschränkt.
Stattdessen müssen Sie Ihre genauen Anforderungen berücksichtigen. Für einige Daten ist eine begrenzte Genauigkeit ausreichend. Betrachten Sie den Ansichtszähler in einem YouTube-Video. Den meisten Menschen ist es egal, ob der Ansichtszähler vorübergehend etwas ausgeschaltet ist. Wenn Ansichten, die vor 10 Sekunden auf der anderen Seite der Welt stattgefunden haben, noch nicht enthalten sind, aber Ansichten, die vor 5 Sekunden in der Nähe stattgefunden haben, enthalten sind, ist sie immer noch genau genug. Wenn Sie mit der Integrität des Ansichtszählers so entspannt sind, laufen Sie Gefahr, dass zwei verschiedene Personen glauben, sie seien Zuschauer Nummer 100 dieses bestimmten Videos. Aber die meisten Menschen würden den dadurch verursachten Schaden für vernachlässigbar halten.
In anderen Fällen ist die Datenintegrität wichtiger. Stellen Sie sich zwei Personen vor, die gleichzeitig versuchen, sich mit demselben Benutzernamen anzumelden. Es ist nicht akzeptabel, beiden Personen mitzuteilen, dass sie den Benutzernamen erhalten haben. In einer solchen Situation würden Sie einen langsameren Ansatz mit besserer Integrität wählen. Es ist akzeptabel, beiden Personen mitzuteilen, dass der Benutzername verwendet wurde. Ein möglicher Ansatz besteht darin, den Benutzernamen für jedes Replikat zu reservieren und nur dann Erfolg zu melden, wenn Sie bei mehr als 50% der Replikate erfolgreich waren. Es ist nicht unwahrscheinlich, dass der Benutzer bei diesem Ansatz eine halbe Sekunde warten muss, um eine Antwort zu erhalten. Benutzer durchlaufen diesen Prozess jedoch nicht oft genug, um von dieser Verzögerung gestört zu werden.
In noch anderen Fällen benötigen Sie möglicherweise eine gute Integrität und schnelle Aktualisierungen, aber nur eine Person kann diese bestimmten Daten aktualisieren. In diesem Fall können Sie die autorisierende Kopie der Daten auf einem Server ablegen, von dem Sie glauben, dass er diesem Benutzer nahe steht, und anderen Servern eine zwischengespeicherte Version zuweisen, die größtenteils auf dem neuesten Stand ist.