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?
Antwort
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.
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.
- 1. MEAN - Datenbank in mongodb vs relationalen Datenbank
- 2. Welche Vorteile hat eine dokumentenbasierte Datenbank gegenüber einer relationalen Datenbank?
- 3. Sportstatistiken in einer relationalen Datenbank richtig modellieren
- 4. Reihenfolge in einer relationalen Datenbank darstellen
- 5. Wie behalte ich eine Graph-Datenstruktur in einer relationalen Datenbank?
- 6. Abrufen von Daten aus einer relationalen Datenbank
- 7. Hat MySQL zeitbasierte Trigger?
- 8. Irgendwelche guten relationalen Datenbank-Tutorials?
- 9. SQL-Prozedur von Trigger
- 10. Prozedur in einem Trigger ausführen
- 11. MySQL Trigger/Prozedur Ausführungsverzögerung
- 12. Best Practice für eine "Kommentar" -Tabelle in einer relationalen Datenbank
- 13. Suche nach "1-zu-3" -Links in einer relationalen Datenbank
- 14. Speichern von R-Objekten in einer relationalen Datenbank
- 15. Erstellen einer Trigger-Dynamik
- 16. Wann möchten Sie XML in einer relationalen Datenbank speichern?
- 17. Gespeicherte Prozedur in einer anderen Datenbank erstellen
- 18. funktionale Abhängigkeiten Frage in relationalen Datenbank-Design
- 19. Kann ein Trigger den Namen der gespeicherten Prozedur finden, die Daten geändert hat?
- 20. Prozedur in einer Prozedur?
- 21. Welche Datenbank hat die beste XML-Unterstützung?
- 22. Gespeicherte Prozeduren und Trigger in der Datenbank
- 23. Wie kann ich eine Ontologiekomponente einer relationalen Datenbank zuordnen?
- 24. Struktur einer relationalen Datenbank zum Vergleichen mehrerer Daten
- 25. Löschen Sie alles in einer MongoDB-Datenbank
- 26. Datamapper DB-Muster mit ZF: Verwalten einer relationalen Datenbank
- 27. Hat Java "Eigenschaften", die genauso funktionieren wie Eigenschaften in C#?
- 28. Wie aus der relationalen Datenbank auswählen?
- 29. Aufruf gespeicherte Prozedur von einer anderen Datenbank in SQL Azure
- 30. Löschen einer Zeile in mysql und Android - relationalen Datenbanken
Ich habe versucht zu beantworten, was ich denke, ist deine Frage. Wenn Sie weitere Informationen benötigen, bearbeiten Sie Ihre Frage. –