34
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2012
КОП — код реляционной операции, реализуемой данным
узлом;
указатель на скобочный шаблон левого дочернего узла;
указатель на скобочный шаблон правого дочернего узла
пусто» для унарных операций).
Рис. 1. Алгоритм выполнения плана запроса на базе итераторной модели
Сам по себе скобочный шаблон не содержит конкретной реали-
зации реляционной операции. Однако после оптимизации запроса
СУБД «вставляет» в каждый скобочный шаблон ту или иную реализа-
цию соответствующей реляционной операции. Например, для операции
соединения СУБД может выбрать один из следующих кодов: «соедине-
ние вложенными циклами», «соединение сортировкой и слиянием»,
«
соединение хешированием». При выполнении этой операции узел об-
ращается к скобочным шаблонам своих дочерних узлов.
Рассмотрим, какие изменения вносят колоночные базы данных в
каждый из рассмотренных принципов.
Синхронный конвейер
.
В колоночных СУБД при реализации
конвейера учитываются следующие особенности:
в связи с фундаментальными отличиями в организации хране-
ния информации на физическом носителе операции выполняются не
над кортежами отношения, а над блоками атрибутов отношения;
существует возможность проводить операции не над данными
(
блоками), а над позициями значений в этих блоках;
между узлами конвейера могут передаваться как позиции, так
и указатели на блоки данных.
Пример конвейера колоночного хранилища для простого запроса
по двум атрибутам таблицы, использующего перечисленные выше
возможности, представлен на рис. 2. Результатами операций 5 и 6 яв-
ляются позиции значений в атрибутах. Списки полученных позиций
передаются и обрабатываются (соединяются, пересекаются и др.) в
операторе 4, результат действия которого попадает в операторы 2 и 3,
считывающие указанные в полученном наборе позиций значения.