@BardinAlex

Как правильно организовать конкурентный доступ с данным?

Суть в чем - данные могут редактировать N пользователей, но по сути идеальный вариант - кто первый открыл запись тот и редактирует, остальные могут открыть запись только для просмотра.
возможно такой велосипед уже есть (свой написать можно, но не думаю, что я один с таким сталкивался), а возможно есть более верное решение и подход к данной задаче
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 2
LaRN
@LaRN
Senior Developer
Мы аналогичную задачу решали так:
Создали таблицу в которую заноситься объект при подъеме его на редактирование. Все остальные пользователи при попытке редактировать этот объект, получают сообщение, что пользователь "такой-то" его уже редактирует и форма поднимается в режиме только для чтения.
Когда первый пользователь закрывает форму с объектом, из таблицы удаляется запись и объект сможет редактировать другой пользователь.

Иногда случались сбои (например дисконнект) и пользователь открывший объект на редактирование не мог корректно освободить редактируемый объект. В этом случае, если объект есть в таблице редактируемых, но процесс с его spid и именем пользователя отсутствует на SQL сервере , принудительно удаляем объект из таблицы редактируемых.

Без такого механизма периодически забивали несоответствия вида: "я поменял объект, сохранил, поднял его на просмотр, а он другой".
Ответ написан
Суть в чем - данные могут редактировать N пользователей, но по сути идеальный вариант - кто первый открыл запись тот и редактирует, остальные могут открыть запись только для просмотра.

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

Войдите, чтобы написать ответ

Похожие вопросы