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

MongoDB-Datenintegrität

Ich bezweifle, dass es irgendetwas gibt, das garantieren kann Datenintegrität abgesehen von dem erwähnten 2-Phasen-Commit. Zumindest bis v4 angekündigt .

Es gibt nur wenige Dinge, um die Wahrscheinlichkeit falscher Zählungen zu minimieren. Kombinieren Sie Insert und Update in einem einzigen Masse . Dadurch wird die Wahrscheinlichkeit verringert, dass einer der Vorgänge auf der Anwendungsseite fehlschlägt, da es sich um eine einzelne Anforderung handelt.

Prüfen Sie dann, ob nInserted === 1 , und nModified === 1 . Andernfalls versuchen Sie es erneut oder stellen Sie einen Neuberechnungsjob für die angegebene Post-ID in die Warteschlange.

Für Wiederholungsversuche ist es wichtig, wiederholbare Schreibvorgänge aktiviert, da Sie $inc verwenden werden auf Posten, was ziemlich weit von idempotentem Betrieb entfernt ist.

Eine weitere Option ist die Anwendung von transaktionslos Ansatz - eine Art Kombination aus "Skript in jedem Zeitraum ausführen, um die Kommentarnummer zu aktualisieren" und "Kommentarnummer überhaupt nicht speichern". Sie müssen Zeitstempel des letzten Neuberechnungsauftrags aufbewahren und neue Kommentare seit dem Datum zählen.