|
| ||||||||||||
| ||||||||||||
|
2008 г.
Обзор алгоритмов MOLAPЮрий Кудрявцев, факультет ВМиК МГУ ПодразделыQuotient CubeРазбиение на классы ячеекИдея этого алгоритма состоит в том, чтобы вместо хранения всех ячеек куба хранить только классы ячеек с одинаковым значением агрегирующей функции. Если же указать выпуклое разбиение (т.е. если две ячейкиОднако разбиение только по значению агрегирующей функции разрушает семантику куба (и тем более не выпукло). Покажем это.
Например, рассмотрим еще раз таблицу Продажи из введения (Таблица 5.1). Получившиеся разбиение изображено на рис. 5.1.
У нас получается следующая схема (рисунок 5.2).
Выбор агрегирующей функции в данном случае не важен, т.к. у нас есть возможность двигаться в обе стороны по отношениям roll-up/drill-down. Например, можно пойти вверх от ячейки (ALL, ALL, ALL) в С2 в ячейку (ALL, книги, ALL) в C5, а потом в (R2, книги, ALL) в С2. Тем самым, нарушается семантика отношений roll-up/drill-down. Таким образом, мы показали, что разбиение только по значению агрегирующей функции не порождает связанной решетки классов эквивалентности. Необходимы какие-то ограничения. В первых работах по данному алгоритму в качестве разбиения предлагалось так называемое связанное разбиение, однако оно верно только для монотонных функций (Sum (слагаемые одного знака), Count и пр). Впоследствии было предложено разбиение по покрытию. Поэтому здесь в примерах используется AVG — немонотонная функция.
Будем рассматривать кортежи куба как решетку (CL(r), Cube Lattice над отношением r) с введенным порядком, определенным иерархиями измерений (т.е.
Определение 5.2
Будем говорить, что в частично упорядоченном множестве
Следующая лемма показывает, что отношение покрываемости будет определять частичный порядок на множестве.
Лемма 1
Если
Отношение покрываемости в решетке
На диаграмме частично упорядоченного множества
Определение 5.3
Отношение покрытия для решетки куба
Кортеж
Определение 5.4
Отношение эквивалентности по покрытию
Определим отношение эквивалентности
Введенные определения и теоремы позволяют утверждать, что разбиение по покрытию формирует полную решетку куба, только ячейками этой решетки будут являться классы ячеек обычной решетки. Причем у каждого класса будет существовать верхняя и нижняя грань, решетка будет связанной и выпуклой. Значения всех дистрибутивных и алгебраических функций для всех ячеек подобного класса эквивалентности будет совпадать. Рассмотрим тот же пример, только на этот раз разбиение будет вестись по покрытию (рис. 5.4). Соответствующая решетка по классам показана на рис. 5.5. Таким образом, для получившегося куба нам нужно хранить только две ячейки на класс, верхнюю и нижнюю грань. Остальные ячейки выводятся из верхней и нижней грани, т.к. классы разбиения по покрытиям''полны'' в смысле введенного частичного порядка. Для Quotient Cube предложено две структуры хранения данных: QC - Tables [12] и QC-Trees [11]. QC-Table — простая таблица, в которой для каждого класса хранится верхняя и нижняя грань. Предложены алгоритмы создания QC-Table и вставки/удаления классов. Такие таблицы неэффективны по времени обработки запросов, т.к. каждый запрос требует просмотра почти всей таблицы. QC-TreesQC-Tree — дерево с разделением префиксов, где грани представляются строчками, а связи отражают необходимые отношения drill-down. Основной идеей QC-деревьев является то, что верхние грани классов куба хранят всю необходимую информацию для выполнения запросов. Т.е. при данном подходе не хранятся даже нижние грани классов. При такой структуре хранения данных запросы над Quotient-кубами выполняются эффективнее запросов над DWARF-кубами. Достигается это превосходство на основе аналогичного по смыслу устранения суффиксной и префиксной избыточностей. QC-деревья позволяют устранять суффиксную избыточность за счет того, что хранятся только классы, а не отдельные ячейки. Префиксная избыточность устраняется за счет свойств самой структуры QC-tree.
Определение 5.5
QC-Tree куба Q — это орграф
Только последнее из условий требует каких-либо объяснений. Оно просто утверждает,
что если С напрямую специализирует D в Q, то это возможно либо по ребру дерева,
либо по связи из какого-либо префикса пути, представляющего верхнюю грань С, к
вершине, которая приведет к верхней грани D.
Доказана теорема, о том, что QC-дерево для каждого Quotient куба уникально. Существуют алгоритмы создания/поддержки QC-деревьев. Выполнение запросов на QC-деревьях сильно отличается от аналогичных алгоритмов в других методах, т.к. необходимо ''выводить'' содержимое ячейки из верхней и нижней гранях класса. Аналогично, поддержка изменений информации требует пересмотра решетки классов, что, в общем случае, замедляет внесение изменений. В таблице 5.2 показаны классы и верхние грани Quotient-куба для примерных данных из таблицы 5.1, а на рис. 5.6 — соответствующее QC-Tree. Выполнение различных типов запросовТочечные запросыАлгоритм.
Примеры
Интервальные запросыЗапрос:Порядок обработки запроса (*, книги, еда, весна) следующий:
корень
корень
Обратные запросыПрямой оптимизации по выполнению обратных запросов метод не дает. Но возможно построение индексов B+ деревьев по мерам в QC-деревьях. Это поможет в выполнении обратных запросов, не накладывающих ограничений на измерения. В случае наличия ограничений в запросе можно оставить в QC-дереве только вершины, удовлетворяющие условию и их предков. Получится поддерево, на котором нужно выполнить интервальный запрос.Intelligent Roll-Up QueriesТакже необходимо отметить, что метод Quotient-кубов дает быстрый ответ на так называемые "умные" roll-up запросы (Intelligent Roll-Up Queries). Ответ на данные запросы дается во время построения Quotient-кубов, т.к. это и есть верхние и нижние границы кубов.
|
|
CITForum © 1997–2025