Прозрачность расположения
Это качество 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: расположение данных, возможности
других СУБД (если используются шлюзы), сведения о скорости передачи по сети с различной
топологией и т.д.