¿Cómo utilizo el modo seguro con el controlador # MongoDB C
-
25-09-2019 - |
Pregunta
He encontrado que algunos métodos de la MongoDB C # uso SafeMode
conductor y el retorno SafeModeResult
oficial. ¿Qué es este SafeMode
y cómo lo uso? Sería muy bueno para ver algunos casos de uso -. Por ejemplo, un caso de uso con el método RemoveAll
de un MongoCollection
Solución
modo seguro sólo es relevante cuando se escribe en el PP.
Para la velocidad, si está apagado y modo seguro una operación de escritura falla el conductor no esperar para el cuidado. efecto neto no es una excepción es lanzada y no se sabe que tiene un error.
modo seguro activado obligará al conductor que esperar una confirmación del éxito, y si se produjo un error lanzará una excepción.
Usar modo seguro para los datos que le preocupan (cuentas de usuario, órdenes, etc.).
No utilice modo seguro para los datos que no son esenciales (registro de estadísticas de uso, etc)
comportamiento predeterminado de MongoDB es tener modo seguro fuera.
Otros consejos
A partir de la documentación :
Hay varios niveles de SafeMode, y esta clase se utiliza para representar esos niveles. SafeMode se aplica sólo a operaciones que aún no devuelven un valor (por lo que no se aplica a las consultas o comandos). Se aplica a la siguiendo métodos MongoCollection: Insertar, Eliminar, Guardar y Actualizar.
La esencia de SafeMode es que después de una Insertar, Eliminar, Guardar o un mensaje de actualización se envía al servidor que le sigue por un comando GetLastError por lo que la conductor puede verificar que la operación tenido éxito. Además, al utilizar conjuntos de réplicas es posible verificar que la información ha sido replicado a un número mínimo de servidores secundarios.
La clase SafeMode tiene estática propiedades y métodos que le permiten acceder fácilmente a los modos comunes o crear su propia:
* 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 entender el propósito de SafeMode.
SafeMode
parece ser obsoleta.
El equivalente es WriteConcern.Acknowledged en MongoClientSettings
(típicamente pasó al constructor MongoClient
). Reconocido es la WriteConcern defecto en la versión actual del controlador (2.2.4).