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

       

Сокращение времени обработки за счет применения вертикального и горизонтального параллелизма.




Методы фрагментации выполнения применяется в обеих моделях серверов, с той разницей, что
Informix-ODS для выполнения подзапросов и подзадач создает потоки, выполняемые параллельно
на нескольких процессорах, а в Informix-OXPS выполнение подзапросов и подзадач распределяется
между ко-серверами. Фрагментация выполнения дает многократный выигрыш в
производительности на следующих типах задач:


  • обработка характерных для приложений DSS сложных запросов, которые
    включают сканирование, сортировку, соединения огромных объемов данных,
    распределенных по множеству дисков и/или ко-серверов, группирование,
    вычисление агрегатных функций;
  • массовые вставки;


  • построение индексов;
  • резервирование журналов транзакций, сохранение и восстановление
    данных;
  • загрузка, выгрузка данных, реорганизация баз данных;

Informix - единственная на сегодня СУБД, которая обладает средствами распараллеливания для
столь обширного набора операций.

3.3.1. Вертикальный параллелизм. Итераторы
Элементарные операции, из которых состоит реализация любого запроса, называются
итераторами. Итератор - это программный объект, который воспринимает потоки строк от одного
или двух источников, выполняет над ними некоторый вид обработки и выдает результирующий
поток строк. Источниками данных могут служить дисковые файлы, сетевые соединения,
результирующие потоки других итераторов. Основное свойство итераторов - единообразие их
внешнего интерфейса, благодаря которому они могут произвольным образом объединяться.

Рассмотрим пример выполнения запроса:

SELECT state, SUM(order_item)

FROM customer, order

WHERE order.customer_id = customer.id

GROUP BY state

ORDER BY SUM(order_item)

Дерево его реализации (рис. 2) включает следующие типы итераторов:

SCAN - Сканирует таблицы и индексы.

HASH JOIN - Реализует алгоритм соединения методом хеширования.

GROUP - Группирует данные (GROUP BY) и вычисляет агрегатные функции.

SORT - Сортирует данные.

Дерево итераторов на рис. 2 реализует одновременное выполнение на разных процессорах или ко-

серверах множества циклов обработки данных за счет конвейеризации промежуточных
результатов. Так, результаты сканирования таблиц могут передаваться другому ко-серверу (в
OXPS) или другому потоку (в ODS), который сможет начать соединение по мере поступления
строк исходных таблиц. Результат соединения передается еще одному ко-серверу или потоку,
который начнет выполнять суммирование, и т. д.

3.3.2. Горизонтальный параллелизм. Рефрагментация промежуточных
результатов
Для того чтобы ускорить выполнение запроса, для каждой элементарной операции создается
несколько итераторов, которые распределяются между ко-серверами (OXPS) или выполняются как
отдельные потоки (ODS). Координацией совместной деятельности множества однотипных
итераторов занимается итератор типа EXCHANGE. EXCAHGE рефрагментирует результаты,
полученные от нижележащих итераторов и передает их итераторам верхнего уровня (рис. 3).

3.3.3. Баланс между приложениями OLTP и DSS
Задачи, выполняемые на сервере СУБД, можно разделить на три категории: OLTP, DSS и пакетной
обработки.

Пример OLTP-запроса: Есть ли свободный номер в какой-либо берлинской гостинице на 8-е
декабря?

Пример DSS-запроса: Каковы будут затраты на реализацию стратегии X охраны здоровья
сотрудников по сравнению со стратегией Y с учетом демографического профиля компании?



Содержание раздела