Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2010.09.19;
Скачать: [xml.tar.bz2];

Вниз

Отображение изменений, внесённых в БД другими пользователями   Найти похожие ветки 

 
TheEd   (2009-06-01 17:19) [0]

Уважаемые мастера!
Есть сетевая база (FB2.5), несколько пользователей одновременно работают с таблицами.
Как "перехватить" событие по вставке в базу записи другим пользователем (если это реально)?

зы:
Насколько я понимаю, сервер БД не оповещает клиентов о подобных событиях, т.е. выхода два:
- или время от времени делать FullRefresh
- или трехзвенку строить
Есть более "прямые" решения?


 
Игорь Шевченко ©   (2009-06-01 17:24) [1]


> Насколько я понимаю, сервер БД не оповещает клиентов о подобных
> событиях, т.е. выхода два:


оповещает через Event Alerter

Более прямое решение - делать Full Refresh, то есть, пользователь сам выбирает, когда ему смотреть, кто что поменял


 
MsGuns ©   (2009-06-01 20:55) [2]

А есть радикальное решение - уйти от "табличной" идеологии к "документной"


 
Виталий Панасенко(дом)   (2009-06-01 22:08) [3]

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


 
Германн ©   (2009-06-02 00:46) [4]


> Виталий Панасенко(дом)   (01.06.09 22:08) [3]
>
> каждый раз дергать по Eventу

Иногда это нужно, но только очень иногда.


 
TheEd   (2009-06-02 08:39) [5]

Спасибо, счас попоробую оба варианта, но наверно на евентах остановлюсь - сеть локалка, юзеров не более 10-20 (на пике активности :)


 
PEAKTOP ©   (2009-06-02 09:42) [6]

> каждый раз дергать по Eventу - все равно нужно делать FullRefresh(я
> так понял FIBPlus используются)...


Зачем ? Можно и по таймеру: у FIBPlus у транзакции есть свойство Timeout и TimeoutAction. Timeout - это внутренний таймер, TimeoutAction - действие.

Если транзакция, читающая данные, будет
isc_tpb_read_committed
isc_tpb_no_rec_version
isc_tpb_read
isc_tpb_nowait или isc_tpb_wait - неважно, зависит от задачи

а транзакция, в которой идет запись
isc_tpc_consistency
isc_tpb_write

То имеем "живой" набор данных. И безо всяких Event-ов.


 
Sergey13 ©   (2009-06-02 10:25) [7]

> [5] TheEd   (02.06.09 08:39)
> юзеров не более 10-20 (на пике активности :)

И все продают единственный (последний) чайник со склада? 8-)


 
MsGuns ©   (2009-06-02 16:12) [8]

Какой нафих таймер !!!! Какой эвент !!!!!!!!!!!!!!
Блин, в 667-й раз рекомендую присмотреться как работает система резервирования и продажи билетов - многое станет ясным

Это все придумал Черчиль (Парадокс) в 18-м (80-х) году ;)


 
Игорь Шевченко ©   (2009-06-02 16:56) [9]


> Блин, в 667-й раз рекомендую присмотреться как работает
> система резервирования и продажи билетов - многое станет
> ясным


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

Ей в ответ - зарезервировано или фиг вам, местов нету.

Каким боком понимание такого факта поможет автору вопроса ?


 
MsGuns ©   (2009-06-02 22:18) [10]

>Игорь Шевченко ©   (02.06.09 16:56) [9]
>Система резервирования работает очень просто - желающий отправляет >запрос на сервер и говорит - хочу зарезервировать пол-самолета (пол->гостиницы) на такое-то число.
>Ей в ответ - зарезервировано или фиг вам, местов нету.

Угу. При запросе свободных мест местов было. А вот при попытке зарезервировать - индейская хижина. В этом и фишка.

>Каким боком понимание такого факта поможет автору вопроса ?

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


 
Игорь Шевченко ©   (2009-06-02 22:36) [11]

MsGuns ©   (02.06.09 22:18) [10]


> Угу. При запросе свободных мест местов было. А вот при попытке
> зарезервировать - индейская хижина. В этом и фишка.


Не! Оно сразу говорит - зарезервируй, без предварительных запросов.


> А таким, что если сервер будет уведомлять стотощ клиентов


И че ? Хоть стопицоттыщ - уведомление не есть сколько-нибудь ресурсоемкий процесс, если сервер умеет одновременно поддерживать стопицоттыщ подключений, то послать лишний пакет им - не так уж страшно замедлит его работу, что он не сможет чем-либо заниматься.
Впрочем, это легко проверяется на практике - в Demos\DelphiWin32\VCLWin32\Db\IBX\IBXEvents есть как раз проект для этих самых уведомлений, компилируешь, запускаешь много экземпляров...


 
MsGuns ©   (2009-06-03 00:30) [12]

>Игорь Шевченко ©   (02.06.09 22:36) [11]
>Не! Оно сразу говорит - зарезервируй, без предварительных запросов.

Ну да ? И где ж оно будет резервировать, в каких поездах и вагонах ?
И какого оно будет резервировать, ежели покупатель заказал полста билетов и слинял "как будто в туалет" ?

Хотя спорить с тобою уволь ;)


 
Petr V. Abramov ©   (2009-06-03 00:38) [13]


> MsGuns ©   (01.06.09 20:55) [2]
> А есть радикальное решение - уйти от "табличной" идеологии
> к "документной"

это уже второй дан :)
сорри за оффтоп


 
Игорь Шевченко ©   (2009-06-03 00:39) [14]

MsGuns ©   (03.06.09 00:30) [12]


> Ну да ? И где ж оно будет резервировать, в каких поездах
> и вагонах ?


В доступных, очевидно.


> И какого оно будет резервировать, ежели покупатель заказал
> полста билетов и слинял "как будто в туалет" ?


И че ? Ну слинял. Не подтвердил в указанный регламентом интервал - места снова достпупны.


> Хотя спорить с тобою уволь ;)


Хотя бы по той простой причине, что с системами бронирования (авиаперевозок) я общаюсь больше 15 лет.


 
Германн ©   (2009-06-03 01:11) [15]


> MsGuns ©   (03.06.09 00:30) [12]
>
> Хотя спорить с тобою уволь ;)
>

При чтении ветки хотел похохмить на эту тему с тобой, но опоздал :(
ИШ своим [14] испортил всю малину! :)
На эту тему можно ещё поговорить с vuk"ом. (Если он захочет).


 
Игорь Шевченко ©   (2009-06-03 01:55) [16]

Кстати, о бронировании и просмотре изменений, внесенных другими пользователями - при продаже билетов на сеанс в кино такого рода изменения вполне уместно организовывать через оповещение. Перед кассиром план зрительного зала, закупленные места помечаются одним цветом, свободные другим, в соседней касе продали на 13-е место 13-го ряда - сразу всем видно, что на этот конкретный стул хрен кого еще усадишь.


 
Германн ©   (2009-06-03 02:43) [17]


> Игорь Шевченко ©   (03.06.09 01:55) [16]
>
> Кстати, о бронировании и просмотре изменений, внесенных
> другими пользователями - при продаже билетов на сеанс в
> кино такого рода изменения вполне уместно организовывать
> через оповещение. Перед кассиром план зрительного зала,
> закупленные места помечаются одним цветом, свободные другим,
>  в соседней касе продали на 13-е место 13-го ряда - сразу
> всем видно, что на этот конкретный стул хрен кого еще усадишь.
>

Кстати и я о том же. :) Но не о билетах.


 
MsGuns ©   (2009-06-03 09:05) [18]

>Игорь Шевченко ©   (03.06.09 01:55) [16]

О как !
А зачем тогда был [14] - типа крутость показать ?
Я как бы и сам о таком догадывался ибо тоже не вчера в горшок стал попадать, а вот автору мозги, ИМХО, запудривать не стоило б. Тем более там у него и так не густо пока ;)


 
Игорь Шевченко ©   (2009-06-03 11:00) [19]

MsGuns ©   (03.06.09 09:05) [18]

Я ценю твою заботу об авторе.


> А зачем тогда был [14]


Исключительно для тебя, в пояснение поста [10].


 
TheEd   (2009-06-03 14:07) [20]

Интересно было коменты почитать после вынужденного перерыва.

> автору мозги, ИМХО, запудривать не стоило б. Тем более там
> у него и так не густо пока ;)


ничё, интересно было поразмыслить. В плане не густо согласен, я пока собаки ни одной не съел :)

Кстати о том что же нужно автору:
это ближе к кассе с билетами чем к брони билетов, а именно: группа {студентов} из 10-15 чел. вбивает в базу некоторые данные о себе. При этом некоторые lookup-поля используют таблицы подстановки. Например Иванов выбирает предмет "Математика" и ставит себе оценку. Если математики нет, жмёт доп. кнопку и в отдельном мастере добавляет нужный предмет.
Так вот, если в этот момент Петров добавит тот же предмет, то или их в справочнике будет 2, или счаботает исключение в случае уникального ключа у того из них, кто вторым сделает пост.
В данном случае считаю обоснованным применение оповещений, но в данный момент ломаю голову над вот чем:
в тригеры поставил рассылку сообщений, но если юзер А делает к примеру Insert, ему тоже приёдет сообщение, как и всем остальным - а это уже не нужно. Параметр в сообщение не передашь.
Пока вижу выход один:
убрать рассылку из тригеров, оформить хранимой процедурой и вызывать из слиентского приложения её, при этом на время отсылки не обрабатывать получение соответствующего сообщения.
Знаю что метод кривой, кто знает как можно более прямо сделать?


 
Плохиш ©   (2009-06-03 14:17) [21]


> Так вот, если в этот момент Петров добавит тот же предмет,
>  то или их в справочнике будет 2, или счаботает исключение
> в случае уникального ключа у того из них, кто вторым сделает
> пост.


> кто знает как можно более прямо сделать?

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


 
TheEd   (2009-06-03 14:22) [22]


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


это понятно.
но хотелось чтобы у Петрова в списке появился предмет, добавленный Ивановым (плюс ещё можно Balloon в трэй-иконке показать, чтобы привлечь внимание)!
Но сообщения ловят все подписанные клиенты, в т.ч. и Иванов, который его инициировал. Ему нет необходимости его обрабатывать - его датасеты уже содержат все изменения!


 
Игорь Шевченко ©   (2009-06-03 14:30) [23]


> Например Иванов выбирает предмет "Математика" и ставит себе
> оценку. Если математики нет, жмёт доп. кнопку и в отдельном
> мастере добавляет нужный предмет.


А если у Иванова двойка по родному языку и он выбирает "Матиматека", а у Петрова тройка и он выбирает "Мотематика" ?


 
Sergey13 ©   (2009-06-03 15:44) [24]

> [20] TheEd   (03.06.09 14:07)
> группа {студентов} из 10-15 чел. вбивает в базу некоторые данные о себе.

Это нечто рельно нужное или очередная лаба?
В реальности нет ничего страшнее чем справочники, заполняемые кем попало по желанию правой ноги.


 
Медвежонок Пятачок ©   (2009-06-03 15:53) [25]

Если математики нет, жмёт доп. кнопку

... и в вузе сразу же начинают преподавать математику.
физрука снимают с пары и посылают преподавать дифференциальное исчисление.


 
TheEd   (2009-06-03 16:00) [26]


> Это нечто рельно нужное или очередная лаба?


лабы, слава Богу, давно в прошлом :)
хотя... Лабы сдают преподам, а работу - начальству. Разницы большой нет, только степень ответственности + некоторое скудное материальное вознаграждение, называемое зарплата :)


 
Sergey13 ©   (2009-06-03 16:04) [27]

> [26] TheEd   (03.06.09 16:00)
> только степень ответственности + некоторое скудное материальное
> вознаграждение, называемое зарплата :)

Значит ты безответственный и зарплату тебе не повысят. 8-)


 
Медвежонок Пятачок ©   (2009-06-03 16:05) [28]

ну если зарплата, то логичен вопрос, почему программа уже у набивальщиков данных, а в базе еще нет математики?


 
TheEd   (2009-06-03 16:36) [29]

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

2 Sergey13 [27]:
её в бюджете платят не по заслугам а так, чтобы человек не сбежал :(


 
Медвежонок Пятачок ©   (2009-06-03 16:41) [30]

Тем не менее принципиально - студент может сам добавить пункт справочника.

Это у кого такие интересные принципы?
А если студень туда забьет предмет "хиромантия" ?
Ты начшень здесь парить всем моск как перехватить "хиромантию"?


 
Sergey13 ©   (2009-06-03 16:41) [31]

> [29] TheEd   (03.06.09 16:36)
> Тем не менее принципиально - студент может сам добавить пункт справочника.

Ну значит готовься к наличию оценок по "Хрен знает чему" и "Какой то фигне". 8-)


 
Медвежонок Пятачок ©   (2009-06-03 16:44) [32]

Вместо подобной колхозной поделки с парой-тройкой неудобно реализованных функций подойдет банальная книга экселя.

плюз на зряплате вуз сэкономит.


 
MsGuns ©   (2009-06-04 00:09) [33]

>Игорь Шевченко ©   (03.06.09 11:00) [19]
>> А зачем тогда был [14]
>Исключительно для тебя, в пояснение поста [10].

Поясни для тех кто в бронепоезде. В 10 я утвержал, что проектировать систему, в которой сервер должен кого-то в чем-то уведомлять, - дело гиблое в зародыше. Даже при наличие супер-пупер сервера, который, впрочем, при всей своей супер-пуперности никак не гарантирует, что его "посылочка" дойдет до клиента, ибо он как бы не машинист и не стрелочник.

Я также не комментирую утвержение о бронировании того не знаю чего - вы там в авиации, очевидно, знаете.

Но вот к чему эти сентенции автору, которому, очевидно, надо просто сделать "как в парадоксе" (наверное препод так сказал)


 
Германн ©   (2009-06-04 00:15) [34]


> MsGuns ©   (04.06.09 00:09) [33]
>
> Но вот к чему эти сентенции автору, которому, очевидно,
> надо просто сделать "как в парадоксе" (наверное препод так
> сказал)

А как сделано это в парадоксе?


 
ANB   (2009-06-04 11:05) [35]

При открытии справочника оптимально получать его свежее состояние.
От дублей в справочнике, который заполняют юзеры, не спасет ничего.
Какую то часть можно отсеять по уникальному индексу на название без учета регистра.


 
TheEd   (2009-06-04 18:23) [36]


> А если студень туда забьет предмет "хиромантия" ?


> Ну значит готовься к наличию оценок по "Хрен знает чему"
> и "Какой то фигне". 8-)

в принципе - всё правильно, но
в контексте моей задачи это не возбраняется. Студни пишут сами о себе, это не претендует на реальность (для этого зачётки есть). Кроме этого есть ещё много чего, что они о себе пишут, ложат фоты и т.д.. А вот потом это всё в отчёт формируется, это студень сам о себе писал за время учёбы (дневник достижений что-ли?). Может им к выпуску самим интересно будет глянут что там наваяли.
Практика уже сейчас показывает что подход работает - 70-90% пишут добросовестно и им самим интересно. Остальные не только херомантию в справочник тиснуть смогу, но и Череззаборногузадерищенко - в фамилию :) Для этого предусмотрена процедура типа модерации.

В принципе хорошо пообщались, тему можно свернуть, хотя пока нет полной ясности как ловить только чужие сообщения (или передать в сообщение параметр).


 
Совесть ДМ ©   (2009-06-04 20:02) [37]

да
такие бредовые ветки чем раньше свернешь - тем полезней окружающим


 
MsGuns ©   (2009-06-04 21:04) [38]

>В принципе хорошо пообщались, тему можно свернуть, хотя пока нет полной ясности как ловить только чужие сообщения (или передать в сообщение параметр).

Да уж, "пообщались". Автор как пребывал в потемках, так и пребывает дальше


 
TheEd   (2009-06-06 18:19) [39]


> Да уж, "пообщались". Автор как пребывал в потемках, так
> и пребывает дальше


Уважаемый MsGuns! Если я не прав, прошу меня поправить, но:
единственные параметры сообщения FB - это его имя и количество произошедших событий. Тут не разгуляешься...
И сообщения отправляются всем подписанным клиентам, поэтому идентифицировать своё собственное можно только поплясав с бубном :)


 
Нат ©   (2009-06-07 23:20) [40]

Во всех проектах, функции заполнения всего всеми были прикрыты.
Вводились обязанности админа или оператора БД, который набивал важные данные.
Даже редактирование менеджерами инфомации о своих клиентах блокировалось и перекладывалось на ОБД.
Иначе возникал бардак.
В любую бухгалтерию загляни, даже один человек в состоянии десять раз повторно вбить один и тот же наименование в справочник с вариациями:
* Пуговица круглая
* "пуговица круглая"
* Круглые пуговицы
* Пугавицы круглоя
и прочие пугвицы и крглыя...
ПАтаму, что не нашлась в нужный момент "Пуговица" при поиске по "пгвица".
А то и вообще не искалось при добавлении... Они ж все и так помнЮт... Что не было еще такой позиции.



Страницы: 1 2 вся ветка

Форум: "Базы";
Текущий архив: 2010.09.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.58 MB
Время: 0.005 c
2-1276942888
TStas
2010-06-19 14:21
2010.09.19
Засечь вставку флешки


2-1277184716
Miko
2010-06-22 09:31
2010.09.19
Не найдена точка входа процедуры в DLL


11-1222560137
AnarchyMob
2008-09-28 04:02
2010.09.19
bsClear в WinCE


15-1277224079
М. Береговой
2010-06-22 20:27
2010.09.19
Переключатель источника питания для ноутбука?


15-1276586599
brother
2010-06-15 11:23
2010.09.19
Электронные сигареты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский