Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
Господа, подскажите может кто знает, задача такая, есть БД в ней определены несколько таблиц,так вот, мне при изменении, например добавлении строчки, нужно выполнять определенный код, который будет оповещать определенное приложение, что добавилась строчка. Приложение, которое нужно оповестить в общем случае находится на другой машине. Может быть можно использовать тригеры или udf.... Я копаю в этом направлении, но пока без результатов. Может кто делал что подобное, подскажите плиз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2005, 12:43 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
WebSphere Information Integrator Replication Edition - лицензия такая. Она даст вам право пользовать Event Publishing. Читать файл c1875680.pdf - это Guide по Q Replication and Event Publishing. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2005, 13:09 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
Не, у нас такой лицензии нету.... Можно как-нибудь попроще, через вызов стороннего файла, который сам сделает что нужно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2005, 13:14 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
Берите C++ и пишите что хотите... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2005, 13:34 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
ну я бы уточнил - C/C++ :) люди вон сохраненки и приложения на асме пишут, во монстры. Надо только тщательнее взвешивать - стоимость лицензии + время с одной стороны, и самописную вещь + временя с другой стороны. Я, как-то давно, занимался созданием менеджера очередей самописного. Неблагодарное это дело, вынужден заметить. Вроде поначалу все пучком, и делает что надо - но шаг в сторону, и опять писать кучу. Вот двухфазную транзакцию так и не сделали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2005, 13:42 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
Так что нужно написать то, и как оформить, как udf? Я еще раз повторю вопрос, мне нужно чтобы база сама отслеживала изменения своих таблиц(тригер) и по событию, допустим удаление строчки, исполняла бы определенный файл, например test.class, который уже сделает все что нужно. Нужно по событию исполнить файл. Как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2005, 14:15 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
В 8.2 можно вызвать SP из триггера. Очевидно, SP может быть написана на Java и вызывать этот пресловутый test.class. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2005, 15:06 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
Однако есть еще один момент - падение производительности БД, если на каждую операцию DML повесит сложный вызов, а ведь операции DML могут быть многочисленными. Даже обычными триггерами не стоит сильно увлекаться. Наиболее эффективный способ - очевидно чтение журнальных файлов, но сие доступно тока самой IBM. Через этот способ и реализуется и репликация и публикация событий, насколько я понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2005, 09:59 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
krestianin - точно, именно через чтение log'ов и реализовано Q Replication and Event Publishing. ВОт как раз через event publishing сие доступно не только самой IBM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2005, 10:38 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
Чтение журналов IBM доступно всем смотрите документацию там все прописано. Если есть желание не платить деньги за Q-Replication. Вперед и с песней разрабатывать свой Capture :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2005, 17:04 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
ну да - выставите цену, чуток меньше, чем за WebSphere Information Integrator Replication Edition - и будет вам счастие в лице толп покупателей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2005, 17:15 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
Как один из путей решения: в БД только фиксировать изменение в поле типа timestamp (тем же триггером - это может быть единственная запись в отдельной таблице) А на клиенте в отдельном потоке (со своей коннекцией) с определенной периодичностью опрашивать БД и пинать основное приложение при изменении в БД между опросами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 05:40 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
http://www-128.ibm.com/developerworks/db2/library/techarticle/0310mukherjee/0310mukherjee.html http://www-128.ibm.com/developerworks/db2/library/techarticle/0303mukherjee/0303mukherjee.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 20:29 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
> именно через чтение log'ов и реализовано Q Replication and Event Publishing. всё равно придется запрашивать состояние через интервал - само по себе событие не приходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2005, 11:20 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
в общем, единственный вменяемый вариант - persistant UDF и сокеты сокеты... :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2005, 11:23 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
Событие на изменение таблички должно приходить по COMMIT. Если ты внес какие-то изменения в таблицу, а потом сказал ROLLBACK, то событие не должно передаться. Типа его и не было. Таким образом получается, что надо обязательно ловить COMMIT. А где его поймать кроме как в логе. А если просто пульнуть сообщение, то можно и через MQ-функции, даже из триггера. или вообще наваять на C/С++ все что душе угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2005, 11:26 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
nkulikov ну это только если поиграцца - не для серьезных дядек в общем. :) АХТУНГ: The procedure waits for a alert message. If there is no message for that alert, it waits for a predefined interval time, then checks again. The default polling interval is 5 seconds, but if the timeout input parameter is set to less than 5 seconds or it is not a multiple of 5 seconds , then the polling interval is set to 1 second. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2005, 11:29 |
|
||
|
Оповещение стороннего приложения при изменении таблицы
|
|||
|---|---|---|---|
|
#18+
Событие на изменение таблички должно приходить по COMMIT. Если ты внес какие-то изменения в таблицу, а потом сказал ROLLBACK, то событие не должно передаться. Типа его и не было. Таким образом получается, что надо обязательно ловить COMMIT во многих случаях событие содержит уведомление об изменении состояния, а не кокретные данные -> нужен SELECT и смотрим действительно что-то изменилось или нет(например, из-за отката) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2005, 11:36 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=33423088&tid=1605624]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
129ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 449ms |

| 0 / 0 |
