- •Распределение и тиражирование данных
- •Архитектура распределенной базы данных
- •Взаимодействие и автономность
- •Расширение модели клиент/сервер
- •Сети и системы распределенных баз данных
- •Сервисы базы данных и именование в распределенной базе данных
- •Связи баз данных
- •Связи баз данных фиксированного пользователя, соединенного пользователя и текущего пользователя
- •Общие, частные и глобальные связи баз данных
- •Разделяемые связи баз данных
- •Неоднородные распределенные базы данных
- •Вызовы удаленных процедур (rpc)
- •Удаленные транзакции
- •Распределенные транзакции
- •Алгоритм двухфазного завершения Oracle
- •Прозрачность распределенной базы данных
- •Безопасность распределенной базы данных
- •Глобальные пользователи и роли
- •Введение в тиражирование данных
- •Польза тиражирования данных
- •Типы тиражирования данных
- •Базовое тиражирование и моментальные снимки "только для чтения"
- •Сложные моментальные снимки
- •Хранение информации моментальных снимков
- •Регенерация моментальных снимков
- •Виды регенерации моментальных снимков
- •Журналы моментальных снимков
- •Группы регенерации моментальных снимков
- •Автоматическая регенерация моментальных снимков
- •Автоматическая регенерация моментальных снимков и очереди заданий
- •Ручная регенерация моментальных снимков
- •Среды усовершенствованного тиражирования
- •Многоабонентское тиражирование
- •Узлы моментальных снимков и обновляемые моментальные снимки
- •Сравнение вариантов усовершенствованного тиражирования
- •Архитектура системы усовершенствованного тиражирования Объекты тиражирования и группы тиражирования
- •Основные узлы и узлы моментальных снимков
- •Каталоги тиражирования
- •Интерфейс прикладных программ управления тиражированием
- •Программные алгоритмы усовершенствованного тиражирования Oracle
- •Тиражирование на уровне строк
- •Асинхронное распространение данных
- •Принудительная рассылка отложенных транзакций в очереди
- •Уничтожение очереди отложенных транзакций
- •Последовательное и параллельное распространение
- •Уникальные алгоритмы распространения моментальных снимков
- •Конфликты тиражирования в системах усовершенствованного тиражирования
- •Типы конфликтов тиражирования
- •Предотвращение конфликтов
- •Распознавание и устранение конфликтов
- •Группы столбцов и методы устранения конфликтов
- •Другие варианты усовершенствованного тиражирования
- •Процедурное тиражирование
- •Распознавание конфликтов и процедурное тиражирование
- •Синхронное распространение данных
- •Конфликты тиражирования и синхронное тиражирование данных
Типы конфликтов тиражирования
Существуют три типа конфликтных ситуаций, возможных в среде усовершенствованного тиражирования: конфликты уникальности, обновления и удаления.
Конфликт уникальности (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предлагаются алгоритмы, с помощью которых можно автоматизировать устранение конфликтов тиражирования.