Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
RBD_END.DOC
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
548.35 Кб
Скачать

Проектирование распределенных приложений.

Необходимо решить такие проблемы:

  1. где распределить данные для быстрого доступа;

  2. как обеспечить уникальность имен;

  3. как управлять соединениями через связи БД;

  4. как проектировать распределенные запросы.

Выбор места распределения данных определяется:

  • количеством транзакций, вызываемых каждым узлом

  • объемом данных, используемым каждым узлом

  • характеристиками производительности и надежности сети

  • скоростью действия различных узлов и емкостью их дисков

  • критичностью доступа при отказе узла или связи

  • необходимостью ссылочной целостности между таблицами ( таблицы, связанные по FORANGE KEY, должны находится на одном сервере; эту проблему можно обйти с помощью триггеров)

Уникальность имен.

Oracle гарантирует, что внутри схемы имя объекта всегда уникально. Имя схемы внутри локальной сети тоже будет уникальным. Необходимо обеспечить уникальность имен и глобальных имен БД вручную.

Эта проблема решается вместе с администраторами БД и сети. Необходимо решить следующие вопросы:

  • вопрос о непосредственном имени БД и домена

  • вопрос об удаленной сессии (определить имя, под которым пользователь будет регистрироваться на удаленной станции; соединение – сессия в обычной ситуации сохраняется на все время локальной сессии пользователя, а при первом обращении к удаленной таблице открывается удаленная сессия, которая будет сохраняться, пока есть локальная сессия; но это бывает невыгодным при связи по телефонной линии, в таких случаях можно делать разрыв соединения, когда связь больше не нужна; разрыв соединения выполняется с помощью команды ALTER SESSION <close database link> <имя удаленной связи> )

Замечание. Вы должны обладать системной привилегией ALTER SESSION; нельзя выдавать описанную команду с параметром <close database link> из распределенной транзакции, которая выдала перед этим предложение, использующее эту связь. Ее можно выполнять только при откате или подтверждении транзакции. То же самое относится и к открытым курсорам, которые используют данную связь.

Последовательности в распределенных транзакциях.

К удаленным последовательностям можно обратиться в следующих случаях:

  1. когда все последовательности, обновляемые таблицы (в том числе таблицы SELECT for UPDATE), столбцы Long и блокируемые таблицы, адресуемые в данном предложении, расположены на одном и том же узле; SELECT FOR UPDATE – специальная форма команды SELECT для создания вида, который используется для постоянного обновления;

  2. когда, кроме последовательности, SQL-предложение обращается к еще хотя бы одной таблице.

Пример.

  • Неправильная запись

INSERT INTO invertory

SELECT seg1.nextval@warehouse, part_dese from partlist1@warehouse;

Ошибка! Invertory – локальная таблица, а последовательность взята удаленная, т.е. нарушено 1-ое правило.

  • Правильная запись

INSERT INTO invertory@warehouse

SELECT seg1.nextval@warehouse, partlist1 from partlist1@warehouse;

Ссылочная целостность ограничена декларативно по одной таблице, что не позволяет ссылаться таблице с вторичным ключом ( FORANGE KEY) на удаленную таблицу с первичным ключом ( PRIMARY KEY). Поэтому совет: используйте триггеры.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]