Программирование >>  Sql: полное руководство 

1 ... 206 207 208 [ 209 ] 210 211 212 ... 264


Центральный сервер

СУБД

СУБД

Подчиненная база данных


Добавление/ обновление/ > выборка

Периферийный сервер

Таблицы

СУБД


Подчиненная

база

данных

Только выборка

Только выборка

Рис 22.3. Упрощенная схема репликации мвжду главной и подчиненными базами данных

Еще одним хорошим кандидатом на репликацию является таблица products. Хотя цены товаров меняются чаще, чем информация об офисах, однако в большинстве компаний их изменения проводятся комплексно, раз в неделю или раз в день. В этот естественный цикл легко вписать и рассылку новых цен по дистрибьюторским центрам. Чтобы всегда содержать самые последние данные, таблицы с ценами в локальных базах данных дистрибьюторов вовсе не должны быть жестко связаны с главной таблицей. Ежедневного или еженедельного обновления их данных, синхронно с пакетным обноатением цен в главной таблице, вполне достаточно.

Описанную стратегию репликации можно реализовать вообше без поддержки со стороны СУБД Вы можете написать приложение со встроенньгм SQL, которое будет работать на мэйнфрейме и извлекать данные о ценах на товары из базы данных, помещая их в файл. Еще одна профамма может пересылать этот файл в дисфибьюторские цешры, где фетъя профамма будет считывать его содержимое и генерировать соответствующие инсфукции drop table, create table и insert для заполнения таблиц-реплик

Первым шагом в направлении автоматизации этой сфатегии стала разработка Высокоскоростных профамм для извлечения и зафузки данных. В этих утилитах. Предлагаемых многими производителями современных СУБД, обычно используются Специализированные низкоуровневые технологии доступа к базам данных, поэтому выборка и зафузка данных в них выполняется гораздо бысфее, чем при использовании обычных инструкций select и insert. Позднее стали появляться аналогичные профаммные продукты независимых производителей. Определилась новая категория профаммного обеспечения, получившая название ПО для интефации



приложений масштаба предприятия (Enterpnse Application Integration - EAI). Задачей программных продуктов этой категории является интеграция различных компьютерных систем, СУБД, других программных комплексов и файлов различных форматов Связь нескольких СУБД - это лишь малая часть комплексного решения, предлагаемого типичной ЕА1-системой, исключительно гибко настраиваемой для нужд конкретного предприятия Обычно ЕА1-системы включают графический интерфейс для определения процедуры извлечения данных, набор средств для переформатирования данных в соответствии с требованиями системы-получателя и подсистему для пересылки данных по сети, включающую возможность временного сохранения данных до и после пересылки, а также утилиты для управления всем процессом и его мониторинга.

Репликация таблиц

Некоторые производители СУБД пошли по пути включения функций репликации прямо в СУБД. Например, OracleS предлагает возможность автоматического создания так называемых снимков (snapshots), т.е. локальных копий таблиц удаленной базы данных. В простейшем случае локальная таблица является репликой (доступной только для выборки) главной таблицы, которую Oracle периодически обновляет. Вот инструкция Oracle, создающая локальную копию данных о ценах товаров (предполагается, что в главной базе данных имеется таблица products - такая же, как в нашей учебной базе данных):

Создать локальную реплику с информацией о ценах из удаленной таблицы products.

CREATE SNAPSHOT PRODPRICE

AS SELECT MFR ID, PRODOCT ID, PRICE FROM PRODUCTS@REMOTE LINK

Эта инструкция создает локальную таблицу с именем prodprice Таблица состоит из трех столбцов, заданных в инструкции select, извлекающей данные из удаленной (главной) базы данных. Символ @, за которым следует имя remote link, говорит Oracle, что таблица products, данные которой должны быть реплицированы в локальную таблицу, является удаленной и доступна через канал связи remote link. Этот канал создается заранее и настраивается администратором базы данных Напоследок инструкция create snapshot заполняет таблицу prodprice данными из таблицы products.

При использовании снимков этого типа пользователям не разрешается изменять содержащиеся в них данные с помощью инструкций insert, update или delete Все изменения вносятся только в главную (удаленную) таблицу и автоматически переносятся в таблицы-реплики (снимки) средствами самой СУБД Oracle. При желании администратор базы данных может обновить снимок вручную. Инструкция create snapshot включает специальное предложение refresh, предназначенное для автоматического обновления реплик. Вот несколько примеров:

Создать локальную реплику с информацией о ценах из удаленной таблицы products; обновлять данные раз в неделю путем полной перезагрузки.

CREATE SNAPSHOT PRODPRICE

REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+7 AS SELECT MFR ID, PRODUCT ID, PRICE FROM PRODUCTS@REMOTE LINK



Создать локальную реплику с информацией о ценах из удаленной таблицы products, обновлять данные каждый день, пересылая из главной таблицы только изменения.

create snapshot prodprice

refresh fast start with sysdate next sysdate+1 as select mfr id, product id, price from products@remote link

В последнем примере при обновлении снимка из главной таблицы передаются только измененные данные. Для реализации этой возможности Oracle ведет в удаленной системе журнал изменений ( журнал снимка ), который обновляется каждый раз, когда обновление таблицы products должно быть отражено в ее снимке Информация из этого журнала используется, когда приходит время обновления снимка Для приложений подобных нашему, где изменения цен товаров затрагивают лишь небольшую часть таблицы products, эта стратегия довольно эффективна Издержки, связанные с ведением журнала, весьма незначительны по сравнению с уменьшением сетевого трафика, обусловленным передачей по сети только измененных данных В других приложениях, где в промежутках между обновлением снимка изменяется гораздо большая часть строк главной таблицы, имеет смысл отказаться от ведения журнала изменений. По умолчанию Oracle идентифицирует строки (чтобы определить, какие из них изменены) на основе первичного ключа. Если первичный ключ не является частью реплицированных данных, Oracle использует внутренние идентификаторы строк для представления этих строк в таблице-реплике.

Инструкция select, определяющая таблицу-снимок, может иметь любую допустимую форму и, в том числе, содержать условие отбора-

Создать локальную реплику с информацией о ценах из удаленной таблицы products, обновлять данные каждый день, пересылая из главной таблицы только изменения

create snapshot prodprice

refresh fast start with sysdate next sysdate+1 as select mfr id, product id, price from products@remote link where price > 1000.00

Учтите, что наличие условия отбора усложняет ведение журнала изменений, поскольку СУБД Oracle должна фиксировать в нем не все изменения таблицы products, а только изменения строк, соответствующих условию отбора

Возможно также создание снимка на основе объединения нескольких таблиц главной базы данных:

Создать локальную реплику с данными о служащих, обновляемую еженедельно

create snapshot salesteam

refresh fast start with sysdate next sysdate+7 as select name, quota, sales, city

from salesreps@remote, offices@remote where rep office = office

Можно еще усложнить запрос, создав снимок итоговых данных:

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

create snapshot costord

refresh fast start with sysdate next sysdate+1



1 ... 206 207 208 [ 209 ] 210 211 212 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика