Ist das verschieben von Dokumenten zwischen den Sammlungen eine gute Methode zur Darstellung von Status-änderungen in MongoDB?

Habe ich zwei Sammlungen, die eine (Eine) mit Elementen verarbeitet werden (relativ klein) und eine (B), mit denen bereits verarbeitet (ziemlich groß, mit extra Ergebnis-Felder).

Elemente eingelesen werden Eine, verarbeitet und speichern()'d zu B, dann remove()'d von Eine.

Die Begründung ist, dass die Indizes können Verschieden sein, über diese, und dass die "incoming" - Kollektion gehalten werden kann, sehr klein und schnell auf diese Weise.

Habe ich in Lauf zwei Probleme mit diesem:

  • wenn entweder entfernen() oder save () - time-out oder die andernfalls nicht unter Last, verliere ich die Position komplett, verarbeiten oder zweimal
  • wenn beide Versagen, die Nebenwirkungen, die passieren, aber es gibt keine Aufzeichnung, dass

Kann ich umgehen die Doppel-Ausfall-Fall mit findAndModify sperren (nicht notwendig, sonst haben wir ein Prozess-level-lock), aber dann haben wir stale lock Probleme und teilweise Fehler können immer noch passieren. Es gibt keine Möglichkeit, atomar entfernen+speichern, um die verschiedenen Sammlungen, so weit ich erzählen kann (vielleicht gewollt?)

Ist es die Beste Praxis für diese situation?

Schreibe einen Kommentar