2011-01-05 5 views
15

J'ai trouvé que certaines méthodes du pilote MongoDB C# officiel utilisent SafeMode et renvoient SafeModeResult. Qu'est-ce que c'est SafeMode et comment l'utiliser? Ce serait génial de voir quelques cas d'utilisation - par exemple, un cas d'utilisation avec la méthode RemoveAll d'un MongoCollection.Comment utiliser SafeMode avec le pilote MongoDB C#

Répondre

29

Le mode de sécurité n'est pertinent que pour l'écriture sur le db. Pour la vitesse, si le mode de sécurité est désactivé et qu'une opération d'écriture échoue, le conducteur n'attend pas pour s'en soucier. L'effet net ne fait pas exception et vous ne savez pas que vous avez une erreur.

Le mode Safemode défini sur Activé force le pilote à attendre la confirmation de la réussite et, en cas d'erreur, déclenche une exception.

Utilisez le mode sans échec pour les données qui vous intéressent (comptes d'utilisateurs, commandes, etc.).

Ne pas utiliser safemode pour les données qui ne sont pas essentielles (exploitation forestière, statistiques d'utilisation, etc.)

comportement par défaut de MongoDB est de safemode avoir éteint.

+3

merci d'utiliser;) – Edward83

24

De documentation:

Il y a différents niveaux de SafeMode, et cette classe est utilisée pour représenter ces niveaux. SafeMode s'applique uniquement aux opérations qui ne renvoient pas déjà une valeur (elle ne s'applique donc pas aux requêtes ou aux commandes). Elle s'applique aux méthodes MongoCollection suivantes: Insérer, supprimer, enregistrer et mettre à jour.

L'essentiel de SafeMode est que, après un Insérer, Supprimer Enregistrer ou mettre à jour un message est envoyé au serveur, il est suivi par une commande GetLastError afin que le conducteur peut vérifier que l'opération a réussi . En outre, lors de l'utilisation de jeux de réplicas , il est possible de vérifier que les informations ont été répliquées sur un nombre minimal de serveurs secondaires.

La classe SafeMode a statiques propriétés et méthodes qui vous permettent facilement accéder à des modes communs ou créer votre propre:

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

La valeur de « n » comprend le primaire , donc généralement que vous voulez n > = 2.

J'espère que cela suffit pour comprendre le but de SafeMode.

Questions connexes