powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Возрат набора данных из DML-триггера
50 сообщений из 50, показаны все 2 страниц
Возрат набора данных из DML-триггера
    #40033838
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем времени суток!
Прошу совета по реализации следующей задачи (описывается только концепция):

В БД накапливаются данные (скорость- "очень быстро"). Необходимо отследить момент достаточного их накопления, сформировать по ним датасет и передать внешнему ЯВУ-приложению для дальнейшей обработки.

Природа ЯВУ-клиента пока не выбрана, но к ней есть серьезное требование по скорости, поддержанию HTTP-протокола.

Серверная часть уже определена: SQL Server + триггер на вставкук таблице БД, который с задачей отслеживания момента достаточного накопления данных и формирования датасета справляется красиво и элегантно.

И вот теперь, собственно, сами "творческие муки": как вот это все переслать на ЯВУ-клиент (который в данной ситуации уже выступает вроде как сервер) для дальнейшей обработки и вызвать там ее...

Т.е. вопросы следующие:

1. Какую технологию можно применить вот в таком нестандартном обмене (когда требование на обработку данных порождается на СУБД, а не на клиенте и его (клиента) нужно заставить на это требование отреагировать ). Обновление данных очень частое. Датасеты триггером генерируются тоже часто. Приложение многопользовательское.

2. Посоветуйте пожалуйста и ЯВУ-клинет для этой задачи... Пока склоняюсь к C# и ADO.Net...

Благодарю за помощь!
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40033847
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood,

например,

RAISERROR (50001, -- Message id.
0, -- Severity.
0 -- State.
) WITH LOG;

Затем создаете Alert, привязанный к выбранному коду ошибки. А уже Alert вызываете задание SQL Server Agent, в котором можно делать вообще все, что душе угодно.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40033848
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам сильно полегчает, если вы изложите задачу, а не свои фантазии по ее решению.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40033880
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL сервер заточен на работу с таблицами. Вот в таблицу и складывайте.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40033951
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood,

ваше решение с ног на голову перевернуто. Данные должны поступать в базу, а не база должна инициировать выброс данных. Если имеется источник данных третьей стороны, то он данные должен передавать вашему приложению, т.е. слою контроллера данных, а контроллер будет передавать данные представлению (интерфейсу).
В частном случае контроллером может служить хранимая CLR процедура.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40033955
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

загадочно. Задал ТС вопрос. Получил ответ. После чего уже третий(!), пытается учить ТС жизни, даже не вникнув в задачи клиента, а сразу подгоняя их под свой любимый золотой молоток .

Ну есть уже давно у SQL Server штатное средство для подобных случаев - Alerts. Или это не феншую? )))
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40033956
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ptr128
Владислав Колосов,

загадочно. Задал ТС вопрос. Получил ответ. После чего уже третий(!), пытается учить ТС жизни, даже не вникнув в задачи клиента, а сразу подгоняя их под свой любимый золотой молоток .

Ну есть уже давно у SQL Server штатное средство для подобных случаев - Alerts. Или это не феншую? )))
Попытки родить Message Broker в "творческих муках" (с) через триггеры и агентские алерты ничего, кроме грустной улыбки, вызвать не могут.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40033961
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,

факт в том, что такой подход работоспособен.
А вот в какие сроки и с какими трудозатратами можно изменить уже имеющийся механизм - я без понятия.
Может у ТС сотня датчиков на ESP8266 прямо в MS SQL эти данные льют? И для того, чтобы перепрошить их все на другой протокол потребуется год?
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40033963
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ptr128
helengood,

например,

RAISERROR (50001, -- Message id.
0, -- Severity.
0 -- State.
) WITH LOG;

Затем создаете Alert, привязанный к выбранному коду ошибки. А уже Alert вызываете задание SQL Server Agent, в котором можно делать вообще все, что душе угодно.
RAISERROR - где ? в триггере ?
Так и в триггере можно запустить джоб, без всех этих "приседаний" с алертами и рэйзиррорами ...

Как всё это, в итоге, помогает в решении исх. задачи : оповещение какой-то внешней аппликухи ?
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40033967
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court,

RAISERROR технологичней, чем вызывать конкретное задание через msdb.dbo.sp_start_job
Для подключения другого задания или переименования/пересоздания старого, если вдруг такое потребуется, не требуется обновлять триггер в БД (в общем случае - разворачивать проект). Меняются только настройки в SSMS.
А задание уже позволяет делать вообще что угодно, включая и любой способ оповещения сервера.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40033971
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ptr128
Гавриленко Сергей Алексеевич,

факт в том, что такой подход работоспособен.
А вот в какие сроки и с какими трудозатратами можно изменить уже имеющийся механизм - я без понятия.
Может у ТС сотня датчиков на ESP8266 прямо в MS SQL эти данные льют? И для того, чтобы перепрошить их все на другой протокол потребуется год?
Посадить сто тыщ китайцев, чтобы они обрабатывали входной поток без автоматизации -- тоже работоспособный подход.
Еще доводы есть?
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40033983
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Топик почищен от флуда.
ptr128 , по системе "привет-отевет" у вас ничего не выйдет тут.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40033992
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через service broker?
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034042
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критик
Через service broker?


Видимо да. Из того, что я нашла в сети либо так, либо через SqlDependency.
Ну, либо классический вариант как тут предложили: выгружать все в таблицу и опрашивать ее с нужной частотой с клиента. Просто, я думаю, в классическом варианте получится лишняя нагрузка на сеть. А оповщения с сервера получается более ресурсосберегаемым подходом.

Может кто поделится своей точкой зрения, какие плюсы и минусы у варианта через оповещения с сервера и через опрос с клиента...
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034045
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз попытаюсь описать задачу, если кому-то оказалось не понятно.
Разрабатывается система массового обслуживания (СМО). Сейчас этап выбора концепции как таковой.

Есть множество разбросанных по всему городу терминалов, с которых в СМО поступают заявки на обслуживание (например, привезти пицуу, роллы, пирожки и т.д.). СМО должна отследить момент наступления достаточного накопления заявок, рассчитать план развозки и передать его курьеру.

Заявки будут собираться скорее в БД , т.к. собирать и обрабатывать их в ОП, думаю, не легче. Триггер отслеживает достаточное накопление пирожков и передает их данные ЯВУ-клиенту для составления плана развозки.



Как то так...Надеюсь, что понятнее написала...
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034048
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood,

Такие вещи лучше делать полностью на очередях, БД здесь будет узким местом. Ну т.е. логировать данные в базу имеет смысл, но это должна быть тупиковая ветка в маршруте.

Как вариант, можно все сделать на service broker, но в 2021-м я бы не рекомендовал вкладываться в эту технологию, ажурного будущего у нее нет.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034052
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegael
helengood,

Такие вещи лучше делать полностью на очередях, БД здесь будет узким местом. Ну т.е. логировать данные в базу имеет смысл, но это должна быть тупиковая ветка в маршруте.

Как вариант, можно все сделать на service broker, но в 2021-м я бы не рекомендовал вкладываться в эту технологию, ажурного будущего у нее нет.


Тоже мне адронный коллайдер.

"Заявки на доставку" => речь идет о десятках минут, ну о минутах, как минимум.
Чо тут устраивать истерику с "очередями" - одному аллаху ведомо.

Пишите свои заявки спокойно в табличку и считайте "скока надо".
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034062
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot aleks222#22259951]
Ennor Tiegael

речь идет о десятках минут, ну о минутах, как минимум.
Чо тут устраивать истерику с "очередями" - одному аллаху ведомо.

Пишите свои заявки спокойно в табличку и считайте "скока надо".


А если именно о минутах, то, значит, только оперативная память и логирование в БД?
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034063
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood,

меня сейчас, наверное, тут побьют, но в PostgreSQL эта задача решается в лоб. Через выполнение клиентом LISTEN, и ожидание выполнения NOTIFY в триггере.
Почем MS SQL поддерживает NOTIFY исключительно через broker service - не знаю.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034064
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ptr128
helengood,

меня сейчас, наверное, тут побьют, но в PostgreSQL эта задача решается в лоб. Через выполнение клиентом LISTEN, и ожидание выполнения NOTIFY в триггере.
Почем MS SQL поддерживает NOTIFY исключительно через broker service - не знаю.


Спасибо Вам за советы. Посмотрю в сторону PostgreSQL, просто SQL Server "знакомее".
И все же я считаю, что ни один временная структура в ОП , которая сейчас используется в прогрммировании с данной задачей не справится лучше реляционной таблицы+триггер. Единственный к сожалению жирный минус, что это медленее...
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034065
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ptr128
helengood,

меня сейчас, наверное, тут побьют, но в PostgreSQL эта задача решается в лоб. Через выполнение клиентом LISTEN, и ожидание выполнения NOTIFY в триггере.
Почем MS SQL поддерживает NOTIFY исключительно через broker service - не знаю.


Тоже открыл америку.

sp_getapplock

и жди, скока хочешь.

Только зачем?
С такими требованиями по времени достаточно тупо опрашивать сервер раз в 30-40 секунд.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034068
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
ptr128
helengood,
Через выполнение клиентом LISTEN, и ожидание выполнения NOTIFY в триггере.

sp_getapplock

Не понимаю, какая связь между нотификацией и блокировкой.
LISTEN/NOTIFY ничего не блокирует. Клиент может спокойно и дальше работать с БД, если ему это хочется. Нотификация прийдет асинхронно.
sp_getapplock требует, чтобы какой-то ресурс был заблокирован, а затем разблокирован. Как Вы это будете делать в триггере, если блокировка в MS SQL снимается после завершения или отката транзакции?
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034070
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood
Посмотрю в сторону PostgreSQL, просто SQL Server "знакомее".

Зато PostgreSQL дешевле, а в связи с активным импоротозамещением, спрос на него явно растет. )))

Вообще надо понимать, что это разные СУБД. Со своими минусами и плюсами. Что-то делать эффективней на MS SQL. Что-то - на PostgreSQL. Одного этого обсуждаемого момента точно не достаточно, чтобы выбрать СУБД. Например, если у Вас так же будет востребована работа с геоданными, то PostGIS может дать немало преимуществ. Если же Вам явно нужен SSAS и SSIS, то скрещивать их потом с PostgreSQL вряд ли имеет смысл.

Даже в рамках обсуждаемой задачи LISTEN/NOTIFY - вершина айсберга. Возможно, куда эффективней будет собирать Ваши заказы через PipeLineDB и/или TimeScaleDB. Эти то легко смогут перемалывать свыше сотни тысяч записей в секунду.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034076
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood
Обновление данных очень частое. Датасеты триггером генерируются тоже часто. Приложение многопользовательское.
И какому же пользователю будет отправлен "датасет" из триггера?
Или пользователи сами пишут, и в какой-то момент один из них должен получить все написанное?

Складывается впечатление, что концепция не верна в корне.

У вас N-писателей и M-читателей написанного? Зачем отслеживать "момент достаточного накопления"?
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034077
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
helengood
Обновление данных очень частое. Датасеты триггером генерируются тоже часто. Приложение многопользовательское.
И какому же пользователю будет отправлен "датасет" из триггера?
Или пользователи сами пишут, и в какой-то момент один из них должен получить все написанное?

Складывается впечатление, что концепция не верна в корне.

У вас N-писателей и M-читателей написанного? Зачем отслеживать "момент достаточного накопления"?


Здесь согласна, выразилась некорректно. Имела в виду (если по вашему) N-писателей и один читатель. Ему и должны высылаться данные для дальнейшей обработки.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034078
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
Складывается впечатление, что концепция не верна в корне.
+1
именно

Во всей этой "концепции" отсутствует главное:
- где гарантия, что "приёмник" принял и/или обработал этот датасет ?
... нуу отправили вы его (датасет) приёмнику, - а в это время он, как раз, отвалился от питания, ... - как это решается ? :)
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034079
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ptr128

... через PipeLineDB и/или TimeScaleDB. Эти то легко смогут перемалывать свыше сотни тысяч записей в секунду.


Огромное спасибо!
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034081
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood
N-писателей и один читатель. Ему и должны высылаться данные для дальнейшей обработки.
Читатель сам должен забирать данные. Иначе поимеете проблемы, если в дальнейшем придется увеличить число читателей.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034084
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court, Apache Kafka "...Одной из особенностей реализации инструмента является применение техники, сходной с журналами транзакций, используемыми в системах управления базами данных" (сразу оговариваюсь "только что-то слышала")?
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034085
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
helengood
N-писателей и один читатель. Ему и должны высылаться данные для дальнейшей обработки.
Читатель сам должен забирать данные. Иначе поимеете проблемы, если в дальнейшем придется увеличить число читателей.


Спасибо, поняла
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034088
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court
invm
Складывается впечатление, что концепция не верна в корне.
+1
именно

Во всей этой "концепции" отсутствует главное:
- где гарантия, что "приёмник" принял и/или обработал этот датасет ?
... нуу отправили вы его (датасет) приёмнику, - а в это время он, как раз, отвалился от питания, ... - как это решается ? :)


Тогда клиент должен быть реализован как фоновый процесс, готовый всегда откликнуться. Между СУБД и этим фоновым процессом брокер собщений, который обменивает в транзакции. Не принятые сообщения возвращаются поставщику (СУБД) и передаются снова до удачной транзакции.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034107
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood
court
пропущено...
+1
именно

Во всей этой "концепции" отсутствует главное:
- где гарантия, что "приёмник" принял и/или обработал этот датасет ?
... нуу отправили вы его (датасет) приёмнику, - а в это время он, как раз, отвалился от питания, ... - как это решается ? :)


Тогда клиент должен быть реализован как фоновый процесс, готовый всегда откликнуться. Между СУБД и этим фоновым процессом брокер собщений, который обменивает в транзакции. Не принятые сообщения возвращаются поставщику (СУБД) и передаются снова до удачной транзакции.
так, стоп !
а что, собственно, вы там "изобритаете" ?
DISTRIBUTED TRANSACTION - это не про вас ? :)
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034113
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court, я уже согласна, что против клиент-серверной природы лучше не идти. Пусть будет серверу - серверово, а клиенту - клиентово :). И регулярный опрос таблицы будет самым дешевым и простым варианатом. Но, PostgreSQL я посмотрю ...

Спасибо за советы !
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034126
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood,

Погодите, не уходите. In-memory tables уже советовали? Посмотрите, может приглянется чего. Как минимум, обчитаться можно до упора, пока сетки хватает.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034134
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegael
helengood,

Погодите, не уходите. In-memory tables уже советовали? Посмотрите, может приглянется чего. Как минимум, обчитаться можно до упора, пока сетки хватает.

У тредстартера нет ни наносекунд, ни терабайт.
Нафига ему эти таблицы?
Обычные справятся с запасом в мильен процентов.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034245
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ennor Tiegael
helengood,

Погодите, не уходите. In-memory tables уже советовали? Посмотрите, может приглянется чего. Как минимум, обчитаться можно до упора, пока сетки хватает.


Ennor Tiegael, добрый вечер! Я согласна :)...

Ну, вот мои рассуждения на это:

Хотя у таблиц In-Memory много ограничений и пока не могу сказать, какие из них могут все испортить, можно поступить так: таблица в памяти + триггер на INSERT (не нашла нигде, что DML-триггеры в таких таблицах не разрешены)-->он передает выборку (не более 30 строк) в хранимую процедуру, а там по ней пройтись курсором и сформировать план развозки--> отправить его куда надо...
В этом случае и посредника никакого не нужно. Все решается в одном месте.

Как-то так...Что скажете?
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034257
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood,

Давно я с ними не игрался, но in-memory таблицы в 2017 сервере позволяли делать INSERT в них только в один поток. Поэтому, рекомендую сначала убедиться, что вставка в них будет быстрее, чем в обычную таблицу с использованием нескольких ядер на хорошем SSD.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034266
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы на месте ТС забирал заявки из шины (периодически/по накоплению n штук) и передавал их в хп формирования плана развозки. Причем только в самом первом приближении (по-хорошему планов должно быть много и формироваться они должны динамически) .

Но я не на месте ТС и вообще не логист ни разу.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034332
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood
выборку (не более 30 строк) в хранимую процедуру, а там по ней пройтись курсором и сформировать план развозки--> отправить его куда надо...
В этом случае и посредника никакого не нужно. Все решается в одном месте.


Тредстартерша просто издевается над почтенным сообществом.

30 (ТРИДЦАТЬ!!!!) строк.
Курсор! КУРСОР!!!

О чем тут рассуждать?
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034359
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood
триггер на INSERT (...)-->он передает выборку (не более 30 строк) в хранимую процедуру, а там по ней пройтись курсором и сформировать план развозки--> отправить его куда надо...
В этом случае и посредника никакого не нужно. Все решается в одном месте.

Как-то так...Что скажете?
Скажу, что если у вас батчи по 30 строк, и вы собираетесь по ним курсором гулять, то ин-мемори не нужен. С такими объемами можно делать на чем угодно, хоть на текстовых файлах, которые потом пересылаются по мылу.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034388
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood
Есть множество разбросанных по всему городу терминалов, с которых в СМО поступают заявки на обслуживание (например, привезти пицуу, роллы, пирожки и т.д.). СМО должна отследить момент наступления достаточного накопления заявок, рассчитать план развозки и передать его курьеру.

И вот что вам сейчас мешает посчитать реальную частоту поступления заявок? 1-2 заявки в минуту?
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034436
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,

skyANA
helengood
Есть множество разбросанных по всему городу терминалов, с которых в СМО поступают заявки на обслуживание (например, привезти пицуу, роллы, пирожки и т.д.). СМО должна отследить момент наступления достаточного накопления заявок, рассчитать план развозки и передать его курьеру.

И вот что вам сейчас мешает посчитать реальную частоту поступления заявок? 1-2 заявки в минуту?


Поток сильно зависит от , как говорят, гравитационных центров в бассейне маршрута.
Про пирожки написала упрощенно,т.к. не думала, что будет такой отклик.
Смотрите, может обслуживаться 30-40 пунктов причем в двух направлениях(в зависимосит от величины населенного пункта). Каждый из них может быть как источником развозки, так и приемником (кроме крайних).На каждом из этих пунктов поток заявок варьируется в течение суток. В какие-то моменты, например когда все на\с работы едут, на некоторых пунктах могут быть по 10-30 заявок в минуту в течение двух часов, в какие-то по 1-2 .
В основе алгоритма лежит матрица корреспонденций (для двух направлений, соответственно, 2 матрицы), сторится по заявкам с терминалов. Соответственно, если 30 пунктов, то размер 30*30. Составленный план должен занимать пару минут. В зависимости от алгоритма (их несколько) матрица может обрабатываться построчно либо целиком. Вчера я написала только про обработку строки матрицы из 30 элементов и в этом случае, согласна, все просто: прошелся от одного конца к другому и все получилось.
Но если нужно обработать матрицу целиком и переходы по набору могут быть в обоих направлениях разной длины, то не уверена, что курсор лучше, обработки на клиенте ...
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034441
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И да...Матрицы или строки формируются как только накопилось достаточно заявок. А это значит циклы формирования и обработки могут протекать сразу же один за одним. Или даже параллельно.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034448
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood,

У вас объемы копеечные, поэтому делайте как будет дешевле.
Обзовите ПО прототипом. Через годик, после накопления статистики переделаете, если будет нужно.

Имхо, пока глупо делать идеально, это будет дорого. Под идеально я понимаю возможность масштабирования на 2-3 порядка от текущего объема.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034455
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик
helengood,

У вас объемы копеечные, поэтому делайте как будет дешевле.
Обзовите ПО прототипом. Через годик, после накопления статистики переделаете, если будет нужно.

Имхо, пока глупо делать идеально, это будет дорого. Под идеально я понимаю возможность масштабирования на 2-3 порядка от текущего объема.
Поддерживаю. При таких объемах практ. любая реализация взлетит. Потом, когда обнаружите узкое место, будет понятно, что поменять, чтобы его устранить.

Касательно матричных вычислений, я бы рекомендовал делать это не на SQL - в языке просто нет средств, как-либо помогающих в данной задаче.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034461
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood,

чем-то мне это симплекс-метод напомнило...
Хотя, если ограничений нет, то и алгоритм Дейкстера подойдет.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034566
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helengood
skyANA,

skyANA
пропущено...

И вот что вам сейчас мешает посчитать реальную частоту поступления заявок? 1-2 заявки в минуту?


Поток сильно зависит от , как говорят, гравитационных центров в бассейне маршрута.
Про пирожки написала упрощенно,т.к. не думала, что будет такой отклик.
Смотрите, может обслуживаться 30-40 пунктов причем в двух направлениях(в зависимосит от величины населенного пункта). Каждый из них может быть как источником развозки, так и приемником (кроме крайних).На каждом из этих пунктов поток заявок варьируется в течение суток. В какие-то моменты, например когда все на\с работы едут, на некоторых пунктах могут быть по 10-30 заявок в минуту в течение двух часов, в какие-то по 1-2 .
В основе алгоритма лежит матрица корреспонденций (для двух направлений, соответственно, 2 матрицы), сторится по заявкам с терминалов. Соответственно, если 30 пунктов, то размер 30*30. Составленный план должен занимать пару минут. В зависимости от алгоритма (их несколько) матрица может обрабатываться построчно либо целиком. Вчера я написала только про обработку строки матрицы из 30 элементов и в этом случае, согласна, все просто: прошелся от одного конца к другому и все получилось.
Но если нужно обработать матрицу целиком и переходы по набору могут быть в обоих направлениях разной длины, то не уверена, что курсор лучше, обработки на клиенте ...


Горе - алгоритмисты.
1. 40 пунктов = 2^40 вариантов маршрута. (до 2^64 масштабируется бес проблем)
2. 1 (один) раз ВСЕ считаем.
3. Потом тупо выбираем.
4. За 10-20 мс справится сервер.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034582
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222,

даже 2^40 это, простите, триллион вариантов. Если же есть ограничения (максимальная загрузка курьера, особенности ассортимента, его наличие, скорость производства и т.п.), то это уже явно задача для линейного программирования, эвристики или нейросети, в которой SQL Server Вам мало поможет.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034620
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ptr128
aleks222,

даже 2^40 это, простите, триллион вариантов. Если же есть ограничения (максимальная загрузка курьера, особенности ассортимента, его наличие, скорость производства и т.п.), то это уже явно задача для линейного программирования, эвристики или нейросети, в которой SQL Server Вам мало поможет.


Поговорить не с кем?
Вы, батенька, в алгоритмистике не сильно дальше тредстартерши смыслите.
...
Рейтинг: 0 / 0
Возрат набора данных из DML-триггера
    #40034750
helengood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну...Наверное, обсуждать больше нечего...Еще раз благодарю всех, давших советы. Буду пробовать. Как протестирую, отпишусь.

Пользователю aleks222 тоже дам совет на правах "тредстартерши": так участие в обсуждении дело добровольное, никто ведь не принуждает...Если вас оскорбляет уровень вопросов и рассуждений, то просто можно в следующий раз проходя мимо, проходить мимо и дальше... чтобы не осквернять свой интеллект и не расшатывать свои нэрвы, а то так и психосоматику заработать запросто...
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Возрат набора данных из DML-триггера
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]