суббота, 28 апреля 2012 г.

Что такое модули знаний реверса (RKM) и зачем они нужны?

Прямой ответ, который дает на этот вопрос документация, достаточно прост. Модули знаний реверса нужны в том случае, если возможностей по реверсу моделей (т.е. по получению характеристик и составных элементов для таблиц модели) у драйвера недостаточно.

Другими словами, то, что JDBC драйвер получить не может, модуль знаний реверса получить сможет. Должен смочь.

Рассмотрим, как же работает модуль знаний реверса. Для этого я создам копию одной из существующих моделей, и включу у нее режим использования модуля знаний реверса и последовательно, в картинках, расскажу, что происходит.

Шаг 1: создаем копию модели. Назовем ее, например, так:


Как обычно, для модели необходимо указать логическую схему, к которой модель будет принадлежать.

Шаг 2: включаем режим выборочного реверса:


на картинке обозначены:
  1. выбранный тип реверса;
  2. контекст, который необходимо использовать для реверса;
  3. агент, используя которой будет выполнен реверс. Этот пункт очень помогает в тех случаях, когда вам необходимо получить данные с тех серверов БД, доступа к которым из ODI Studio нет, но этот доступ есть у агента;
  4. выбор типов объектов, информация о которых будет получена в ходе реверса;
  5. маска, используя которую будут фильтроваться имена объектов, т.е. все объекты, которые удовлетворяют условию object_name like 'OWB%' попадут в реверс;
  6. выбор модуля знаний реверса. В данном списке выбора все модули знаний всех проектов будут отображены в виде Название_МодуляЗнанийРеверса.Имя_Проекта.

    Так же, при необходимости, можно задать значения фактических параметров модуля знаний реверса.

Шаг 4: запускаем.

Запустить реверс можно двумя способами. Первый, выбрать команду Reverse Engineer на вкладке модели:


Второй, выбрать ту же команду в контекстном меню модели, в дереве моделей:


Логика подсказывает, что результаты запуска одного и того же процесса из двух разных мест должна совпадать. В общем-то, так и есть. Процентов на 80. На самом деле получается несколько разные вещи.

Запуск из вкладки редактирования модели:


выбор агента недоступен.

Запуск из контекстного меню:


выбор агента доступен.

Как говорилось когда-то в одном анекдоте - этого понять нельзя, это нужно просто запомнить.

Шаг 5: выполнение реверса.

Выполнение реверса выглядит ровно так же, как и выполнение любой другой процедуры ODI. То есть, идем на вкладку Оператора и ищем сессию с тем же именем, что и наша тестовая модель:


Посмотрим, что из себя представляет этот процесс более подробно. Наша сессия начинается с команды odiReverseResetTable с параметрам Model равным 7110.


Фактическое значение параметра - 7110 - это внутренний идентификатор созданной мною модели в репозитории.


Эта команда нужна для того, чтобы подготовить внутренние таблицы рабочего репозитория, с названиями, начинающимися с SNP_REV_ для приема результатов реверса из другой СУБД.

Рассмотрим, как это выглядит, например, для получения информации о таблицах:


В верхней части картинки, в разделе Source Code вы видите обычный Select, выбирающий из служебных представлений все имена таблиц, удовлетворяющих заданным критерием, ужимающий комментарий для таблицы до 250 символов и т.п.

В нижней же части, в разделе Target Code находится команда вставки данных в таблицу для таблиц под названием SNP_REV_TABLE.

Такой же процесс происходит и для остальных метаданных: представлений, партиций и субпартиций, синонимов и т.п.

Заканчивается реверс также вызовом специальной команды OdiReverseSetMetaData -MODEL=7110:


Шаг 6: ищем результаты.

Последний шаг, чтобы убедиться, что все прошло правильно, достаточно очевиден. После проведенного реверса модели, дерево моделей необходимо обновить, и тогда вы сможете увидеть что-то похожее на следующий скриншот:


Остается добавить только несколько слов относительно того, как можно разработать модуль знаний реверса самостоятельно, помимо тех общих принципов, которые я уже описывал.

Теоретически, для этого не должно быть сложностей, так как команды очистки таблицы реверса, установки (фактически, преобразования данных из таблицы реверса в таблицы модели в репозитории) и получения метаданных доступны как для использования в модулях знаний, так и для использования в пакетах:


Вот и все на сегодня.

Комментариев нет:

Отправить комментарий