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

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

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

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

Для этих типов архитектур возможны два метода параллельной обработки: SMP (symmetric multiprocessing  -  симметричная мультипроцессорная обработка), которая обычно используется в сильносвязанных системах, и МРР (массивно-параллельная обработка), чаще всего используемая в больших слабосвязанных между собой машинах.

Программное обеспечение, которому необходимо использование общей памяти (подобно программам, использующим базы данных, которым постоянно нужен доступ к небольшим таблицам, хранящимся в памяти), хорошо работает на SMP-машинах, поскольку процессоры в сильносвязанных системах используют общую область памяти. В качестве примера SMP-машин можно привести ProLiant корпорации Compaq и рабочую станцию HP 9000 Series 700 компании Hewlett-Packard.

АППАРАТУРА ПОМОГАЕТ И ДРУГИМИ СПОСОБАМИ

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

МРР-машины также распределяют задачи между множеством процессоров, но каждый процессор в этих машинах обладает собственной памятью и копией операционной системы. Примерами таких МРР-систем являются Himalaya К20000 фирмы Tandem Computers и РоwerParallel System SP2 корпорации IBM.

Два способа получить полную отдачу

от мультипроцессорных машин при работе с БД

В зависимости от того какие приложения используются, в некоторых случаях SMP становится лучшим решением, чем МРР, и наоборот.

Обычно считается, что МРР-машины масштабируются лучше, чем SMP-машины, то есть МРР-машины могут работать с большей нагрузкой за счет добавления процессоров, дисков или памяти. Впрочем, SMP-системы сейчас постоянно улучшаются в этом отношении.

Лаборатория PC Week обнаружила, что добавление второго процессора к МРР-машине почти удваивает ее возможности в сфере обработки данных, в то время как добавление второго процессора к SMP-машине не дает такого ощутимого результата.

Например, во время проведенного лабораторией PC Week тестирования нескольких SMP-машин добавление второго процессора увеличило производительность обработки данных только на 58-75%. (Не следует забывать, что увеличение возможностей при использовании второго процессора будет более значительным, если также будут добавлены память и диски.) Базы данных, которые пользуются преимуществами аппаратуры и операционных систем, используемых SMP- и МРР-машинами, начинают приобретать некоторые возможности, которые увеличивают их производительность. Эти возможности включают параллельные загрузку и выгрузку данных, оптимизацию очереди и разделение данных.

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

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

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

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

РАЗДЕЛЕНИЕ ДАННЫХ ДРОБИТ РАБОТУ

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

Данные могут быть распределены любым из трех методов: алгоритмом хеширования, определенной пользователем программой или программой "карусели". Каждый метод ориентирован на соответствующее применение.

Алгоритм хеширования  -  просто формула, которая использует значение ключевого поля для размещения данных. Недостаток хеширования в том, что оно может привести к неравномерному распределению данных (асимметричности данных), которое замедляет время получения ответов на некоторые запросы.

Определяемая пользователем программа распределяет данные по разным дискам в зависимости от имени конкретной таблицы или значения поля. Например, клиентские записи с именами, начинающимися с букв от "А" до "1", размещаются на диске 1, записи для клиентов с именами на "J" - "R"  -  на диске 2, а записи для клиентов с именами на "S" -  "Z"  -  на диске 3.

Метод "карусели" просто последовательно помещает каждую новую запись на следующий диск так, что в трехдисковой системе запись 1 будет помещена на диск 1, запись 2  -  па диск 2, запись 3  -  на диск 3, а запись 4  -  снова на диск 1, и так по кругу.

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

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

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

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

Боб Галахер

Версия для печати