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

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

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

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

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

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

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

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

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

/topic/22318
...
Рейтинг: 0 / 0
синхронизация доступа пользователей к объектам БД
    #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]