Ich weiß, dass ich ein einzelnes Mongodb-Dokument nicht sperren kann, in der Tat gibt es auch keine Möglichkeit, eine Sammlung zu sperren.Es ist nicht möglich, ein Mongodb-Dokument zu sperren. Was, wenn ich muss?
Allerdings habe ich dieses Szenario, wo ich denke, ich brauche einen Weg, um mehr als einen Thread (oder Prozess, es ist nicht wichtig) daran, ein Dokument zu ändern. Hier ist mein Szenario.
Ich habe eine Sammlung, die Objekt des Typs A enthält. Ich habe Code, der ein Dokument des Typs A abrufen, ein Element in einem Array hinzufügen, das eine Eigenschaft des Dokuments ist (a.arr.add(new Thing()
) und dann das Dokument speichern Mongodb. Dieser Code ist parallel, mehrere Threads in meinen Anwendungen können diese Operationen ausführen, und im Moment gibt es keine Möglichkeit zu verhindern, dass Threads diese Operationen parallel im selben Dokument ausführen. Das ist schlecht, weil einer der Threads die Werke des anderen überschreiben könnte.
Ich verwende das Repository-Muster, um den Zugriff auf die Mongodb-Sammlung zu abstrahieren, so dass ich nur CRUDs-Operationen zur Verfügung habe.
Jetzt, da ich darüber nachdenke, ist es vielleicht eine Einschränkung des Repository-Musters und keine Einschränkung von mongodb, die mir Probleme bereitet. Wie auch immer, wie kann ich diesen Code "threadsicher" machen? Ich denke, es gibt eine wohlbekannte Lösung für dieses Problem, aber da ich neu in mongodb und dem Repository-Muster bin, sehe ich es nicht sofort.
Dank
Was ist, wenn ich während der Erstellung des Dokumentobjekts sperren möchte? – Chinni