Как использовать SafeMode с помощью драйвера MongoDB С#

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

Ответы

Ответ 1

Safemode применим только при записи в db.

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

Safemode, установленный для включения, заставит драйвер ждать подтверждения успеха, и если произошла ошибка, это вызовет исключение.

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

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

Поведение MongoDB по умолчанию - отключить safemode.

Ответ 2

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

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

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

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

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

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

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

Ответ 3

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

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

См. также MongoDb SafeMode по сравнению с WriteConcern