Disclaimer

Данный блог является моей личной точкой зрения и не обязательно отражает точку зрения Oracle.

The views expressed on this blog are my own and do not necessarily reflect the views of Oracle

Поиск

Подписка

Использование Oracle Streams для репликации (часть 1)

07.03.2009 от aryndin99

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

Обзор

Oracle Streams предоставляет набор элементов, которые позволяют пользователю управлять:

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

Конфигурируя соответствующие элементы пользователь решает свои вполне конкретные задачи.

Архитектура Oracle Streams очень гибкая. Ниже на рисунке показаны три основных элемента Oracle Streams:

  • сбор (capture)
  • хранение (staging)
  • потребление (consumption)
 
  streams

 

Сбор

Oracle Streams поддерживает сбор событий (изменения в базе данных или сообщения, генерируемые приложением) в область хранения (staging area). Эти сообщения собираются двумя способами:

  • Неявный сбор. Серверный процесс сбора собирает DML и DDL события в исходной базе данных непосредственно из журналов (redo log), либо с помощью горячего "раскапывания" (hot mining), либо, при необходимости, из архивных журналов (archive log). После извлечения данных процесс сбора форматирует их в Logical Change Record (LCR) и помещает в область распространения для дальнейшей обработки. Процесс сбора может фильтровать LCRы по заданным правилам. Таким образом буду собираться изменения только заданных объектов.
  • Явный сбор. Позволяет приложению явным образом сгенерировать сообщение и поместить его в область хранения. Эти сообщения могут быть отформатированы как LCR (дает возможность автоматически применить их процессом применения (apply process), либо как пользовательские сообщения, предназначенные для потребления другим пользовательским приложением.

Хранение

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

Подписчик может быть

  • пользовательское приложение
  • другая область хранения (обычно на другом сервере)
  • процесс применения (apply process).
Передача (propagation)

Если подписчик это другая область хранения, то событие передается в нее (либо в ту же, либо в другую базу данных). Для снижения трафика, события не посылаются всем базам данных и приложениям, а направляются через область хранения одной или нескольким система до тех пор пока они не достигнут системы-подписчика. Например, событие может передаваться через базу данных-хаб, которая сама это событие не применяет. Одна область хранения может хранить события из многих баз данных.

Потребление

События в области хранения потребляются пользовательским приложением или механизмом применения (apply engine), в которое они преобразуются в изменения в базе данных. Oracle Streams включает гибкий механизм применения, позволяющий использовать стандартную или специальную (custom) функцию применения. Это позволяет преобразовывать данные перед применением. Поддержка явного извлечения сообщений из очереди (explicit dequeue) позволяет разработчикам приложений использовать Oracle Streams для уведомления приложений об изменениях в данных, не отказываясь от использования возможностей Oracle Streams по сбору и передаче сообщений.

Применение по-умолчанию (default apply)

Стандартный механизм применения (default apply engine) применяет DML и DDL изменения, представленные как неявно или явно собранные LCR. Стандартный механизм применения обнаруживает конфликты в случаях, когда целевая строка была изменена и не содержит ожидаемых значений. Можно настроить процедуру разрешения конфликтов.

Пользовательская функция применения (User-Defined Function Apply)

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

Типичные применение пользовательское функции – переформатирование LCR перед применением:

  • изменение формата поля
  • названия объекта
  • сопоставления столбцов

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

Явное извлечение из очереди

Пользовательские приложения могут явно извлекать LCR или пользовательские сообщения из области хранения. Это позволяет пользовательскому приложению эффективно работать с данными в области хранения. Streams могут посылать уведомления зарегистрированной PL/SQL или OCI функции. Это дает альтернативный метод для обнаружения нового сообщения (помимо периодического опроса очереди или постоянного ожидания прихода нового сообщения).

Правила.

Streams позволяют пользователям управлять тем, какая информация будет собрана в область хранения и куда она будет передаваться. Делается это с помощью составления правил (rules). На высоком уровне пользователь может задать для каких таблицы, схем или всей базы будет производиться сбор, передача и применение изменений. В более сложных случаях (например, применять изменения только к указанном подмножеству данных на данном сайте) пользователи могут создавать собственные правила, похожие по синтаксису на фразу WHERE в запросе SQL. При необходимости правила могут группироваться в наборы правил (rule set)

Преобразования (transformations).

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

Преобразование может быть применено во время:

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

Гетерогенная поддержка

Oracle Streams – это открытое решение. Каждый элемент поддерживает индустриальные языки и стандарты. Streams поддерживает сбор с базы данных Oracle и применение к не-Oracle базе. Изменения могут быть применены посредством transparent gateway или generic connectivity. Streams также имеет API, позволяющий не-Oracle источникам данных ставить в очередь или получать LCR сообщения. Это дает возможность осуществлять гетерогенный перенос данных в обоих направлениях. Кроме того, сообщения могут быть посланы или получены в таких системы сообщений как MQ Series или Tibco через шлюз сообщений (Messaging Gateway).

Управляемость

Для конфигурирования, администрирования и мониторинга Streams среды доступны несколько инструментов. Основной интерфейс к Streams это набор поставляемых Oracle PL/SQL пакетов. Кроме того, в Oracle Enterprise Manager Console встроен инструментарий для простейшего конфигурирования Streams. Пользователи могут также использовать инструменты Streams для генерации конфигурационных скриптов, которые в дальнейшем модифицировать и запускать на другой базе. Есть также ряд представлений словаря базы данных через которые можно посмотреть текущую конфигурацию.

Решения для разных областей.

Oracle Streams используется в различных целях: уведомления о событиях, репликации и загрузки данных в хранилище данных. Oracle предоставляет компоненты, построенные на базе Streams, которые расширяют его возможности для специфичных задач. Например, Advanced Queuining построен на Oracle Streams и предоставляет надежный функционал по работе с очередями сообщений. Конечно, разработчики могут использовать всю мощь Oracle Streams и создавать свои конфигурации, которые простираются на несколько областей, тем самым создавая новые классы приложений. Метаданные различных решениq совместимы между собой. Например, репликация может быть легко расширена для загрузки данных в хранилище данных или для двусторонней репликации и это не требует полной реконфигурации.

Oracle Streams – единое унифицированное решение.

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

Ключевые возможности  
   
Единое унифицированное решение   

  • Удовлетворяет все требованиям к совместному использованию данным с помощью единого решения
  • Решения для различных областей
    • Репликация
    • Очереди сообщений
    • Загрузка хранилищ данных
  • Возможна передача данных между Oracle и не-Oracle базами данных

Встроенная возможность Oracle Database

  • Не требуется дополнительно ничего инсталлировать. Нет специальных команд – не требуется изучать сложные API.
  • Наследует надежность и безопасность Oracle Database.

Управляемость

  • Максимальная гибкость при конфигурировании с помощью PL/SQL пакетов
  • В Oracle Enterprise Manager встроен набор пощников и инструментов мониторинга
  • Можно получать информацию через представления словаря базы данных

Производительность

  • Горячее "раскапывание" (hot mining) журналов уменьшает запаздывание
  • Параллельный сбор и применение повышает пропускную способность механизмов сбора и применения
Гибкость   

  • Сбор
    • Неявный сбор DML и DDL изменений
    • Фильтрация собранных изменений на основе пользовательских правил
    • Позволяет приложению явно помещать пользовательские сообщения в область хранения
  • Хранение/Распространение
    • Надежная, безопасная область для сообщений, предоставляющая средства аудита и отслеживания собранных данных
    • Позволяет маршрутизировать данные через несколько областей хранения перед применением
    • Поддерживается преобразование данных в различных точках переноса данных
  • Потребление
    • Конфликты автоматически обнаруживаются и могут быть разрешены перед применением изменений с помощью стандартного механизма применения
    • Дает пользователям полный контроль над тем, как данные модифицируются и применяются с помощью пользовательского механизма применения
    • Позволяет приложениям напрямую работать с данными в области хранения Streams, используя явное извлечение из очереди.

 

 

Продолжение следует…

Рубрики: Business Intelligence, Data Warehouse, Data Warehousing, Database, Streams | Комментарии (8) »

Комментарии (8)

  1. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Использование Oracle Streams для репликации (часть 2) пишет:

    [...] точекИспользование Google Maps для генерации tile слояИспользование Oracle Streams для репликации (часть 1)Презентации с семинара “Oracle New Features for [...]

  2. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Использование Oracle Streams для репликации (часть 3) пишет:

    [...] Использование Oracle Streams для репликации (часть 3)Использование Oracle Streams для репликации (часть 2)HTTP Internal Error 500 в Oracle BI после инсталляции на LinuxЗапуск Oracle BI сервераИтоги Technology Days в КраснодареЛистовки по Oracle Spatial, Locator и MapviewerТехнологический день Oracle в Краснодаре 19 мартаАгрегирование в Oracle Spatial (SDO_AGGR_CONVEXHULL) большого массива точекИспользование Google Maps для генерации tile слояИспользование Oracle Streams для репликации (часть 1) [...]

  3. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Использование Oracle Streams для репликации (часть 4) пишет:

    [...] Начало смотрите в предыдущих поста: часть 1, часть 2, часть [...]

  4. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Использование Oracle Streams для репликации (часть 5) пишет:

    [...] Начало смотрите в предыдущих поста: часть 1, часть 2, часть 3, часть [...]

  5. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Oracle Streams для репликации: troubleshooting (часть 6) пишет:

    [...] Начало смотрите в предыдущих поста: часть 1, часть 2, часть 3, часть 4, часть [...]

  6. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Oracle Streams для репликации: расширенная настройка (часть 7) пишет:

    [...] Начало смотрите в предыдущих поста: часть 1, часть 2, часть 3, часть 4, часть 5, часть [...]

  7. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Oracle Streams для репликации: расширенная настройка (часть 8) пишет:

    [...] Начало смотрите в предыдущих поста: часть 1, часть 2, часть 3, часть 4, часть 5, часть 6, часть [...]

  8. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Oracle Streams для репликации: расширенная настройка (часть 9) пишет:

    [...] Начало смотрите в предыдущих поста: часть 1, часть 2, часть 3, часть 4, часть 5, часть 6, часть 7, часть [...]

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

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.