Optimistic locking (оптимистическая блокировка)

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

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

Программист полон оптимизма и справедливо рассчитывает на то что пользователь очень сделает все что от него требуется и закончит работу. Но в жизни не всегда так получается. В результате первый пользователь увидит на экране сообщение об ошибке а программист прочитает в логе Optimistic locking exception.

 

Таким образом если отойти от лирического вступления стратегия «Optimistic locking» предполагает что никто не изменит данные в базе данных кроме Вас, поэтому нет необходимости блокировать эти данные на время работы всего приложения.