|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
Доброго времени суток. Имеется: 1. Двухзвенное приложение (Клиент на C# 3.5 framework, BD: MS SQL 2005). 2. Проблемы с многопользовательским режимом работы с данными. Когда пользователи работают с одними и теми же данными с разных рабочих мест. 3. Самописная ORM библиотека. 4. Очень сложная БЛ на стороне клиента с кэшированными данными, полученными с БД. 5. ТЗ на проект нет, где бы описывалась многопользовательская работа с данными. Хотелось бы узнать кто и как решал такие вопросы на реальных проектах, интересует сколько не техническое решение, а сама концепция работы в многопользовательском режиме. Может существуют какие-нибудь стандарты? Например одна из многих проблем: что делать, если два пользователя с разных компьютеров параллельно загрузили какой нибудь корневой бизнес объект с БД, который загружает по иерархии много других сущностей в. Один пользователь удаляет корневой объект, который каскадно удаляет нижелещую архитектуру. Другой пользователь в это время параллельно работает с кэшированными данными порядка 3-4 часов, потом при попытки сохранить свои изменения неприятно удивляется. Проблемных сценариев достаточно много... Поделитесь опытом кто сталкивался с такими проблемами. Какие подходы к решению данных проблем предпринимали? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 14:40 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
На стороне базы параллельная работа контролируется самим сервером БД. Очевидно, проблема в использовании тяжёлого клиента с кэшированными данными. Тоже интересно, у кого есть такой опыт. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 15:35 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
LameUser4. Очень сложная БЛ на стороне клиента с кэшированными данными, полученными с БД. <............> Например одна из многих проблем: что делать, если два пользователя с разных компьютеров параллельно загрузили какой нибудь корневой бизнес объект с БД, который загружает по иерархии много других сущностей в. Один пользователь удаляет корневой объект, который каскадно удаляет нижелещую архитектуру. Другой пользователь в это время параллельно работает с кэшированными данными порядка 3-4 часов, потом при попытки сохранить свои изменения неприятно удивляется. 1) Не держать данные подолгу на клиенте: можно сделать commit - сделайте. Если не следовать этому правилу, то 2 часа работы пользователя А будут либо убивать результаты работы пользователя Б, либо нарушать согласованность данных. 2) кешированием и блокировками объектов должна заниматься либо БД, либо сервер приложений. Если не следовать этому правилу, либо данные не будут согласованы, либо клиенты должны непрерывно обмениваться сообщениями об изменении данных. И это обмен порядка NxN (каждый с каждым), вместо 1xN для сервера приложений. 3) Если использовать кеширование на клиенте, то БД или сервер приложений не должны доверять передаваемым данным (см. 1). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 15:57 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
логически распределять данные для редактирования между пользователями, не давать "всем все" . Убирает коллизии на 99% ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 16:09 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
LameUser3. Самописная ORM библиотека. за сабжем следит ОРМ, если он есть . Значит выкинуть или взять готовый ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2011, 23:33 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
Petro123LameUser3. Самописная ORM библиотека. за сабжем следит ОРМ, если он есть . Значит выкинуть или взять готовый А могли бы вы поконкретнее описать сам процесс "слежения"? В чем он заключается? Был бы признателен, если бы вы дали какую-нибудь ссылку на конкретную информацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 06:36 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
Petro123, а как орм это делает? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 07:18 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
ViPRosPetro123, а как орм это делает? почти так, как БД. Я бы сначала исследовал работу БД по сабжу (логические\физические блокировки...) Потом взял стандартный стек сишарповый, т.к. очень много завязано на выбранный ЯП. Сам я предпочитаю без ОРМ, БЛ в БД, и блокировками рулит БД. Инфа по ОРМ: http://dr-magic.blogspot.com/2010/01/3.html ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 10:50 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
Расшифруйте п. 2 Сидят двое и колбасят в одном документе (не подозревая об этом) ? У нас ведется таблица занятых документов. Тот кто зайдет в д-т вторым, получит оповещение и режим ридонли. Есть возможность отправить оповещение первому юзеру "мол отпусти, а ?". Специальная логика следит, чтоб не возникало "зависших блокировок д-тов" (допустим юзер внезапно отвалился). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 10:52 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
тему о толстом клиенте: Я полностью согласен с мыслями Томаса Кайта из книги по ораклу о том, что вся ВОЗМОЖНАЯ логика работы приложения с данными должна реализовываться на стороне БД. моя работа ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 11:18 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
то есть клиент должен быть максимально тонким и максимально использовать возможности БД. моя работа ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 11:19 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
Подчеркнутые имена, не являющиеся ссылками Чуть прыгающие пукты меню из-за неауккуратного расчета высоты "О компании" в траурной рамочке - это что бросилаось в глаза сразу. Хреновый хомячок. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 11:27 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
авторПодчеркнутые имена, не являющиеся ссылками Чуть прыгающие пукты меню из-за неауккуратного расчета высоты "О компании" в траурной рамочке Это сайт фирмы где я работаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 11:59 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
Максим ОлеговичЭто сайт фирмы где я работаю. Не пойму, какое отношение он имеет к сабжу... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 12:05 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
Никакого. Просто замечание о том, что вряд ли нужно выставлять напоказ подобное поделие. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 12:07 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
Не держать данные подолгу на клиенте: можно сделать commit - сделайте. Если не следовать этому правилу, то 2 часа работы пользователя А будут либо убивать результаты работы пользователя Б, либо нарушать согласованность данных. Согласен Соответственно если уж делаете так, то по "забиранию объекта" отмечайте этот факт в базе. При повторном заборе уведомляйте "второго" пользователя, что он не сможет редактировать объект. Но вообще многочасовые задержки - это не хорошо. Проблем не избежать ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 12:26 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 13:34 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
OptiXМаксим ОлеговичЭто сайт фирмы где я работаю. Не пойму, какое отношение он имеет к сабжу... спамер ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 13:56 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
самая большая ошибка заключается, имхо конечно, в том, что вместо проектирования системы, которая по своей сути исключает необходимость в блокировках, придумываются сложные и в любом случае ненадежные механизмы маскировки проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 14:01 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
LSVСидят двое и колбасят в одном документе (не подозревая об этом) ? похоже. Вместо устранения проблем ищется путь их "замыливания". ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 14:03 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
LSVРасшифруйте п. 2 Сидят двое и колбасят в одном документе (не подозревая об этом) ? У нас ведется таблица занятых документов. Тот кто зайдет в д-т вторым, получит оповещение и режим ридонли. Есть возможность отправить оповещение первому юзеру "мол отпусти, а ?". Специальная логика следит, чтоб не возникало "зависших блокировок д-тов" (допустим юзер внезапно отвалился). Тут нет понятия "отдельного документа". БЛ приложения настолько сложная, что просто напросто не реализуема на стороне SQL сервера. К примеру один из модулей имеет возможность настройки всего-и-вся. (Создаются справочники пользователя, пользователь сам создает бизнес-сущности, формулы по которым считаются эти бизнес сущности, зависимость сущностей друг от друга (граф))), в формулы расчета сам колбасит ссылки на другие свойства других бизнес объектов приложения, некоторые из таких свойств тоже считаются весьма нетривиальным образом ) Наложено много ограничений и проверок полученных формул на корректность составления. Со стороны сервера это все хранится в древовидной структуре порядка 20 уровней вложенности. Даже если и реализовать на стороне БД - расширяемость такого решения весьма проблематично. А развитие довольно такие бурное. При том пользователь может создавать разные расчеты, которые между собой могут пересекаться общими объектами, а могут и не пересекаться... Другими словами тут вряд-ли получится спроецировать работу с данными на отдельно взятый документ. Интересная мысль насчет блокировок данных в БД... Думаю стоит подумать над этим. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 14:15 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
LameUserДругими словами тут вряд-ли получится спроецировать работу с данными на отдельно взятый документ. Другими словами у Вас построена собственная БД, которая зачем-то хранит свои словари в MS SQL Server. LameUserИнтересная мысль насчет блокировок данных в БД... Думаю стоит подумать над этим. Очень странно, что внутри Вашей собственной БД, изначально не реализовали собственные блокировки. Надо об этом подумать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 15:37 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
Для протухания кэша при использовании SQL 2005 рекомендую использовать SqlCacheDependency позволяет крайне эффективно кэшировать данные внутри C# приложения ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 16:01 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
LameUserPetro123пропущено... за сабжем следит ОРМ, если он есть . Значит выкинуть или взять готовый А могли бы вы поконкретнее описать сам процесс "слежения"? В чем он заключается? Был бы признателен, если бы вы дали какую-нибудь ссылку на конкретную информацию. при загрузке объекта его блокировку делать не судьба? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 18:14 |
|
Проблема с многопользовательским режимом работы с данными
|
|||
---|---|---|---|
#18+
littleboxLameUserДругими словами тут вряд-ли получится спроецировать работу с данными на отдельно взятый документ. Другими словами у Вас построена собственная БД, которая зачем-то хранит свои словари в MS SQL Server. LameUserИнтересная мысль насчет блокировок данных в БД... Думаю стоит подумать над этим. Очень странно, что внутри Вашей собственной БД, изначально не реализовали собственные блокировки. Надо об этом подумать. +1 :) он не подозревает, что внутри БД тоже нет ДОКУМЕНТОВ. Там строки и колонки. Что он там будет блокировать? Создана уникальная система БЕЗ ограничений. Искусственный интеллект. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 18:22 |
|
|
start [/forum/topic.php?fid=33&msg=37194967&tid=1548071]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 311ms |
total: | 486ms |
0 / 0 |