powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Проблема с многопользовательским режимом работы с данными
25 сообщений из 34, страница 1 из 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
25 сообщений из 34, страница 1 из 2
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Проблема с многопользовательским режимом работы с данными
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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