Расовые условия в Монго и наиболее эффективные схемы? - PullRequest
0 голосов
/ 30 июля 2011

Я начинаю с Монго, и мне интересно: как лучше всего справиться с условиями гонки в Монго?

Например, если у меня есть документ с полем с именем version, установленным в 1, и пользователь A обновляет его до версии 2, когда пользователь B пытается обновить его с версии 1 (версия, которую получил пользователь B), он должен уведомить об этом Пользователь B, что запись была обновлена.

Одним из решений является использование findAndModify с использованием поля версии в качестве критерия для запроса.

Например:

db.things.findAndModify({query: { version: "1"}, update: { $set: {Title: "New Title"}}})

Однако проблема здесь в том, что, если версия имеет , увеличенная, это вернет ноль. Проблема в том, что это будет неотличимо от записи, которая была удалена, поэтому необходимо будет использовать второй запрос, чтобы проверить, существует ли еще документ, чтобы подтвердить, что обновлена ​​только его версия.

Так что это мой наивный подход. Я задаюсь вопросом: есть ли более подходящий шаблон для этого в Монго, который был бы более эффективным?

1 Ответ

0 голосов
/ 15 августа 2011

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

Я думаю, что это будет иметь место с любой базой данных, не только с Mongo.

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