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

Типы конфликтов тиражирования

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

  • Конфликт уникальности (uniqueness conflict) —при тиражировании строки происходит попытка нарушитьсущностную целостность (ограниченияPRIMARYKEYилиUNIQUE). Например, две тран­закции из двух различных узлов пытаются ввести строку, каждая транзакция в свою тиражируемую копию, с одним и тем же значением первичного ключа. В этом случае возникает конфликт уникальности.

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

  • Конфликт удаления (delete conflict) —одна из двух транзакций, источниками которых являются два различных узла, удаляет строку, которую обновляет или удаляет другая транзакция. Например, одна транзакция удаляет запись о клиенте, которую другая транзакция практически в это же время обновляет. При попытке объединить тиражируемые копии таблицы клиентовOracleобнаруживает, что операции удаления и обновления конфликтуют между собой.

Предотвращение конфликтов

Одним из способов предотвращения конфликтов в среде усовершенствованного тиражирования является выбор одной из моделей владения тиражируемыми данными, полностью устраняющей возможность возникновения конфликтов. Например, первичное владение (primary ownership),называемое также статическим владением(static ownership), -это модель тиражируемых данных, которая поддерживается в средах базового тиражирования. Первичное владение предотвращает любые конфликты тиражирования, так как основной узел системы управляет всеми обращениями к тиражируемым данным с целью обновления; приложения не могут обновить тиражи­руемые данные через моментальные снимки “только для чтения”.

Распознавание и устранение конфликтов

Владение первичного узла и другие модели данных, которые устраняют конфликтные ситуации, часто налагают слишком много ограничений на работу приложений баз данных. Поэтому многие при­ложения должны использовать модель совместного владения (shared ownership)тиражируемыми данными. Использование этой модели позволяет приложениям обновлять информацию любых тиражируемых копий таблиц в любое время. Модели совместного владения называются также моделями повсеместного обновления данных(update-anywhere data models).

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

Когда узел-приемник в системе усовершенствованного тиражирования обнаруживает конфликт в транзакции, по умолчанию он регистрирует конфликт, сохраняет ошибочную транзакцию (error transaction)в каталоге тиражирования узла и оставляет локальный вариант данных в неизменном виде (не выполняет ошибочную транзакцию, вызвавшую конфликт). Если для распознавания конфликтов применяется режим по умолчанию, пользователь должен вручную проверять наличие ошибочных транзакций и по очереди уст­ранять возникшие конфликты. В качестве альтернативы вOracleпредлагаются алгоритмы, с помощью которых можно автоматизировать устранение конфликтов тиражирования.