Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / синхронизация доступа пользователей к объектам БД / 8 сообщений из 8, страница 1 из 1
03.03.2006, 09:17
    #33578867
Kostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация доступа пользователей к объектам БД
Здравствуйте!

Ситуация такая: есть таблица «пользователи»(ID, Name) и таблица «файл»(ID, file). В таблице файл записи столбца file представляют из себя BLOB – файлы – чертежи Автокада. Необходимо синхронизировать доступ так, чтобы пользователь мог взять файл, если тот еще никем не взят, поработать с ним и вернуть в БД, сняв маркировку «взято».
Хочу в таблицу «файл» добавить «ID пользователя», и если оно = 0, значит файл свободен, при взятии установить ID берущего пользователя и при записи обнулять это поле.

Напишите, плиз, свои комментарии, дополнения и критику в адрес такого подхода. Может есть другие способы ограничения доступа?
...
Рейтинг: 0 / 0
03.03.2006, 10:16
    #33579016
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация доступа пользователей к объектам БД
В первую очередь прочитайте про средства блокировки, доступные в используемой БД.
...
Рейтинг: 0 / 0
03.03.2006, 10:26
    #33579044
x
x
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация доступа пользователей к объектам БД
именно так это и реализовано в Documentum
...
Рейтинг: 0 / 0
08.03.2006, 09:12
    #33587965
Shultze
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация доступа пользователей к объектам БД
softwarerВ первую очередь прочитайте про средства блокировки, доступные в используемой БД.

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

Я бы остановился на варианте таблицы блокировок, куда будут помещаться ИД блокированных документов, время блокировки и, может быть, намерения (просмотр, редактирование).
По истечению определенного времени (час, 3, сутки) "протухшие" блокировки удалять. Если логика в middle-tier то таблицу хранить в памяти, например в коллекции.
...
Рейтинг: 0 / 0
08.03.2006, 12:21
    #33588042
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация доступа пользователей к объектам БД
ShultzeПо моему средства блокировки встроенные в БД не рекомендуется использовать для функциональных блокировок, вроде многократно обсуждалось. Пользователь взял документ, залочил строку, ушел пить чай, а потом selectы не идут.
Простите, но это из серии "слышал звон". Судя по профилю, Вы говорите о MSSQL, причем о его блокировках строк. Я не разбираюсь в MSSQL, но не так давно некто Merle при участии pkarklin рассказывали мне о наличии встроенного механизма для, как Вы говорите, функциональных блокировок, в MSSQL, не мешающих никаким селектам.

ShultzeЯ бы остановился на варианте таблицы блокировок
Безусловно, всегда интереснее делать велосипед своими руками. Но как ленивый человек, я бы скорее всего остановился на использовании dbms_lock
...
Рейтинг: 0 / 0
08.03.2006, 21:13
    #33588418
Shultze
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация доступа пользователей к объектам БД
Статья на GotDotNet

Тут обсуждение этой же проблемы

Механизмы sp_getapplock ИМХО, недостаточно гибок, нет типизации по блокируемым ресурсам, нет возможности управлять пулом блокированных объектов, т.е. снять все заблокированные объекты без уничтожения сессии, нет возможности посмотреть кто заблокировал ресурс (sp_lock не информативен для APP блокировок). Велосипед из одной таблицы и нескольких ХП лично мне более удобен, чем то что предоставляется сервером. Опять же, блокировки можно вынести в слой сервера приложений и вообще базу не трогать.

Кстати, Kostt, судя по профилю ваяет СУБД на MSSQL, а клиента на .NET. Что полностью согласуется с моими рекомендациями.
...
Рейтинг: 0 / 0
08.03.2006, 21:17
    #33588420
Shultze
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация доступа пользователей к объектам БД
Вдогонку.. реализация увжаемым Pkarklin приводится в топике

/topic/22318
...
Рейтинг: 0 / 0
08.03.2006, 22:55
    #33588465
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация доступа пользователей к объектам БД
Тут обсуждение этой же проблемы
И говорится правильное решение - dbms_lock :)

Механизмы sp_getapplock ИМХО, недостаточно гибок.....
Тут - не могу и не хочу спорить. Имхо, это вполне соответствует указанному мной принципу - посмотреть средства, которые может предоставить сервер. И если они не подходят, приниматься за велосипед.

Опять же, блокировки можно вынести в слой сервера приложений и вообще базу не трогать.
И только ради этого вводить сервер приложений? :)

Кстати, Kostt, судя по профилю ваяет СУБД на MSSQL, а клиента на .NET. Что полностью согласуется с моими рекомендациями.
Если начинать закапываться в детали, то я не нашел в указанных Вами недостатках sp_*lock чего-то, что принципиально мешало бы указанному Kostt режиму работы :)
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / синхронизация доступа пользователей к объектам БД / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]