Рельсы 3, блокировка столов на двигателе типа аукциона - PullRequest
0 голосов
/ 23 августа 2011

Я создаю похожую на аукцион систему в Rails 3 (используя PostgreSQL в качестве базы данных).

Представьте, что у вас есть продукт. У продукта много предложений.

Я обеспокоен тем, что происходит, когда 2 разных пользователя нажимают кнопку «Ставка» одновременно (при условии, что у меня есть как минимум 2 сервера приложений, и они одновременно попадают на серверы). У меня есть два возможных поведения для этого:

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

Итак, мой вопрос: как решить эту проблему на Rails 3? Я думаю, что использование обычных транзакций не достаточно, или это?

1 Ответ

3 голосов
/ 23 августа 2011

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

Вот поток, который лучше объясняет два разных типа блокировки: Оптимистическая и пессимистическая блокировки

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