- •Распределение и тиражирование данных
- •Архитектура распределенной базы данных
- •Взаимодействие и автономность
- •Расширение модели клиент/сервер
- •Сети и системы распределенных баз данных
- •Сервисы базы данных и именование в распределенной базе данных
- •Связи баз данных
- •Связи баз данных фиксированного пользователя, соединенного пользователя и текущего пользователя
- •Общие, частные и глобальные связи баз данных
- •Разделяемые связи баз данных
- •Неоднородные распределенные базы данных
- •Вызовы удаленных процедур (rpc)
- •Удаленные транзакции
- •Распределенные транзакции
- •Алгоритм двухфазного завершения Oracle
- •Прозрачность распределенной базы данных
- •Безопасность распределенной базы данных
- •Глобальные пользователи и роли
- •Введение в тиражирование данных
- •Польза тиражирования данных
- •Типы тиражирования данных
- •Базовое тиражирование и моментальные снимки "только для чтения"
- •Сложные моментальные снимки
- •Хранение информации моментальных снимков
- •Регенерация моментальных снимков
- •Виды регенерации моментальных снимков
- •Журналы моментальных снимков
- •Группы регенерации моментальных снимков
- •Автоматическая регенерация моментальных снимков
- •Автоматическая регенерация моментальных снимков и очереди заданий
- •Ручная регенерация моментальных снимков
- •Среды усовершенствованного тиражирования
- •Многоабонентское тиражирование
- •Узлы моментальных снимков и обновляемые моментальные снимки
- •Сравнение вариантов усовершенствованного тиражирования
- •Архитектура системы усовершенствованного тиражирования Объекты тиражирования и группы тиражирования
- •Основные узлы и узлы моментальных снимков
- •Каталоги тиражирования
- •Интерфейс прикладных программ управления тиражированием
- •Программные алгоритмы усовершенствованного тиражирования Oracle
- •Тиражирование на уровне строк
- •Асинхронное распространение данных
- •Принудительная рассылка отложенных транзакций в очереди
- •Уничтожение очереди отложенных транзакций
- •Последовательное и параллельное распространение
- •Уникальные алгоритмы распространения моментальных снимков
- •Конфликты тиражирования в системах усовершенствованного тиражирования
- •Типы конфликтов тиражирования
- •Предотвращение конфликтов
- •Распознавание и устранение конфликтов
- •Группы столбцов и методы устранения конфликтов
- •Другие варианты усовершенствованного тиражирования
- •Процедурное тиражирование
- •Распознавание конфликтов и процедурное тиражирование
- •Синхронное распространение данных
- •Конфликты тиражирования и синхронное тиражирование данных
Вызовы удаленных процедур (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;
Удаленные транзакции
Удаленная транзакция (remotetransaction) — это транзакция, содержащая один или более удаленных операторов, каждый из которых ссылается на одну и ту же удаленную базу данных. Например, следующая удаленная транзакция обновляет информацию только в базе данныхEAST:
UPDATE sales.parts@east.compworld
SET...
WHERE ... ;
UPDATE sales.parts@east.compworld
SET ...
WHERE ... ;
UPDATE sales.parts@east.c6mpworld
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;