Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как сообщить чужому сервису, что в бд было обновление?  [new]
palladin600
Member

Откуда: Minsk Power Station
Сообщений: 506
Такое дело,
есть простая админка, которая выводит информацию из бд.
Ну так вот пользователю надо постоянно дёргать админку, которая в свою очередь дергает бд на предмет нет ли в таблице новых данных.

Как придумать идею, что если данные в такой-то таблице изменились, то срабатывал бы некий сигнал об этом в стороннее приложение/сервис?

Пока на ум приходит только использование триггера на UPDATE/INSERT/DELETE, но как придумать что и куда он будет передавать/отправлять?
11 дек 19, 14:46    [22037816]     Ответить | Цитировать Сообщить модератору
 Re: Как сообщить чужому сервису, что в бд было обновление?  [new]
1C Developer
Member

Откуда:
Сообщений: 65
А если у Вас в БД будет что-то меняться по 100 000 раз в секунду?
11 дек 19, 14:54    [22037825]     Ответить | Цитировать Сообщить модератору
 Re: Как сообщить чужому сервису, что в бд было обновление?  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
palladin600, не очень давно была довольно активная тема с обсуждением, возможно почерпнете что-то для себя:

https://www.sql.ru/forum/1316209/uvedomlenie-klientov-ob-izmeneniyah-na-servere

Если вкратце, правильное решение для этого механизма - это Service Broker - сервис подписывается на очередь, при изменении данных вы пишете сообщение в очередь о том, что произошло изменение, сервис получает уведомление, производит вычитку данных.
Запись в очередь в плохом случае реализуется в триггере на таблицу, в хорошем - изменением таблицы исключительно через процедуры, без прямых вызовов UPDATE/INSERT/DELETE.

Сообщение было отредактировано: 11 дек 19, 15:05
11 дек 19, 14:57    [22037829]     Ответить | Цитировать Сообщить модератору
 Re: Как сообщить чужому сервису, что в бд было обновление?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4712
Minamoto

Если вкратце, правильное решение для этого механизма - это Service Broker


Это совсем не быстро. Добавьте ROWVERSION и выбирайте то, что больше ROWVERSION в выгруженных данных.
11 дек 19, 15:37    [22037879]     Ответить | Цитировать Сообщить модератору
 Re: Как сообщить чужому сервису, что в бд было обновление?  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
a_voronin
Minamoto

Если вкратце, правильное решение для этого механизма - это Service Broker


Это совсем не быстро. Добавьте ROWVERSION и выбирайте то, что больше ROWVERSION в выгруженных данных.

1) Это решение те той задачи, которую озвучил ТС
2) Каким образом это позволит уведомить сторонний сервис о прошедшей команде DELETE?
11 дек 19, 15:55    [22037902]     Ответить | Цитировать Сообщить модератору
 Re: Как сообщить чужому сервису, что в бд было обновление?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4712
Minamoto
a_voronin
пропущено...


Это совсем не быстро. Добавьте ROWVERSION и выбирайте то, что больше ROWVERSION в выгруженных данных.

1) Это решение те той задачи, которую озвучил ТС
2) Каким образом это позволит уведомить сторонний сервис о прошедшей команде DELETE?


это решает задачу тс для update insert. сервис обратиться сам. delete не уведомит .
11 дек 19, 16:17    [22037920]     Ответить | Цитировать Сообщить модератору
 Re: Как сообщить чужому сервису, что в бд было обновление?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7746
a_voronin
Minamoto

Если вкратце, правильное решение для этого механизма - это Service Broker


Это совсем не быстро. Добавьте ROWVERSION и выбирайте то, что больше ROWVERSION в выгруженных данных.


Как это решает задачу уведомления клиента по событию в таблице?
11 дек 19, 18:55    [22038035]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить