Юрий Кудрявцев, факультет ВМиК МГУ
Алгоритм DWARF (карлик) (см. [21]) назван так с намеком на звезды карликового типа, которые имеют небольшой объем, но огромную массу. Это синтаксический алгоритм, распознающий два типа избыточности хранения данных и устраняющий их во время создания и поддержки куба.
Ключевыми понятиями алгоритма являются префиксная избыточность и суффиксная избыточность (см. определения).
В пользу практического использования алгоритма DWARF говорит автоматическое нахождение префиксных и суффиксных избыточностей, не требующее каких-либо знаний о распределении данных, типов, значений. При этом эффективность сжатия одинаково высока как и для ''разреженных'', так и для ''плотных'' кубов. В большинстве случаев даже для очень плотных кубов размер результирующего DWARF куба меньше размера базовой таблицы. Если для ''плотных'' кубов улучшения происходят за счет префиксной избыточности, то, по мере того как кубы становятся ''разреженнее'', возрастает доля суффиксной избыточности.
Не менее важным является сокращение времени создания и расчетов. Каждый избыточный суффикс идентифицируется до его вычисления, что ведет к существенным уменьшениям времени создания. Более того, вследствие уменьшения общего размера куба пропорционально падает и время обработки запросов.
DWARF успешно распознает подобный тип изыбыточности и устраняет его за счет хранения каждого префикса лишь один раз.
|
|
Для начала приведем пример структуры куба, а в дальнейшем дадим формальное определение. Рисунок 2.1 показывает структуру куба для таблицы 1.1, в качестве агрегирующей функции используется SUM.
Вершины пронумерованы в порядке их создания. Высота куба равна числу измерений, каждое из которых относится к одному из уровней, как показано на рисунке.
Корневая вершина содержит ячейки вида {ключ, указатель} для каждого значения первого измерения. Указатель каждой ячейки направлен к лежащей ниже вершине, которая содержит все различные значения следующего измерения, ассоциированные с ключом ячейки.
Каждая вершина содержит специальную ячейку ALL, изображенную серой областью справа от вершины, содержащую указатель и отвечающую всем значениям вершины. Каждый лист L имеет форму {ключ, агрегирующее значение} и содержит агрегирующее значение всех кортежей, которые удовлетворяют пути (паттерну) от корня к L. Каждый лист содержит и ALL ячейку, которая содержит агрегирующее значение всех ячеек вершины.
На рисунке 2.1 все вершины, к которым идет более одного указателя, поглощают несколько путей (возможных вершин).
С помощью приведенной ниже модели можно показать, что вычислительная сложность алгоритма и объем результирующего куба равны:
— число измерений
— мощность измерения
— число фактических кортежей
Приведем некие трактовки данного результата.
Причем
для реальных баз данных довольно мало.
Левое сжатие (Left Coalescing) происходит на всех группировках,
имеющих общий префикс
, где
Сжатие разреженности работает только на тех областях куба, где существует только один фактический кортеж. В свою очередь, сжатие связанности расширяет данный метод путем сжатия на подкубах. Например, для таблицы 1.1 из введения продукт ''еда'' продается только осенью.
Сжатие связанности, таким образом, представляет собой расширение понятия левого сжатия на случай наличия связей (implications) между значениями измерений. Подобные связи часто наблюдаются в реальных базах данных.
Авторы опускают необходимую при
создании DWARF-куба лексикографическую сортировку начальной
таблицы (во время создания куба появление нового префикса
означает необходимость создания новой вершины на уровне, где различаются
префиксы). Сортировка всей фактической таблицы —
или
в лучшем случае (сортировка слиянием, кучами или подсчетом, вычерпыванием). Но
с учетом NP-полноты начальной задачи, этим затратами можно пренебречь.
Пусть существует таблица фактических данных с
измерениями
(
), и количество фактических кортежей
. Не нарушая общности, положим
.
У получившегося сжатого куба (или DWARF-куба) корневая ячейка будет иметь вид,
показанный на рисунке 2.4. Группа
содержит ячейки, не имеющие связи с фактическими кортежами, группа
— ячейки, связанные с одним кортежем фактической таблицы,
— два
фактических кортежа.
Лемма 1
Если из набора равномерно распределенных
элементов выбрать некоторый элемент и повторить выбор
раз, то вероятность выбора этого
элемента ровно
раз приблизительно равна:
Равномерность — еще одно ограничение на входные фактические данные. В общем случае:
Коротко укажем дальнейшие пункты доказательства.
Применяя лемму 1 к группам
и подставляя
,
получим
Лемма 2
содержит
ячеек, которые адресуют ровно
кортежей.
В общем случае в
попадает
В случае неравномерного распределения кортежей, данная сумма будет отличаться от результатов [22], и это повлечет изменение всех дальнейших оценок в леммах.
Лемма 3
Число дубликатных ключей в вершине, на которую указывает ячейка группы
,
равно 0. (
)
Основываясь на введенных выше понятиях левого и хвостового сжатий, можно показать, что
и
Здесь
— число ячеек, подвергающихся левому сжатию, и
— число ячеек, подвергающихся хвостовому сжатию.
Из последней формулы получим следующее соотношение для числа ячеек куба:
А поскольку при устранении суффиксной избыточности DWARF, в отличие от других алгоритмов, проверяет каждую ячейку только один раз (автору неизвестны алгоритмы, которые для устранения суффиксной избыточности не проверяли бы каждую ячейку экспоненциальное число раз), получаем ту же оценку и для сложности работы алгоритма.
При использовании этого алгоритма структура куба сжимается синтаксически. Префиксная и суффиксная избыточности устраняются за счет создания лучшей системы адресации и хранения ячеек. Алгоритмы, предложенные для создания и модификации кубов с использованием данной структуры, являются наилучшими из всех синтаксических решений на данный момент. Таким образом, если не рассматривать различные эвристические алгоритмы или более глубоких семантические изменения, то в настояющее время этот синтаксический алгоритм или его различные (правда уже частично эвристические) модификации являются оптимальными для хранения и адресации OLAP — данных.