powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Проблема с многопользовательским режимом работы с данными
34 сообщений из 34, показаны все 2 страниц
Проблема с многопользовательским режимом работы с данными
    #37190284
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.

Имеется:
1. Двухзвенное приложение (Клиент на C# 3.5 framework, BD: MS SQL 2005).
2. Проблемы с многопользовательским режимом работы с данными. Когда пользователи работают с одними и теми же данными с разных рабочих мест.
3. Самописная ORM библиотека.
4. Очень сложная БЛ на стороне клиента с кэшированными данными, полученными с БД.
5. ТЗ на проект нет, где бы описывалась многопользовательская работа с данными.

Хотелось бы узнать кто и как решал такие вопросы на реальных проектах, интересует сколько не техническое решение, а сама концепция работы в многопользовательском режиме. Может существуют какие-нибудь стандарты?

Например одна из многих проблем: что делать, если два пользователя с разных компьютеров параллельно загрузили какой нибудь корневой бизнес объект с БД, который загружает по иерархии много других сущностей в. Один пользователь удаляет корневой объект, который каскадно удаляет нижелещую архитектуру. Другой пользователь в это время параллельно работает с кэшированными данными порядка 3-4 часов, потом при попытки сохранить свои изменения неприятно удивляется.
Проблемных сценариев достаточно много...

Поделитесь опытом кто сталкивался с такими проблемами. Какие подходы к решению данных проблем предпринимали?
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37190448
OptiX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На стороне базы параллельная работа контролируется самим сервером БД. Очевидно, проблема в использовании тяжёлого клиента с кэшированными данными. Тоже интересно, у кого есть такой опыт.
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37190514
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUser4. Очень сложная БЛ на стороне клиента с кэшированными данными, полученными с БД.
<............>

Например одна из многих проблем: что делать, если два пользователя с разных компьютеров параллельно загрузили какой нибудь корневой бизнес объект с БД, который загружает по иерархии много других сущностей в. Один пользователь удаляет корневой объект, который каскадно удаляет нижелещую архитектуру. Другой пользователь в это время параллельно работает с кэшированными данными порядка 3-4 часов, потом при попытки сохранить свои изменения неприятно удивляется.


1) Не держать данные подолгу на клиенте: можно сделать commit - сделайте.
Если не следовать этому правилу, то 2 часа работы пользователя А будут либо убивать результаты работы пользователя Б, либо нарушать согласованность данных.

2) кешированием и блокировками объектов должна заниматься либо БД, либо сервер приложений.
Если не следовать этому правилу, либо данные не будут согласованы, либо клиенты должны непрерывно обмениваться сообщениями об изменении данных. И это обмен порядка NxN (каждый с каждым), вместо 1xN для сервера приложений.

3) Если использовать кеширование на клиенте, то БД или сервер приложений не должны доверять передаваемым данным (см. 1).
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37190559
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
логически распределять данные для редактирования между пользователями, не давать "всем все" . Убирает коллизии на 99%
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37193414
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUser3. Самописная ORM библиотека.

за сабжем следит ОРМ, если он есть .
Значит выкинуть или взять готовый
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37193541
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123LameUser3. Самописная ORM библиотека.

за сабжем следит ОРМ, если он есть .
Значит выкинуть или взять готовый

А могли бы вы поконкретнее описать сам процесс "слежения"? В чем он заключается?
Был бы признателен, если бы вы дали какую-нибудь ссылку на конкретную информацию.
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37193552
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

а как орм это делает?
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37193800
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosPetro123,
а как орм это делает?
почти так, как БД.
Я бы сначала исследовал работу БД по сабжу (логические\физические блокировки...)
Потом взял стандартный стек сишарповый, т.к. очень много завязано на выбранный ЯП.
Сам я предпочитаю без ОРМ, БЛ в БД, и блокировками рулит БД.

Инфа по ОРМ:
http://dr-magic.blogspot.com/2010/01/3.html
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37193805
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расшифруйте п. 2
Сидят двое и колбасят в одном документе (не подозревая об этом) ?

У нас ведется таблица занятых документов. Тот кто зайдет в д-т вторым, получит оповещение и режим ридонли.
Есть возможность отправить оповещение первому юзеру "мол отпусти, а ?".
Специальная логика следит, чтоб не возникало "зависших блокировок д-тов" (допустим юзер внезапно отвалился).
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37193861
тему о толстом клиенте:
Я полностью согласен с мыслями Томаса Кайта из книги по ораклу о том, что вся ВОЗМОЖНАЯ логика работы приложения с данными должна реализовываться на стороне БД.

моя работа
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37193866
то есть клиент должен быть максимально тонким и максимально использовать возможности БД.
моя работа
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37193887
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подчеркнутые имена, не являющиеся ссылками
Чуть прыгающие пукты меню из-за неауккуратного расчета высоты
"О компании" в траурной рамочке

- это что бросилаось в глаза сразу. Хреновый хомячок.
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37193964
авторПодчеркнутые имена, не являющиеся ссылками
Чуть прыгающие пукты меню из-за неауккуратного расчета высоты
"О компании" в траурной рамочке

Это сайт фирмы где я работаю.
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37193984
OptiX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим ОлеговичЭто сайт фирмы где я работаю.
Не пойму, какое отношение он имеет к сабжу...
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37193990
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никакого.

Просто замечание о том, что вряд ли нужно выставлять напоказ подобное поделие.
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37194049
dvim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не держать данные подолгу на клиенте: можно сделать commit - сделайте.
Если не следовать этому правилу, то 2 часа работы пользователя А будут либо убивать результаты работы пользователя Б, либо нарушать согласованность данных.

Согласен

Соответственно если уж делаете так, то по "забиранию объекта" отмечайте этот факт в базе.
При повторном заборе уведомляйте "второго" пользователя, что он не сможет редактировать объект.

Но вообще многочасовые задержки - это не хорошо. Проблем не избежать
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37194226
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Олегович...максимально тонким и максимально использовать...
моя работа

ненаучные термины )))
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37194292
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OptiXМаксим ОлеговичЭто сайт фирмы где я работаю.
Не пойму, какое отношение он имеет к сабжу...
спамер
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37194306
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
самая большая ошибка заключается, имхо конечно, в том, что вместо проектирования системы, которая по своей сути исключает необходимость в блокировках, придумываются сложные и в любом случае ненадежные механизмы маскировки проблем.
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37194315
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVСидят двое и колбасят в одном документе (не подозревая об этом) ?

похоже. Вместо устранения проблем ищется путь их "замыливания".
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37194349
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVРасшифруйте п. 2
Сидят двое и колбасят в одном документе (не подозревая об этом) ?

У нас ведется таблица занятых документов. Тот кто зайдет в д-т вторым, получит оповещение и режим ридонли.
Есть возможность отправить оповещение первому юзеру "мол отпусти, а ?".
Специальная логика следит, чтоб не возникало "зависших блокировок д-тов" (допустим юзер внезапно отвалился).

Тут нет понятия "отдельного документа".

БЛ приложения настолько сложная, что просто напросто не реализуема на стороне SQL сервера. К примеру один из модулей имеет возможность настройки всего-и-вся. (Создаются справочники пользователя, пользователь сам создает бизнес-сущности, формулы по которым считаются эти бизнес сущности, зависимость сущностей друг от друга (граф))), в формулы расчета сам колбасит ссылки на другие свойства других бизнес объектов приложения, некоторые из таких свойств тоже считаются весьма нетривиальным образом ) Наложено много ограничений и проверок полученных формул на корректность составления. Со стороны сервера это все хранится в древовидной структуре порядка 20 уровней вложенности. Даже если и реализовать на стороне БД - расширяемость такого решения весьма проблематично. А развитие довольно такие бурное. При том пользователь может создавать разные расчеты, которые между собой могут пересекаться общими объектами, а могут и не пересекаться...

Другими словами тут вряд-ли получится спроецировать работу с данными на отдельно взятый документ.
Интересная мысль насчет блокировок данных в БД... Думаю стоит подумать над этим.
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37194550
littlebox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUserДругими словами тут вряд-ли получится спроецировать работу с данными на отдельно взятый документ.
Другими словами у Вас построена собственная БД, которая зачем-то хранит свои словари в MS SQL Server.
LameUserИнтересная мысль насчет блокировок данных в БД... Думаю стоит подумать над этим.
Очень странно, что внутри Вашей собственной БД, изначально не реализовали собственные блокировки. Надо об этом подумать.
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37194610
pil0t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для протухания кэша при использовании SQL 2005 рекомендую использовать SqlCacheDependency
позволяет крайне эффективно кэшировать данные внутри C# приложения
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37194946
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUserPetro123пропущено...

за сабжем следит ОРМ, если он есть .
Значит выкинуть или взять готовый

А могли бы вы поконкретнее описать сам процесс "слежения"? В чем он заключается?
Был бы признателен, если бы вы дали какую-нибудь ссылку на конкретную информацию.
при загрузке объекта его блокировку делать не судьба?
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37194967
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
littleboxLameUserДругими словами тут вряд-ли получится спроецировать работу с данными на отдельно взятый документ.
Другими словами у Вас построена собственная БД, которая зачем-то хранит свои словари в MS SQL Server.
LameUserИнтересная мысль насчет блокировок данных в БД... Думаю стоит подумать над этим.
Очень странно, что внутри Вашей собственной БД, изначально не реализовали собственные блокировки. Надо об этом подумать.
+1
:)
он не подозревает, что внутри БД тоже нет ДОКУМЕНТОВ. Там строки и колонки.
Что он там будет блокировать?
Создана уникальная система БЕЗ ограничений.
Искусственный интеллект.
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37194994
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выход вроде один.

Если выделение и создание бизнес-сущности (сущности значимой для бизнеса) происходит без участия программиста - пользователем.
То значит, бремя наложения блокировок, или разрешения захвата рессурса при конкурирующих потоках лежит тоже НА пользователе.
Как сказал iscrafm, замыливание проблемы "на потом".
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37195020
NetObserver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Если выделение и создание бизнес-сущности (сущности значимой для бизнеса) происходит без участия программиста - пользователем.
То значит, бремя наложения блокировок, или разрешения захвата рессурса при конкурирующих потоках лежит тоже НА пользователе.
Как сказал iscrafm, замыливание проблемы "на потом".

Думаю совершенно не важно, создал этот бизнес обьект программист или пользователь. Как минимум она(бизнес-сущность):
1)Древовидная, то есть имеет некоторого родителя
2)Должна вводится\редактироваться по частям

что мешает на этапе 2) коммитить вводимую часть в базу и проверять наличие родителя?
я бы еще и версию записи проверял в этот момент.
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37195079
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NetObserver,
как сложить песню из 7 нот?
При стандартной разработке, я делаю таблицу "СписокДокументов". И для проверки версии, будет флаг в этом объекте или поле в БД (временная метка).
Эта метка должна анализироваться в БЛ при сохранении.
Это делает программист на этапе разработки.
Если этого нет, то кто это делает?
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37195167
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ViPRosPetro123,
а как орм это делает?
почти так, как БД.
Я бы сначала исследовал работу БД по сабжу (логические\физические блокировки...)
Потом взял стандартный стек сишарповый, т.к. очень много завязано на выбранный ЯП.
Сам я предпочитаю без ОРМ, БЛ в БД, и блокировками рулит БД.

Инфа по ОРМ:
http://dr-magic.blogspot.com/2010/01/3.html
ты че это запостил то?
я вроде знаю чо такое транзакция и т.д.
где решение проблемы я спросил?
могу и ответить :) токо организационно это фигня решается, через компромисс или регламент (у кого длинне):)
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37197159
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123littleboxпропущено...

Другими словами у Вас построена собственная БД, которая зачем-то хранит свои словари в MS SQL Server.
пропущено...

Очень странно, что внутри Вашей собственной БД, изначально не реализовали собственные блокировки. Надо об этом подумать.
+1
:)
он не подозревает, что внутри БД тоже нет ДОКУМЕНТОВ. Там строки и колонки.
Что он там будет блокировать?
Создана уникальная система БЕЗ ограничений.
Искусственный интеллект.

Все обложенно ограничениями (Constraints, triggers и другие прелести). Данные хранятся только в правильном виде. Уртрировать не нужно. Вообще-то вопрос изначально стоит про концепцию многопользовательской работы уважаемый, а не про Ваши домыслы, про "данные без ограничений".
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37197161
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123NetObserver,
как сложить песню из 7 нот?
При стандартной разработке, я делаю таблицу "СписокДокументов". И для проверки версии, будет флаг в этом объекте или поле в БД (временная метка).
Эта метка должна анализироваться в БЛ при сохранении.
Это делает программист на этапе разработки.
Если этого нет, то кто это делает?

Общие родители конечно же есть (у нас именуются версиями, сразу не понял аналогию с "документами").
Что из себя представляет "метка" на физическом уровне? доп. колонка на каждую таблицу в БД?

Смысл в этом в принципе есть, проставлять метки по мере редактировании (запросе на редактирование) определенных данных на клиенте. Но не все так просто, пользователь может взять данные на редактирование и забыть (заболеть).. Придется вводить человека из сопровождения с правами принудительного сброса флага блокировки данных.
Как вариант пришла мысль, что все данные по умолчанию в режиме "чтения", при запросе на редактирование проставляется флаг во всех низлежащих по архитектуре данных "на редактирование".
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37197258
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUser,
вы не поняли.
Физически программист может на этапе разработки "что угодно".

Если аналитик вменяемо сказал, что Документ - это такие-то реквизиты, то почти любой вариант можно смоделировать в ИС.

Если у Вас определение разделяемого ресурса делает Пользователь, то кто и где будет вешать флажёк?
авторУртрировать не нужно
я и предлагаю, говорить конкретно.
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37197708
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123LameUser,
вы не поняли.
Физически программист может на этапе разработки "что угодно".

Если аналитик вменяемо сказал, что Документ - это такие-то реквизиты, то почти любой вариант можно смоделировать в ИС.

Если у Вас определение разделяемого ресурса делает Пользователь, то кто и где будет вешать флажёк?
авторУртрировать не нужно
я и предлагаю, говорить конкретно.

Это уже техническая сторона вопроса. Пока только интересуют сами концепции работы с данными в многопользовательском режиме. Спасибо за ответы!
...
Рейтинг: 0 / 0
Проблема с многопользовательским режимом работы с данными
    #37198161
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
теоретическая:
- определить что блокируем
- блокировать при входе
- не блокировать, но решать коллизии при выходе
- не перезаписывать, а хранить версии
Удачи!
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Проблема с многопользовательским режимом работы с данными
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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