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

start [/forum/topic.php?fid=52&mobile=1&tid=1883560]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
5ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 293ms |

| 0 / 0 |
