CouchDb и запись данных - PullRequest
3 голосов
/ 17 мая 2011

Насколько я понимаю, CouchDb никогда не перезаписывает запись, а создает новый документ с новым _rev. Что происходит в этом сценарии?

  1. Пользователь А читает документ
  2. Пользователь B читает тот же документ
  3. Пользователь A обновляет документ
  4. Пользователь Б обновляет документ

Не теряются ли изменения пользователя А в этом сценарии?

1 Ответ

6 голосов
/ 17 мая 2011

Нет, вместо этого пользователь B получит ошибку 409, так как обороты больше не будут совпадать.Чтобы пользователь B зафиксировал свой документ, ему необходимо будет повторно загрузить документ, чтобы получить последнюю версию документа.

Это называется оптимистической блокировкой и специально разработано для предотвращения возникшей проблемы.

Ничто не мешает Пользователю B топать документ Пользователя A, но теперь они больше осознают это, поскольку вынуждены повторно загружать документ и использовать новый параметр _rev.

...