Записывает ли забота MongoDB о предыдущих записях? - PullRequest
0 голосов
/ 15 декабря 2011

MongoDB обладает настраиваемой долговечностью: при выполнении операции обновления вы можете указать «проблему записи», чтобы сообщить системе, что вы хотите, чтобы обновление считалось завершенным только тогда, когда данные (например) были записаны на диск и реплицированы.к рабам X.

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

Кроме того, влияет ли на эти рассуждения использование соединенияпулы (т. е. три обновления, выполняемые для трех разных соединений) и разделение (т. е. три обновления, затрагивающие более одного сегмента)?

1 Ответ

1 голос
/ 15 декабря 2011

Если вы используете одно и то же соединение для множественных записей, getLastError с флагом j, safe, fsync, который успешно возвращается, будет указывать, что предыдущие операции перед последней операцией уже сохранены / реплицированы на другие серверы.

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

...