Концептуальная модель - это (минимальный) набор абстрактных понятий, описывающих отдельную область применения, класс задач или систем. Концептуальная модель служит основой для проектирования базы данных и разработки системы. При этом каждый новый объект этой базы данных должен быть классифицирован в соответствии с понятиями этой модели. Это же справедливо и в отношении каждой операции.
В данной статье описана концептуальная модель для области применения так называемых OLAP-систем.
Задача OLAP-систем - измерять некоторые важные характеристики динамического мира, например, компании, организации, общества и так далее. К величинам, подлежащим измерению, можно отнести общий объем платежей в месяц, среднее число дней, проведенных пациентом в отделении интенсивной терапии, и тому подобное.
Для того, чтобы измерять интересующие характеристики мира, этот динамический мир должен быть представлен в OLAP-системе некоторым формальным образом. Один из способов его представления - набор основанных на времени фактов (time-based facts). Основанный на времени факт (ОВФ) - это логическое утверждение о внешнем мире, которое истинно в определенное время. Основанные на времени факты могут быть двух типов:
Замечание. Иногда один и тот же параметр может использоваться и как мера, и как атрибут. Допустим, например, что мы хотим сгруппировать все инвестиционные решения в соответствии с величиной инвестиций: незначительные инвестиции (до 10 тысяч долларов), средние (от 10 до 100 тысяч долларов) и так далее. Предположим также, мы желаем знать общую величину планируемых инвестиций в каждой группе. Чтобы описать эту ситуацию, характерный размер инвестиций должен быть включен в основанные на времени факты и как атрибут, и как мера. Точность атрибута и измерения, опирающихся на одинаковую характеристику, может быть различной. Обычно атрибут не требует такой же точности, как мера.
В более сложном случае может возникнуть необходимость включать в качестве мер в отдельный ОВФ характеристики объектов, на которые ссылаются основанные на времени факты. Например, если нас интересует средний возраст пациентов, которым была сделана какая-то операция, возраст субъекта должен быть включен в ОВФ в качестве меры, несмотря на то, что он продолжает выполнять функции атрибута при описании состояния объекта.
Пусть P(t, m1, m2, ..., mi, a1, a2,..., aj, r1,..., rk) - ОВФ,
где P - предикат,
t - временной признак,
m1, m2, ..., mi - меры,
a1, a2,..., aj - атрибуты,
r1,... ,rk - сноски на объект.
Давайте рассмотрим некоторые способы представления этого факта, как точки в многомерном пространстве. Во-первых, нам необходим некоторый порядок компонентов, на которые ссылаются основанные на времени факты. Поскольку меры имеют численные значения, для каждой меры значения располагается естественным образом. Это то же справедливо и в отношении временных признаков.
Что же касается атрибутов, то для некоторых из них значения имеют естественный порядок, для других он отсутствует. Тем не менее, мы всегда можем внести некоторую искусственную упорядоченность в значения атрибута. Будем называть атрибут, значения которого упорядочены, измерением (dimension) атрибута. Этот же фокус может быть проделан и с сносками. Обычно объекты, на которые может указывать сноска отдельного ОВФ, неупорядочены, но мы можем внести некоторый произвольный порядок и для них. Назовем предикатную сноску, которая указывает на упорядоченные объекты, измерением сноски.
После того, как мы ввели понятие размерности, мы можем воспользоваться различными способами построения многомерного пространства.
Первый способ - построение (i+j+k+1)-мерного пространства из временного измерения (временного признака t), i-мерных мер (m1, m2, ..., mi), j-мерных атрибутов (a1, a2,..., aj ) и k-мерных сносок (r1,..., rk). Это - стандартный способ, описываемый в литературе по OLAP. Однако, в этом пространстве могут быть нежелательные зависимости между измерениями, возникающие в тех случаях, когда некоторые измерения и некоторые атрибуты представляют одинаковые характеристики реального мира.
Другой способ создания многомерного пространства - формирование его из временного измерения (временного признака t), j-мерных атрибутов (a1, a2,..., aj) и k-мерных сносок (r1,..., rk); результирующее пространство будет иметь размерность (j+k+1). Эта концепция дает нам "более ортогональное" пространство по сравнению с предыдущим, и мы будем использовать его для определения многомерного пространства, описывающего основанные на времени факты заданного типа (например, с определенным предикатом). При условии, что временной признак, атрибуты и сноски абсолютно разграничивают одну ОВФ от другой, меры могут трактоваться как значения (например, веса), которые приписаны к некоторым точкам описанного таким способом пространства.
Пусть rc, 1 >= c <= k - сноска на объект из ОВФ P(t, m1, m2, ..., mi, a1, a2,..., aj, r1,..., rk), а состояние объекта, на который указывает эта сноска, определяется набором атрибутов: 1, ..., bn. Предположим, что мы описали измерение по каждому атрибуту объектов, на которые сноска c может указывать. Теперь мы можем рассматривать любую ОВФ с предикатом P, как точку в (j+k+n+1)-мерном пространстве, построенном из временного измерения (временного признака t), j-мерных атрибутов (a1, a2,..., aj), k-мерных сносок (r1,..., rk) и n-мерных атрибутов объекта. Операция преобразования пространства, при которой измерение сноски дополняется измерениями атрибутов объекта, называется расширением (extension) исходного пространства по сноске rc.
Другая полезная операция по преобразованию пространства - удаление одного из измерений, которые принадлежат исходному пространству (атрибут, сноска или измерение атрибута объекта). Это преобразование называется упрощение (reduction) по определенному измерению. Координаты ОВФ в упрощенном пространстве такие же, как и в исходном для всех осей за исключением той, которой была удалена.
Заметьте, что в случае упрощенного пространства нет никаких гарантий того, что каждый ОВФ исходного пространства будет отображаться в уникальную точку в новом пространстве. Следовательно, нам нужен способ описания измеренных величин, которые приписаны к точке в новом пространстве и сохраняют несколько основанных на времени фактов из старого пространства. Этот процесс называется агрегацией и будет описан ниже.
Сложное преобразование, которое включает несколько расширений, может быть определено обозначением набора измерений сносок, который необходимо расширить.
Сложное преобразование, которое включает несколько упрощений, могло бы быть определено обозначением набора измерений (будь то атрибут, сноска или атрибут объекта), который остаются в преобразованном пространстве (все другие удаляются).
Замечание. Если упрощение касается атрибута объекта (например, категорию объекта), а сноска на объект не является частью исключаемых измерений, агрегации по устраняемому измерению не происходит.
В предыдущем разделе мы рассмотрели, как простое измерение атрибута устанавливается введением жесткой упорядоченности в значениях атрибута. Чтобы было можно определять атрибут с меньшей точностью по сравнению с точным значением, иерархическое измерение (hierarchical dimension) определяет несколько уровней значений атрибута. В основном, иерархическое измерение, определенное по атрибуту, называет:
Давайте также предположим, что каждое иерархическое измерения включает так называемый корневой (root) уровень. Корневой уровень - это высочайший уровень в иерархии, и он имеет только один элемент (единицу измерения), обозначаемую как все. Согласно приведенному выше определению иерархического измерения, все охватывает все единицы измерения предыдущего уровня. В соответствии с концепцией корневого уровня, каждое простое измерение может трактоваться как иерархическое измерение с двумя уровнями: нуль и один, где уровень один - корневой.
Замечание. Наше определение иерархического измерения сформулировано в форме, отличной от принятой в литературе по OLAP.
Предположим, что мы определили многомерное пространство, которое включает иерархическое измерение x. Тогда замещение первоначальных значений вдоль оси x единицами измерения более высокого уровня приведет к появлению нового пространства, которое устанавливает величины x с меньшей точностью. Мы будем называть этот преобразования сжатием (shrinking) вдоль оси x до уровня n. И опять-таки, при использовании этого вида преобразования несколько основанных на времени фактов, которые занимают различные точки в исходном пространстве, могут быть отображены в те же самые точки в "сжатом" пространстве.
Если мы трактуем все измерения как иерархические, то операция упрощения, описанная выше, может считаться частным случаем сжатия, то есть сжатия до корневого уровня. Это определение может быть расширено и на измерения сносок. Теперь мы можем описать сложную операцию упрощения/сжатия, устанавливая уровень "сжатия" для каждого задействованного измерения.
Когда над многомерным пространством выполняется операция сжатия/упрощения, ряд точек из исходного пространства с приписанными к ним мерами могут быть спроектированы в те же точки упрощенного пространства. Эта процедура называется агрегацией, и для того, чтобы агрегированным точкам в этом новом пространстве приписать новые определяемые значения, требуются некоторые вычисления. Новые меры устанавливаются "интегрированием" величин, первоначально приписанным к агрегируемым точкам.
На самом деле, это новое пространство не отражает смысл основанных на времени фактов, которые служили в качестве базиса для построения исходного пространства. Предикат новых основанных на времени фактов может быть определен, например, как характеристика среднемесячных продаж, общие инвестиции в смысла, который мы хотим вложить в новый предикат, и не может быть определена в общем виде. Такая формула должна устанавливать, какие меры должны быть привязаны к точкам в этом новом пространстве и как они могут быть вычислены из мер, приписанных к точкам в исходном пространстве.
Несмотря на то, что общей формулы интегрирования не существует, нам хотелось бы предложить стандартный способ интегрирования, который может быть полезен в качестве промежуточного шага для других типов интегрирования.
Пусть m1, m2, ..., mi - меры, определенные для основанных на времени фактов, которые агрегируются. Добавим к ним i+1 дополнительную меру c, c1, …, ci. Определим процедуру интегрирования, которая следующим образом назначает значения мерам m1, m2, ..., mi, c, c1, …, ci:
Приведенное выше правило интегрирования является ассоциативным и перестановочным по отношению к порядку, в котором преобразовывается пространство, если последнее выполняется шаг за шагом. Результат будет точно таким, если сложное преобразование сжатия/упрощения выполняется вдоль нескольких осей за один шаг, или несколько сжатий, каждое из которых относится только к одной оси, выполняются одновременно.
Стандартная процедура интегрирования располагает всеми данными для вычисления некоторых других типов величин, то есть итогов по всем агрегированным точкам. Итог по p-ой измеренной величине получается из cp и mp согласно формуле cp * mp.
В некоторых случаях интегрированные величины могут трактоваться не как меры, а как атрибуты в преобразованном пространстве (иногда нам нужны и те и другие). Благодаря этому мы можем определить новое иерархическое измерение, например на средних значениях, и выполнить операции сжатия (или сокращения, см. ниже) над этим измерением.
Иногда для текущего анализа интересна только часть значений измерения атрибута.
Пусть s - подмножество всех возможных значений измерения атрибута x. Тогда новое пространство может быть создано из исходного путем удаления всех точек, для которых значения координаты x не принадлежит s. Такая операция преобразования пространства называется сокращением (restriction) измерения x на множестве s. Способ определения подмножества значений, подлежащих удалению, выбирается исходя из практических соображений. Это множество может быть определено путем:
В отличие от операции сжатия/упрощения сокращение не приводит к агрегации, оно просто удаляет ненужные части пространства.
По выполнении сокращения первоначальный диапазон значений от 0 до некоторого предела может быть освобожден от точек с мерами. Операция смещения (shift) перемещает точку 0 в измерении направо. Эта операция характеризуется величиной смещения. Например, если нас интересуют основанные на времени факты для 1997 года, мы можем выполнить сокращение по этому году и сместить начальную точку временной оси на начало 1997 года.
Сокращение с последующим смещением допускает сравнительный анализ мер, которые принадлежат двум разным временным интервалам, например 1996 и 1997 годам. Если мы выполним два отдельных сокращения по двум годам, а затем осуществим смешение в каждом из результирующих пространств, временные оси в обоих пространствах будут согласовываться, то есть они получат одинаковое множество значений. Операция соединения (join), описанная ниже, предназначена для создания нового пространства для сравнения значений за разные годы.
В предыдущих разделах мы рассмотрели операции преобразования многомерного пространства, базирующегося на основанных на времени фактах, все из которых располагают одинаковым предикатом. Некоторые из этих операций: сжатие/упрощение - могут иметь своим результатом пространство, которое соответствует основанным на времени фактам с предикатом отличным от исходного. Это пример так называемых производных основанных на времени фактов, например, основанных на времени фактов, которые первоначально не содержатся в базе данных, но могут быть получены из фактов, которые входят в ее состав.
Существуют иные способы определения производных основанных на времени фактов. Предположим, что у нас есть база данных больницы, которая для каждого пациента хранит ОВФ, регистрирующий событие при приеме пациента в больницу, и ОВФ, регистрирующее событие при его выписке. Эти основанные на времени факты связаны с одинаковым объектом - субъектом (физическим лицом) - и с одинаковой больничной картой (объект процесса), кроме того, существует правило, согласно которому карта может иметь только одно событие Принят и Выписан. Несмотря на то, что исходная база данных может не включать основанные на времени факты, которые показывают, кто лежал в больнице в определенный день, такую информацию можно получить. Для этого необходимо для каждой даты:
Приведенный выше пример демонстрирует относительно сложный случай производных основанных на времени фактов, который трудно - если возможно - определить через преобразование пространства. Однако, в некоторых ситуациях, удобных с практической точки зрения, производное пространство может быть определено в общем виде. Соединение двух пространств - один из таких способов.
Рассмотрим два многомерных пространства: M1 и M2 - каждое размерности n, но с абсолютно разными множествами мер. Пусть каждое i-ое измерение из M1 совместимо с i-ым измерением из M2, то есть они имеют одно и то же множество величин, упорядоченных одинаковым образом. Затем мы соединяем M1 с M2 по общим осям и получаем новое пространство M3. Для этого нам необходимо назначить меры для каждой точки в M3. Это возможно только в том случае, если соответствующие точки в M1 или/и M2 имеют одинаковые приписанные меры. Хотя существуют различные способы назначения мер для точек в новом пространстве, мы можем описать, по крайней мере, один стандартный метод:
Для создания пространства, которое сравнивает меры по времени для двух различных временных интервалов, например, для 1996 и 1997 годов, можно вернуться к примеру, рассмотренному выше, и воспользоваться операцией соединения.
Запрос конечного пользователя в OLAP-системе - это требование представить основанные на времени факты в форме одного или нескольких многомерных пространств. Запрос состоит из двух частей: какое пространство(-а) должно быть представлено и в какой форме, например, в виде списка (отчета), графика, трехмерной диаграммы и так далее.
В случае, если должно быть представлено более чем одно пространство, между пространствами должно присутствовать некоторое подобие, например, они должны делить, по крайней мере, одно измерение. В данном случае, в отличие от операции соединения, это не означает, что измерения должны быть абсолютно совместимы. Допускается слабая совместимость, то есть действительные оси, используемые в обоих пространствах, относятся к одному и тому же иерархическому измерению, но в каждом из этих пространств используются различные уровни единиц измерения. Типичный пример представления нескольких пространств вместе - отчет с итогами и промежуточными итогами для различных временных диапазонов (неделя, месяц и год), категории проданных товаров и так далее. Для этих отчетов объединенные пространства могут быть получены поэтапным сжатием/упрощением исходного пространства по различным осям (время, продукт и так далее).
После того, как решено, какое пространство представлять, необходимо ответить на следующий вопрос: хранится ли это пространство в базе данных, или же его необходимо каким-то образом из нее получать. Во втором случае нам потребуется понять, может ли производное пространство быть получено с помощью стандартных операций преобразования пространства (расширение, сжатие/упрощение, сокращение, объединение [union]) или же потребуется прибегнуть к нестандартным операциям.
Обычно искомое пространство должно быть представлено как последовательность операций (стандартных или нестандартных) над одним или несколькими исходными пространствами. Каждая операция, которая может привести к агрегации, должна сопровождаться формулой для вычисления мер. Формула может быть добавлена также и к операциям, не связанным с агрегацией, например, если для запроса нужны меры, которые могут быть вычислены, а не те, которые хранятся в базе данных. Более того, формула для вычисления может потребоваться даже тогда, когда нет необходимости в преобразовании пространства, то есть когда база данных уже содержит пространство, запрашиваемое в запросе, но с иным множеством измерений, отличных от запрашиваемых.
Часто существует несколько способов определения порядка операций, которые ведут к заданному искомому пространству. Новый порядок может быть получен, если, например, поменять местами две стандартные операций в уже установленном порядке. Это возможно только в том случае, если формула для вычислений инвариантна к таким изменениям порядка операций. Это справедливо, например, для стандартной формулы интегрирования, рассмотренной в разделе 4.5. Если порядок операций можно изменить, полезно придерживаться следующих правил:
Поиск (scanning) - это процесс прохождения по многомерному пространству и сбора всех точек, которые имеют некоторые измерения. Результатом поиска является поток взвешенных точек, каждая из которых описывается своими координатами в пространстве и мерами. Поиск необходим для:
Во время поиска каждая точка должна просматриваться только один раз. На практике этого требования недостаточно с учетом задач презентации и интегрирования, и может потребоваться более строгий порядок обхода.
Порядок поиска может быть определен как последовательность измерений пространства, например, D1, .., Dn. Поиск начинается с наименьшей величины измерения D1 и идет по всем точкам пространства, которые имеют это наименьшее значение, как координата в измерении D1. После этого выбирается следующая величина в измерении D1, и просматриваются все точки с этим значением. Порядок поиска точек с фиксированным значением D1 определяется измерением D2 и так далее.
Предположим, что мы просматриваем n-мерное пространство в порядке D1, .., Dn. Тогда можно считать, что результирующий поток состоит из ряда последовательностей, определяемых следующим образом:
Поиск можно использовать как способ преобразования пространства "на лету". Применяя правила специальной обработки к просмотренному потоку, мы можем получить поток, который мог бы быть получен в результате поиска по пространству, отличному от исходного. Естественно, это другое пространство может быть определено как преобразование исходного пространства.
Пусть пространство M2 может быть получено из n-мерного пространства M1 = D1 x ...x Dn путем операции сжатия вдоль измерения Dk до уровня f. Предположим также, что определена некоторая формула интегрирования для назначения мер для агрегированных точек. Рассмотрим M1 в порядке, определенном как D1, ..., Dk-1, Dk+1, ..., Dn, Dk. Будем считать, что результирующий поток - это ряд последовательностей, каждая из которых лежит между двумя разрывами уровня f в измерениях <D1, ..., Dk-1, Dk+1, ..., Dn, Dk> (крайний правый разрыв включен в эту последовательность). Применяя формулу интегрирования ко всем точкам в каждой последовательности и заменяя величину Dk точности 0 величиной точности f, мы получим поток, который был бы результатом просмотра пространства M2. Эту процедуру можно обобщить, чтобы она включала случаи, когда несколько операций сжатия применяются одна после другой.
Помимо преобразования пространства разрывы могут также использоваться для объединения (merging) двух или более пространств, которые должны быть вместе представлены конечному пользователю. Точнее, разрывы уровня l, большего 0, могут использоваться для объединения двух потоков, где второй определяет некоторые интегрированные величины, как, например, промежуточный итог, среднее и так далее, для единиц измерения уровня l. В этом случае следующая точка из второго потока помещается непосредственно перед следующим разрывом в первом потоке (чтобы суммировать предыдущую последовательность). Более того, вместо объединения двух независимых потоков, правила обработки потока, описанные выше, могут применяться к текущему потоку во время просмотра исходного пространства, чтобы получить второй поток.
Визуализация - это способ представления конечному пользователю потока точек. Существует несколько разновидностей визуализации, например, список (отчет), графическая диаграмма (пирог, столбцы), график, двумерная матрица и так далее.