При каких обстоятельствах изменение не записывается в базу данных MongoDB, когда безопасный режим отключен? - PullRequest
2 голосов
/ 03 января 2012

У меня отключен безопасный режим в моей базе данных MongoDB, потому что ни одна из записываемых данных не является абсолютно 100% критически важной, а выигрыш в скорости вставки очень важен, но я бы действительно предпочел, чтобы все данные записывались вбаза данных.

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

Если данные успешно записываются в журнал, можно ли считать, что, даже если база данных отстает из-за большой нагрузки, эти данные окажутся в базе данных, когда база данных догонит иумеет обрабатывать то, что есть в журнале?Или мое понимание того, что журнал делает ошибочным?Существуют ли другие обстоятельства, при которых вставленные данные могут быть потеряны?

Что произойдет, если я обновлю документ за долю секунды до того, как другой процесс попытается его прочитать, но изменения не были переданы в коллекциюеще?Будет ли считывать блок до завершения вставки?

1 Ответ

2 голосов
/ 03 января 2012
  • Чтение будет заблокировано, пока вставка не будет завершена, если чтение запрашивается на том же соединении, что и запись. Нет никакой гарантии, что после записи данные будут сразу же видны другим соединениям, если не используется правильный getLastError.
  • Перед обработкой данных данные обрабатываются и помещаются в область отображенных в памяти данных. Тем не менее, он не может быть "fsynced" на диск так часто, как ведение журнала. Это означает, что, несмотря на высокую нагрузку, данные должны в конечном итоге обновляться и становиться видимыми для других соединений. Данные журналирования используются только для восстановления долговечности, когда экземпляр mongod неожиданно падает.
  • Ваши данные могут быть потеряны из-за прерывания сети, повреждения диска, дублирования индекса и т. Д.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...