Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_bd.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.5 Mб
Скачать

4. Свойства ddb: обработка распределённых запросов, прозрачность расположения, прозрачная фрагментация, прозрачное тиражирование.

Обработка распределённых запросов

Приведём пример распределённого запроса. Пусть в узле, находящемся в Лондоне, есть таблица customer, а в узле, находящемся в Париже, – таблица order.

SELECT customer.name, customer.address, order.number, order.date FROM customer@london, order@paris

WHERE customer.cust_number = order.cust_number

Обработка распределённых запросов (Distributed Query - DQ) – задача более сложная, нежели обработка локальных запросов, и она требует интеллектуального решения с помощью особого компонента – оптимизатора распределённых запросов. Его основной целью является улучшение производительности. Основными факторами, влияющими на производительность, являются: объём информации; скорость передачи данных; загрузка сети; производительность узлов.

Пример возможного решения поставленной задачи:

select T1.* from T1, T2, T3 where T1. назв_изд = T2.назв_изд

and T2.назв_дет = T3.название_дет and T1.место_сборки = “Москва” and T3.назв_элем = “Болт”

Данный запрос – распределённый, т.к. затрагивает таблицы, принадлежащие различным локальным базам данных. Для его нормального выполнения необходимо иметь все исходные таблицы на одном узле. Следовательно, отсутствующие таблицы должны быть переданы по сети. Существует несколько стратегий, как это сделать:

1. Простейшая стратегия – перемещение таблиц в узел, из которого поступил запрос:

1) запрос из узла А: перемещение таблицы T3 в узел А (10 Мб) – при скорости 1 Мб/сек это 10 сек.

2) запрос из узла Б: перемещение таблиц T1, T2 в узел Б (101 Мб) – при скорости 1 Мб/сек это 101 сек;

2. Более хорошая стратегия – создание подмножества данных по названию детали (Болт) и месту сборки изделий (Москва):

1) запрос из узла А: перемещение 10 записей описаний деталей из таблицы T3 в узел А (1 000 б) – при скорости 1 Мб/сек это 0,001 сек.

2) запрос из узла Б: перемещение 100 000 записей о поставках из таблицы T2 и 1 000 описаний изделий из таблицы T1 в узел Б (10 100 000 б) – при скорости 1 Мб/сек это ~ 10 сек;

3. Стратегия, исключающая вариации: независимо от узла, 1000-байтовая проекция таблицы деталей T3 передаётся из узла Б в узел А, там получается результат и, если запрос возник в узле Б, результат пересылается обратно.

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

Это средний уровень прозрачности распределённости; он предполагает, что пользователь имеет сведения о способах фрагментации, но не нуждается в сведениях о расположении данных.

select y.emp_id, x.emp_name, y.salary

from employee1 x, emp_salary y

where x.emp_id = y.emp_id and position = ”Manager”

union

select y.emp_id, x.emp_name, y.salary

from employee2 x, emp_salary y

where x.emp_id = y.emp_id and position = ”Manager”9

Основное преимущество прозрачности расположения – база данных может подвергнуться реорганизации, что никак не скажется на приложении.

Прозрачность фрагментации

Это высший уровень прозрачности распределённости; он предполагает, что пользователь ничего не знает о том, как фрагментированы таблицы. Тот же запрос выглядит как SQL-запрос в централизованной БД:

select emp_id, emp_name, salary

from staff where position = ”Manager”

Свойство прозрачности распределённости РБД в реальных продуктах должно поддерживаться соответствующими механизмами. Разработчики СУБД придерживаются различных подходов.В одном из подходов задача решается с помощью оператора SQL create synonym, который позволяет создавать новые имена для существующих таблиц. Так, запись

create synonym customer for client@central: smith.customer

означает, что любое обращение к таблице customer в открытой базе данных будет автоматически переадресовано на компьютер central в базу данных client к таблице customer пользователя smith. Теперь можно написать полностью независимый от расположения базы данных запрос:

select customer.cust_name, order.order_date from customer, order

where customer.cust_number = order.cust_number

При таком подходе можно переместить таблицу из одной базы данных в другую, оставив в первой базе ссылку на её новое местонахождение, при этом все необходимые действия для доступа к содержимому таблицы будут сделаны автоматически.

Прозрачность тиражирования

Тиражирование данных – это асинхронный (в общем случае) процесс переноса изменений объектов исходной базы данных в базы, расположенные на других узлах распределённой системы.

Прозрачность тиражирования означает возможность переноса изменений между базами данных средствами, невидимыми пользователю распределённой системы.

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