Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Многопользовательское приложение(триггеры?)  [new]
-2-
Member

Откуда:
Сообщений: 15330
DKey
Никто не говорит, что это мега решение
это бред. можно назвать мегабред. к решению задачи конкурентной обработки, ни концептуальному, ни хотя бы как направление, никакого отношения не имеет. только проблем добавит.

DKey
ведь оракл - версионник а не блокировщик
это к теме отношения не имеет, по крайней мере, пока автор не озвучит сценарий работы приложения.
19 янв 12, 16:43    [11934189]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18363
DKey
Ну и еще. Если имеет место отказ от стандартных проверенных механизмов. ТО убогий велосипед все же лучше чем вообще ничего.

К сожалению, представленный Вами подход - это даже не велосипед. Это просто не будет работать :)
19 янв 12, 16:47    [11934225]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51780

DKey
потом десятерых послать обновлять данные и соответственно потерять все что они там
наредактировали.

Не понял почему "соответственно потерять"?

Posted via ActualForum NNTP Server 1.5

19 янв 12, 16:51    [11934273]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
DKey
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 15574
Dimitry Sibiryakov
DKey
потом десятерых послать обновлять данные и соответственно потерять все что они там
наредактировали.

Не понял почему "соответственно потерять"?


Как вариант - меняли то поле которое уже отредактировал кто то другой. и теперь в соответствии с новым значением нужны новые изменения.
19 янв 12, 17:09    [11934440]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18363
DKey
разрешить одновременно 10 пользователям редактировать запись

Фундаментально есть два способа разрулить конфликт: пессимистическая блокировка и оптимистическая.
Пессимистическая - запись блокируется перед началом правки, сама правка - по очереди.
Оптимистическая - правка документа производится без блокировки, запись же блокируется непосредственно перед или самим внесением изменений (update) и изменения фиксируются непосредственно после завершения.
Тут есть куча вариантов логики, самая простая - просто записать свой вариант "поверх".
Посложнее - требует определения факта модификации записи между ее выборкой и сохранением правки.
Определение факта модификации делается достаточно просто:
Когда открываем документ "на редактирование", полученную запись "запоминаем".
Перед внесением изменений делаем select for update [nowait|wait X] и сравниваем полученную запись с ранее сохраненной - либо по всем полям, либо по специально обученным (счетчик версий или, скажем, хеш).
Не совпадает - тут же откатываемся и демонстрируем юзеру "запись была изменена", сам результат for update - "запоминаем" по аналогии с первоначальным select.
тут снова варианты: можно просто обломать, можно показать текущую версию документа (из select for update) и дать выбор (Сохранить полюбому/продолжить редактирование), можно провести "автомагическое" слияние документов и запросить у пользователя подтверждение результата.
Далее - новая попытка записи и эта карусель может вертеться либо до успеха либо до исчерпания запаса психологической устойчивости юзера :)
19 янв 12, 17:31    [11934628]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
Exproment
Member

Откуда:
Сообщений: 416
Просто заблокировать запись нельзя по той причине, что если тот кто первым вошел в режим редактирования - пошел попить кофе.
Конечно можно было-бы поставить ограничение на время блокирования, но все равно остается нерациональное использование ресурсов - человек отошел(за пончиком) а его 10 человек ждут. А кнопка "Отошел" - мягко говоря неудобно.

Конечно просто отличным, точнее совершенным вариантом с точки зрения пользователя было бы выдать ему сообщение прямо в процессе редактирования. Скажем средствами ProgressBar красными буквами мол "Запись была обновлена" (ненавижу когда приложение вываливает кучу разных информирующих сообщений). Юзер это подметил и нажал обновить например.
19 янв 12, 17:42    [11934707]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
Exproment
Member

Откуда:
Сообщений: 416
Исходя их этого идеального решения и началь думать в сторону триггеров, мол по "Update" как-нить сообщать подключенным прилоджениям "Строка Id=xxx" обновлена. Как реализовать такой механизм - ни малейшей идеи... (
19 янв 12, 17:45    [11934733]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51780

Exproment
Как реализовать такой механизм - ни малейшей идеи...

Тебе уже сказали - использовать Data Changing Notification. И никакие триггера не нужны.

Posted via ActualForum NNTP Server 1.5

19 янв 12, 17:48    [11934763]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
Exproment
Member

Откуда:
Сообщений: 416
Dimitry Sibiryakov, виноват )
19 янв 12, 17:52    [11934817]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18363
Exproment
по "Update" как-нить сообщать подключенным прилоджениям "Строка Id=xxx" обновлена. Как реализовать такой механизм - ни малейшей идеи... (

Ну вообще механизм нотификации клиента таки существует :)
Однако решение его привлечением будет существенно сложнее решения с логикой разрешения конфликта по факту попытки сохранения или - если у пользователя есть желание узнать "до" - по кнопке "обновить статус".
Функционально - этого "за глаза", автомагический же статусбар, ИМХО, не стоит усилий и последующих хлопот с сопровождением.
19 янв 12, 17:53    [11934820]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
Exproment
Member

Откуда:
Сообщений: 416
andrey_anonymous, стоит) и как только появится возможность обязательно реализую. Т.к. нахожусь на стадии обучения... "тяжело в учении - легко в бою" )
19 янв 12, 18:00    [11934914]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Exproment
Просто заблокировать запись нельзя по той причине, что если тот кто первым вошел в режим редактирования - пошел попить кофе.
Конечно можно было-бы поставить ограничение на время блокирования, но все равно остается нерациональное использование ресурсов - человек отошел(за пончиком) а его 10 человек ждут. А кнопка "Отошел" - мягко говоря неудобно.

Конечно просто отличным, точнее совершенным вариантом с точки зрения пользователя было бы выдать ему сообщение прямо в процессе редактирования. Скажем средствами ProgressBar красными буквами мол "Запись была обновлена" (ненавижу когда приложение вываливает кучу разных информирующих сообщений). Юзер это подметил и нажал обновить например.

если некто заблокировал нечто и куда-то пошел, то в вашей власти:
1. оповестить очередь желающих того ресурса о личности злодея
2. запротоколировать событие и припомнить оному в доступной, адекватно-чувствительной форме
3. прибить блокировку вкупе с сессией +1.и 2.

запись была обновлена - тоже бывают разные. например, если вы видите в магазине 30 штук потребного вам (в количестве 1 штуки) товара, то вам элементарно пофиг, что за время заполнения формы заказа тех штук стало 20 или 330 (лишь бы не 0).
тут сообщения про события, которые пофиг - вредный мусор.
в то же время, ситуация когда перед редактированием должна быть обеспечена блокировка - также может быть единственно-возможной
(в бизнес-смысле приложения)
так что - выбирать вам (но вот про триггеры, в контексте этой темы - забудьте )
19 янв 12, 18:06    [11934977]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
Exproment
Member

Откуда:
Сообщений: 416
оффтоп:
orawish
(в бизнес-смысле приложения)

создание сводной таблицы функционирования бизнес-процесса: необходимо лочить весь tabel

orawish
(но вот про триггеры, в контексте этой темы - забудьте )

дельное замечание, благодарю.. поставил крест.

и еще небольшой оффтоп на форуме(и в доках) с ходу не нашел а создавать отдельную тему для такой мелочи...
Как можно автоматизировать запись в Первичный ключ чтобы выполнялась она не пользователем через СЕЛЕКТ а самостоятельно при добавлении новой строки. (наверное очень глупый вопрос)
19 янв 12, 18:18    [11935085]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18363
orawish
но вот про триггеры, в контексте этой темы - забудьте

...аминь :)
19 янв 12, 18:19    [11935096]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
Exproment
Member

Откуда:
Сообщений: 416
Exproment, блин... не пояснил: ключ никакой доп инфы кроме как id не несет.. что-нить наподобии счетчика(на примере Access)
19 янв 12, 18:20    [11935103]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18363
Exproment
наподобии счетчика(на примере Access)

ТОП популярных вопросов, №3
19 янв 12, 18:21    [11935113]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
Exproment
Member

Откуда:
Сообщений: 416
andrey_anonymous, *WALL* спасибо... вину осознал...
19 янв 12, 18:23    [11935124]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18363
Exproment
нахожусь на стадии обучения...

Обязательно к прочтению в контексте топика
19 янв 12, 18:23    [11935126]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
-2-
Member

Откуда:
Сообщений: 15330
Exproment
Скажем средствами ProgressBar красными буквами мол "Запись была обновлена" (ненавижу когда приложение вываливает кучу разных информирующих сообщений). Юзер это подметил и нажал обновить например.
Нажал "обновить" и потерял свои изменения? Или затер чужие?
Не сохранять изменения категорически нельзя - это психология пользователя - полчаса заведомого перекура предпочтительнее потери полминуты работы. Давать пользователю решать самому, обновлять ли, - мучительно для совестливого пользователя.

В ситуации где каждый пользователь друг-другу волк, ничего блокировать не надо. Кто последний, тот и прав. Плюс история, кто правил.
Когда пользователь переживает за судьбу коллеги, у него должна быть информация, кто и сколько держит ресурс и, возможно право перехватить ресурс при соблюдении неких условий. Но все сложнее, если из ожидающих выстраивается очередь...
Иногда вообще не нужно "конкурировать". Делается только инсерт событий, а состояние объекта вычисляется на нужный момент.

Все-таки. Что за ресурс, что его захотят править по полчаса несколько пользователей одновременно?
19 янв 12, 20:51    [11935881]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18363
-2-
Что за ресурс, что его захотят править по полчаса несколько пользователей одновременно?

Макет логотипа и рекламный слоган для "Газпрома" :) :) :) :)
19 янв 12, 21:01    [11935918]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 49775
-2-
Все-таки. Что за ресурс, что его захотят править по полчаса несколько пользователей одновременно?

Заказ билета на Ж/Д ?
19 янв 12, 21:04    [11935929]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
Bfink
Member

Откуда: Москва
Сообщений: 2797
-2-
Все-таки. Что за ресурс, что его захотят править по полчаса несколько пользователей одновременно?


Текст статьи в Википедии :-)
19 янв 12, 21:06    [11935935]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
Exproment
Member

Откуда:
Сообщений: 416
andrey_anonymous, благодарю. Обязательно изучу на досуге.

-2-
Нажал "обновить" и потерял свои изменения? Или затер чужие?

Не совсем: есть два окна: одно просмотрщик(сокращенная запись), второе редактор. Или составляющие части окна. Тут уже Qt предоставлет море возможностей - выбирай любую. Обновил в основном окне: окно редактора не меняется.

-2-
Что за ресурс, что его захотят править по полчаса несколько пользователей одновременно?

Мало вариантов ?

И вообще кстати задача уже давно решена)
19 янв 12, 22:51    [11936220]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
-2-
Member

Откуда:
Сообщений: 15330
mayton
-2-
Все-таки. Что за ресурс, что его захотят править по полчаса несколько пользователей одновременно?
Заказ билета на Ж/Д ?
Одного и того же билета каждый пассажир по полчаса?

Bfink
Текст статьи в Википедии :-)
Ну там предоставляется возможность провести слияние, версии и все такое. текст все-таки. Но вообще, очень непростой интерфейс для неискушенного пользователя.

Exproment
-2-
Нажал "обновить" и потерял свои изменения? Или затер чужие?
Не совсем: есть два окна: одно просмотрщик(сокращенная запись), второе редактор. Или составляющие части окна. Тут уже Qt предоставлет море возможностей - выбирай любую. Обновил в основном окне: окно редактора не меняется.
А база тут каким боком?

"Разработчки" пошли... Задаешь простой вопрос про жизнь to save, or not to save, а они Qt, trigger, dbms_lock,... вот пользователь потом сидит перед анимированными иконками и думает, какого хера программа меня просит. козлы эти айтишники.

Exproment
И вообще кстати задача уже давно решена)
это понятно. ты только сформулировать не можешь, а решить без проблем.
20 янв 12, 00:29    [11936450]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательское приложение(триггеры?)  [new]
Exproment
Member

Откуда:
Сообщений: 416
-2-, "Специалисты" пошли... контекст прочитать не могут. В лоб:
-2-
Нажал "обновить" и потерял свои изменения? Или затер чужие?

Не потерял свои значения и не затер чужие. По причине: свои хранятся в буфере. Как уж именно это реализовано никак вообще(!!!) к теме не относится.
-2-
это понятно. ты только сформулировать не можешь, а решить без проблем.

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

В общем это уже полный оффтоп... ВСЕМ ОГРОМНОЕ СПАСИБО что доходчиво все объяснили и дали пищу для размышлений.
20 янв 12, 01:08    [11936505]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Oracle Ответить