Чтение изменений объектов за период
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Reddom Участник со стажем
Вступление в Клуб: 25.01.2013
|
Вт Июл 22, 2014 09:10  Чтение изменений объектов за период |
|
Полезность: Нет оценки
|
Доброго времени суток, разработчики.
Прошу помочь в вопросе:
Необходимо проработать механизм для оповещения внешних систем об изменениях в некоторых ТБП, например клиента, договора, адреса и т.п. – сейчас очевидны решения:
1. обработка изменений (добавлений/удалений) в триггерах на таблицах. Есть минус в замедлении dml операций.
2. чтение job`ом значений из aud.ibs_valsh. В таблице есть индекс по объекту, соответственно для ускорения запроса предполагаю, что необходимо будет создать индекс по полям id либо time.
Может быть у вас уже есть какие-то испытанные решения?
Можно конечно пойти oracle`овыми методами с нагрузкой системы через dbms_logmnr или dbms_wm. Пока даже не анализировал их. Надеюсь найти способ более очевидный. |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Вт Июл 22, 2014 10:05  Re: Чтение изменений объектов за период |
|
Полезность: Нет оценки
|
Reddom пишет: |
1. обработка изменений (добавлений/удалений) в триггерах на таблицах. Есть минус в замедлении dml операций.
|
В триггер надо не саму обработку изменений сувать, а только помечать запись как измененную.
Как помечать - возможны варианты:
- поле-флажок выставлять, а обработчик изменений потом скидывать будет флаг. Минус подхода - при удалении флаг выставить не получится.
- Таблица Ид-ов измененных записей (тогда можно Ид удаленной записи получить).
Как определять изменившиеся записи - возможны варианты:
- заставляете программистов помечать изменившиеся записи (при вызове операций). Очень жестокий метод
- вешаете триггер на вставку-изменений-удаление записи и помечаете эти записи
- для неленивых - в триггере анализируете OLD и NEW значения полей - тогда 'холостые' апдейты не будут восприниматься как изменений записи
- ну и хит сезона - триггер заполняет подобную табличку - все поля + операция (вставка-удаление-изменение) + время и кто изменил. Это уже на детальный аудит больше похоже. |
|
 |
Reddom Участник со стажем
Вступление в Клуб: 25.01.2013
|
Вт Июл 22, 2014 15:03   |
|
Полезность: Нет оценки
|
Тут нужно учитывать момент, что таблицы дистрибутивные (не одна) и хотелось бы общий механизм и все таки может быть какие-то более "легальные" подходы, чем делать oracle`овые триггеры. |
|
 |
svn Профи
Вступление в Клуб: 04.02.2008
|
Вт Июл 22, 2014 16:10   |
|
Полезность: Нет оценки
|
стандартными средствами журналирвоания реквизитов не пробовали обойтись? |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Вт Июл 22, 2014 16:15   |
|
Полезность: Нет оценки
|
В клиентах есть операция "Создать триггеры истории изменений реквизитов" затем просто следить за наполнением таблицы с историей на появление новых записей. _________________ всегда есть как минимум 2 выхода |
|
 |
Reddom Участник со стажем
Вступление в Клуб: 25.01.2013
|
Вт Июл 22, 2014 16:29   |
|
Полезность: Нет оценки
|
svn пишет: | стандартными средствами журналирвоания реквизитов не пробовали обойтись? |
Журналирование кладет изменения в таблицу aud.ibs_valsh, о которой я писал. В таблице есть проблема, что индекс есть только по id объекта, а мне нужен список объектов на дату и время. Также в таблице есть патиции, но они месячные, т.е. запрос будет все равно долго искать.
svn пишет: | В клиентах есть операция "Создать триггеры истории изменений реквизитов" затем просто следить за наполнением таблицы с историей на появление новых записей. |
Мне нужно фиксировать изменения не только в клиентах, но и в других ТБП, например, договора. Да и в РБО нет этой операции, она только в ИБСО. |
|
 |
Reddom Участник со стажем
Вступление в Клуб: 25.01.2013
|
Чт Июл 31, 2014 08:54   |
|
Полезность: Нет оценки
|
Ответ от ЦФТ. пишет: |
К сожалению, о готовых решениях с подобным функционалом мне не известно, скорее всего таких задач ранее не ставилось.
Что касается создания дополнительных индексов на таблице ibs_valsh, то каких-либо серьезных рисков на данный момент не вижу. Конечно стоит помнить, что дополнительные индексы будут требовать больше дискового пространства для хранения. |
Реализовал через индекс на тесте. Работает быстро, проблем пока не обнаружено, кроме той что индекс необходимо создать под пользователем AUD. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|