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

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

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

Синхронное распространение данных

Асинхронное распространение данных является нормальной конфигурацией для систем усовершенствованного тиражирования, использующих многоабонентское тиражирование или тиражирование узлов моментальных снимков. Однако в Oracleподдерживается также синхронное распространение данных(synchronous data propagation) –аналог распределенных транзакций, так как все тиражируемые копии обновляются в реальном времени(real-time).Когда приложение обновляет локальную тиражируемую копию таблицы синхронно, узел, обслуживающий эту копию, координирует операции обновления всех других тиражируемых копий той же таблицы и выполняет эти операции как часть той же самой транзакции.

Практически всегда асинхронное распространение данных является наилучшим выбором для систем усовершенствованного тиражи­рования. Синхронное тиражирование полезно только тогда, когда приложения требуют, чтобы тиражируемые данные были постоянно синхронизированы.

Для поддержания синхронного распространения данных в Oracle8 применяются внутренние триггеры баз данных, генерирующие вызовы RPC, которые тиражируют изменения на уровне данных в другие узлы тиражирования. Однако в этом случаеOracleне откладывает выполне­ние вызовов RPC, а обрабатывает их как часть той же транзакции, которая модифицирует локальную тиражируемую копию. Поэтому необходимо, чтобы изменение на уровне данных было возможно во всех узлах, обслуживающих тиражируемую таблицу; иначе будет выполнен откат этой транзакции. Таким образом, системы тиражиро­вания с синхронным распространением данных очень сильно зависят от работоспособности системы и сети. Они могут функционировать только в том случае, когда одновременно доступны все узлы системы.

Конфликты тиражирования и синхронное тиражирование данных

При синхронном распространении информации тиражирования конфликты тиражирования невозможны. В среде тиражирования реального времени приложения для одновременного обновления всех тиражируемых копий таблицы используют распределенные транзакции. Как и в средах нераспределенных баз данных, алгоритмы параллельности работы Oracle(а именно блокировки строк) не допускают негативного влияния одних транзакций на другие.

Итоги

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