Понимание WriteConcern в MongoDB C#

Я читал о Писать Концерна в MongoDB. Я понимаю, что существует несколько уровней, которые определяют уровень гарантии успеха операции записи с компромиссом производительности для более высокого уровня. Тем не менее, я работаю в среде C#, и я пытаюсь выяснить, как использовать Write Concern там и какие уровни лучше всего работают для определенных ситуаций. Я уже выяснил, как получить результат проверки с помощью Writeconcernresult объект, меня в основном интересуют сами уровни.

вот мои вопросы:

Как установить уровень записи в C# для конкретных записей?

ответ предлагает использовать строку подключения, но это похоже на глобальную настройку, которую я не хочу, так как некоторые из операций записи, которые я буду использовать, более "важны", чем другие, и я не хочу убивать производительность. Я заметил есть WriteConcern class но документация не очень подробно о ее использовании (она находится под MongoDB.Пространство имен драйверов в документации).

в частности, как установить его в "журнальный" или "реплика подтверждена", видя, что он" подтвержден " по умолчанию?

какие типы проблем могут пройти проверку на предмет записи для каждого уровня?

например: системные сбои, сбои питания, проблемы с сетевым подключением и т. д. Меня особенно интересует что-то крадущееся, что есть не легко обнаружено, поскольку сбои питания и тому подобное очень заметны, и мы могли бы оценить интервал времени, когда операции могли потерпеть неудачу, и реагировать соответствующим образом.

1 ответов


операции в драйвере MongoDB C# имеют перегрузки, которые принимают WriteConcern что вы можете получить с помощью конструктора класса или с помощью предопределенного статического свойства:

var writeConcern = WriteConcern.W4;
writeConcern.Journal = true;
writeConcern.WTimeout = TimeSpan.FromMilliseconds(100);
new MongoClient().GetServer().GetDatabase("").GetCollection("").Insert(null, null, writeConcern);

для этого, например, требуется 3 реплики поверх первичной, следовательно W4, флаг журнала включен, а значение wtimeout равно 100 мс.