Как использовать SafeMode с драйвером MongoDB C # - PullRequest
15 голосов
/ 05 января 2011

Я обнаружил, что некоторые методы официального драйвера MongoDB C # используют SafeMode и возвращают SafeModeResult. Что это за SafeMode и как мне его использовать? Было бы здорово увидеть некоторые варианты использования - например, вариант использования с RemoveAll методом MongoCollection.

Ответы [ 3 ]

29 голосов
/ 06 января 2011

Безопасный режим актуален только при записи в БД.

Для скорости, если безопасный режим отключен и операция записи завершается неудачно, драйвер не ждет, чтобы позаботиться.Чистый эффект не является исключением, вы получите, и вы не знаете, что у вас есть ошибка.

Безопасный режим, установленный на «Вкл.», Заставит водителя ждать подтверждения успеха, а в случае возникновения ошибки возникнет исключение.

Используйте безопасный режим для данных, которые вас интересуют (учетные записи пользователей, заказы и т. Д.).

Не используйте safemode для данных, которые не являются необходимыми (регистрация, статистика использования и т. Д.)

По умолчанию MongoDB отключает safemode.

24 голосов
/ 05 января 2011

Из документации :

Существуют различные уровни SafeMode, и этот класс используется для представления этих уровней.SafeMode применяется только к операциям, которые еще не возвращают значение (поэтому он не применяется к запросам или командам).Он применяется к следующим методам MongoCollection: Вставка, удаление, сохранение и обновление.

Суть SafeMode заключается в том, что после отправки на сервер сообщения «Вставка, удаление, сохранение или обновление» за ним следует команда GetLastError.поэтому водитель может проверить, что операция прошла успешно.Кроме того, при использовании наборов реплик можно проверить, что информация была реплицирована на некоторое минимальное количество вторичных серверов.

Класс SafeMode имеет статические свойства и методы, которые позволяют легко получать доступ к общим режимам или создавать своиown:

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

Значение «n» включает в себя основной, поэтому обычно вы хотите n> = 2.

Надеюсь, этого достаточно, чтобы понять цель SafeMode.

1 голос
/ 14 июня 2016

SafeMode представляется устаревшим.

Эквивалентом является WriteConcern. Подтверждено для MongoClientSettings (обычно передается конструктору MongoClient).Подтверждение - это WriteConcern по умолчанию в текущей версии драйвера (2.2.4).

См. Также MongoDb SafeMode сравнить с WriteConcern

...