Während der Entwicklung unserer Karten reduzieren Stellen aus MR-Code nützliche diagnostische Datenstrukturen unabhängig von der Datenkarte ist reduzierten erzeugt. Gibt es eine einfache Möglichkeit, diese Daten an den Code zu senden, der mapReduce aufgerufen hat, oder sie in Mongo persistent zu machen? Nur das Schreiben in die Log-Datei erweist sich als sehr suboptimal, da (a) dort bereits viele Daten vorhanden sind und (b) unsere Diagnoseinformation sehr strukturiert ist und wir in der Tat Abfragen ausführen möchten es.MongoDB: verkleinern Nebenwirkungen
Meine Untersuchung bisher legt nahe, dass MR-Datenstrukturen von Wert übergeben werden (über die Serialisierung) so dass jeder im Speicher befindlichen Datenstrukturen verloren sind, auf den „globalen“ scope verhakt einschließlich. Die Namespaces sind vom JS serverseitigen Hauptnamespace isoliert, so dass dbeval
sie scheinbar nicht erreichen kann (oder zumindest weiß ich nicht, wo ich suchen soll). Last but not least, obwohl die alle Datenbankobjekte und Funktionen vorhanden sind, wird 10gen (verwirrend) Fehlermeldungen zu erzeugen, deren Nutzung zu verhindern, beispielsweise etwa coll.insert
keine Funktion während typeof coll.insert === 'function'
ist true
zu sein.
klar sein, ich bin für die Entwicklung in einem einzigen Knoten dabei daran interessiert, weil die Protokollierung/Debugging-Unterstützung in MongoDB ziemlich begrenzt ist. Diese Art von Nebenwirkungen ist in Produktionsumgebungen nicht gut.
Genau welche Art von Daten erzeugt es? Die Ausgabe von MR kann in einer Sammlung beibehalten werden. In C# gebe ich Folgendes an: MyInputCollection.MapReduce (map, reduce, MapReduceOptions.SetOutput ("MyOutputCollection")); Sie lesen dann aus der persistenten Sammlung 'MyOutputCollection'. –
Ich möchte Informationen speichern, die unabhängig von der MR-Ausgabe sind. Stellen Sie es sich als Datenabzug vor, z. B. für detaillierte strukturierte Protokollierungs-/Benchmarking-Informationen, die ich mit Code verarbeiten möchte, damit ich nicht möchte, dass sie in den Protokolldateien landen. – Sim
Haben Sie versucht, mit einer Capped-Auflistung für die Protokollierung .. Ich verstehe nicht ganz, warum coll.insert sollte fehlschlagen. –