lec2013 Алгоритмы реляционной алгебры.ppt
- Количество слайдов: 33
05. 02. 2013 Реляционная алгебра множество операций, которые используют одну или несколько таблиц (отношений) в качестве операндов и продуцирует в результате новую таблицу. Основа для создания языков манипулирования данными: SQL (Structured Query Language) – структуризованный язык запросов QBE (Quere-By-Example) – запрос по образцу.
Операции обработки кортежей Изменение состава кортежей в каком-либо отношении. ДОБАВИТЬ - необходимо задать имя отношения и ключ кортежа. УДАЛИТЬ - необходимо указать имя отношения, а также идентифицировать кортеж или группу кортежей, подлежащих удалению. ИЗМЕНИТЬ - выполняется для названного отношения и может корректировать как один, так и несколько кортежей.
В состав теоретикомножественных операций входят операции: • объединения отношений; • пересечения отношений; • взятия разности отношений; • прямого произведения отношений.
Специальные реляционные операции включают: • ограничение отношения; • проекцию отношения; • соединение отношений; • деление отношений.
Операции обработки отношений На входе каждой такой операции используется одно или несколько отношений, результатом выполнения операции всегда является новое отношение.
В рассмотренных ниже примерах, которые заимствованы из книги Э. Озкарахан "Машины баз данных и управление базами данных" - М: "Мир", 1989, используются следующие отношения: P(D 1, D 2, D 3) Q(D 4, D 5) R(M, P, Q, T) S(A, B) 1 11 x x 101 5 a 2 11 y x 2 y 105 3 a 10 b 3 11 z y 1 z 500 9 a 15 c w 50 1 b 2 d 4 12 x w 10 2 b 6 a w 300 4 b 1 b
ПРОЕКЦИЯ /PROJECT / ВЕРТИКАЛЬНОЕ ПОДМНОЖЕСТВО. Операция проекции представляет из себя выборку из каждого кортежа отношения значений атрибутов, входящих в список A, и удаление из полученного отношения повторяющихся строк.
ВЫБОРКА / SELECT / - ОГРАНИЧЕНИЕ, ГОРИЗОНТАЛЬНОЕ ПОДМНОЖЕСТВО На входе используется одно отношение, результат - новое отношение, построенное по той же схеме, содержащее подмножество кортежей исходного отношения, удовлетворяющих условию выборки.
ОБЪЕДИНЕНИЕ / UNION / Отношения-операнды в этом случае должны быть определены по одной схеме. Результирующее отношение содержит все строки операндов за исключением повторяющихся
ПЕРЕСЕЧЕНИЕ / INTERSECT / На входе операции два отношения, определенные по одной схеме. На выходе - отношение, содержащие кортежи, которые присутствуют в обоих исходных отношениях.
РАЗНОСТЬ / SET DIFFERENCE Операция во многом похожая на ПЕРЕСЕЧЕНИЕ, за исключением того, что в результирующем отношении содержатся кортежи, присутствующие в первом и отсутствующие во втором исходных отношениях.
ДЕКАРТОВО ПРОИЗВЕДЕНИЕ / CARTESIAN PRODUCT Схема результирующего отношения включает все атрибуты исходных отношений. Кроме того: • степень результирующего отношения равна сумме степеней исходных отношений • мощность результирующего отношения равна произведению мощностей исходных отношений.
СОЕДИНЕНИЕ / JOIN Здесь добавлено условие, согласно которому вместо полного произведения всех строк в результирующее отношение включаются только строки, удовлетворяющие определенному соотношению между атрибутами соединения (А 1, A 2) соответствующих отношений.
ДЕЛЕНИЕ / DIVISION Пусть отношение R , называемое делимым, содержит атрибуты (A 1, A 2, . . . , An). Отношение S - делитель содержит подмножество атрибутов A: (A 1, A 2, . . . , Ak) (k<n). Результирующее отношение C определено на атрибутах отношения R, которых нет в S, т. е. Ak+1, Ak+2, . . . , An. Кортежи включаются в результирующее отношение C только в том случае, если его декартово произведение с отношением S содержится в делимом
Алгоритмы реляционной алгебры Операции манипулирования данными можно условно разделить на несколько групп данных, определяемых объемом требуемых вычислений в зависимости от объема обрабатываемых данных. В первую группу входят операции поэлементной обработки данных (вставка, удаление и обновление данных) и выборка по условию. При наличии индексирования время выполнения указанных операций пропорционально логарифму от объема обрабатываемых данных.
Алгоритмы реляционной алгебры Организация индексирования требует дополнительных затрат памяти, а увеличение числа атрибутов, по которым осуществляется индексирование, приводит к существенному снижению эффективности выполнения операций обновления данных. При отсутствии индексирования скорость выполнения перечисленных операции имеет линейную зависимость от объема обрабатываемых данных.
Основная группа наиболее трудоемких операций реляционной алгебры требует предварительной сортировки. Время выполнения операций пропорционально N*log N, где N - количество кортежей в отношениях. Эта группа включает операции проекции, соединения и деления, а также теоретико-множественные операции: объединения, пересечения и разности.
Основная группа Эта группа включает операции проекции, соединения и деления, а также теоретикомножественные операции: объединения, пересечения и разности. Кроме классических операций реляционной алгебры некоторые МБД предусматривают также операцию агрегации данных. Особое место занимает операция декартового произведения, время выполнения которой пропорционально произведению объемов отношений.
Классификация Реализация алгебраических операций ограничена применением следующих основных классов алгоритмов : - полный перебор (nested-loop); - слияние предварительно упорядоченных отношений (sort-merge); - разбиение отношений с помощью хеш-функций (hash).
Теория
Переборные алгоритмы рассматриваются как один из вариантов реализации реляционных операций. Организация внешнего перебора предполагает разбиение отношений на фрагменты и выполнение операций для всех возможных пар фрагментов из различных отношений. Причем размеры фрагментов должны допускать одновременное размещение данных в оперативной памяти (внутренний перебор).
Перебор Эти алгоритмы позволяют использовать практически неограниченное число процессоров и имеют следующую оценку времени выполнения операций по количеству обменов с внешней памятью : (N 1*N 2)/(P*M), где N 1 и N 2 - объем соответствующих отношений в страницах; M - размер оперативной памяти; P- число процессоров.
Перебор
Разбиение Противоположным механизму к-поточного слияния является процедура предварительного разбиения таблиц на части. Принадлежность строк указанным частям устанавливается путем вычисления значения хеш-функции для значений атрибутов, по которым, например, выполняется операция соединения. При этом значения хеш-функции определяют номер части таблицы, куда помещаются соответствующие строки.
Разбиение В результате разбиения выполнение алгебраической операции ограничивается объемом с одинаковыми номерами частей таблицы, причем для различных частей операция может выполняться параллельно. Недостатки хеш - алгоритмов связанны с неравномерным разбиением таблиц и ограниченностью числа частей разбиения. Эти недостатки приводят, в общем случае, к необходимости повторного разбиения.
Пересечение - hash
Пересечение - hash (продолжение)
Слияние Алгоритмы слияния предварительно упорядоченных отношений применяются во многих известных проектах, включая промышленную мультипроцессорную вычислительную систему Teradata (DBC/1012). Метод слияния состоит в последовательном просмотре упорядоченных отношений, что предполагает, в общем случае, выполнение предварительной сортировки. См. sort 03. ppt
Описание алгоритма Пусть необходимо упорядочить файл из n элементов. Доступно p процессоров. 1. Каждый i процессор читает 1/р файла и сортирует свой фрагмент ("быстрая сортировка" ). 2. Для упорядоченного фрагмента строиться индексная таблица: выбираются n/(p*p) элементы 3. Каждому указанному элементу приписывается № фрагмента и № элемента во фрагменте. Необходимо при страничной организации таблицы? ! 4. Индексная таблица записывается во внешнюю память.
Формирование индексной таблицы
Описание алгоритма 5. Все процессора читают «чужие» индексные таблицы объединяют (слияние) их, включая служебную информацию (№ фрагмента и № элемента). 6. Процессоры вычисляют «границы» слияния, т. е. определяют «максимально» допустимые строки для каждого параллельного потока слияния. 7. Процессоры осуществляют вывод фрагментов, во внешнюю память разбивая его на части в соответствии с полученными «границами» слияния. 8. Выполняется n – поточное параллельное слияние полученных частей фрагментов таблицы.
Р с а л з и б я и и н е н н и и е е .
Оба этапа вместе
lec2013 Алгоритмы реляционной алгебры.ppt