Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД Oracle / Лекции / Лек_ORAC / LEF / Распределение и тиражирование данных.doc
Скачиваний:
57
Добавлен:
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предлагаются алгоритмы, с помощью которых можно автоматизировать устранение конфликтов тиражирования.

Соседние файлы в папке LEF