Атомарность обновления MongoDb

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

  • удаляет существующий документ (первая атомарная операция);
  • и вставка нового (вторая атомарная операция).

Это означает, что часть времени документ остается пустым.

Хотя мне это не кажется правдоподобным, знает ли кто-нибудь наверняка, правда это или нет?

Большое спасибо за ваши ответы и был бы признателен, если бы кто-нибудь мог указать на некоторые онлайн-документы, чтобы прочитать об этом.

Изменить: орфография


person Vladas Diržys    schedule 15.09.2012    source источник
comment
Было бы довольно удивительно, если бы обновление замены документа было неатомарным. Может ли ваш друг указать на какие-либо доказательства этого?   -  person JohnnyHK    schedule 15.09.2012


Ответы (1)


MongoDB использует глобальную блокировку записи (для каждого сервера до версии 2.2 и для каждой базы данных в версии 2.2) для всех операций изменения. Это означает, что независимо от деталей реализации обновлений они атомарны с точки зрения клиентов. Глобальная блокировка записи гарантирует, что ни один другой клиент не сможет увидеть частичное обновление отдельного документа.

Здесь есть документация по глобальной блокировке записи MongoDB: http://www.mongodb.org/display/DOCS/How+does+concurrency+work

person Theo    schedule 15.09.2012