MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose-Versionierung:Wann ist es sicher, sie zu deaktivieren?

Der Zweck des Versionsschlüssels ist optimistisches Sperren.

Wenn diese Option aktiviert ist, wird der Versionswert automatisch erhöht, wenn ein Dokument aktualisiert wird.

Dadurch kann Ihr Anwendungscode testen, ob zwischen einem Abruf (z. B. Einbringen des Versionsschlüssels 42) und einer nachfolgenden Aktualisierung (wobei sichergestellt wird, dass der Versionswert immer noch 42 ist) Änderungen vorgenommen wurden. Wenn der Versionsschlüssel einen anderen Wert hat (z. B. 43, weil ein das Dokument wurde aktualisiert), kann Ihr Anwendungscode die gleichzeitige Änderung verarbeiten.

Das gleiche Konzept wird häufig in relationalen Datenbanken anstelle von pessimistischem Sperren verwendet, das eine schreckliche Leistung bringen kann. Alle anständigen ORMs bieten eine solche Funktion. Zum Beispiel ist es schön in der ObjectDB-Dokumentation beschrieben . Es ist eine in Java implementierte Objektdatenbank, aber es gilt das gleiche Konzept.

Der Blogbeitrag Der Link in Behlüls Kommentar demonstriert die optimistische Nützlichkeit von Sperren mit einem konkreten Beispiel, aber nur für Array-Änderungen, siehe unten.

Im Gegenteil, hier ist ein einfacher Fall, in dem es nutzlos ist:ein Benutzerprofil, das von seinem Besitzer selbst bearbeitet werden kann. Hier können Sie das optimistische Sperren aufheben und davon ausgehen, dass die letzte Bearbeitung immer gewinnt.

Nur Sie wissen also, ob Ihre Anwendung eine optimistische Sperre benötigt oder nicht. Anwendungsfall für Anwendungsfall.

Die Mongoose-Situation ist etwas Besonderes.

Optimistisches Sperren ist nur für Arrays aktiviert, da das interne Speicherformat einen Positionsindex verwendet. Dies ist das Problem, das im Blogpost beschrieben wird im Kommentar der Frage verlinkt. Ich habe die Erklärung gefunden im mongoose-orm angegeben Mailingliste ziemlich klar:Wenn Sie optimistisches Sperren für andere Felder benötigen, müssen Sie sich selbst darum kümmern.

Hier ist ein Grundriss zeigt, wie man eine Wiederholungsstrategie für ein add implementiert Betrieb. Wie Sie damit umgehen möchten, hängt wiederum von Ihren Anwendungsfällen ab, aber es sollte ausreichen, um Ihnen den Einstieg zu erleichtern.

Ich hoffe, das klärt die Dinge auf.

Prost