Оптимизация запросов в распределенных системах
В этой главе обсуждается оптимизация запросов в системе распределенных баз данных.
Распределенная архитектура обработки запросов
В системе распределенной базы данных обработка запроса включает оптимизацию как на глобальном, так и на локальном уровне. Запрос поступает в систему базы данных на клиентском или контролирующем сайте. Здесь пользователь проверяется, запрос проверяется, переводится и оптимизируется на глобальном уровне.
Архитектура может быть представлена как -
Сопоставление глобальных запросов с локальными запросами
Процесс сопоставления глобальных запросов с локальными можно реализовать следующим образом:
Таблицы, необходимые для глобального запроса, имеют фрагменты, распределенные по нескольким сайтам. В локальных базах данных есть информация только о локальных данных. Управляющий сайт использует словарь глобальных данных для сбора информации о распределении и реконструирует глобальное представление из фрагментов.
Если репликации нет, глобальный оптимизатор выполняет локальные запросы на сайтах, где хранятся фрагменты. Если есть репликация, глобальный оптимизатор выбирает сайт на основе стоимости связи, рабочей нагрузки и скорости сервера.
Глобальный оптимизатор генерирует распределенный план выполнения, чтобы между сайтами происходил наименьший объем передачи данных. В плане указывается расположение фрагментов, порядок, в котором необходимо выполнить шаги запроса, и процессы, участвующие в передаче промежуточных результатов.
Локальные запросы оптимизируются локальными серверами баз данных. Наконец, результаты локального запроса объединяются посредством операции объединения в случае горизонтальных фрагментов и операции объединения для вертикальных фрагментов.
Например, давайте предположим, что следующая схема проекта горизонтально фрагментирована в соответствии с городами, городами являются Нью-Дели, Калькутта и Хайдарабад.
ПРОЕКТ
PId | город | Отдел | Положение дел |
Предположим, есть запрос на получение сведений обо всех проектах, статус которых «Текущий».
Глобальный запрос будет & inus;
$$ \ sigma_ {status} = {\ small "в процессе"} ^ {(PROJECT)} $$
Запрос на сервере Нью-Дели будет -
$$ \ sigma_ {status} = {\ small "в процессе"} ^ {({NewD} _- {PROJECT})} $$
Запрос на сервере Калькутты будет -
$$ \ sigma_ {status} = {\ small "в процессе"} ^ {({Kol} _- {PROJECT})} $$
Запрос на сервере Хайдарабада будет -
$$ \ sigma_ {status} = {\ small "в процессе"} ^ {({Hyd} _- {PROJECT})} $$
Чтобы получить общий результат, нам нужно объединить результаты трех запросов следующим образом:
$ \ sigma_ {status} = {\ small "в процессе"} ^ {({NewD} _- {PROJECT})} \ cup \ sigma_ {status} = {\ small "в процессе"} ^ {({kol} _- {ПРОЕКТ})} \ cup \ sigma_ {status} = {\ small "в процессе"} ^ {({Hyd} _- {PROJECT})} $
Оптимизация распределенных запросов
Оптимизация распределенных запросов требует оценки большого количества деревьев запросов, каждое из которых дает требуемые результаты запроса. В первую очередь это связано с наличием большого количества реплицированных и фрагментированных данных. Следовательно, цель - найти оптимальное решение вместо лучшего.
Основные проблемы для оптимизации распределенных запросов:
- Оптимальное использование ресурсов в распределенной системе.
- Торговля запросами.
- Сокращение пространства решения запроса.
Оптимальное использование ресурсов в распределенной системе
Распределенная система имеет несколько серверов баз данных на различных сайтах для выполнения операций, относящихся к запросу. Ниже приведены подходы к оптимальному использованию ресурсов.
Operation Shipping- При отгрузке операции операция выполняется на сайте, где хранятся данные, а не на сайте клиента. Затем результаты передаются на сайт клиента. Это подходит для операций, когда операнды доступны на одном сайте. Пример: операции выбора и проекта.
Data Shipping- При доставке данных фрагменты данных передаются на сервер базы данных, где выполняются операции. Это используется в операциях, когда операнды распределяются по разным сайтам. Это также уместно в системах, где затраты на связь невелики, а локальные процессоры намного медленнее, чем клиент-сервер.
Hybrid Shipping- Это комбинация передачи данных и операции. Здесь фрагменты данных передаются на высокоскоростные процессоры, где выполняется операция. Затем результаты отправляются на сайт клиента.
Запрос Торговля
В алгоритме торговли запросами для систем распределенных баз данных контролирующий / клиентский сайт для распределенного запроса называется покупателем, а сайты, на которых выполняются локальные запросы, называются продавцами. Покупатель формулирует ряд альтернатив для выбора продавцов и для реконструкции глобальных результатов. Задача покупателя - добиться оптимальной стоимости.
Алгоритм начинается с того, что покупатель назначает подзапросы сайтам продавца. Оптимальный план создается из локальных оптимизированных планов запросов, предлагаемых продавцами, в сочетании со стоимостью связи для восстановления конечного результата. После того как глобальный оптимальный план сформулирован, запрос выполняется.
Уменьшение пространства решения запроса
Оптимальное решение обычно включает сокращение пространства для решения, так что снижаются затраты на запросы и передачу данных. Этого можно достичь с помощью набора эвристических правил, точно так же, как эвристики в централизованных системах.
Ниже приведены некоторые правила -
Как можно раньше выполняйте операции выбора и проецирования. Это уменьшает поток данных по сети связи.
Упростите операции с горизонтальными фрагментами, исключив условия выбора, не относящиеся к конкретному сайту.
В случае операций соединения и объединения, состоящих из фрагментов, расположенных на нескольких сайтах, передать фрагментированные данные на сайт, где находится большая часть данных, и выполнить там операцию.
Используйте операцию полусоединения для определения кортежей, которые должны быть объединены. Это уменьшает объем передачи данных, что, в свою очередь, снижает стоимость связи.
Объедините общие листья и поддеревья в дерево распределенных запросов.