- •Распределенные информационные системы
- •Тема 1. Введение в распределенные системы (3 ч)
- •3. Концепции аппаратных решений
- •1. Что такое распределенная система?
- •2. Основные задачи распределенной обработки
- •2.1. Прозрачность
- •2.2. Открытость
- •2.3. Масштабируемость (возможность расширения)
- •4. Концепции программных решений
- •3. Концепции аппаратных решений
- •5. Модель Клиент-сервер
- •6. Итоги
- •Тема 2. Модели взаимодействия компонентов рс (2 часа)
- •2.1 Понятие промежуточной среды
- •2.2 Модели взаимодействия компонентов рс
- •2.2.1 Обмен сообщениями
- •2.2.2 Удаленный вызов процедур
- •2.2.3 Обращение к удаленным объектам (rmi)
- •2.2.4 Связь на основе потоков данных
- •Тема 3. Распределенные системы объектов (4 часа)
- •Задачи построения рис
- •Преимущества использования
- •Повторное использование кода
- •Изолированная разработка
- •Сопровождение приложений
- •Тонкие клиенты
- •3.2 Объектная модель corba
- •Объектная модель corba
- •Базовый объектный адаптер boa
- •Динамический интерфейс вызова (dii)
- •Репозиторий интерфейсов (Interface Repository)
- •Протоколы взаимодействия различных объектных брокеров (giop, iiop)
- •Основные службы (сервисы) стандарта corba
- •Достоинства orb
- •Выводы. Достоинства и недостатки использования corba
- •Технология ActiveX – основные возможности
- •Технология ole – связывание и вставка объектов
- •3.3.2 Распределенная компонентная модель объектов (dcom)
- •Обеспечение безопасного доступа к удаленному объекту
- •Достоинства и недостатки dcom
- •Балансировка нагрузки
- •Just-in-time-активация и пул объектов
- •Распределенные транзакции
- •Отложенные компоненты
- •Тема 4 Разработка распределенных приложений на платформе Microsoft.Net Framework
- •4.1. Основы платформы .Net Framework
- •4.2 Введение в среду Common Language Runtime
- •Примеры программ для платформы ms.Net
- •Первая программа на c#
- •Первая программа на vb.Net
- •4.3 Преимущества платформы ms.Net
- •4.4 Поддержка средств распределенной разработки
- •4.5 Сервисы и интерфейс программной компоненты
- •4.6 Среда Microsoft Message Queuing (msmq)
- •Базовая модель ejb
- •Средства защиты ejb
- •Транзакции
- •Тема 5. Современные технологи разработки распределенных систем
- •5.1 Технология Web-сервисов
- •5.1.1 Основы Web-сервисов
- •Общее взаимопонимание
- •5.1.2 Взаимодействие с веб-сервисами
- •Документно-ориентированные взаимодействия
- •5.1.3. Технология веб-сервисов
- •5.1.4. Пример использования
- •5.2. Определение сервисно-ориентированной архитектуры
- •5.3. Преимущества soa
- •5.4 Стек технологий веб-сервисов
- •5.5. Принципы взаимодействия веб-сервисов в рамках сервисно-ориентированной архитектуры
- •Тема 7. Распределенные бд
- •7.1. Свойства рбд
- •7.2. Механизм распределенных транзакций
- •7.3. Целостность данных
- •7.4 Прозрачность расположения
- •7.5. Обработка распределенных запросов
- •7.7. Технология тиражирования данных
- •7.8 Архитектура "клиент-сервер"
7.2. Механизм распределенных транзакций
Ввиду важности механизма транзакций и свойств транзакционности, остановимся на них подробнее.
Определение. Транзакция -
Свойства транзакций
Виды транзакций
Распределенные транзакции
7.3. Целостность данных
В ddb поддержка целостности и согласованности данных, ввиду свойств 1-2, представляет собой сложную проблему. Ее решение - синхронное и согласованное изменение данных в нескольких локальных базах данных, составляющих ddb - достигается применением протокола двухфазной фиксации транзакций. Если ddb однородна - то есть на всех узлах данные хранятся в формате одной базы и на всех узлах функционирует одна и та же СУБД, то используется механизм двухфазной фиксации транзакций данной СУБД. В случае же неоднородности ddb для обеспечения согласованных изменений в нескольких базах данных используют менеджеры распределенных транзакций. Это, однако, возможно, если участники обработки распределенной транзакции - СУБД, функционирующие на узлах системы, поддерживают xa-интерфейс, определенный в спецификации dtp консорциума x/open. В настоящее время xa-интерфейс имеют ca-openingres, informix, microsoft sql server, oracle, sybase. Если в ddb предусмотрено тиражирование данных, то это сразу предъявляет дополнительные жесткие требования к дисциплине поддержки целостности данных на узлах, куда направлены потоки тиражируемых данных. Проблема в том, что изменения в данных инициируются как локально - на данном узле - так и извне, посредством тиражирования. Неизбежно возникают конфликты по изменениям, которые необходимо отслеживать и разрешать.
7.4 Прозрачность расположения
Это качество ddb в реальных продуктах должно поддерживаться соответствующими механизмами. Разработчики СУБД придерживаются различных подходов. Рассмотрим пример из oracle. Допустим, что ddb включает локальную базу данных, которая размещена на узле в Лондоне. Создадим вначале ссылку (database link), связав ее с символическим именем (london_unix), транслируемым в ip-адрес узла в Лондоне.
create public database link london.com connect to london_unix using oracle_user_id;
Теперь мы можем явно обращаться к базе данных на этом узле, запрашивая, например, в операторе select таблицу, хранящуюся в этой базе:
select customer.cust_name, order.order_date from customer@london.com, order where customer.cust_number = order.cust_number;
Очевидно, однако, что мы написали запрос, зависящий от расположения базы данных, поскольку явно использовали в нем ссылку. Определим customer и customer@london.com как синонимы:
create synonym customer for customer@london.com;
и в результате можем написать полностью независимый от расположения базы данных запрос:
select customer.cust_name, order.order_date from customer, order where customer.cust_number = order.cust_number
Задача решается с помощью оператора sql create synonym, который позволяет создавать новые имена для существующих таблиц. При этом оказывается возможным обращаться к другим базам данных и к другим компьютерам. Так, запись в СУБД informix
create synonym customer for client@central:smith.customer
означает, что любое обращение к таблице customer в открытой базе данных будет автоматически переадресовано на компьютер central в базу данных client к таблице customer. Оказывается возможным переместить таблицу из одной базы данных в другую, оставив в первой базе ссылку на ее новое местонахождение, при этом все необходимые действия для доступа к содержимому таблицы будут сделаны автоматически. Мы уже говорили выше о горизонтальной фрагментации. Рассмотрим пример иерархически организованной ddb, на каждом из узлов которой содержится некоторое подмножество записей таблицы customer:
С помощью create synonym можно определить, например, таблицу структуры customer, в которой хранятся строки с записями о клиентах компании, находящихся в Японии:
create synonym japan_customer for customer@hq.sales.asia.japan
Во многих СУБД задача управления именами объектов ddb решается путем использования глобального словаря данных, хранящего информацию о ddb: расположение данных, возможности других СУБД (если используются шлюзы), сведения о скорости передачи по сети с различной топологией и т.д.
