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

Откуда:
Сообщений: 126
Добрый день, подскажите как лучше организовать следующую задачу на MS SQL 2012:
Пользователь меняет данные в справочнике (в 1 таблице), за этим должен последовать ряд вычислений на секунд 10 минимум.

Если вешать обработку на триггер - то в GUI у пользователя получается подвисание.
Использовать JOB:
1) Если как расписание - то большие задержки могут быть.
2) Если как запуск JOBа триггером - то как то мне кажется это не красиво, не понятно и тп...
8 дек 14, 11:47    [16965267]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
service broker ?
8 дек 14, 11:51    [16965288]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
Wrun
Если вешать обработку на триггер - то в GUI у пользователя получается подвисание.
Использовать JOB:
1) Если как расписание - то большие задержки могут быть.
2) Если как запуск JOBа триггером - то как то мне кажется это не красиво, не понятно и тп...
Или джоб, или запускать запрос отдельным потоком из триггера.

Почему задержки могут быть? Можно выставить запуск раз в секунду; учитывая, что у вас расчёт 10 секунд, то вполне нормально.
Ну и запуск джоба триггером - тоже нормальное решение.
8 дек 14, 11:52    [16965301]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
Wlr-l
Member

Откуда:
Сообщений: 638
Wrun,

Лучше сделать так, чтобы изменение данных в справочнике не приводило к ряду вычислений.
8 дек 14, 12:06    [16965403]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
Wrun
Member [заблокирован]

Откуда:
Сообщений: 126
Wlr-l,

Ну к сожалению такое не возможно, т.к. в этом и суть
8 дек 14, 16:16    [16967168]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
Wrun
Member [заблокирован]

Откуда:
Сообщений: 126
Maxx,

Смутил знак вопроса, это действительно решение? Видел упоминание, но пока не понял реализацию...
8 дек 14, 16:17    [16967178]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9161
Service Broker позволяет организовать асинхронную обработку информации, в том числе и в триггерах.
8 дек 14, 16:39    [16967334]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
Wlr-l
Member

Откуда:
Сообщений: 638
Wrun
Wlr-l,

Ну к сожалению такое не возможно, т.к. в этом и суть


Пользователь изменил, например, в справочнике "Населенный пункт" одну строку. К какому ряду вычислений это должно привести?

Это не суть, скорее всего - это ошибка проектирования.
8 дек 14, 16:59    [16967435]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
Wrun
Member [заблокирован]

Откуда:
Сообщений: 126
Wlr-l,

В Вашем примере: Если пользователь изменил координату населенного пункта (город переехал ))) ), то нужно ведь пересчитать логистику? Вот примерно такого рода справочники, которые жестко влияют на итоговые цифры...
8 дек 14, 23:31    [16969299]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
забыл пароль
Guest
Wrun,

в таких справочниках, можно добавлять поле-флаг "обновлено", и ночью/по выходным/по желанию производить пересчеты по записям с активным флагом
9 дек 14, 14:24    [16972264]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37102
зачем использовать Service Broker если проще сделать джоб который будет запускаться раз в минуту и обрабатывать что нужно
9 дек 14, 14:54    [16972454]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Wizandr
зачем использовать Service Broker если проще сделать джоб который будет запускаться раз в минуту и обрабатывать что нужно

не хотите не используйте.. как вариант решения Service Broker тоже подходит
9 дек 14, 14:57    [16972478]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
хмхмхм
Guest
забыл пароль
Wrun,

в таких справочниках, можно добавлять поле-флаг "обновлено", и ночью/по выходным/по желанию производить пересчеты по записям с активным флагом


по-моему это самое разумное предложение, почему такое не рассматривали?
9 дек 14, 15:58    [16972906]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
Wrun
Member [заблокирован]

Откуда:
Сообщений: 126
забыл пароль,

Совершенно логично, только расчеты нужно обновлять оперативно, т.к. проверяют цифры - правят, и так 2 дня в месяц...
9 дек 14, 16:05    [16972947]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
хмхмхм
Guest
Wrun
забыл пароль,

Совершенно логично, только расчеты нужно обновлять оперативно, т.к. проверяют цифры - правят, и так 2 дня в месяц...


Если оперативно, то почему бы не делать это в триггере? А те 10-15 секунд прокрутить прогресс-бар у пользователя?
9 дек 14, 16:21    [16973039]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
хмхмхм
А те 10-15 секунд прокрутить прогресс-бар у пользователя?
А если какой-то процесс заблокировал таблицы? 10-15 секунд превращаются в 15-20 минут.

Мне кажется, тут 2 подхода - в приложении должны запускаться фоновые процессы, ждущие отклика от сервера баз данных, которые не дадут зависнуть интерфейсу, либо асинхронный запуск команд на сервере через SQL Server Agent или Service Broker.
Либо и то, и другое.
9 дек 14, 17:45    [16973584]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
хмхмхм
Guest
Jovanny
хмхмхм
А те 10-15 секунд прокрутить прогресс-бар у пользователя?
А если какой-то процесс заблокировал таблицы? 10-15 секунд превращаются в 15-20 минут.


Тогда вы противоречите сами себе и отчеты могут обновляться не оперативно. Если что-то пересчитывается более 1 минуты, то это что-то можно пересчитать SQL Job-ом. Ну подождет человек вместо 15-20 минут 16-21 минуту, что от этого изменится то?
9 дек 14, 18:15    [16973745]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
Wrun
Member [заблокирован]

Откуда:
Сообщений: 126
хмхмхм,

В принципе да, ничего, кроме работающего JOBа каждую минуту, хотя по факту он нужен (как повезет) раз 5 в месяц...
Поэтому и интересуют Альтернативные решения
9 дек 14, 20:15    [16974191]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7673
Wrun,

Хочется интерактивности, сделайте на клиенте. Ведь ГУЙ у этого интерактива есть?
9 дек 14, 20:55    [16974275]     Ответить | Цитировать Сообщить модератору
 Re: Организация фоновой обработки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Wrun
Поэтому и интересуют Альтернативные решения

Алетернатив всего две
либо фоновый сервис сам периодически проверяет условия для своего срабатывания
либо вы оповещаете этот фоновый сервис, что условия для его срабатывания имеют место быть
9 дек 14, 22:59    [16974633]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить