White Papers

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

Внесение ясности в процесс разработки встраиваемых систем и приложений реального времени с целью повышения продуктивности и качества продуктов

Системы управления базами данных

Врожденный параллелизмВерсия для печати

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

Керри Болинджер

Параллелизм проникает повсюду, его необходимость обусловлена ростом объемов данных, количества приложений и пользователей информационных хранилищ. Он просачивается снизу, наслаивается сверху и встраивается внутрь почти всех СУБД и хранилищ данных. Это происходит очень быстро, и некоторые пользователи еще не успели понять, что же такое параллельная обработка хранилищ. В решениях Teradata изначально предусмотрены средства такой обработки.

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

В продуктах Teradata изначально были отвергнуты однопоточные операции. Разработчики распараллелили все, от ввода SQL-предложений до мельчайших деталей их выполнения. Фундаментальная идея состояла в том, чтобы снабдить каждый компонент системы множеством братьев-близнецов. Не зная заранее, где появятся «узкие места», разработчики предусмотрительно устранили причины заторов. В СУБД Teradata можно без ограничений определять число путей межузловых соединений, каналов связи с мэйнфреймами, шлюзов и единиц параллелизма. Это дает гибкость и контроль над производительностью, которая критически важна для современных крупномасштабных систем, предназначенных для поддержки принятия решений.

Основной единицей параллелизма является виртуальный процессор доступа (Access Module Processor). Все запросы и операции загрузки данных, резервного копирования, построения индексов распределяются между AMP. В первой версии AMP были физическими процессорами, но затем стали виртуальными. На отдельном SMP-узле (Symmetric MultiProcessor — «симметричная многопроцессорность») могут работать несколько AMP, реализованных в виде процессов операционной системы, а все такие узлы объединяются в систему с массовой параллельной обработкой (Massively Parallel Processing, MPP). Процессоры AMP позволяют распределять ресурсы, распараллеливая все операции. А для повышения их производительности используются методы организации как внешнего, так и внутреннего параллелизма.

В СУБД Teradata параллельная обработка запросов осуществляется на основе хеш-секционирования данных и их распределения между всеми процессорами AMP. Перед началом работы, на этапе конфигурирования, задается число процессоров AMP — от двух до двадцати на узел, в зависимости от мощности базовых аппаратных средств. Все операции, такие как сканирование таблиц и индексов, проекция, выборка, соединение, агрегирование и сортировка данных, распределяются между процессорами AMP и выполняются параллельно. Каждая операция с данными, отнесенными к одному процессору AMP, выполняется независимо от операций других AMP.

Внутренним параллелизмом называют перекрытие по времени отдельных операций с базой данных. Оптимизатор разбивает SQL-запрос на несколько высокоуровневых операций, называемых шагами, и направляет их AMP для выполнения. Часто шаг является довольно большим фрагментом работы и может быть простым (таким как сканирование таблицы и возврат результата) или сложным (сканирование двух таблиц с отбором строк, соединение таблиц, перераспределение результатов соединения по указанным столбцам, сортировка перераспределенных строк и размещение результатов в промежуточной таблице). В пределах каждого из таких шагов несколько операций выполняются параллельно с помощью конвейерной обработки. При сканировании таблиц отобранные строки могут по конвейеру отправляться в процесс соединения (рис. 1). Конвейерная обработка позволяет начать следующее действие прежде, чем закончено предыдущее. Она выполняется при любой возможности в пределах каждого шага.

Рис. 1. Конвейеризация четырех действий одного шага SQL на каждом процессоре AMP

Динамический метод организации работы, при котором следующее действие накладывается на предыдущее, позволяет ускорить процесс распараллеливания запросов. СУБД тщательно выбирает реляционные операции для каждого шага, чтобы избежать потерь скорости конвейера.

Внешний параллелизм — это дополнительный уровень распараллеливания операций. Он реализуется за счет одновременного выполнения нескольких шагов запроса всеми компонентами организации параллелизма. Для выполнения любого шага операции над базой данных на каждом AMP активизируются один или несколько процессов. Несколько шагов запроса могут выполняться одновременно, если они не зависят от результатов предыдущих шагов.

На рис. 2 показана система с четырьмя AMP и запрос, разделенный оптимизатором на семь шагов. Шаг 2.2 (аналогичный шагу 1.2) соответствует внутреннему параллелизму: сканируются и соединяются две таблицы, Lineitem и Order. Все три действия выполняются конвейерным методом в пределах одного шага. Шаги 1.1 и 1.2, как и шаги 2.1 и 2.2, демонстрируют многошаговый параллелизм, при котором каждый процессор AMP выполняет два шага одновременно.

В дополнение к методам параллельной обработки, показанным на рис. 2, предлагается расширение SQL, называемое Multi-Statement Request («запрос, состоящий из нескольких предложений»), позволяющее связать несколько предложений SQL и направить их оптимизатору как единое целое. СУБД пытается выполнить эти предложения параллельно, причем все общие подвыражения обрабатываются однократно, а результаты поступают в общее пользование. Соответствующий метод известен как «исключение общих подвыражений». Если связать вместе шесть предложений выбора SELECT, содержащих один и тот же подзапрос, последний будет выполнен только один раз. Но даже если предложения SQL зависят друг от друга и выполняются с перекрытием по времени, каждое из них возвратит собственный независимый результат.

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

Размещение данных

При попытках добиться оптимального функционирования механизмов параллелизма СУБД Teradata в MPP-системах удалось понять, что физическое секционирование данных как помогает, так и препятствует использованию преимуществ параллельной обработки. С точки зрения MPP многие из известных вариантов секционирования бесполезны. Одна из типичных проблем состоит в том, что равномерное распределение данных по дискам или узлам не гарантирует сбалансированности нагрузки на базу данных, поэтому ключевым критерием оптимизации является равномерная загрузка всех компонентов организации параллелизма.

Проблема балансировки нагрузки решается за счет приписывания строк данных процессорам AMP на постоянной основе и использования передового алгоритма хеширования для размещения данных. Решение связать данные с единицами параллелизма привело к выбору общей схемы размещения данных, именуемой хеш-секционированием. Она формализует оптимальное распределение рабочей нагрузки, поддерживает равномерное размещение данных.

Хеш-секционирование

Введенные данные обрабатываются с помощью сложного алгоритма хеширования и автоматически распределяются по всем процессорам AMP. Индексация также основана на хешировании, что уменьшает нагрузку на администратора базы данных при настройке прямого доступа. Для определения базы данных администратор просто выбирает в каждой таблице в качестве первичного ключа столбец или набор столбцов. Как показано на рис. 3, хеш-коды ключевых столбцов определяют процессор AMP, который принимает данные на хранение, и логическое местонахождение данных в его дисковом пространстве. И все это — без выполнения отдельной операции CREATE INDEX («Создать индекс»). При выборе строки значение первичного ключа также передается алгоритму хеширования, который выдает хеш-коды, определяющие, какой процессор AMP владеет строкой и где находятся данные. Хеш-секционирование обеспечивает несколько явных преимуществ системам поддержки решений.

Механизм индексации на основе хеширования позволяет обойтись без упорядочения ключей. Часто в системах управления базами данных для индексации применяется тот ли иной вариант сбалансированного дерева (B-дерева) на базе алфавитной последовательности, указанной пользователем. По мере поступления в систему новых данных и добавления в случайном порядке элементов к индексам B-дерева эти структуры постепенно становятся неупорядоченными. Стоимость использования индекса быстро возрастает, а при реорганизации вся структура становится недоступной. Алгоритмы хеширования не задействуют требующих реорганизации вторичных структур, им не нужны определенный пользователем алфавитный порядок и сортировка данных перед занесением или вставкой.

Хеш-секционирование позволяет по значениям первичного ключа поместить на один узел сходные строки из разных таблиц. Если соединение выполняется по первичным ключам обеих таблиц, подлежащие соединению строки будут находиться на одном узле и принадлежать одному процессору AMP. Расположение соединяемых строк в памяти одного узла приводит к уменьшению межузлового трафика и времени выполнения запроса, а само межузловое соединение высвобождается для другой работы (рис. 4). Для размещения хешированных данных требуется лишь выбрать столбцы, образующие первичный индекс таблицы, а затем процесс физического размещения данных полностью осуществляется в автоматическом режиме. Не нужно изменять размеры и переименовывать файлы, предпринимать выгрузку или перезагрузку данных.

Рис. 4. Операция соединения, позволяющая избежать избыточной нагрузки на межузловое соединение: подлежащие соединению строки принадлежат одному процессору AMP

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

Секционированный первичный индекс

Выгоды хеширования данных обусловлены включением секционирования во все решения Teradata. Секционированный первичный индекс (partitioned primary index, PPI) позволяет разделять таблицы по интересующим столбцам. Наряду с этим он используется для равномерного распределения данных, локализации операций соединения данных, принадлежащих одному процессору AMP, и эффективного доступа к ним (если значения первичного ключа указаны в запросе).


1 2 3

30.03.2006г


Также в разделе:

Новости ОСП-ТВ - 19.03.10


30/03/2006 №02

Врожденный параллелизм
Керри Болинджер
Параллелизм проникает повсюду, его необходимость обусловлена ростом объемов данных, количества приложений и пользователей информационных хранилищ. Он просачивается снизу, наслаивается сверху и встраивается внутрь почти всех СУБД и хранилищ данных.
Межведомственная интеграция
Ирина Полотнюк
Органам государственного управления необходимо обобщенное представление межведомственной информации, позволяющее по одному запросу получать консолидированные сведения из нескольких источников и выполнять их комплексный анализ. Ни один из имеющихся подходов не позволяет
Открытая система поддержки разработки
Алексей Сивенцев
Быстрый рост рынка заказной разработки программного обеспечения дает шанс отечественным компаниям занять на нем достойное место. Однако для этого России требуется достаточное число разработчиков, способных выпускать качественные продукты. Один
Хроники Pentium
Роберт Колвелл
В июне 1990 года я поступил в Орегонское отделение микропроцессоров корпорации Intel в качестве ведущего компьютерного архитектора и приступил к работе над проектом P6. Штат этого отделения впоследствии составили несколько

Содержание

Современные архитектуры

Руководителю проекта

Разработчику

Книги

Системы управления базами данных

Советы и мнения

Интернет

Книжная полка ОС

Академия ОС

Программная инженерия

Разное

Менеджмент ИТ

Платформы

Новости

От редакции



Эта рубрика в архиве
Список номеров за



OSP.RU :: Написать письмо.