Когда карта / уменьшение в MongoDB фактически вызывает замену? - PullRequest
0 голосов
/ 18 марта 2012

Согласно документам на http://www.mongodb.org/display/DOCS/MapReduce, при использовании директивы REPLACE out,

вывод будет вставлен в коллекцию, которая атомарно заменит любую существующую коллекцию с тем же именем.

Означает ли это, что данные собираются во временный сбор во время выполнения процесса M / R, а затем, наконец, выполняется какое-то переименование для замены предыдущего вывода?

Если это так, я мог бы запустить обычные пакетные процессы для обновления коллекции без риска того, что она будет пустой (или только частично заполненной) в любой момент времени?

1 Ответ

0 голосов
/ 18 марта 2012

Да. Это правильно. Способ замены работает прямо сейчас для неэкранированного вывода - он получает блокировку записи, удаляет старую базу данных, переименовывает временную коллекцию в выходную коллекцию и снимает блокировку записи. Поскольку существует только одна блокировка записи, вы по сути гарантированы, что эта операция является атомарной. Однако этого нельзя сказать о слиянии и уменьшении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...