Записывает ли беспокойство MongoDB о предыдущих записях?
MongoDB обладает настраиваемой долговечностью: при выполнении операции обновления вы можете указать "проблему записи", чтобы сообщить системе, что вы хотите, чтобы обновление считалось завершенным только тогда, когда данные были (например) записаны на диск и реплицированы на ведомые устройства X,
Есть ли какие-либо гарантии не о текущем обновлении, а о записях, предшествовавших ему? Если я хочу обновить три документа, мне нужно пометить проблему дорогостоящей записи на всех из них или достаточно выдать ее только с последней операцией?
Кроме того, влияют ли на эти рассуждения использование пулов соединений (т. Е. Три обновления выполняются для трех разных соединений) и шардинга (т. Е. Три обновления, затрагивающие более одного сегмента)?
1 ответ
Если вы используете одно и то же соединение для нескольких операций записи, getLastError с флагом j, safe, fsync, который успешно возвращается, будет указывать, что предыдущие операции перед последней операцией уже сохранены / реплицированы на другие серверы.
Однако если по каким-либо причинам эти предыдущие операции завершатся неудачно, вы не узнаете об этом, если не вызовете getLastError для каждой операции. Однако, если ваши записи отправляются с разных подключений, нет гарантии, что все операции будут сохранены на диск / реплицированы на другие серверы.