Регистрация | Войти
Lisp — программируемый язык программирования
RSS
REST и работа с БД
ln - 09.12.2010 09:06, Сообщений - 1
Решил попробовать RESTAS но возник один вопрос не сколько по библиотеке сколько по самому принцыпу разработки REST приложений использующих БД.
Вопрос в следующем как блокировать объекты БД которые начал редактировать пользователь?
Длинные транзакции обычные например для приложений клиент-сервер не прокатят т.к. каждое обращение к web-серверу требующее обращения к БД это будет отдельная сессия и транзакция.
Оптимистичные блокировки это на мой взгляд не приемлемо вряд ли какому пользователю понравится что пока он редактировал объект его кто то уже поменял и он не может сохранить своих изменений.
Пока единственный выход который я вижу это создание в базе таблицы в которой хранятся заблокированые объекты с информацией о том кто их заблокировал, клиентское приложение заблокировав какой либо объект должно по таймеру обращаться к web-серверу с  запросом на поддержание блокировки если такой запрос не поступает то блокировка снимается.
Может есть лучший вариант?
[#]
Я думаю, что предмет обсуждения, на самом деле, имеет слабое отношение к REST ) REST это архитектурный стиль, следовать которому полностью и во всём вряд ли представляется возможным. Блокировка ресурсов либо какая другая стратегия обработки совместного доступа это полностью в области ведения приложения. Часто бывает возможна стратегия "кто последний тот и прав" ) По одному моему приложению при сохранении объекта вычислялась изменения, которые внёс пользователь, и накатывались на базу только один, таким образом - большой объект могли редактировать сразу несколько человек не слишком друг другу мешая. 

Вариант, который вы предлагает, например используется  именно так (но только без базы) в dokuwiki.
archimag - 09.12.2010 11:26
@2009-2010 lisper.ru