Корпоративные базы данных - статьи


1.3. Прозрачность расположения




Это качество 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:

Пример DDB

С помощью CREATE SYNONYM можно определить, например, таблицу структуры customer,
в которой хранятся строки с записями о клиентах компании, находящихся в Японии:

CREATE SYNONYM japan_customer FOR customer@hq.sales.asia.japan

Во многих СУБД задача управления именами объектов DDB решается путем использования
глобального словаря данных, хранящего информацию о DDB: расположение данных, возможности
других СУБД (если используются шлюзы), сведения о скорости передачи по сети с различной
топологией и т.д.




Начало  Назад  Вперед



Книжный магазин