CftClub.ru
Клуб специалистов ЦФТ-Банк

Чтение изменений объектов за период

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
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.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru