Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / нужны идеи / 18 сообщений из 18, страница 1 из 1
20.08.2018, 13:46
    #39690390
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
Есть табличка с интенсивным добавлением данных.
Нужен тригер\механизм для обработки одной единственной произвольно выбранной записи в момент ее вставки один раз в день, что-то типа тригер проснулся, обработал случайно попавшийся единственный инсерт, заснул на сутки.
И так каждый день )
...
Рейтинг: 0 / 0
20.08.2018, 13:55
    #39690400
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
Зависит от требуемого распределения вероятности по времени. В простейшем случае это,
например, "первая запись на сегодня после полудня".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.08.2018, 13:58
    #39690403
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
DВАЕсть табличка с интенсивным добавлением данных.
Нужен тригер\механизм для обработки одной единственной произвольно выбранной записи в момент ее вставки один раз в день, что-то типа тригер проснулся, обработал случайно попавшийся единственный инсерт, заснул на сутки.
И так каждый день )WHEN ?
...
Рейтинг: 0 / 0
20.08.2018, 13:59
    #39690404
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
Dimitry SibiryakovЗависит от требуемого распределения вероятности по времени. В простейшем случае это,
например, "первая запись на сегодня после полудня".



на ваш вкус, хоть после полудня, хоть после первых петухов
...
Рейтинг: 0 / 0
20.08.2018, 13:59
    #39690405
-gt-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
DВА , job-ом выставляется флаг в контекст/таблицу, а в триггере/"функции вставки" проверяется флаг.
Но количество "лишних" проверок...
...
Рейтинг: 0 / 0
20.08.2018, 14:03
    #39690407
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
-gt- DВА , job-ом выставляется флаг в контекст/таблицу, а в триггере/"функции вставки" проверяется флаг.
Но количество "лишних" проверок...

вот дергать триггер на каждый чих и не хотелось бы
так же как енейблить-дисейблить
...
Рейтинг: 0 / 0
20.08.2018, 14:05
    #39690412
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
DВАНужен тригер\механизм для обработки одной единственной произвольно выбранной записи в момент ее вставки один раз в день, что-то типа тригер проснулся, обработал случайно попавшийся единственный инсерт, заснул на сутки.
И так каждый день )Задание, извлекающее самую последнюю строку, со случайным временем следующего запуска
...
Рейтинг: 0 / 0
20.08.2018, 14:27
    #39690426
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
ElicDВАНужен тригер\механизм для обработки одной единственной произвольно выбранной записи в момент ее вставки один раз в день, что-то типа тригер проснулся, обработал случайно попавшийся единственный инсерт, заснул на сутки.
И так каждый день )Задание, извлекающее самую последнюю строку, со случайным временем следующего запуска

если упростить процесс то все выглядит так.

есть некоторое хранилище , куда сливается из кучи источником первичная информация, путями неисповедимыми и часто не ораклевыми, с дублированием, противоречивостью и прочей радостью.
есть несколько источников, которые туда литься не должны.
они как раз реализованы в Ораклевой базе
Нужен механизм идентификации факта попадания\не попадания данных из этих источников в общее хранилище
Первое что приходит на ум - взять произвольную запись, сделать ей специальную метку, проверить наличие метки в хранилище. Мне достаточно одной записи в день.
Если делать вне тригера на инсерт, то не факт что пока я запись помечу, никто не успел ее прочитать и уже отправить в хранилище не помеченной.
...
Рейтинг: 0 / 0
20.08.2018, 14:30
    #39690431
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
да, и самое главное, все это какой-то оберткой вне основного программного кода, т.к. задача временная и чисто административная
...
Рейтинг: 0 / 0
20.08.2018, 14:49
    #39690450
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
Ну тут или задание или триггер, насколько я понял
Триггер можно заставить срабатывать по условию
...
Рейтинг: 0 / 0
20.08.2018, 14:59
    #39690462
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
На правах бреда:

I)
Я так понимаю, нужен некий "глобальный" флаг/переменная.

В триггере - проверяем глобальный флаг/переменная.
Если он не установлен - первый запуск, обрабатываем запись, устанавливаем флаг
Если он установлен - просто выходит

по job'у раз в день - сбрасываем глобальный флаг/переменная

II)
вопрос, где же в Oracle найти "глобальный" флаг/переменная?

IMHO.
2.1. Просто табличка с одной строчкой. Т.к. чтение будет значительно чаще, чем update, то ничего особо страшного с производительностью быть не тольжно. IMHO
2.2 DBMS_LOCK - но выглядит из пушки по воробьям и не уверен, что получится
2.3. Если уж совсем хочется без SELECT'а к табличкам, наверное можно поиграться со словарем. Например пересоздавать секьвенс. Если сиквенс вернул 1 - то флаг сброшен, если > 1 то флаг установлен. В Job сиквенс пересоздавать, кэширование по максимому.
и так далее... бредовых предложений много много нагенерить
...
Рейтинг: 0 / 0
20.08.2018, 16:22
    #39690533
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
Нат, оторвись от одной-единственной.
Пусть твой помечающий триггер в нормальном состоянии disabled.
Раз в сутки запускается задание, переводящее триггер в enabled.
Успешно пометивший запись триггер активирует задание, которое переведет его обратно в disabled.
Получишь от одной до N помеченных записей, если, конечно, не случится откат транзакции.
...
Рейтинг: 0 / 0
20.08.2018, 18:04
    #39690629
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
andrey_anonymous,
...
Рейтинг: 0 / 0
20.08.2018, 18:12
    #39690637
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
andrey_anonymous,
учитывая что задача временная. может просто стоит сделать job и запускать в 23:59:59 когда уже практически понятно было что записи должны были появится в течении суток. и проверять чем то типа экзист по первому вхождению. дергать тригер все таки бессмысленно имхо.
...
Рейтинг: 0 / 0
20.08.2018, 18:23
    #39690641
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
Vintучитывая что задача временная.
Независимо от временности решения Ната беспокоится о потенциальной возможности пропуска сигнала по сценарию "запись ушла в DWH и лишь затем была помечена на источнике".
Если знать больше подробностей про технологию отбора данных источника или хотя бы про саму БД-источник - можно было бы подумать еще, а в общем случае... IMHO из ~универсальных триггер+пара джобиков самое оно.
...
Рейтинг: 0 / 0
20.08.2018, 20:09
    #39690686
aqenq
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
DВА, Создать очередь через dbms_aq. В теле триггера :
1. проверить, если в очереди сообщение в состояние READY.
2. Если нет, то отправить сообщение в очередь со свойством expiration , установленным в количестве секунд, оставшихся до 23:59:59 текущего дня

Вычитывать очередь не нужно.
По истечению времени сообщение перейдет в состояние expired.
Параметр aq_tm_processes только выставить в значение, большее 0
...
Рейтинг: 0 / 0
20.08.2018, 20:19
    #39690690
aqenq
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
Сообщение в состоянии READY и будет тем флагом, определяющим факт обработки единственной строки.
...
Рейтинг: 0 / 0
23.08.2018, 14:58
    #39692469
Игорь Ковалев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны идеи
DВА,
почему бы не использовать ретроспективные запросы?
Если данные устаревают слишком быстро, можно эти запросы делать в job.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / нужны идеи / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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