|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
dimitrв промежуток времени после срабатывания ивента на клиенте, но перед повторным взводом его в режим ожидания, может закоммититься несколько транзакций. Т.е. клиент после этого получит одно уведомление с несколькими ID. Архитектурно - те же яйца, просто безопасней на практике. Несколько - это сколько в риали? 100? 1000? Фигня по сравнению с мировой революцией. А вот записей - да, может быть и 10 000 000. Тебя же философии ещё успели поучить, в отличие от нынешнего поколения, должен понимать, что количество переходит в качество не непрерывно, а диалектическим скачком. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 19:00 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
уточняю свою позицию. Я не против данной фичи, при условии ее эффективной и безопасной реализации. Amris не даст соврать, как давно эта работа началась. Но на сабжевый вопрос буду продолжать отвечать "патамучта". Ибо тема уже набила оскомину. А большинство хотельщиков - неумытые извращенцы, истязающие себя с особым цинизмом. Прикручивать к ивентам событийную семантику - архитектурное зло. Альтернативные варианты (в том числе предложенный current_transaction) рассматриваются, но с низким приоритетом. У меня на эту тему все. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 19:06 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
ЛентяйА в очередь их никак не выстроить? можно, но тогда придумай для них новый термин и напиши новый код. К ивентам это уже отношения иметь не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 19:09 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
dimitr ЛентяйА в очередь их никак не выстроить? можно, но тогда придумай для них новый термин и напиши новый код. К ивентам это уже отношения иметь не будет. Пажди-пажди-пажди. Чё-т я окончательно запутался как ты эти параметры видишь. Промой мозги плиз: Event 'MyEvent'+Param в случае множественного срабатывания это MyEvent 1,2,3 или MyEvent 1 MyEvent 2 MyEvent 3 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 19:15 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Amris Mirddinколичество переходит в качество не непрерывно, а диалектическим скачком для вас все вполне приемлемо, спору нет. Но яйца с точки зрения реализации в обоих случаях безумно схожи. А я уже не уверен, что предложенный мной 5 лет назад вариант действительно красив и оптимален. Ибо долго читал пейджер. Возможно, зря :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 19:15 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Amris MirddinEvent 'MyEvent'+Param в случае множественного срабатывания это MyEvent 1,2,3 или MyEvent 1 MyEvent 2 MyEvent 3 в моей реализации многолетней давности - первое. Бо второе имеет мало общего с бессмертными идеями г-на Старки. Но сейчас в моей смутной голове все это видится малость по другому: MyEvent (3) 1 2 3 т.е. ивент со счетчиком пихаются клиенту насильно, а вот параметры он вытягивает сам, если они ему нужны. Эдакое сочетание push+pull, синхронизированный кентавр DMBS_ALERT+DMBS_PIPE (в терминологии оракла). ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 19:26 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
dimitr[quot Amris Mirddin]Event 'MyEvent'+Param в случае множественного срабатывания это MyEvent 1,2,3 или MyEvent 1 MyEvent 2 MyEvent 3 в моей реализации многолетней давности - первое. Бо второе имеет мало общего с бессмертными идеями г-на Старки. Иопть. А я-то, дурень, мыслил в плане второго. И жаль и странно, что в бессмертном не так, оно как-то имхо органичнее - событие отличающееся от предыдущего, неважно чем, есть другое событие. dimitr Но сейчас в моей смутной голове все это видится малость по другому: MyEvent (3) 1 2 3 т.е. ивент со счетчиком пихаются клиенту насильно, а вот параметры он вытягивает сам, если они ему нужны. Эдакое сочетание push+pull, синхронизированный кентавр DMBS_ALERT+DMBS_PIPE (в терминологии оракла). На первый взгляд кривенько как-то - раз параметры заказывали, значит они будут нужны вроде как скорее всего всегда. Очередь на клиенте была бы логичнее чем лазать за ней на сервер. Гридорефрешераторов приструнит пожалуй, а вот репликаторам-логоводам лишние телодвижения. Настораживают не как таковые, а дополнительными задержками, и, пожалуй, относительно немалыми. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 19:47 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Amris Mirddinжаль и странно, что в бессмертном не так, оно как-то имхо органичнее - событие отличающееся от предыдущего, неважно чем, есть другое событие событие есть строка, на которую подписывается клиент. Отсюда вывод - параметр не есть часть события. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 20:16 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Привет, dimitr! Ты пишешь: dimitrd> событие есть строка, на которую подписывается клиент. d> Отсюда вывод - параметр не есть часть события.Походу. Подписку по маске, сложно сделать? -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 20:18 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
в общем, так. Буду писать статью про то, как эти долбаные ивенты задумывались, как были сделаны и как работают. С мега-доскональными деталями. После чего все курят оный опус. В конце лета тему продолжим. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 20:20 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
МимопроходящийПодписку по маске, сложно сделать? с этого я и начинал. По сути те же яйца. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 20:24 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Привет, dimitr! Ты пишешь: dimitr МимопроходящийПодписку по маске, сложно сделать? d> с этого я и начинал. По сути те же яйца.Ну, тебе виднее... -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 20:26 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
dimitr Amris Mirddinжаль и странно, что в бессмертном не так, оно как-то имхо органичнее - событие отличающееся от предыдущего, неважно чем, есть другое событие событие есть строка, на которую подписывается клиент. Отсюда вывод - параметр не есть часть события. Нда. Вот к чему приводит отклонение от общесистемных принципов при проектировании подсистемы. Это как с денормализацией - никогда не делай её вместо, а только кроме, а то самая извращённая фантазия не поможет предугадать когда и на какие грабли наступишь при малейшей подвижке постановки. Нет чтоб rdb$events, возможность подписаться только на зарегистрированные там события и к ним уже хоть колбасу привязывай - не, притянутые за уши строки на клиенте, клиент вмешивается в серверную логику и она начинает зависеть от того, что ни малейшим боком к серверу не относится... В общем ты как всегда прав, самое разумное - забить до лучших времён. Как оно есть, оно почти неюзабельно, переделывать капитально - заломаешь тучу действующих приложений, пристраивать сбоку другой правильный мезонинчик - не настолько велика потребность, есть чем заняться более практически востребованным... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 20:38 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
kdv3. для отлова удалений все несколько сложнее. Или на удаления надо положить, если их нет, или сделать отдельную таблицу, параллельную исходной, и при удалении складывать туда идентификаторы (pkfield) удаленных записей. Тут, правда, с генераторами ничего не выйдет, т.к. записи могут удаляться как попало, поэтому если требуется проверять "удаленные за сегодня", то надо добавить в ПК этой доп. таблицы еще и столбец типа DATE. (тут бы и удалить эти записи в буфере клиентдатасета) я далеко не гуру, и очень боюсь, что на меня накричат, мол велосипед ... но я делаю так (вариант 100% рабочий): в таблицах, за изменением которых надо следить, заводятся дополнительно 2 поля: FCHANGECNT integer, FDEL integer FCHANGECNT - заполняется из отдельного генератора при любом измении или добавлении FDEL изначально =0, если хотим удалить запись, то ставим его в 1, и не забываем перезаполнить FCHANGECNT из генератора а теперь, на клиенте, когда первый раз грузим табличку, выполняем select * from tabler where FDEL=0, запоминаем максимальное FCHANGECNT, которое встретим в ней, грузим только с FDEL=0 а если хотим обновить табличку, выполняем select * from table where FCHANGECNT>(значение, запомненное клиентом) для каждой полученной этим запросом записи 3 варианта: 1. если запись с таким ПК в локальном буфере уже есть и новое FDEL=1, то удаляем ее из локального буфера, 2. если запись с таким ПК в локальном буфере уже есть, то перезаписываем остальные поля из полученной записи в буфер 3. если заиси с таким ПК нет, добавляем ее в лок. буфер конечно, для реализации этой логики пришлось написать свой компонент :(( ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2005, 08:01 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Да, забыл уточнить, после обновления опять-таки надо запонить максимальное значение FCHANGECNT, чтобы обновлять в следующий раз ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2005, 08:07 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
А вот не по теме. Если у меня 200 пользователей и я каждого подпишу на 2 события, много ли будет проблем. Есть, в принципе возможность евенты не юзать, но сними удобнее. В общем при таких условиях юзать или не юзать? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2005, 08:23 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Карабас Барабасконечно, для реализации этой логики пришлось написать свой компонент :(( А компонентом, в исходниках, не поделишся? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2005, 09:31 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
FreemanZAVЕсли у меня 200 пользователей и я каждого подпишу на 2 события, много ли будет проблем. что ты называешь проблемой? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2005, 09:56 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Лебедкин Карабас Барабасконечно, для реализации этой логики пришлось написать свой компонент :(( А компонентом, в исходниках, не поделишся? думаешь, он тебе понравится ? 1. он не потомок датасета, представляет собой TList с записями, т.е. в дбгриде его не отобразить :)) умеет только в DrawGrid отображаться 2. в гриде редактор не предусмотрен 3. транзакция у каждого компонента своя (ну так исторически сложилось, а переделывать сейчас некогда и неохота) 4. он на бильдере сделан, в дельфи проблемы могут быть 5. работат только с integer, double precision, varchar, char ну и т.д. и т.п. вобщем заточен под мои конкретные нужды ... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2005, 10:07 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
dimitrв общем, так. Буду писать статью про то, как эти долбаные ивенты задумывались, как были сделаны и как работают. С мега-доскональными деталями. После чего все курят оный опус. В конце лета тему продолжим. Кстати, спасибо за чтиво на ночь . Я лично при сочинении запроса всегда абстрактно представляю, как с ним будет разбираться сервер. Надеюсь с прочтением статьи мои абстрактные представления стали ближе к реальности . И по поводу Event-ов - в этой ветке тоже наступило некое просветление. А уж когда статья будет... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2005, 10:20 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
4. В билдере мне и надо (вернее предподчительние) 1. Мда - а я думал именно потомок DS Для связи с сервером IB API использует или IBX/FIB? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2005, 10:24 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
ЛебедкинДля связи с сервером IB API использует или IBX/FIB? IBX - цепляется компонет к IBDatabase, создаются внутренние IBSQL, IBTransaction (2 штуки - на чтение и на модификацию, хотя особого смысла в 2-х нет, т.к. он читает данные и всегда завершает транзакцию) да, еще, он не расчитан на квотированные идентификаторы, все имена полей приводит к одному регистру короче, ограничений куча, единственный плюс - возможность обновления больших наборов данных на клиенте мне не жалко, могу и выложить исходники, только ведь сам потом ко мне придешь, мол то не так, да это не эдак ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2005, 10:41 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Кхм. Вполне можно совместить при визуализации/редактировании данных синхронное отображение без перечитывания всего набора данных. Просто нужно несколько иначе рассматривать методы отображения и синхронизации. Чтобы трафик не нагружать, не требовать от эвентов IB того, что они не могут, и чтобы картинка на экране не мельтешила. Сразу скажу - без Bold, хотя идею стянул оттуда; все "стандартными" средствами. Ну, почти стандартными. С использованием эвентов InterBase. Проверено и запущено - работает. Кому действительно нужно, могу прислать демку и рассказ "о том, как.", пишите на e-mail. Только без обсуждения того, нужно это или нет - это просто есть, сделано и работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2005, 10:55 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
mv Проверено и запущено - работает. Кому действительно нужно, могу прислать демку и рассказ "о том, как.", пишите на e-mail. Ты лучше по прошлой теме отчитайся, а то только тайну наводишь, а как рассказать - так нет тебя :( ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2005, 11:02 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
dimitrчто ты называешь проблемой? В 1.0 кажеться были проблемы с событиями, при отваливании коннекта. Но вообще, проблема в том, что в короткий срок туева хуча народу должна заколотить туеву хучу данных, да докучи еще столько же делают отчеты. Не хотелось бы иметь напрягов с производительностью. (А кстати, в FB HASH JOIN планируется? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2005, 11:06 |
|
|
start [/forum/topic.php?fid=40&msg=33093503&tid=1562165]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 271ms |
total: | 425ms |
0 / 0 |