|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Лебедкин И что бы тут не говорили про кривое программирование, система на основе рефрешей по событиям реально работает (не без огрехов кончно, а где их нет?), а значит имеет право на жизнь Право на жизнь имеют все, включая олигофренов. Не нам решать кому жить, на то повыше есть. А вот как жить... Ысчо раз: диспетчеру информация о заявках нужна только в момент, когда он готов и собирается принять решение об обслуживании и выбор заявки. В режиме idle ему нужна информация только о _наличии_ заявок, чтобы принять другое решение - просмотреть список или пойти попысать. То есть, по уму эвенты нужны всего лишь для накручивания визуализации счётчика заявок при регистрации (а возможно и скручивания по событию завершения обслуживания), ну и, может, помявкивания в стиле аськи. Но если нужно поддерживать у начальства уверенность в том, что не зря вбухали бабки в высокоскоростную сеть с дорогими свитчами и мощный сервак - что ж, можно и порефрешить. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 15:33 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
FreemanZAVНу вот опять. Если миллион записей вставляем, куда складывать параметры до комита и в какой форме давать параметры клиенту. а сейчас где "миллион эвентов" лежит"? - шутка ;) Ну мне как-то не приходило в голову, что такая система может использоваться кем-то для отбработки массовых операций. В моей задаче всегда присутствует иникальный ПК и все операции производятся только с конкретной записью. Возможно можно решить задачу хранения "миллиона параметров", например ограничением использования этой системы на работу с выборкой возвращающей одну запись. Есть же такие проверки при других операциях. Хотя я конечно не специалист по написанию серверов БД и может есть еще тысяча других причин, по которым невозможно реализовать такую систему. Это уже будет объяснение получше чем "патамучто", т.к. информация о возможной реализации параметров была, а потом вопрос как-то "рассосался". FreemanZAV и в какой форме давать параметры клиенту. Можно как виндовое сообщение. или еще проще один int и хватит, а в него хоть ID из конкретной таблички, хоть тот же ID из таблицы "событий", в которой может быть хоть 100кб информации. В любом случае имеем однозначно идентифицируемую ссылку на инициатора события. система отклика может проста и прозрачна без массы дополнительных таблиц и запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 15:40 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
АВП FreemanZAVНу вот опять. Если миллион записей вставляем, куда складывать параметры до комита и в какой форме давать параметры клиенту. а сейчас где "миллион эвентов" лежит"? - шутка ;) Гусары, молчать! В одном счётчике. АВП Ну мне как-то не приходило в голову, что такая система может использоваться кем-то для отбработки массовых операций. В моей задаче всегда присутствует иникальный ПК и все операции производятся только с конкретной записью. Возможно можно решить задачу хранения "миллиона параметров", например ограничением использования этой системы на работу с выборкой возвращающей одну запись. Иногда лучше жевать (С). Примерный код _строкового_ (а у нас других нет, но насчёт табличного тоже можно похихикать) триггера: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
АВП Есть же такие проверки при других операциях. При каких, если не секрет? Имеется в виду изумление сервера на подзапросе, возвращающем курсор, в селекте? Разницы не осчусчаем? АВП Хотя я конечно не специалист по написанию серверов БД Это заметно. Однако тут нужно просто быть специалистом сначала подумать, потом сказать, а не наоборот. Серп что-то совсем ржавчиной зарос, пора заточить да омыть красненьким. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 15:55 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Привет, Amris! Ты пишешь: AmrisAM> Серп что-то совсем ржавчиной зарос, пора заточить да омыть красненьким. Недосуг мне. Сочинительствую я. Процессы и структуры рисую, мыслю чё ещё понадобится, походу дополняю чего нету ... А серп готов передать в твои руки. Вот он: -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 16:06 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
kdv -> МП МП -> AM ... всемирная история, банк и.............л чё-то заскучали гуры ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 16:07 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Нафик-нафик. Всё на мои старческие плечи взвалить возжелал? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 16:08 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Привет, Amris! Ты пишешь: Amris AM> Нафик-нафик. Всё на мои старческие плечи взвалить возжелал? Ну, тады пущай ржавеет (пока) -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 16:13 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Хотетелям event-ов с параметрами: 1. Заводим в базе табричку под параметры с PK, заполняемым из генератора 2. В триггере/SP/прямо с клиента заполняем параметры и дергаем Event (он один на всю систему) 3. Пишем программу-робота которая висит рядом с сервером и слушает именно этот Event. 4. Робот, получив Event, стартует снапшот транзакцию, вычитывает из таблички еще неотправленные Event-ы с параметрами и рассылает их клиентам. Помечает вычитанные Event-ы как отправленные и коммитит транзакцию. Протокол передачи по вкусу - хоть UDP, хоть TCP, хоть по почте, хоть SMS или вообще голосовым сообщением... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 16:18 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
основная проблема - не перевыполнять запрос целиком, а получить с сервера только те записи, которые изменились. Причем даже в последнем случае совершенно необязательны евенты с идентификаторами. Я где-то видел статью про то, как ClientDataSet сделать так, чтобы в него закачивать (прямо в буфер) нужные записи, а не все целиком. Но - не помню, увы. Так вот, сделать обновления по insert и update можно следующим способом: 1. на ПК у нас и так есть генератор, как правило. Так вот, когда мы получаем записи, автоматически сканируем столбец первичного ключа, и запоминаем максимальное считанное. Теперь, для получения вставленных с этого момента записей можно выполнить запрос select * from table where pkfield > :saved_pkfield_value and pkfield <= gen_id(pk_gen, 0) то есть, от запомненного на последнем считывании, до текущего генератора (понятно что до "текущего" записи могут не считаться, если они не committed). Опять запоминаем максимальное значение ПК из полученного набора записей, и так по кругу. (тут бы и добавить эти записи в буфер клиентдадасета) 2. для отлова обновлений делаем дополнительный столбец таблицы, который на before update заполняется еще одним генератором. Схема аналогична изложенной выше, то есть - при вставке инкрементируется ПК, а при обновлении - этот столбец. Вторым запросом, похожим на предыдущий, вынимаем свежеобновленные записи. (Тут бы и обновить эти записи в буфере клиентдатасета) 3. для отлова удалений все несколько сложнее. Или на удаления надо положить, если их нет, или сделать отдельную таблицу, параллельную исходной, и при удалении складывать туда идентификаторы (pkfield) удаленных записей. Тут, правда, с генераторами ничего не выйдет, т.к. записи могут удаляться как попало, поэтому если требуется проверять "удаленные за сегодня", то надо добавить в ПК этой доп. таблицы еще и столбец типа DATE. (тут бы и удалить эти записи в буфере клиентдатасета) Комментарии? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 16:20 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
да, добавлю, что это описание примера репликации, или рассылки изменений, на самом деле. то есть здесь никто "рефрешить", и тем более через евенты, не собирался :-) Есть сервак, а есть туча агентов, которые сами по себе, когда им надо, получают информацию об изменениях данных на сервере. Просто потому, что их предполагалось много, и если бы они по евенту ломанулись сразу на сервак, то ... Собственно, еще более на самом деле это описание "серверного" приложения. Потому что клиент только сообщал, в каком он состоянии, а серверная аппликуха для него подгребала данные и отправляла. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 16:24 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
kdvКомментарии?Да брось ты, тут уже этих рекомендаций и советов дадено. А людЯм нуна эвенты и шоп было круто и без телодвижений. У них РЕЛИГИЯ. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 16:27 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Лентяй Л> Хотетелям event-ов с параметрами: Л> 1. Заводим в базе табричку под параметры с PK, заполняемым из генератора Л> 2. В триггере/SP/прямо с клиента заполняем параметры и дергаем Event (он Л> один на всю систему) ........Я похожим образом сообщения юзверям рассылаю когда надо их повыгонять из проги. А можно и принудительно выкинуть. -- Dik76 Posted via ActualForum NNTP Server 1.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 16:32 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
kdv Комментарии? Мл.. Ё.. Ох.. Вы чо с Лентяем на пару курите-то? Повелись на прокто-логгию? Не стыдно? Раз не дают сервер с сеткой убить штатными средствАми, приделаем свои лисапедные костыли? Сам же говоришь насчёт того, что по смещению от читанного в прошлый раз хрень получается с некоммиченными. На колу мочало. Всё просто дОнельзя. У мя уже мозоль на языке в этом месте, а dimitr молчит который год аки рыба в пироге. Current_Transaction колонкой записи и в параметры евента и ВСЁ. Получил эвент завершения транзакции - тривиально выбираешь её данные. А впендюрить в просмотровый ClientDataSet проще некуда - Edit-Insert-Post, Delete. Он же изменения за щекой держит. Только ApplyUpadates не давать и всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 16:35 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
kdvЯ где-то видел статью про то, как ClientDataSet сделать так, чтобы в него закачивать (прямо в буфер) нужные записи, а не все целиком. Но - не помню, увы. Код: plaintext 1. 2. 3. 4. 5.
kdv3. для отлова удалений все несколько сложнее. Или на удаления надо положить, если их нет, или сделать отдельную таблицу, параллельную исходной, и при удалении складывать туда идентификаторы (pkfield) удаленных записей. Тут, правда, с генераторами ничего не выйдет, т.к. записи могут удаляться как попало, поэтому если требуется проверять "удаленные за сегодня", то надо добавить в ПК этой доп. таблицы еще и столбец типа DATE. (тут бы и удалить эти записи в буфере клиентдатасета) Комментарии?Зачем DATE ? Ещё один генератор, именно для таблицы удалённых. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 16:58 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Сам же говоришь насчёт того, что по смещению от читанного в прошлый раз хрень получается с некоммиченными. На колу мочало. нет никакой хрени с некомиченными. генератор - это просто указатель на максимальный ид на текущий момент. если мы получим идентификаторы меньше - ничего страшного, прочитаем в след. раз. у нас же есть максимальный реально полученный (коммиттед) идентификатор. Current_Transaction колонкой записи и в параметры евента и ВСЁ ну дак нет же этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 17:01 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Ну вот. Получил чего хотел. Натыкали носом в это самое... Ну да я не в обиде. В принципе такой реакции и ждал, иначе молчал бы и оставался дальше в неведении, что хочу невозможного да еще в извращенной форме :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 17:07 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
kdv нет никакой хрени с некомиченными. генератор - это просто указатель на максимальный ид на текущий момент. если мы получим идентификаторы меньше - ничего страшного, прочитаем в след. раз. у нас же есть максимальный реально полученный (коммиттед) идентификатор. Твой запрос: select * from table where pkfield > :saved_pkfield_value and pkfield <= gen_id(pk_gen, 0) що буим делать с pkfield<:saved_pkfield_value которые в момент назначения его таковым не были ещё закоммиченными? Без лога изменения гарантированно не вытаскиваются. Лог может гарантированно применяться для вытаскивания изменений только в случае пометки вытаскивающей транзакцией вытаскиваемых данных. В частном случае - пометки удалением из лога. kdv Current_Transaction колонкой записи и в параметры евента и ВСЁ ну дак нет же этого. Из-за таких вот и нет, видать, наверное никак не придумает как дать _только разумные_ параметры к евенту приделывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 17:15 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Amris Mirddin Из-за таких вот и нет, видать, наверное никак не придумает как дать _только разумные_ параметры к евенту приделывать. Да почему же никак не придумает. Сделал я уже давным давно систему с "внешней табличкой", в которой и идентификаторы юзеров и регистрация на события и внешний монитор, который отслеживает корректность действий и то что юзер зарегестрированный еще не "отлетел". Только вот хотел поинтересоваться, почему собственно не реализуется параметр для эвента, что мешает. Вот собственно и всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 17:27 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Amris MirddinМл.. Ё.. Ох.. Вы чо с Лентяем на пару курите-то? Повелись на прокто-логгию? Не стыдно? Раз не дают сервер с сеткой убить штатными средствАми, приделаем свои лисапедные костыли? Ну вот, попал под раздачу, да еще в какой компании! Я, собственно говоря, только изложил, как можно своими силами организовать Event с параметрами, но нигде вроде не говорил, что я за рефрешение гридов по Event-ам. Да и ДК вроде о репликации размышляет... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 17:35 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
Amris MirddinУ мя уже мозоль на языке в этом месте, а dimitr молчит который год аки рыба в пироге. Current_Transaction колонкой записи и в параметры евента и ВСЁ. я пять лет курю эту траву и меня уже не цепляет ;-) на самом деле, current_transaction архитектурно никак не кошернее rec_id, просто на практике безопаснее. Но усраться можно и с ней. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 18:30 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
що буим делать с pkfield<:saved_pkfield_value которые в момент назначения его таковым не были ещё закоммиченными? да ничего не будем! saved_pkfield_value это грубо говоря MAX(pkfield_value) из полученных. я ж там написал, специально, что на генератор ориентируемся как на теоретический максимум, а не на фактический. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 18:41 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
dimitr Amris MirddinУ мя уже мозоль на языке в этом месте, а dimitr молчит который год аки рыба в пироге. Current_Transaction колонкой записи и в параметры евента и ВСЁ. я пять лет курю эту траву и меня уже не цепляет ;-) Курить надо менше. Даже Минздрав вон предупреждает. dimitr на самом деле, current_transaction архитектурно никак не кошернее rec_id, просто на практике безопаснее. Но усраться можно и с ней. Ай, я тебя умоляю. Как это не кошернее? Усраться с current_transaction = усраться с потоком транзакций как таковым, и несколько байт в размере посылки, а не в количестве посылок, тут никакой рояли не играет. Так штаа... Не катит твой радикализьм. Даже свинина становится кошерной если свинья почесалась об стену синагоги. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 18:43 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
kdv що буим делать с pkfield<:saved_pkfield_value которые в момент назначения его таковым не были ещё закоммиченными? да ничего не будем! saved_pkfield_value это грубо говоря MAX(pkfield_value) из полученных. я ж там написал, специально, что на генератор ориентируемся как на теоретический максимум, а не на фактический. Дима, ты решил меня в гроб загнать досроковно или я туплю в той же невероятной степени после вчерашнего как и киплю? Transaction 1: insert (ID=1) Transaction 2: insert (ID=2) Transaction 2: Commit Transaction 3: select * from table where pkfield > :saved_pkfield_value and pkfield <= gen_id(pk_gen, 0) saved_pkfield_value:=max(достатых запросом ID) или min или где? Вроде по любому оно теперь 2? Transaction 1: Commit Transaction 4: select * from table where pkfield > :saved_pkfield_value (2) and pkfield <= gen_id(pk_gen, 0) (2) хрена лысого, а не ID=1. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 18:54 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
в промежуток времени после срабатывания ивента на клиенте, но перед повторным взводом его в режим ожидания, может закоммититься несколько транзакций. Т.е. клиент после этого получит одно уведомление с несколькими ID. Архитектурно - те же яйца, просто безопасней на практике. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 18:55 |
|
Вопрос по POST_EVENT
|
|||
---|---|---|---|
#18+
dimitrв промежуток времени после срабатывания ивента на клиенте, но перед повторным взводом его в режим ожидания, может закоммититься несколько транзакций. Т.е. клиент после этого получит одно уведомление с несколькими ID. Архитектурно - те же яйца, просто безопасней на практике. Привет Дима. А в очередь их никак не выстроить? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2005, 19:00 |
|
|
start [/forum/topic.php?fid=40&msg=33093419&tid=1562165]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 286ms |
total: | 465ms |
0 / 0 |