2014-03-25 1 views
9

Wie der Titel andeutet, schließen Sie das map-reduce-Framework aus Wenn ich ein Ereignis auslösen möchte, um eine Konsistenzprüfung oder Sicherheitsoperationen auszuführen, bevor ein Datensatz eingefügt wird, wie kann ich das mit MongoDB machen?hat mongodb die Eigenschaften Trigger und Prozedur in einer relationalen Datenbank?

+0

Ich habe versucht zu beantworten, was ich denke, ist deine Frage. Wenn Sie weitere Informationen benötigen, bearbeiten Sie Ihre Frage. –

Antwort

12

MongoDB unterstützt keine Trigger, aber die Leute haben Lösungen um sie herum erstellt, meistens mit dem oplog, aber das hilft nur, wenn Sie mit Replikatsätzen arbeiten, da das oplog eine Capped-Sammlung ist, die Datenänderungen verfolgt für die Zwecke der Replikation. siehe Für eine NodeJS Lösung: https://www.npmjs.org/package/mongo-watch oder sehen einen früheren SO thread: How to listen for changes to a MongoDB collection?

Wenn Sie mit Konsistenz betroffen sind, lesen schreiben Sorge in mongoDB. http://docs.mongodb.org/manual/core/write-concern/ Sie können so entspannt oder so streng sein, wie Sie möchten, indem Sie Schreibvorratsebenen einfügen, aus Feuer und hoffen, eine Bestätigung von allen Mitgliedern der Replikatgruppe zu erhalten.

Wenn Sie also vor dem Einfügen von Daten eine Konsistenzprüfung durchführen möchten, müssen Sie diese Logik wahrscheinlich in die Clientanwendung verschieben und Ihre Schreibanfälligkeit auf ein Niveau einstellen, das Konsistenz gewährleistet.

3

MongoDb hat keine Trigger oder gespeicherten Prozeduren. Während es Lösungen gibt, die einige verwendet haben, um das Verhalten zu emulieren, da es keine eingebaute Funktion ist, müssen Sie entscheiden, ob die Lösungen für Sie effektiv sind. Suche nach "Trigger und Mongodb" sollte Dutzende finden. Alle hängen vom oplog und den Replikaten ab.

Aber angesichts der Natur von MongoDb und einer typischen 3-Tier-Architektur, würde ich erwarten, dass zum Zeitpunkt der Dateneinfügung, die auf einem Webserver zum Beispiel sein könnte, Sie auf dem Webserver die erforderlichen ausführen Konsistenz- und Sicherheitsprüfungen. Sie würden einem Client wie einer mobilen Anwendung nicht erlauben, Daten ohne Überprüfung direkt in die Datenbanksammlung zu setzen.

Viele Treiber für MongoDb und erweiterte Bibliotheken verfügen bereits über integrierte Validierungs- und Konsistenzprüfungen, sodass weniger zu tun ist. Die Verwendung eindeutiger Indizes für einige Felder kann ebenfalls eine Konsistenz gewährleisten, die Sie nicht allein vom Treiber aus erreichen können. Sehen Sie sich Anrufe wie findAndModify an, die atomare Aktualisierungen vornehmen.

Verwandte Themen