Распределенная обработка данных. Найханова Л.В. - 33 стр.

UptoLike

Составители: 

33
ватели (например, в выражениях SQL), а также системного имени, которое является
глобальным уникальным внутренним идентификатором этого объекта. Системное имя
содержит четыре компонента.
Идентификатор создателя объекта.
Идентификатор узла создателя, т.е. узла, на котором была выполнена операция
создания объекта.
Локальное имя, т.е. неуточненное имя объекта.
Идентификатор узла хранения, т.е. узла, на котором этот объект хранился в ис-
ходном состоянии.
Так, системное имя
MARYLIN @ NEW YORK . STATS @ LONDON
идентифицирует объект (например, хранимое отношение) с локальным именем
STATS, созданный пользователем Marylin на узле в Нью-Йорке и изначально
хранившийся на узле в Лондоне. Такое имя гарантировано от каких-либо изменений
даже при перемещении этого объекта на другой узел (подробнее это объясняется ниже).
Как уже отмечалось, пользователи обычно применяют к объектам их печатные
имена, которые состоят из простого неуточненного имени: например, либо "локального
компонента" системного имени (STATS в рассматриваемом примере), либо синонима
системного имени, определенного с помощью специальной инструкции CREATЕ
SYNONYM языка SQL, используемого в системе R*. Ниже приводится пример такой
инструкции.
CREATЕ SYNONYM MSTATS FOR MARYLIN @ NEW YORK . STATS @
LONDON;
Теперь можно использовать одно из следующих выражений:
SELECT . . . FROM STATS . . . ;
SELECT . . . FROM MSTATS . . . ;
В первом случае (при использовании локального имени) системное имя может быть
выведено на основе очевидных и принятых по умолчанию предположений, а именно на
основе того, что данный объект был создан данным пользователем на данном узле и
изначально хранился на этом узле. Одним из следствий такого способа будет то, что
старые приложения для System R могут быть без всяких изменений запущены на
выполнение в системе R* (т.е. сразу после переопределения данных для системы R*).
Во втором случае (при использовании синонимов) системное имя определяется
помощью опроса соответствующей таблицы синонимов. Эти таблицы рассматриваются
как первый компонент каталога, а каждый узел содержит набор таблиц всех
пользователей, известных на данном узле, с отображением синонимов пользователя на
системные имена.
В дополнение к таблицам синонимов на каждом узле поддерживаются следующие
объекты:
1. Элемент каталога для каждого объекта, созданного на этом узле.
2. Элемент каталога для каждого объекта, хранимого в данный момент на этом
узле.
Допустим, пользователь создает запрос для поиска синонима MSTATS. Сначала
система ищет соответствующее ему системное имя в соответствующей таблице
синонимов (чисто локальная подстановка). После этого становится известным место соз-
дания объекта; в рассматриваемом примере это Лондон. Затем система опрашивает
каталог Лондона, что в общем случае приводит к подстановке с удаленным доступом
(первый удаленный доступ). Каталог Лондона будет содержать элемент для данного
объекта согласно упомянутому выше пункту 1. Если искомый объект находится все еще в
ватели (например, в выражениях SQL), а также системного имени, которое является
глобальным уникальным внутренним идентификатором этого объекта. Системное имя
содержит четыре компонента.
     • Идентификатор создателя объекта.
     • Идентификатор узла создателя, т.е. узла, на котором была выполнена операция
       создания объекта.
     • Локальное имя, т.е. неуточненное имя объекта.
     • Идентификатор узла хранения, т.е. узла, на котором этот объект хранился в ис-
       ходном состоянии.
     Так, системное имя
                      MARYLIN @ NEW YORK . STATS @ LONDON
     идентифицирует объект (например, хранимое отношение) с локальным именем
STATS, созданный пользователем Marylin на узле в Нью-Йорке и изначально
хранившийся на узле в Лондоне. Такое имя гарантировано от каких-либо изменений
даже при перемещении этого объекта на другой узел (подробнее это объясняется ниже).
     Как уже отмечалось, пользователи обычно применяют к объектам их печатные
имена, которые состоят из простого неуточненного имени: например, либо "локального
компонента" системного имени (STATS в рассматриваемом примере), либо синонима
системного имени, определенного с помощью специальной инструкции CREATЕ
SYNONYM языка SQL, используемого в системе R*. Ниже приводится пример такой
инструкции.
         CREATЕ SYNONYM MSTATS FOR MARYLIN @ NEW YORK . STATS @
                             LONDON;
     Теперь можно использовать одно из следующих выражений:
                             SELECT . . . FROM STATS . . . ;
                             SELECT . . . FROM MSTATS . . . ;
     В первом случае (при использовании локального имени) системное имя может быть
выведено на основе очевидных и принятых по умолчанию предположений, а именно на
основе того, что данный объект был создан данным пользователем на данном узле и
изначально хранился на этом узле. Одним из следствий такого способа будет то, что
старые приложения для System R могут быть без всяких изменений запущены на
выполнение в системе R* (т.е. сразу после переопределения данных для системы R*).
     Во втором случае (при использовании синонимов) системное имя определяется
помощью опроса соответствующей таблицы синонимов. Эти таблицы рассматриваются
как первый компонент каталога, а каждый узел содержит набор таблиц всех
пользователей, известных на данном узле, с отображением синонимов пользователя на
системные имена.
     В дополнение к таблицам синонимов на каждом узле поддерживаются следующие
объекты:
     1. Элемент каталога для каждого объекта, созданного на этом узле.
     2. Элемент каталога для каждого объекта, хранимого в данный момент на этом
        узле.
     Допустим, пользователь создает запрос для поиска синонима MSTATS. Сначала
система ищет соответствующее ему системное имя в соответствующей таблице
синонимов (чисто локальная подстановка). После этого становится известным место соз-
дания объекта; в рассматриваемом примере это Лондон. Затем система опрашивает
каталог Лондона, что в общем случае приводит к подстановке с удаленным доступом
(первый удаленный доступ). Каталог Лондона будет содержать элемент для данного
объекта согласно упомянутому выше пункту 1. Если искомый объект находится все еще в

                                                                                  33