- •Распределение и тиражирование данных
- •Архитектура распределенной базы данных
- •Взаимодействие и автономность
- •Расширение модели клиент/сервер
- •Сети и системы распределенных баз данных
- •Сервисы базы данных и именование в распределенной базе данных
- •Связи баз данных
- •Связи баз данных фиксированного пользователя, соединенного пользователя и текущего пользователя
- •Общие, частные и глобальные связи баз данных
- •Разделяемые связи баз данных
- •Неоднородные распределенные базы данных
- •Вызовы удаленных процедур (rpc)
- •Удаленные транзакции
- •Распределенные транзакции
- •Алгоритм двухфазного завершения Oracle
- •Прозрачность распределенной базы данных
- •Безопасность распределенной базы данных
- •Глобальные пользователи и роли
- •Введение в тиражирование данных
- •Польза тиражирования данных
- •Типы тиражирования данных
- •Базовое тиражирование и моментальные снимки "только для чтения"
- •Сложные моментальные снимки
- •Хранение информации моментальных снимков
- •Регенерация моментальных снимков
- •Виды регенерации моментальных снимков
- •Журналы моментальных снимков
- •Группы регенерации моментальных снимков
- •Автоматическая регенерация моментальных снимков
- •Автоматическая регенерация моментальных снимков и очереди заданий
- •Ручная регенерация моментальных снимков
- •Среды усовершенствованного тиражирования
- •Многоабонентское тиражирование
- •Узлы моментальных снимков и обновляемые моментальные снимки
- •Сравнение вариантов усовершенствованного тиражирования
- •Архитектура системы усовершенствованного тиражирования Объекты тиражирования и группы тиражирования
- •Основные узлы и узлы моментальных снимков
- •Каталоги тиражирования
- •Интерфейс прикладных программ управления тиражированием
- •Программные алгоритмы усовершенствованного тиражирования Oracle
- •Тиражирование на уровне строк
- •Асинхронное распространение данных
- •Принудительная рассылка отложенных транзакций в очереди
- •Уничтожение очереди отложенных транзакций
- •Последовательное и параллельное распространение
- •Уникальные алгоритмы распространения моментальных снимков
- •Конфликты тиражирования в системах усовершенствованного тиражирования
- •Типы конфликтов тиражирования
- •Предотвращение конфликтов
- •Распознавание и устранение конфликтов
- •Группы столбцов и методы устранения конфликтов
- •Другие варианты усовершенствованного тиражирования
- •Процедурное тиражирование
- •Распознавание конфликтов и процедурное тиражирование
- •Синхронное распространение данных
- •Конфликты тиражирования и синхронное тиражирование данных
Последовательное и параллельное распространение
В Oracleнесколько отложенных транзакций могут быть переданы в удаленный узел последовательно или с помощью параллельной обработки данных. При последовательном распространении(serial propagation)Oracleасинхронно передает отложенные транзакции по очереди, в том же порядке их завершения, как и в узле-источнике. При параллельном распространении(parallel propagation)асинхронно передается несколько отложенных транзакций, что обеспечивает высокую производительность и экономное расходование ресурсов системы. О возможностях параллельной обработки вOracleболее подробно будет рассказано позже.
Уникальные алгоритмы распространения моментальных снимков
Обновляемые моментальные снимки должны как выталкивать изменения в основную таблицу, так и вытягивать (pull)их из основной таблицы. После того как приложение изменяет обновляемый моментальный снимок, узел этого моментального снимка асинхронно выталкивает соответствующие отложенные транзакции для обновления основной таблицы. Чтобы обновить тот же моментальный снимок, его узел регенерирует этот снимок как часть группы регенерации, вытягивая изменения, сделанные в основной таблице.
Пример
Как было показано выше, каждый основной узел или узел моментальных снимков в системе усовершенствованного тиражирования Oracle8 использует очень большое число внутренних объектов и алгоритмов системы, чтобы разрешить тиражирование на уровне строк с асинхронным распространением данных. Рассмотрим взаимодействие представленных выше алгоритмов на следующем примере;
Приложение изменяет строку в обновляемом моментальном снимке при помощи оператора UPDATE.
В узле моментального снимка активизируется внутренний триггер, фиксирующий информацию об обновлении моментального снимка.
При помощи модуля тиражирования этого моментального снимка триггер формирует обращенный к основной таблице вызов удаленной процедуры, который может воспроизвести изменение, сделанное в моментальном снимке оператором UPDATE.
Узел моментального снимка сохраняет RPC(вызов удаленной процедуры), созданный внутренним триггером, в очереди отложенных транзакций узла.
Узел моментального снимка генерирует дополнительные вызовы RPC при внесении новых изменений. В Oracleтакже хранится информация, очерчивающая границы транзакций, так что информация тиражирования может направляться в удаленные узлы в форме одинаковых транзакций.
Через запланированные интервалы времени узел моментального снимка выталкивает отложенные транзакции в их очередь в основном узле.
Через запланированные интервалы времени узел моментального снимка уничтожает в очереди все успешно вытолкнутые отложенные транзакции.
Через запланированные интервалы времени узел моментального снимка регенерирует моментальный снимок с помощью информации основного узла.
Конфликты тиражирования в системах усовершенствованного тиражирования
При проектировании среды усовершенствованного тиражирования следует учитывать ситуации, когда транзакции, источниками которых являются разные узлы, изменяют одни и те же данные почти в одно и то же время, что порой приводит к возникновению конфликтов между транзакциями. Такие конфликты весьма вероятны, и нужно программировать приложения так, чтобы избежать их. Вместе с тем при использовании усовершенствованного тиражирования Oracleможно позволить основным узлам автоматически устранять конфликты и сохранять целостность тиражируемых данных. Ниже рассказано о различных видах конфликтных ситуаций во время тиражирования, о том, как они происходят, и о том, как конфигурировать основные узлы для автоматического распознавания и устранения конфликтов тиражирования.