- •Распределение и тиражирование данных
- •Архитектура распределенной базы данных
- •Взаимодействие и автономность
- •Расширение модели клиент/сервер
- •Сети и системы распределенных баз данных
- •Сервисы базы данных и именование в распределенной базе данных
- •Связи баз данных
- •Связи баз данных фиксированного пользователя, соединенного пользователя и текущего пользователя
- •Общие, частные и глобальные связи баз данных
- •Разделяемые связи баз данных
- •Неоднородные распределенные базы данных
- •Вызовы удаленных процедур (rpc)
- •Удаленные транзакции
- •Распределенные транзакции
- •Алгоритм двухфазного завершения Oracle
- •Прозрачность распределенной базы данных
- •Безопасность распределенной базы данных
- •Глобальные пользователи и роли
- •Введение в тиражирование данных
- •Польза тиражирования данных
- •Типы тиражирования данных
- •Базовое тиражирование и моментальные снимки "только для чтения"
- •Сложные моментальные снимки
- •Хранение информации моментальных снимков
- •Регенерация моментальных снимков
- •Виды регенерации моментальных снимков
- •Журналы моментальных снимков
- •Группы регенерации моментальных снимков
- •Автоматическая регенерация моментальных снимков
- •Автоматическая регенерация моментальных снимков и очереди заданий
- •Ручная регенерация моментальных снимков
- •Среды усовершенствованного тиражирования
- •Многоабонентское тиражирование
- •Узлы моментальных снимков и обновляемые моментальные снимки
- •Сравнение вариантов усовершенствованного тиражирования
- •Архитектура системы усовершенствованного тиражирования Объекты тиражирования и группы тиражирования
- •Основные узлы и узлы моментальных снимков
- •Каталоги тиражирования
- •Интерфейс прикладных программ управления тиражированием
- •Программные алгоритмы усовершенствованного тиражирования Oracle
- •Тиражирование на уровне строк
- •Асинхронное распространение данных
- •Принудительная рассылка отложенных транзакций в очереди
- •Уничтожение очереди отложенных транзакций
- •Последовательное и параллельное распространение
- •Уникальные алгоритмы распространения моментальных снимков
- •Конфликты тиражирования в системах усовершенствованного тиражирования
- •Типы конфликтов тиражирования
- •Предотвращение конфликтов
- •Распознавание и устранение конфликтов
- •Группы столбцов и методы устранения конфликтов
- •Другие варианты усовершенствованного тиражирования
- •Процедурное тиражирование
- •Распознавание конфликтов и процедурное тиражирование
- •Синхронное распространение данных
- •Конфликты тиражирования и синхронное тиражирование данных
Группы столбцов и методы устранения конфликтов
Для распознавания и устранения конфликтов во время тиражирования в Oracleиспользуются группы столбцов. Группа столбцов(column group) —это набор, состоящий из одного или нескольких столбцов тиражируемой таблицы основного узла. Если в результате изменения нескольких копий одних и тех же данных возникают конфликты, основные узлы распознают и устраняют конфликты при помощи групп столбцов.
При конфигурировании основных таблиц можно создать группы столбцов, а затем назначить каждой группе столбцы и список, состоящий из одного или нескольких методов устранения конфликтов. Метод устранения конфликта (conflict resolution method)– это серверная подпрограмма, которая определяет способ надежного устранения конфликта тиражирования. При проектировании групп столбцов можно выбрать любые из множества методов, предлагаемых в Oracle8. Например, чтобы устранять конфликты обновления, можно выбрать способ, при которомOracleзаменяет значения столбцов в узле-приемнике на значения столбцов узла-источника. Для разрешения конфликтов обновления вOracleимеется множество методов устранения конфликтов. Кроме того, пользователь может создавать собственные подпрограммы устранения конфликтов и при необходимости применять их к группам столбцов.
Каждая группа столбцов в тиражируемой таблице может иметь несколько методов устранения конфликтов. Если один из методов не устраняет конфликт, Oracleможет воспользоваться другим. Устраняя конфликт для группы,Oracleвыполняет методы устранения конфликтов в том порядке, который был указан для группы.
По умолчанию в каждой тиражируемой таблице имеется теневая группа столбцов (shadow column group), в которой содержатся все столбцы, не вошедшие в конкретную группу столбцов. Однако для теневой группы назначать методы устранения конфликтов нельзя.
В Oracleне поддерживаются методы устранения конфликтов удаления. Вместо этого приложения должны предотвращать такие конфликты, не используя операторыDELETEдля реального удаления строк. Приложения могут помечать строки для удаления и устанавливать конфигурацию системы так, чтобы удаленные строки периодически уничтожались при помощи процедурного тиражирования. О процедурном тиражировании более подробно рассказывается в следующем разделе.
Другие варианты усовершенствованного тиражирования
Для работы некоторых приложений нужны специальные условия, которые не может предоставить традиционная система усовершенствованного тиражирования на уровне строк с асинхронным распространением данных. Далее рассказано о двух специальных вариантах усовершенствованного тиражирования Oracle, применяемых в особых случаях: о процедурном тиражировании и о синхронном распространении данных.
Процедурное тиражирование
Приложения, использующие пакетную обработку данных, могут в одной транзакции изменять большие объемы информации. В таких ситуациях стандартные алгоритмы тиражирования на уровне строк могут буквально засыпать сеть огромным количеством данных. Чтобы этого избежать, приложения с пакетной обработкой, работающие в среде усовершенствованного тиражирования, могут использовать процедурное тиражирование, которое позволяет применять вызовы простых хранимых процедур, объединяющие тиражируемые копии данных. При работе с процедурным тиражированием (procedural replication)тиражируется только вызов хранимой процедуры, которая используется приложением для обновления таблицы. В этом случае отдельные модификации данных не тиражируются.
Для того чтобы использовать процедурное тиражирование, во всех узлах необходимо тиражировать модули, которые модифицируют информацию системы. После тиражирования модуля нужно создать для него оболочку(wrapper)в каждом узле. Когда приложение вызывает модульную процедуру в локальном узле, чтобы модифицировать данные, оболочка обеспечивает автоматический вызов той же самой модульной процедуры во всех других узлах среды тиражирования. Процедурное тиражирование может быть синхронным или асинхронным.