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

Вызовы удаленных процедур (rpc)

Язык PL/SQLпозволяет разработчикам хранить логику приложений в базе данных в виде хранимых процедур (модулей, методов объектных типов и т.д.). Архитектура распределенной базы данныхOracleне ограничивает использование процедур — приложения могут вызывать как локальные, так и удаленные процедуры. Например, в следующем запросе выполняется вызов удаленной процедуры(RPC - remote procedure call)удаленного компонентного методаORDER_TOTALтипаSALES.ORDER_TYPE:

SELECT o.order_total ()

FROM sales.orders@east.compworld о WHERE id =1;

Удаленные транзакции

Удаленная транзакция (remote transaction) — это транзакция, содержащая один или более удаленных операторов, каждый из которых ссылается на одну и ту же удаленную базу данных. Например, следую­щая удаленная транзакция обновляет информацию только в базе данныхEAST:

UPDATE sales.parts@east.compworld

SET...

WHERE ... ;

UPDATE sales.parts@east.compworld

SET ...

WHERE ... ;

UPDATE sales.parts@east.compworld

SET ...

WHERE ... ;

COMMIT;

Распределенные транзакции

Распределенная транзакция (distributed transaction) -это транзакция, включающая один или более операторов, обновляющих информацию в двух или более разных базах данных. Например, следующая распреде­ленная транзакция обновляет информацию в нескольких базах данных:

UPDATE sales.parts

SET ...

WHERE ... ;

UPDATE sales.parts@east.compworld

SET ...

WHERE ... ;

UPDATE sales.parts@east.compworld

SET ...

WHERE ...;

COMMIT;

Алгоритм двухфазного завершения Oracle

По определению, для транзакции как единого целого должна быть выполнена либо операция завершения, либо операция отката. Чтобы обеспечить соблюдение этого фундаментального правила для рас­пределенных транзакций, в Oracleприменяется специальный алгоритм двухфазного завершения(two-phase commit mechanism),который координирует управление транзакциями в сети. Двухфазное завер­шение необходимо при сетевых и системных сбоях, которые могут прерывать завершение распределенных транзакций.

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

Механизмы двухфазного завершения являются внутренними процессами серверов баз данных Oracle, участвующих в транзак­ции. Пользователь должен лишь закончить распределенную транзакцию операторомCOMMIT; остальную работу выполняетOracle.

Прозрачность распределенной базы данных

Эффективность распределенной базы данных окажется бесполезной, если разработчикам придется изучать множество специальных сложных SQL-конструкций только для того, чтобы обратиться к удаленным данным. Например, если разработчики, участвующие в проектировании распределенной базы данных, должны ссылаться на удаленную информацию при помощи уточненных имен таблиц и представлений (например, SALES.PARTS@EAST.COMPWORLD), то все они должны знать текущее местонахождение конкретных объектов в системе распределенной базы данных. Более того, каждый разработчик должен понимать, создавать и применять связи баз данных для построения нужных SQL-операторов приложения. Без сомнения, такие сложности повлияют на производительность каждого разработчика.

В Oracleимеется ряд средств, позволяющих скрыть сложность распределенной базы данных и сделать ее прозрачной(transparent) для пользователей системы. Если потратить дополнительное время на конфигурирование прозрачной распределенной базы данных, то разработчики и пользователи смогут работать со всеми базами данных системы так, как если бы они обращались к одной локальной базе данных. Ниже приведен SQL-оператор, с помощью которого создается общий синоним, устанавливающий прозрачность местонахождения удаленной таблицы. Прозрачность местонахождения(location transparency)скрывает физическое место хранения объекта схемы в системе распределенной базы данных.

CREATE PUBLIC SYNONYM parts

FOR sales.parts@east.compworld;

После создания общего синонима пользователи локальной базы данных могут ссылаться на удаленную таблицу PARTSкак на локальную.Oracleавтоматически превращает локальный псевдоним в имя удаленной таблицы и использует для обращения к ней связь баз данных.

SELECT * FROM parts;

Синонимы — это только одно из средств, применяемых для установления прозрачности местонахождения объектов распределенной системы. Можно использовать также представления, модули, хранимые процедуры, функции и методы объектных типов. Например, локальное представлениеPARTSуказывает на данные, содержащиеся в удаленной таблицеPARTS:

CREATE VIEW sales.parts AS

SELECT * FROM sales.parts@east.compworld;