|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
invm Складывается впечатление, что концепция не верна в корне. именно Во всей этой "концепции" отсутствует главное: - где гарантия, что "приёмник" принял и/или обработал этот датасет ? ... нуу отправили вы его (датасет) приёмнику, - а в это время он, как раз, отвалился от питания, ... - как это решается ? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 19:45 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
ptr128 ... через PipeLineDB и/или TimeScaleDB. Эти то легко смогут перемалывать свыше сотни тысяч записей в секунду. Огромное спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 19:45 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
helengood N-писателей и один читатель. Ему и должны высылаться данные для дальнейшей обработки. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 20:28 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
court, Apache Kafka "...Одной из особенностей реализации инструмента является применение техники, сходной с журналами транзакций, используемыми в системах управления базами данных" (сразу оговариваюсь "только что-то слышала")? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 20:39 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
invm helengood N-писателей и один читатель. Ему и должны высылаться данные для дальнейшей обработки. Спасибо, поняла ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 20:43 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
court invm Складывается впечатление, что концепция не верна в корне. именно Во всей этой "концепции" отсутствует главное: - где гарантия, что "приёмник" принял и/или обработал этот датасет ? ... нуу отправили вы его (датасет) приёмнику, - а в это время он, как раз, отвалился от питания, ... - как это решается ? :) Тогда клиент должен быть реализован как фоновый процесс, готовый всегда откликнуться. Между СУБД и этим фоновым процессом брокер собщений, который обменивает в транзакции. Не принятые сообщения возвращаются поставщику (СУБД) и передаются снова до удачной транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 21:12 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
helengood court пропущено... +1 именно Во всей этой "концепции" отсутствует главное: - где гарантия, что "приёмник" принял и/или обработал этот датасет ? ... нуу отправили вы его (датасет) приёмнику, - а в это время он, как раз, отвалился от питания, ... - как это решается ? :) Тогда клиент должен быть реализован как фоновый процесс, готовый всегда откликнуться. Между СУБД и этим фоновым процессом брокер собщений, который обменивает в транзакции. Не принятые сообщения возвращаются поставщику (СУБД) и передаются снова до удачной транзакции. а что, собственно, вы там "изобритаете" ? DISTRIBUTED TRANSACTION - это не про вас ? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2021, 00:28 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
court, я уже согласна, что против клиент-серверной природы лучше не идти. Пусть будет серверу - серверово, а клиенту - клиентово :). И регулярный опрос таблицы будет самым дешевым и простым варианатом. Но, PostgreSQL я посмотрю ... Спасибо за советы ! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2021, 01:39 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
helengood, Погодите, не уходите. In-memory tables уже советовали? Посмотрите, может приглянется чего. Как минимум, обчитаться можно до упора, пока сетки хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2021, 11:06 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
Ennor Tiegael helengood, Погодите, не уходите. In-memory tables уже советовали? Посмотрите, может приглянется чего. Как минимум, обчитаться можно до упора, пока сетки хватает. У тредстартера нет ни наносекунд, ни терабайт. Нафига ему эти таблицы? Обычные справятся с запасом в мильен процентов. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2021, 12:47 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
Ennor Tiegael helengood, Погодите, не уходите. In-memory tables уже советовали? Посмотрите, может приглянется чего. Как минимум, обчитаться можно до упора, пока сетки хватает. Ennor Tiegael, добрый вечер! Я согласна :)... Ну, вот мои рассуждения на это: Хотя у таблиц In-Memory много ограничений и пока не могу сказать, какие из них могут все испортить, можно поступить так: таблица в памяти + триггер на INSERT (не нашла нигде, что DML-триггеры в таких таблицах не разрешены)-->он передает выборку (не более 30 строк) в хранимую процедуру, а там по ней пройтись курсором и сформировать план развозки--> отправить его куда надо... В этом случае и посредника никакого не нужно. Все решается в одном месте. Как-то так...Что скажете? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2021, 20:40 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
helengood, Давно я с ними не игрался, но in-memory таблицы в 2017 сервере позволяли делать INSERT в них только в один поток. Поэтому, рекомендую сначала убедиться, что вставка в них будет быстрее, чем в обычную таблицу с использованием нескольких ядер на хорошем SSD. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2021, 22:10 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
Я бы на месте ТС забирал заявки из шины (периодически/по накоплению n штук) и передавал их в хп формирования плана развозки. Причем только в самом первом приближении (по-хорошему планов должно быть много и формироваться они должны динамически) . Но я не на месте ТС и вообще не логист ни разу. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2021, 22:57 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
helengood выборку (не более 30 строк) в хранимую процедуру, а там по ней пройтись курсором и сформировать план развозки--> отправить его куда надо... В этом случае и посредника никакого не нужно. Все решается в одном месте. Тредстартерша просто издевается над почтенным сообществом. 30 (ТРИДЦАТЬ!!!!) строк. Курсор! КУРСОР!!! О чем тут рассуждать? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 09:54 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
helengood триггер на INSERT (...)-->он передает выборку (не более 30 строк) в хранимую процедуру, а там по ней пройтись курсором и сформировать план развозки--> отправить его куда надо... В этом случае и посредника никакого не нужно. Все решается в одном месте. Как-то так...Что скажете? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 12:47 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
helengood Есть множество разбросанных по всему городу терминалов, с которых в СМО поступают заявки на обслуживание (например, привезти пицуу, роллы, пирожки и т.д.). СМО должна отследить момент наступления достаточного накопления заявок, рассчитать план развозки и передать его курьеру. И вот что вам сейчас мешает посчитать реальную частоту поступления заявок? 1-2 заявки в минуту? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 14:45 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
skyANA, skyANA helengood Есть множество разбросанных по всему городу терминалов, с которых в СМО поступают заявки на обслуживание (например, привезти пицуу, роллы, пирожки и т.д.). СМО должна отследить момент наступления достаточного накопления заявок, рассчитать план развозки и передать его курьеру. И вот что вам сейчас мешает посчитать реальную частоту поступления заявок? 1-2 заявки в минуту? Поток сильно зависит от , как говорят, гравитационных центров в бассейне маршрута. Про пирожки написала упрощенно,т.к. не думала, что будет такой отклик. Смотрите, может обслуживаться 30-40 пунктов причем в двух направлениях(в зависимосит от величины населенного пункта). Каждый из них может быть как источником развозки, так и приемником (кроме крайних).На каждом из этих пунктов поток заявок варьируется в течение суток. В какие-то моменты, например когда все на\с работы едут, на некоторых пунктах могут быть по 10-30 заявок в минуту в течение двух часов, в какие-то по 1-2 . В основе алгоритма лежит матрица корреспонденций (для двух направлений, соответственно, 2 матрицы), сторится по заявкам с терминалов. Соответственно, если 30 пунктов, то размер 30*30. Составленный план должен занимать пару минут. В зависимости от алгоритма (их несколько) матрица может обрабатываться построчно либо целиком. Вчера я написала только про обработку строки матрицы из 30 элементов и в этом случае, согласна, все просто: прошелся от одного конца к другому и все получилось. Но если нужно обработать матрицу целиком и переходы по набору могут быть в обоих направлениях разной длины, то не уверена, что курсор лучше, обработки на клиенте ... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 18:39 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
И да...Матрицы или строки формируются как только накопилось достаточно заявок. А это значит циклы формирования и обработки могут протекать сразу же один за одним. Или даже параллельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 18:52 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
helengood, У вас объемы копеечные, поэтому делайте как будет дешевле. Обзовите ПО прототипом. Через годик, после накопления статистики переделаете, если будет нужно. Имхо, пока глупо делать идеально, это будет дорого. Под идеально я понимаю возможность масштабирования на 2-3 порядка от текущего объема. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 19:07 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
Критик helengood, У вас объемы копеечные, поэтому делайте как будет дешевле. Обзовите ПО прототипом. Через годик, после накопления статистики переделаете, если будет нужно. Имхо, пока глупо делать идеально, это будет дорого. Под идеально я понимаю возможность масштабирования на 2-3 порядка от текущего объема. Касательно матричных вычислений, я бы рекомендовал делать это не на SQL - в языке просто нет средств, как-либо помогающих в данной задаче. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 19:46 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
helengood, чем-то мне это симплекс-метод напомнило... Хотя, если ограничений нет, то и алгоритм Дейкстера подойдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 20:05 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
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 мс справится сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2021, 11:56 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
aleks222, даже 2^40 это, простите, триллион вариантов. Если же есть ограничения (максимальная загрузка курьера, особенности ассортимента, его наличие, скорость производства и т.п.), то это уже явно задача для линейного программирования, эвристики или нейросети, в которой SQL Server Вам мало поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2021, 12:21 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
ptr128 aleks222, даже 2^40 это, простите, триллион вариантов. Если же есть ограничения (максимальная загрузка курьера, особенности ассортимента, его наличие, скорость производства и т.п.), то это уже явно задача для линейного программирования, эвристики или нейросети, в которой SQL Server Вам мало поможет. Поговорить не с кем? Вы, батенька, в алгоритмистике не сильно дальше тредстартерши смыслите. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2021, 13:45 |
|
Возрат набора данных из DML-триггера
|
|||
---|---|---|---|
#18+
Ну...Наверное, обсуждать больше нечего...Еще раз благодарю всех, давших советы. Буду пробовать. Как протестирую, отпишусь. Пользователю aleks222 тоже дам совет на правах "тредстартерши": так участие в обсуждении дело добровольное, никто ведь не принуждает...Если вас оскорбляет уровень вопросов и рассуждений, то просто можно в следующий раз проходя мимо, проходить мимо и дальше... чтобы не осквернять свой интеллект и не расшатывать свои нэрвы, а то так и психосоматику заработать запросто... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 00:17 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1685229]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
8ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 303ms |
total: | 567ms |
0 / 0 |