Como uso o Safemode com o driver MongoDB C#
-
25-09-2019 - |
Pergunta
Descobri que alguns métodos do uso oficial do driver MongoDB C# SafeMode
e retorno SafeModeResult
. O que é isto SafeMode
E como eu uso isso? Seria ótimo ver alguns casos de uso - por exemplo, um caso de uso com o RemoveAll
método de a MongoCollection
.
Solução
O Safemode é relevante apenas ao escrever para o banco de dados.
Para velocidade, se o SafeMode estiver desligado e uma operação de gravação falhar, o driver não espera para se importar. O efeito líquido não é uma exceção é lançada e você não sabe que tem um erro.
O SAFEMODE definido como for forçará o motorista a aguardar uma confirmação de sucesso e, se ocorrer um erro, lançará uma exceção.
Use o Safemode para dados com os quais você se preocupa (contas de usuário, pedidos, etc.).
Não use o Safemode para dados que não são essenciais (registro, estatísticas de uso etc.)
O comportamento padrão do MongoDB é ter o SafeMode Off.
Outras dicas
A partir de documentação:
Existem vários níveis de SafeMode, e essa classe é usada para representar esses níveis. O Safemode se aplica apenas a operações que ainda não retornam um valor (para que não se aplique a consultas ou comandos). Aplica -se aos seguintes métodos de mongocollection: insira, remova, salve e atualize.
A essência do SafeMode é que, após uma inserção, remova, salve ou atualize a mensagem é enviada para o servidor, é seguida por um comando getlasterror para que o driver possa verificar se a operação foi bem -sucedida. Além disso, ao usar conjuntos de réplicas, é possível verificar se as informações foram replicadas para um número mínimo de servidores secundários.
A classe Safemode possui propriedades e métodos estáticos que permitem acessar facilmente modos comuns ou criar seus próprios:
* SafeMode.False * SafeMode.True * SafeMode.WaitForReplications(int n)
O valor para "n" inclui o primário; portanto, normalmente você deseja n> = 2.
Espero que isso seja suficiente para entender o objetivo do SafeMode.
SafeMode
parece ser obsoleto.
O equivalente é WriteConcern.acknowled sobre MongoClientSettings
(normalmente passado para o MongoClient
construtor). Reconhecido é o WriteConcern padrão na versão atual do driver (2.2.4).
Veja também MongoDB Safemode Compare com WritEconcern