2011-01-05 28 views
15

Encontré que algunos métodos del controlador oficial MongoDB C# usan SafeMode y devuelven SafeModeResult. ¿Qué es esto SafeMode y cómo lo uso? Sería genial ver algunos casos de uso, por ejemplo, un caso de uso con el método RemoveAll de MongoCollection.Cómo uso SafeMode con el controlador MongoDB C#

Respuesta

29

Safemode solo es relevante al escribir en la base de datos.

Para la velocidad, si el modo seguro está desactivado y una operación de escritura falla, el conductor no espera a que le importe. El efecto neto no es una excepción y no sabes que tienes un error.

La modalidad segura activada forzará al controlador a esperar una confirmación de éxito, y si se produce un error emitirá una excepción.

Utilice el modo seguro para los datos que le interesan (cuentas de usuario, pedidos, etc.).

no utilice modo seguro para los datos que no es esencial (tala, estadísticas de uso, etc.)

comportamiento predeterminado de MongoDB es tener modo seguro fuera.

+3

gracias por usecases;) – Edward83

24

De documentation:

Hay varios niveles de SafeMode, y esta clase se utiliza para representar esos niveles. SafeMode solo se aplica a las operaciones que aún no devuelven un valor (por lo que no se aplica a las consultas ni a los comandos). Se aplica al siguiendo los métodos de MongoCollection: Insertar, Eliminar, Guardar y Actualizar.

La esencia de SafeMode es que después de una Insertar, Eliminar, Guardar o Modificar mensaje se envía al servidor que es seguido por un comando GetLastError para que el conductor puede verificar que la operación tuvo éxito . Además, cuando se usan juegos de réplica , es posible verificar que la información ha sido replicada a un número mínimo de servidores secundarios .

La clase SafeMode tiene estáticas propiedades y métodos que permiten acceder fácilmente a los modos comunes o crear su propio:

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

El valor para "n" incluye la primaria , por lo general desea n > = 2.

Espero que esto sea suficiente para comprender el propósito de SafeMode.

Cuestiones relacionadas