Когда мне нужно беспокоиться о блокировке ActiveRecord? - PullRequest
1 голос
/ 02 февраля 2012

Я читал о функции оптимистической блокировки и пессимистической блокировки ActiveRecord, и я вообще не использую их в своем коде Rails, и все выглядит хорошо. Что такое хорошее правило, чтобы знать, когда их использовать? Я предполагаю, что когда два человека пытаются редактировать один и тот же объект, это будет один пример.

1 Ответ

1 голос
/ 02 февраля 2012

Вам необходимо использовать их или какое-либо другое решение той же проблемы, когда у вас могут быть параллельные изменения в одних и тех же данных и когда нет четкого правила, для которого изменение «выигрывает». Это подмножество случаев, когда два человека редактируют один и тот же объект.

В общем, оптимистическая блокировка хороша, когда конфликты маловероятны, потому что они менее затратны для людей: вы можете просто редактировать, и очень редко вам говорят, что вам нужно повторить работу, потому что кто-то другой изменил объект.

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

Оба работают хорошо, если и только если у вас есть относительно небольшое количество пользователей, заинтересованных в одних и тех же данных. Обе модели плохо масштабируются до большого количества одновременных правок, поскольку они либо вынуждают пользователя повторить работу в случае конфликта, либо ждут, пока кто-то еще не закончит, прежде чем он выполнит свою работу.

Когда вы ожидаете конфликтов, и очень немногие пользователи работают с одними и теми же данными, вы хотите использовать более продвинутые подходы, такие как CQRS, для решения проблем параллелизма.

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