2011-01-05 5 views
15

Ich fand, dass einige Methoden des offiziellen MongoDB C# -Treibers SafeMode verwenden und SafeModeResult zurückgeben. Was ist das SafeMode und wie benutze ich es? Es wäre schön, einige Anwendungsfälle zu sehen - zum Beispiel einen Anwendungsfall mit der RemoveAll Methode einer MongoCollection.Wie verwende ich SafeMode mit dem MongoDB C# -Treiber

Antwort

29

Safemode ist nur beim Schreiben in die Datenbank relevant.

Wenn der Safemode ausgeschaltet ist und eine Schreiboperation fehlschlägt, wartet der Treiber nicht darauf, sich um die Geschwindigkeit zu kümmern. Net-Effekt wird keine Ausnahme geworfen und Sie wissen nicht, dass Sie einen Fehler haben.

Wenn der Safemode auf on gesetzt ist, wird der Treiber auf eine Erfolgsbestätigung warten, und wenn ein Fehler auftrat, wird eine Ausnahme ausgelöst.

Verwenden Sie den Safemode für Daten, die Ihnen wichtig sind (Benutzerkonten, Bestellungen usw.).

Verwenden Sie abgesicherten Modus für Daten nicht, die nicht wesentlich (Protokollierung, Nutzungsstatistiken usw.)

MongoDB Standardverhalten ist abgesicherten Modus ausgeschaltet haben.

+3

danken Ihnen für usecases;) – Edward83

24

Von documentation:

Es gibt verschiedene Level von Safemode, und diese Klasse verwendet wird diese Werte zu repräsentieren. SafeMode gilt nur für Operationen, die nicht bereits einen Wert zurückgeben (gilt also nicht für Abfragen oder Befehle). Es gilt für die folgenden MongoCollection-Methoden: Einfügen, Entfernen, Speichern und Aktualisieren.

Der Kern von Safemode ist, dass nach einer Einfügen, Löschen, Speichern oder Aktualisieren Nachricht an den Server gesendet wird von einem GetLastError Befehl gefolgt wird, so dass die Treiber überprüfen kann, dass der Betrieb gelungen. Wenn Replikatsätze verwendet werden, ist es außerdem möglich, zu verifizieren, dass die Informationen auf eine Mindestanzahl von Sekundärservern repliziert wurden.

Die Safemode-Klasse hat statische Eigenschaften und Methoden, die Sie leicht gemeinsamen Modi zugreifen lassen oder erstellen Ihre eigenen:

* SafeMode.False 
* SafeMode.True 
* SafeMode.WaitForReplications(int n) 

Der Wert für „n“ umfasst die primäre, so der Regel möchten Sie n > = 2.

Ich hoffe, dies ist genug, um den Zweck von SafeMode zu verstehen.

Verwandte Themen