Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД Oracle / Лекции / Лек_ORAC / Lij / Распределение и тиражирование данных.doc
Скачиваний:
56
Добавлен:
16.04.2013
Размер:
165.89 Кб
Скачать

Группы столбцов и методы устранения конфликтов

Для распознавания и устранения конфликтов во время тиражирования в Oracleиспользуются группы столбцов. Группа столбцов(column group) —это набор, состоящий из одного или нескольких столбцов тиражируемой таблицы основного узла. Если в результате изменения нескольких копий одних и тех же данных возникают конфликты, основные узлы распознают и устраняют конфликты при помощи групп столбцов.

При конфигурировании основных таблиц можно создать группы столбцов, а затем назначить каждой группе столбцы и список, состоящий из одного или нескольких методов устранения конфликтов. Метод устранения конфликта (conflict resolution method)– это серверная подпрограмма, которая определяет способ надежного устранения конфликта тиражирования. При проектировании групп столбцов можно выбрать любые из множества методов, предлагаемых в Oracle8. Например, чтобы устранять конфликты обновления, можно выбрать способ, при которомOracleзаменяет значения столбцов в узле-приемнике на значения столбцов узла-источника. Для разрешения конфликтов обновления вOracleимеется множество методов устранения конфликтов. Кроме того, пользователь может создавать собственные подпрограммы устранения конфликтов и при необходимости применять их к группам столбцов.

Каждая группа столбцов в тиражируемой таблице может иметь несколько методов устранения конфликтов. Если один из методов не устраняет конфликт, Oracleможет воспользоваться другим. Устраняя конфликт для группы,Oracleвыполняет методы устранения конфликтов в том порядке, который был указан для группы.

По умолчанию в каждой тиражируемой таблице имеется теневая группа столбцов (shadow column group), в которой содержатся все столбцы, не вошедшие в конкретную группу столбцов. Однако для теневой группы назначать методы устранения конфликтов нельзя.

В Oracleне поддерживаются методы устранения конфликтов удаления. Вместо этого приложения должны предотвращать такие конфликты, не используя операторыDELETEдля реального удаления строк. Приложения могут помечать строки для удаления и устанавливать конфигурацию системы так, чтобы удаленные строки периодически уничтожались при помощи процедурного тиражирования. О процедурном тиражи­ровании более подробно рассказывается в следующем разделе.

Другие варианты усовершенствованного тиражирования

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

Процедурное тиражирование

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

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