Август/Сентябрь 2003


Интересно для всех


Боб Том
Брайеш Гоял

Oracle Streams: Совершенствование совместного использования данных
(Streamline Information Sharing,
by Bob Thome and Brajesh Goyal)

Источник: Oracle Magazine, раздел “online articles only”, 2003, http://otn.oracle.com/oramag/webcolumns/2003/techarticles/goyal_streams.html ,
тема “ORACLE GRID COMPUTING TECHNOLOGIES” (GRID-технологии ORACLE).

Для тех, кто все еще пользуется многочисленными средствами разделения и распространения данных, событий и сообщений, настало время упростить себе жизнь. И поможет им в этом Oracle Streams - новый механизм Oracle9i Release2, представляющий собой мощную и вместе с тем гибкую технологию разделения данных.

[От редакции OM/RE: напомним, что в данной статье термин “Sharing - Разделяемость” обозначает совместное использование,или разделение между всеми или кем-то, данных и других ресурсов.]

В сегодняшних условиях стремительно развивающейся, глобально распределенной коммерческой среды, технологии активного разделения информации становятся краеугольным камнем в достижении успеха любого предприятия. Конкурентноспособные компании не позволяют своей информации залеживаться в банках данных, полагаясь на то, что пользователи сами найдут интересующие их сведения. Нет, вместо этого они прибегают к инструментам автоматического поиска релевантной информации, куда относятся обновления OLTP, события БД, системные сообщения и так далее, и посредством подписки и прочих интеллектуальных механизмов делятся ею с теми, кто в ней нуждается.

Рисунок 1. Двух узловая репликация данных

К сожалению, с ростом популярности таких инструментов увеличивалось количество разнообразных программных средств, которые рядовой компании приходится использовать для различных типов информации. Столкнувшись с необходимостью обеспечивать маршрутизацию разнотипных данных, поступающих из многочисленных источников к большому числу адресатов, многие компании обзавелись целым арсеналом узкоцелевых средств, великолепно работавших по-отдельности, но становившихся неуправляемыми при попытке собрать их вместе. Для извлечения каждого типа данных требуется свой особый инструментарий, собственный механизм распределения и маршрутизации, а также специальный способ реализации в точке назначения. Поэтому разработчики и администраторы баз данных обязаны хорошо разбираться во всей этой программной чехарде, а система должна поддерживать работу всех этих средств одновременно. В сложившихся обстоятельствах, добавление в среду новых приложений превращается в суровое испытание.

Как же исправить ситуацию? С помощью пакета Oracle Streams из Oracle9i Release2. Streams предлагает единую, гибкую инфраструктуру, позволяющую создавать приложения для решения широкого круга задач, связанных с разделением данных, в том числе:

  • Репликациями данных (Data replication)
  • Заполнением хранилищ данных (Data-warehouse loading)
  • Уведомлением о событиях (Event notification)
  • Управления очередями сообщений (Message queuing)
  • Управления бизнес-событиями (Business-event management).

Из данной статьи Вы узнаете, каким образом Streams реализует основные функции, необходимые для создания этих приложений и как их использовать для упрощения Вашей распределенной среды.

Рисунок 2: Загрузка данных на оперативное хранение (ODS - operational data store) или в хранилище данных (data warehouse).

Как устроен Streams

Концепция, заложенная в основе Streams, предполагает , что пользователь заинтересован в том, чтобы любая информация, относящаяся к базе данных, как то: сообщения или события БД, активно перемещалась между узлами системы, напоминающими собой сеть каналов, связывающих несколько водоемов, а не лежала в репозитариях мертвым грузом. Streams позволяет контролировать информацию, посылаемую в поток, указывать маршрут движения последней от узла к узлу, определять реакцию узлов на события, и правила завершения потока.

Управление информационными потоками внутри Streams происходит посредством трех основных процессов:

  • Захват (capture): выборка данных из журнальных файлов БД с одновременным помещением их в очередь или буферную зону для дальнейшего распределения.
  • Буферизация или накопление (staging): хранение и организация данных в очереди, а также перенаправление их в другие очереди (propagation).
  • Реализация (consumption): извлечение информации из очереди для последующей обработки.

Эти процессы образуют три последовательных этапа, через которые проходит любая информация, попадающая в Streams. Выборочное преобразование данных и ветвление на основе критериев, осуществляемые на каждом этапе, обеспечивает системе дополнительную гибкость, делая ее применимой к любому типу приложений.

Этап захвата.

Streams извлекает события и сохраняет их в буферной зоне одним из приведенных ниже способов:

  • Автоматическое извлечение изменений БД из журнальных файлов (неявный захват или неявная очередизация) При неявном захвате, сервер параллельно извлекает DML и DDL события из журнальных файлов исходной базы данных, что является высокоэффективным способом использования информации, накопленной в целях защиты от сбоев. Таблицы, помеченные Streams для репликации, также отправляют дополнительные сведения в поток, например, столбцы первичного ключа, для упрощения процесса доставки информации. Процедура захвата отыскивает измененные данные, переводит их в формат LCR (Logical Change Record) и помещает ее в буферную зону для дальнейшей обработки. Во время этой процедуры часть LCR отфильтровывается на базе заданного списка критериев, таким образом можно захватывать изменения только интересующих Вас объектов.
  • Явное извлечение сгенерированных приложениями событий. В ходе процесса, известного также как явная очередизация, приложения явным образом порождают события, например, изменения в других нежели Oracle базах данных, и помещают их в буферную зону. Если события характеризуют собой изменения данных, то приложения могут оформить их в виде LCR, в противном случае их можно представить в формате пользовательских сообщений.

Этап накопления.

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

В число подписчиков могут входить:

  • Пользовательские приложения, извлекающие события из буферной зоны для собственных нужд.
  • Буферные зоны (staging area) (как правило, входящие в состав других систем), куда пересылка событий происходит автоматически.
  • Механизм обновления по умолчанию (default apply engine), осуществляющий автоматическию деочередизацию и реализацию событий.

Рисунок 3: Нотификация событий

Функции подписки очередей оставляют широкое поле для маневра при маршрутизации событий между буферными зонами. Можно выбрать какие события в конце концов будут распределены в ту или иную очередь, а также задать маршрут их следования до предполагаемого места назначения.

Процедура реализации.

Существует два способа реализации событий, находящихся в буферной зоне:

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

Механизм обновления, обладающий огромной гибкостью и обеспечивающий контроль над процессом внесения изменений в БД, имеет ряд особенностей, в число которых входят:

  • Возможность выбора между стандартной или пользовательской процедурой обновления.
  • Автоматическое обнаружение и разрешение конфликтов, возникающих в случаях, когда измененная строка не содержит предполагаемых значений.
  • Функция описания подможества, благодаря которой адресат может подписаться на подмножество исходного массива данных.
  • Поддержка процедуры переформатирования, приводящей формат данных события в соответствие с типом данных адресата (переформатирование данных может также происходит на этапе захвата и накопления).
  • Возможность применения событий к системам отличных от Oracle производителей через прозрачный шлюз после их локальной деочередизации (механизм обновления может выполнить стандартную процедуру внесения изменений либо вызвать заданную пользователем функцию, реализующую особую последовательность операций).

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

Использование Streams в специфических областях (Specific Application Domains)

Комбинируя или выделяя тем или иным способом определенные свойства Streams, можно создавать приложения, отвечающие широкому спектру задач. Например, можно:

  • Сконцентрироваться на функциях Streams захвата данных из журнальных файлов и гибкого распределения с целью формирования эффективной системы репликации данных.
  • Использовать функции Streams преобразования и захвата данных в “почти реальном времени” для создания приложений, заполняющих хранилища данных или склады оперативной информации.
  • Воспользоваться механизмом подписки на основе системы критериев и нестандартными средствами “потребления” данных для создания системы уведомления.
  • Сделать упор на возможностях межпрограмного взаимодействия в Streams (известных как Oracle Advanced Queuing), чтобы организовать универсальную систему управления очередями.
  • Воспользоваться преимуществами Advanced Queuing в областе проверки [аудита] очередей для построения системы управления бизнес событиями.

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

Далее в статье приводятся детальное описание различных конфигураций Streams. Обзор этих конфигураций и соответствие их определенному кругу целевых пользователей приводится в таблице 1. Она демонстрирует различия между Streams и некоторыми устаревшими механизмами разделения данных - Advanced Replication и Synchronous Change Data Capture - пока еще присутствующими в Oracle9i Release 2. Такие функции обеспечивают обратную совместимость с предыдущими версиями ПО Oracle и продолжают оставаться наилучшим вариантом для некоторых узкоспециализированных рынков. Однако в подавляющем большинстве случаев Streams и ее производные способны максимально удовлетворить любым нуждам пользователя.

E-mail this page