В этой главе обсуждается оптимизация запросов в распределенной системе баз данных.
Архитектура распределенной обработки запросов
В распределенной системе баз данных обработка запроса включает в себя оптимизацию как на глобальном, так и на локальном уровне. Запрос поступает в систему базы данных на клиентском или управляющем сайте. Здесь пользователь проверяется, запрос проверяется, переводится и оптимизируется на глобальном уровне.
Архитектура может быть представлена как —
Отображение глобальных запросов в локальные запросы
Процесс отображения глобальных запросов на локальные может быть реализован следующим образом:
-
Таблицы, необходимые для глобального запроса, имеют фрагменты, распределенные по нескольким сайтам. Локальные базы данных имеют информацию только о локальных данных. Контролирующий сайт использует словарь глобальных данных для сбора информации о распределении и восстанавливает глобальное представление по фрагментам.
-
Если репликация отсутствует, глобальный оптимизатор запускает локальные запросы на сайтах, где хранятся фрагменты. При наличии репликации глобальный оптимизатор выбирает сайт на основе стоимости связи, рабочей нагрузки и скорости сервера.
-
Глобальный оптимизатор генерирует распределенный план выполнения, чтобы на сайтах происходил наименьший объем передачи данных. В плане указывается расположение фрагментов, порядок, в котором необходимо выполнить шаги запроса, и процессы, связанные с передачей промежуточных результатов.
-
Локальные запросы оптимизируются локальными серверами баз данных. Наконец, результаты локального запроса объединяются посредством операции объединения в случае горизонтальных фрагментов и операции объединения для вертикальных фрагментов.
Таблицы, необходимые для глобального запроса, имеют фрагменты, распределенные по нескольким сайтам. Локальные базы данных имеют информацию только о локальных данных. Контролирующий сайт использует словарь глобальных данных для сбора информации о распределении и восстанавливает глобальное представление по фрагментам.
Если репликация отсутствует, глобальный оптимизатор запускает локальные запросы на сайтах, где хранятся фрагменты. При наличии репликации глобальный оптимизатор выбирает сайт на основе стоимости связи, рабочей нагрузки и скорости сервера.
Глобальный оптимизатор генерирует распределенный план выполнения, чтобы на сайтах происходил наименьший объем передачи данных. В плане указывается расположение фрагментов, порядок, в котором необходимо выполнить шаги запроса, и процессы, связанные с передачей промежуточных результатов.
Локальные запросы оптимизируются локальными серверами баз данных. Наконец, результаты локального запроса объединяются посредством операции объединения в случае горизонтальных фрагментов и операции объединения для вертикальных фрагментов.
Например, давайте рассмотрим, что следующая схема проекта горизонтально фрагментирована в соответствии с городом, причем городами являются Нью-Дели, Калькутта и Хайдарабад.
ПРОЕКТ
PId | город | отдел | Статус |
Предположим, существует запрос для получения сведений обо всех проектах, статус которых «Текущий».
Глобальный запрос будет & inus;
sigmastatus= small«продолжается«(PROJECT)
Запрос на сервер в Нью-Дели будет —
sigmastatus= small«продолжается«(NewD−PROJECT)
Запрос на сервере Калькутты будет —
sigmastatus= small«продолжается«(Kol−PROJECT)
Запрос на сервере Хайдарабада будет —
sigmastatus= small«продолжается«(Hyd−PROJECT)
Чтобы получить общий результат, нам нужно объединить результаты трех запросов следующим образом:
sigmastatus= small«продолжается«(NewD−PROJECT) cup sigmastatus= small«продолжается«(kol−PROJECT) cup sigmastatus= small«впроцессе«(Hyd−PROJECT)
Оптимизация распределенных запросов
Оптимизация распределенных запросов требует оценки большого количества деревьев запросов, каждое из которых дает требуемые результаты запроса. Это связано прежде всего с наличием большого количества реплицированных и фрагментированных данных. Следовательно, цель состоит в том, чтобы найти оптимальное решение вместо лучшего.
Основные проблемы для оптимизации распределенных запросов:
- Оптимальное использование ресурсов в распределенной системе.
- Запрос торгов.
- Сокращение пространства решения запроса.
Оптимальное использование ресурсов в распределенной системе
Распределенная система имеет несколько серверов баз данных на различных сайтах для выполнения операций, относящихся к запросу. Ниже приведены подходы для оптимального использования ресурсов —
Операция «Доставка». Операция «Операция доставки» выполняется на сайте, где хранятся данные, а не на сайте клиента. Затем результаты передаются на сайт клиента. Это подходит для операций, где операнды доступны на том же сайте. Пример: операции выбора и проекта.
Доставка данных — при доставке данных фрагменты данных передаются на сервер базы данных, где выполняются операции. Это используется в операциях, где операнды распространяются на разных сайтах. Это также подходит для систем, где затраты на связь низкие, а локальные процессоры работают намного медленнее, чем клиентский сервер.
Гибридная доставка — это комбинация данных и операций доставки. Здесь фрагменты данных передаются на высокоскоростные процессоры, где выполняется операция. Результаты затем отправляются на сайт клиента.
Query Trading
В алгоритме торговли запросами для систем распределенных баз данных управляющий / клиентский сайт для распределенного запроса называется покупателем, а сайты, на которых выполняются локальные запросы, называются продавцами. Покупатель формулирует ряд альтернатив для выбора продавцов и для восстановления глобальных результатов. Целью покупателя является достижение оптимальной стоимости.
Алгоритм начинается с назначения покупателем подзапросов сайтам продавца. Оптимальный план создается из локальных оптимизированных планов запросов, предложенных продавцами, в сочетании со стоимостью связи для восстановления конечного результата. Как только глобальный оптимальный план сформулирован, запрос выполняется.
Сокращение пространства решений запроса
Оптимальное решение обычно включает в себя уменьшение пространства решения, так что стоимость запросов и передачи данных снижается. Этого можно достичь с помощью набора эвристических правил, так же как эвристика в централизованных системах.
Ниже приведены некоторые правила —
Выполните операции выбора и проецирования как можно раньше. Это уменьшает поток данных по сети связи.
Упростите операции с горизонтальными фрагментами, исключив условия выбора, которые не относятся к конкретному сайту.
В случае операций объединения и объединения, состоящих из фрагментов, расположенных на нескольких сайтах, передайте фрагментированные данные на сайт, где присутствует большая часть данных, и выполните там операцию.
Используйте операцию semi-join для определения кортежей, которые должны быть объединены. Это уменьшает объем передачи данных, что, в свою очередь, снижает стоимость связи.
Объедините общие листья и поддеревья в дереве распределенных запросов.