disserx

advertisement
Оглавление
Введение .............................................................................................................................. 2
Глава 1.
Анализ современных методов параллельной обработки запросов............. 7
1.1.
Классификация параллельных архитектур БД ................................................. 7
1.2.
Масштабируемость существующих СУБД ...................................................... 8
1.3.
Основные типы параллелизма ......................................................................... 11
1.4.
Расширяемость параллельных СУБД и архитектуры параллельных систем
13
1.5.
Глава 2.
Основные понятия реляционной алгебры ...................................................... 16
Разработка интеллектуального агента распараллеливания запросов ....... 17
2.1.
Архитектура интеллектуального агента ......................................................... 17
2.2.
Разработка алгоритма машинного обучения .................................................. 17
Глава 3.
Преобразование запросов для параллельного исполнения ....................... 17
Глава 4.
Оценка результатов ........................................................................................ 17
Введение
Проблема повышения производительности систем управления базами данных
(СУБД) в настоящее время продолжает оставаться актуальной. Увеличение
количества пользователей, работающих с базой данных и возрастание объемов
обрабатываемой
информации,
требует
соответствующего
повышения
быстродействия баз данных для обеспечения приемлемого времени реакции на
пользовательский запрос.
Эффективной
и
экономически
обоснованной
альтернативой
однопроцессорным СУБД являются параллельные СУБД, функционирующие
одновременно на нескольких процессорах. Применение параллельных СУБД
позволяет объединить несколько маломощных машин для получения того же
самого уровня производительности, что и в случае одной, но более мощной
машины, получая выигрыш в масштабируемости и надежности системы, по
сравнению с однопроцессорными СУБД.
В настоящее время СУБД используются практически во всех сферах
человеческой деятельности, связанных с хранением и переработкой информации.
Прогресс, достигнутый в области технологий баз данных, в значительной мере
базируется на реляционной модели, предложенной Э. Коддом на рубеже 60-х - 70-х
годов XX века. За свою тридцатилетнюю историю реляционные СУБД прошли путь
от научно-исследовательских прототипов, наиболее значительными из которых
являются System R и Ingres, до коммерческих продуктов, способных хранить и
обрабатывать терабайты информации. Однако научная и практическая деятельность
человека выдвигает все новые масштабные задачи, требующие обработки
сверхбольших баз данных.
Анализируя существующие методы работы с данными, можно прийти к выводу, что
они не в полной мере отвечают всем предъявляемым к ним в настоящий момент
требованиям. Об этом, в частности, свидетельствуют интенсивные научные
исследования в области баз данных, проводимые в настоящее время в России и за
рубежом.
Возникновение сверхбольших баз данных связано с расширением видов и сфер
применения СУБД. Примерами новых приложений баз данных являются
электронная коммерция [72], электронные библиотеки [14, 63], геоинформационные
системы [39], мультимедийные архивы [76], научные базы данных [48, 92].
Сегодня наблюдается повышение спроса к технологиям параллельных и
распределенных СУБД со стороны как крупных, так и средних компаний связанное
с тем, что этап локальной автоматизации филиалов ими, в основном, успешно
пройден. Дальнейшим логическим шагом в направлении развития информационных
систем данного класса является создание единой базы данных обеспечивающей
возможность оперативного доступа и анализа данных, а также решение
специфических для компании (в зависимости от сфер ее деятельности) вопросов
[27].
Фактически, единственным известным на сегодняшний день эффективным
решением проблемы хранения и обработки сверхбольших баз данных является
использование параллельных систем баз данных [61, 47] с репликацией хранящейся
информации,
обеспечивающих
параллельную
обработку
запросов
на
многопроцессорных вычислительных системах.
Интенсивные научные исследования в области параллельных СУБД были начаты в
80-х годах. В течение последних двух десятилетий параллельные системы баз
данных
проделали
путь
полнофункциональным
высокопроизводительных
от
научно-исследовательских
коммерческим
продуктам,
информационных
систем.
прототипов
поставляемым
В
качестве
на
к
рынок
примеров
успешных коммерческих проектов создания параллельных систем баз данных
можно привести целый ряд продуктов - DB2 Parallel Edition [11], NonStop SQL [37]
и NCR Teradata[21]. Однако стоимость такого специализированного программного
обеспечения для данных систем сопоставима, а в некоторых случаях и выше
стоимости аппаратной составляющей.
Подобные системы объединяют сотни процессоров и жестких дисков и способны
обрабатывать базы данных в десятки терабайт. Тем не менее, в области
параллельных систем баз данных до сих пор остается ряд направлений, требующих
дополнительных научных исследований [97, 10]. Одно из них -дальнейшее развитие
методов оптимизации запросов для исполнения в составе параллельных и
распределенных систем баз данных. Кроме того, многими исследователями
справедливо указывается на ограничения в масштабируемости большинства
существующих
параллельных
баз
данных
из-за
ограничений,
присущих
архитектуре систем, поддерживающих их работу [20]. При большом количестве
процессоров в системах такого рода начинают возникать конфликты доступа к
разделяемой памяти, что может привести к серьезной деградации общей
производительности
системы
[95].
В
соответствии
с
этим
реальная
масштабируемость так называемых SMP систем ограничивается 32 процессорами
[98].
Как указывается в одном из отчетов, написанным ведущими специалистами в
области систем управления базами данных, о направлениях исследований в области
развития баз данных [46], в ближайшем будущем крупные организации будут
располагать базами данных объемом, превышающим один петабайт.
В случае реализации возможности использования стандартного программного
обеспечения для широко масштабируемых массово-параллельных архитектур
существенно сокращается общая стоимость решения. В качестве таких систем
можно рассматривать набор существующих серверов СУБД, входящих в состав
высокоскоростной локально-вычислительной сети предприятия, изначально не
использующих параллельной обработки данных. Использование их ресурсов для
параллельной обработки отношений позволит отказаться от приобретения
дорогостоящих программно-аппаратных конфигураций.
Все известные на сегодняшний день подходы к параллельной обработке запроса
основываются на разделении нагрузки между узлами системы в средней и конечной
стадии формирования плана исполнения запроса. Учет особенностей параллельной
обработки запроса уже в начальной стадии компиляции позволяет достичь ряда
преимуществ. В частности, упрощается процедура разработки программного
обеспечения для параллельной обработки запроса, обеспечивается работа в составе
гетерогенных СУБД, дальнейшая обработка запроса допускает использование уже
известных методов параллельного вычисления. Таким образом, актуальность темы
диссертации обуславливается отсутствием методов и программного обеспечения
для
обеспечения
параллельной
обработки
запросов
в
начальной
стадии
компиляции.
Диссертационная работа выполнена в рамках научного направления Воронежского
государственного технического университета - «Вычислительные системы и
программно-аппаратные электротехнические комплексы».
Цель работы:
Целью работы является разработка методов параллельного исполнения SQLзапросов при помощи интеллектуального агента распараллеливания для повышения
производительности распределенных СУБД.
Задачи исследования:
Исходя из указанных целей исследования, его основными задачами являются:
1. Выполнить анализ современных архитектур СУБД и методов, применяемых в
них для параллельного исполнения SQL-запросов, обобщить анализ современного
состояния исследований в области применения методов параллельной обработки
запросов.
2. Разработать эффективный метод распараллеливания запросов в гетерогенных
средах с доказательством их корректности.
3. Разработать алгоритмы и программные средства для параллельного исполнения
SQL-запросов, обеспечить их совместимость с существующими СУБД.
4. На основе полученных результатов реализовать интеллектуальный агент
распараллеливания
и
провести
вычислительный
эксперимент,
разработанные методы и алгоритмы. Методы исследования:
используя
При выполнении работы использованы методы булевой алгебры, реляционной
алгебры, имитационного моделирования, математической статистики, теории
графов, элементы математического анализа, элементы системного анализа.
Научная новизна работы:
В
результате
проведенного
исследования
были
получены
результаты,
характеризующиеся научной новизной:
• метод параллельного исполнения SQL-запросов, с использованием нейронной
сети;
• алгоритм обучения интеллектуального агента распараллеливания;
• априорные оценки эффективности распараллеливания запросов, отличающиеся
учетом особенностей исполнения запросов в гетерогенных системах с репликацией
данных, и позволяющие быстро оценить целесообразность применения созданного
метода распараллеливания SQL-запросов на этапе конфигурирования системы;
• структура программного обеспечения препроцессора СУБД, отличающегося
возможностью распараллеливания SQL-запросов и обеспечивающего ускорение их
обработки средствами СУБД, не ориентированных на параллельное исполнение.
Практическая значимость работы.
Практическая
значимость
работы
заключается
в
создании
специального
программного обеспечения, обеспечивающего распараллеливание SQL-запросов до
начала их исполнения в гетерогенных СУБД, а также алгоритмов рационального
выбора атрибута разделения отношений.
Публикации:
Основные результаты диссертации опубликованы в 3 научных работах. Список
работ включен в список литературы.
Структура и объем работы:
Работа состоит из введения, четырех глав, заключения, списка литературы,
включающего в себя 101 наименование и трех приложений. Основная часть работы
изложена на 137 страницах, содержит 32 таблицы и 24 рисунка.
Глава 1.
Анализ
современных
методов
параллельной
обработки
запросов
1.1.
Классификация параллельных архитектур БД
Фактически определились три архитектурных направления:
1) Симметричные
многопроцессорные
системы(SMP)
–
наиболее
часто
используемая форма сильно связанных многопроцессорных систем, т.е.
систем, разделяющих единую оперативную память и наиболее часто –
дисковую подсистему (см. Рисунок 1)
Рисунок 1. - Архитектура SMP
2) Слабосвязанные
самостоятельных
многопроцессорные
компьютеров,
системы
объединенных
–
в
совокупность
единую
систему
быстродействующей сетью и, возможно, имеющих общую дисковую
подсистему, как, например, кластерные инсталляции (см. Рисунок 2).
Рисунок 2. - Архитектура слабосвязанных многопроцессорных систем
Системы с массовым параллелизмом (MPP) – системы с сотнями и даже тысячами
процессоров, детали их реализации могут значительно различаться (см Рисунок 3).
Рисунок 3. - Архитектура MPP
Наиболее оптимальными с точки зрения стоимости и
наращивания
можно
считать
прозрачности
симметричные
многопроцессорные
платформы(SMP).Добавление процессоров в них обходится относительно дешево, и
при
использовании
соответствующих
программ
не
требует
изменения
программного обеспечения или принципов администрирования, причем, начиная
уже с однопроцессорных систем. Для более дорогостоящих и ответственных систем
необходимый уровень резервирования может быть достигнут с помощью кластеров,
в т.ч. состоящих из SMP-систем.
1.2.
Масштабируемость существующих СУБД
Можно выделить четыре группы требований, определяющих с технической
точки зрения потребительские качества современной СУБД:
1) масштабируемость;
2) производительность;
3) возможность смешанной загрузки разными типами задач;
4) обеспечение постоянной доступности
5) данных.
Масштабируемость -
такое
свойство
вычислительной
обеспечивает предсказуемый рост системных характеристик
системы,
которое
при добавлении к
ней вычислительных ресурсов. В случае сервера СУБД можно рассматривать два
способа
масштабирования - вертикальный и горизонтальный.
Рисунок 4. - Горизонтальное масштабирование
При горизонтальном подходе увеличивается число серверов СУБД, возможно,
взаимодействующих друг с другом в прозрачном режиме, разделяя таким образом
общую загрузку системы.
Вертикальное
масштабирование
подразумевает
увеличение
мощности
отдельного сервера СУБД. Хорошим примером может служить увеличение числа
процессоров в симметричных многопроцессорных (SMP) платформах. При этом
программное обеспечение сервера не должно изменяться, например, требовать
дополнительных модулей, т.к. это увеличило бы сложность администрирования и
ухудшило предсказуемость системы.
Рисунок 5. - Вертикальное масштабирование
Для вертикального масштабирования все чаще используются симметричные
многопроцессорные системы (SMP),
поскольку в этом случае не требуется
смены платформы, т.е. операционной системы, аппаратного обеспечения, а также
навыков администрирования.
При оценке сервера СУБД на базе SMP платформы стоит обратить
внимание
на
две основные характеристики расширяемости архитектуры: адекватность и
прозрачность.
Свойство адекватности требует, чтобы архитектура сервера равно поддерживала
один или десять процессоров без переинсталляции или существенных изменений в
конфигурации, а также дополнительных программных модулей.
Приложение не должно учитывать подробности реализации аппаратной
архитектуры - способы манипулирования данными и
доступа
программный
интерфейс
к базе данных обязаны оставаться одинаковыми и в равной
степени
эффективными (прозрачность). Запросы могут обрабатываться
несколькими задачами или разделяться на подзадачи, которые в
последовательно
свою
очередь
могут быть выполнены параллельно.
Рисунок 6. - Вертикальное масштабирование
Среди многих факторов, влияющих на производительность СУБД, рассмотрим два,
имеющие прямое отношение к нынешним параллельным вычислительным
платформам:
1) поддержка параллелизма;
2) реализация многопотоковой архитектуры
Одним из способов достижения более высокой производительности
является
использование алгоритмов распараллеливания заданий.
В СУБД существует три области применения таких алгоритмов:
1) параллельный ввод/вывод
2) параллельные средства и утилиты администрирования
3) параллельная обработка запросов к базе данных
1.3.
Основные типы параллелизма
В программном обеспечении базы данных могут быть предусмотрены три
вида параллелизма, присущие приложениям интенсивной обработки данных:
1) межзапросный параллелизм
2) внутризапросный параллелизм
3) внутриоперационный параллелизм
Межзапросный параллелизм предполагает одновременное выполнение множества
запросов, относящихся к разным транзакциям.
Рисунок 7. - Межзапросный параллелизм
Под внутризапросным параллелизмом понимается одновременное выполнение
сразу нескольких операций (например операций выборки), относящихся к одному
и тому же запросу.
Рисунок 8. - Внутризапросный параллелизм
Понятие внутриоперационного параллелизма означает параллельное выполнение
одной операции в виде множества субопераций с применением, в дополнение к
фрагментации данных, также фрагментации функций.
Рисунок 9. - Внутриоперационный параллелизм
Рассмотрим характеристики параллельных и распределенных СУБД:
1) Распределенная/параллельная база данных - это именно база данных, а не
"коллекция" файлов, индивидуально хранимых на разных узлах сети.
2) Система
обладает полной функциональностью СУБД. Она не сводится по
своим возможностям ни к распределенным файловым системам, ни к
системам обработки транзакций.
3) Распределение
(включая фрагментацию и репликацию) данных по
множеству узлов невидимо для пользователей (прозрачность).
Технология
распределенных/параллельных
баз
данных
основополагающую для управления базами данных концепцию
распространяет
независимости
данных на среду, где данные распределены и тиражированы по множеству
компьютеров, связанных сетью.
Это обеспечивается за счет нескольких видов прозрачности: прозрачность сети
(следовательно,
прозрачность
распределения),
прозрачность
репликации
и
прозрачность фрагментации.
Прозрачность доступа означает, что пользователи имеют дело с единым логическим
образом базы данных и осуществляют доступ к распределенным данным точно так
же, как если бы они хранились централизованно.
В идеале полная прозрачность подразумевает наличие языка запросов к
распределенной СУБД, не отличающегося от языка для централизованной СУБД.
Высокая производительность - одна из важнейших целей, на достижение которой
направлены технологии параллельных СУБД. Как правило, она обеспечивается за
счет сочетания нескольких взаимно дополняющих решений, таких как применение
операционных систем, ориентированных на поддержку баз данных, параллелизм,
оптимизация, баланс загрузки.
Наличие операционной системы, "осведомленной" о специфических потребностях
баз данных, упрощает реализацию функций баз данных нижнего уровня и
способствует снижению их стоимости.
Затраты на передачу сообщения могут быть значительно снижены за счет
применения специализированного коммуникационного протокола.
Технологии распределенных и параллельных СУБД направлены
повышение надежности, поскольку
также
на
благодаря репликациям
данных
исключаются одиночные точки отказа.
Отказ одного узла
всей
или сбой на линии связи не приводит к выходу из строя
системы. Даже если часть данных становится недоступной, при
правильной организации системы пользователи могут иметь доступ к остальной
части информации.
1.4.
Расширяемость параллельных СУБД и архитектуры параллельных
систем
В идеале параллельная (и, в меньшей степени, распределенная) СУБД
обладает свойством
линейной расширяемости и линейного ускорения.
Под линейной расширяемостью понимается сохранение
производительности
при увеличении размера
того же
базы данных
уровня
и
одновременном пропорциональном увеличении процессорной мощности и объема
памяти. Линейное
ускорение означает, что с наращиванием процессорной
мощности и объема памяти при сохранении прежнего размера базы данных
пропорционально возрастает производительность.
Наиболее популярна в настоящее
время
архитектура
клиент-сервер,
когда
множество машин-клиентов осуществляют доступ к одному серверу баз данных
Рисунок 10.
Архитектура клиент-сервер
Архитектура типа много-клиентов/много-серверов, когда база данных размещена
на
множестве
серверов,
пользовательского
которым,
запроса
или
для
того
выполнить
чтобы
вычислить результат
транзакцию,
необходимо
взаимодействовать друг с другом.
Рисунок 11.
Архитектура много-клиентов/много-серверов
В истинно распределенной СУБД клиентские и серверные машины не различаются.
В идеале каждый узел может выступать и как клиент, и как сервер.
Рисунок 12.
Архитектура много-клиентов/много-серверов
Архитектуры параллельных систем варьируются между двумя
крайними точками,
называемыми архитектура без разделяемых ресурсов и архитектура с разделяемой
памятью. Промежуточную позицию занимает архитектура
с
разделяемыми
дисками.
В случае неразделения ресурсов каждый процессор имеетэксклюзивный доступ к
собственной оперативной памяти и к набору дисков.
Архитектуры
без
разделяемых
ресурсов
обладают
тремя
важнейшими
преимуществами: низкие затраты, расширяемость, высокая доступность. Наиболее
существенные проблемы - сложность реализации и (потенциальные) трудности
соблюдения баланса загрузки.
Подход, основанный на разделении памяти, заключается в том, что каждый
процессор посредством быстрых линий связи (высокоскоростных шин или кросспанельных коммутаторов) соединен со всеми модулями памяти и дисковыми
устройствами.
Сильные стороны - простота и хороший баланс загрузки.
Наиболее существенные проблемы -
стоимость,
ограниченная
невысокая надежность.
В
системах
с
разделяемыми
дисками
каждый
расширяемость,
процессор имеет
доступ к любому дисковому
устройству
специальных соединений и эксклюзивный доступ к своей
посредством
собственной
оперативной памяти.
Преимущества: низкие затраты, расширяемость, хороший баланс загрузки, высокая
доступность, простота миграции с однопроцессорных систем.
Трудности: сложность системы, потенциальные проблемы производительности.
1.5.
Основные понятия реляционной алгебры
Приведем основные величины:
U – множество атрибутов (универсум),
D – множество доменов,
dom: U→D – полная функция из U в D,
R = {R1,R2,...,Rp} – множество различных схем отношений,
U для 1≤ i≤ р, d = {r1,r2,...,rр} – множество таких отношений, что ri есть
где Ri
отношение со схемой Ri,1≤i≤р.
Θ — множество бинарных отношений над доменами из D,
содержащее по крайней мере отношения = и ≠ для каждого домена.
Реляционной алгеброй над U, D, dom, R, d и называется 7-местный
кортеж
R=(U,D,dom,R,d, Θ ,O), где О – множество операторов объединения, пересечения,
разности, активного дополнения, проекции, естественного соединения, деления,
переименования, использующего атрибуты из U, выбора, использующего
отношения из Θ.
Алгебраическим выражением
над
R
называется любое выражение,
правильно построенное (согласующееся с ограничениями, наложенными на
операторы) из отношений, принадлежащих d, и постоянных отношений со
схемами из U, использующих операторы из О.
Допускаются круглые скобки и предполагается, что одни бинарные операторы не
обладают преимуществом над другими, за исключением обычного преимущества ∩
над ∪,
для последовательностей
отношений, связанных
одним
и
тем же
оператором, если эта операция является ассоциативной, скобки можно опускать,
но два отношения с одной и той же схемой не допускаются.
Схема отношения-результата sch(E) зависит от схем множества
отношений,
составляющих алгебраическое выражение Е,и определяется рекурсивно:
Если Е есть ri, то sch(Е) является схемой отношения ri.
Если
1
2
1
2
1
2
E1
C
1
или
, где С – это некоторое
множество условий, то sch(Е) = sch(Е1).
Если
, то sch(Е) = X.
Если Е = E1÷ E2, то sch(Е) = sch(E1) – sch(E2).
Если Е = E1
E2 или E1[C]E2, для некоторого множества
условий С,то sch(Е) = sch(E1) ∪ sch(Е2 ).
Если EA1, A2, ..., Ak←B1, B2, ..., Bk(E1),
то sch(Е) = (sch(E1) –A1A2… Ak)B1B2 ... Bk.
Если Е является алгебраическим выражением, в которое входят имена отношений
s1, s2, ..., sq, соответствующие схемам S1, S2, ..., Sq, то Е является
отображением
Е: Rel(S1) ×Rel(S2)×... × Rel(Sq)→Rel(sch(E)),
где Rel(R) – множество всех отношений со схемой
R.
Обозначают Е(s1, s2, ..., sq) для значения Е на множестве отношений с именами s1,
s2, ..., sq.
Глава 2.
Разработка интеллектуального агента распараллеливания
запросов
2.1.
Архитектура интеллектуального агента
2.2.
Разработка алгоритма машинного обучения
Глава 3.
Преобразование запросов для параллельного исполнения
Глава 4.
Оценка результатов
Download