|
|
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
Есть табличка с интенсивным добавлением данных. Нужен тригер\механизм для обработки одной единственной произвольно выбранной записи в момент ее вставки один раз в день, что-то типа тригер проснулся, обработал случайно попавшийся единственный инсерт, заснул на сутки. И так каждый день ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 13:46 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
Зависит от требуемого распределения вероятности по времени. В простейшем случае это, например, "первая запись на сегодня после полудня". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 13:55 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
DВАЕсть табличка с интенсивным добавлением данных. Нужен тригер\механизм для обработки одной единственной произвольно выбранной записи в момент ее вставки один раз в день, что-то типа тригер проснулся, обработал случайно попавшийся единственный инсерт, заснул на сутки. И так каждый день )WHEN ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 13:58 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЗависит от требуемого распределения вероятности по времени. В простейшем случае это, например, "первая запись на сегодня после полудня". на ваш вкус, хоть после полудня, хоть после первых петухов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 13:59 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
DВА , job-ом выставляется флаг в контекст/таблицу, а в триггере/"функции вставки" проверяется флаг. Но количество "лишних" проверок... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 13:59 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
-gt- DВА , job-ом выставляется флаг в контекст/таблицу, а в триггере/"функции вставки" проверяется флаг. Но количество "лишних" проверок... вот дергать триггер на каждый чих и не хотелось бы так же как енейблить-дисейблить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 14:03 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
DВАНужен тригер\механизм для обработки одной единственной произвольно выбранной записи в момент ее вставки один раз в день, что-то типа тригер проснулся, обработал случайно попавшийся единственный инсерт, заснул на сутки. И так каждый день )Задание, извлекающее самую последнюю строку, со случайным временем следующего запуска ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 14:05 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
ElicDВАНужен тригер\механизм для обработки одной единственной произвольно выбранной записи в момент ее вставки один раз в день, что-то типа тригер проснулся, обработал случайно попавшийся единственный инсерт, заснул на сутки. И так каждый день )Задание, извлекающее самую последнюю строку, со случайным временем следующего запуска если упростить процесс то все выглядит так. есть некоторое хранилище , куда сливается из кучи источником первичная информация, путями неисповедимыми и часто не ораклевыми, с дублированием, противоречивостью и прочей радостью. есть несколько источников, которые туда литься не должны. они как раз реализованы в Ораклевой базе Нужен механизм идентификации факта попадания\не попадания данных из этих источников в общее хранилище Первое что приходит на ум - взять произвольную запись, сделать ей специальную метку, проверить наличие метки в хранилище. Мне достаточно одной записи в день. Если делать вне тригера на инсерт, то не факт что пока я запись помечу, никто не успел ее прочитать и уже отправить в хранилище не помеченной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 14:27 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
да, и самое главное, все это какой-то оберткой вне основного программного кода, т.к. задача временная и чисто административная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 14:30 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
Ну тут или задание или триггер, насколько я понял Триггер можно заставить срабатывать по условию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 14:49 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
На правах бреда: I) Я так понимаю, нужен некий "глобальный" флаг/переменная. В триггере - проверяем глобальный флаг/переменная. Если он не установлен - первый запуск, обрабатываем запись, устанавливаем флаг Если он установлен - просто выходит по job'у раз в день - сбрасываем глобальный флаг/переменная II) вопрос, где же в Oracle найти "глобальный" флаг/переменная? IMHO. 2.1. Просто табличка с одной строчкой. Т.к. чтение будет значительно чаще, чем update, то ничего особо страшного с производительностью быть не тольжно. IMHO 2.2 DBMS_LOCK - но выглядит из пушки по воробьям и не уверен, что получится 2.3. Если уж совсем хочется без SELECT'а к табличкам, наверное можно поиграться со словарем. Например пересоздавать секьвенс. Если сиквенс вернул 1 - то флаг сброшен, если > 1 то флаг установлен. В Job сиквенс пересоздавать, кэширование по максимому. и так далее... бредовых предложений много много нагенерить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 14:59 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
Нат, оторвись от одной-единственной. Пусть твой помечающий триггер в нормальном состоянии disabled. Раз в сутки запускается задание, переводящее триггер в enabled. Успешно пометивший запись триггер активирует задание, которое переведет его обратно в disabled. Получишь от одной до N помеченных записей, если, конечно, не случится откат транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 16:22 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, учитывая что задача временная. может просто стоит сделать job и запускать в 23:59:59 когда уже практически понятно было что записи должны были появится в течении суток. и проверять чем то типа экзист по первому вхождению. дергать тригер все таки бессмысленно имхо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 18:12 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
Vintучитывая что задача временная. Независимо от временности решения Ната беспокоится о потенциальной возможности пропуска сигнала по сценарию "запись ушла в DWH и лишь затем была помечена на источнике". Если знать больше подробностей про технологию отбора данных источника или хотя бы про саму БД-источник - можно было бы подумать еще, а в общем случае... IMHO из ~универсальных триггер+пара джобиков самое оно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 18:23 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
DВА, Создать очередь через dbms_aq. В теле триггера : 1. проверить, если в очереди сообщение в состояние READY. 2. Если нет, то отправить сообщение в очередь со свойством expiration , установленным в количестве секунд, оставшихся до 23:59:59 текущего дня Вычитывать очередь не нужно. По истечению времени сообщение перейдет в состояние expired. Параметр aq_tm_processes только выставить в значение, большее 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 20:09 |
|
||
|
нужны идеи
|
|||
|---|---|---|---|
|
#18+
Сообщение в состоянии READY и будет тем флагом, определяющим факт обработки единственной строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2018, 20:19 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39690533&tid=1883560]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
147ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 476ms |

| 0 / 0 |
