Многомерное моделирование и звездообразные схемы
Выше мы вскользь упомянули о том, что хранилища данных можно моделировать методами многомерного моделирования с использованием звездообразной схемы. Повторим, что традиционные методы моделирования данных и проектирования баз данных, как правило, не позволяют получить структуры данных, оптимизированные для массовых запросов. Поэтому придется отбросить некоторые традиционные идеи о проектировании и выучить ряд новых приемов. В этом разделе частично затрагиваются вопросы анализа, потому что это важно для понимания того, как определяются эти модели.
Как и большинство понятий в компьютерном мире, звездообразная схема имеет несколько синонимов: многомерная схема, куб данных и соединение по схеме "звезда". Причина, по которой эту схему называют звездообразной, заключается в том, что ее графическое представление напоминает звезду.
Звездообразная модель состоит из центральной таблицы фактов (fact table), которая окружена несколькими таблицами измерений (dimension table). Физически таблица фактов часто представляет собой несколько секционированных таблиц. Термин "секционирование" очень широко используется специалистами по базам данных и в общем случае означает формирование подмножеств данных.
Отношения между таблицей фактов и таблицами измерений должны быть простыми, чтобы существовал только один возможный путь соединения любых двух таблиц и чтобы смысл этого соединения был очевиден и хорошо понятен. Преимущество простоты отношений состоит в том, что это помогает повысить производительность.
Все, что аналитик должен сделать при многомерном моделировании, — это выявить факты и их измерения. Факты обычно представляют собой основные виды бизнес-деятельности организации и факторы, влияющие на данный бизнес или его сектор. Что можно сказать о таблицах измерений? В широком смысле слова — это элементы, которые могут оказывать определенное влияние или порождать различные тенденции в развитии фактов. Исходя из этого, измерения можно разбить на следующие категории: люди, места, вещи и время (рис. 5).
Рисунок 5 – Классификация измерений: люди, места, вещи и время
Рассматривайте таблицу фактов в свете реляционной теории: у нее есть внешний ключ к каждой соответствующей таблице измерения. Она объединяет измерения в нечто, представляющее собой значимое событие, и содержит качественную и количественную информацию об этом событии. В сценарии продаж таблица фактов может содержать данные о том, сколько товара реализовано и на какую сумму, а также внешние ключи к таблицам измерений, характеризующих операцию продажи (какой товар, когда он был продан, кто продал его и какой способ платежа был использован).
Временное измерение в звездообразной схеме обладает рядом интересных свойств. Факт, скорее всего, будет связан не с одним моментом времени, а с каким-то временным промежутком. Следовательно, временное измерение обычно является обобщающим. При выборе единицы изменения времени приходится выбирать между хранением огромного числа фактов в хранилище (которые в большинстве запросов необходимо будет обобщать) и отсутствием данных о сезонных тенденциях вследствие того, что при обобщении выбран слишком большой период времени. Временное измерение также часто выступает в качестве основы для секционирования таблицы фактов. Во многих случаях секционирование необходимо для уменьшения объема таблицы фактов и облегчения управления ею. Время же используется потому, что при этом, как правило, получают приблизительно равные по объему кванты, и оно часто является наиболее логичным для секционирования измерением. Кроме того, время — наиболее вероятная основа для усечения таблицы фактов (если когда-нибудь удастся заставить предприятие согласиться на удаление данных из его хранилища).
Выбор степени детализации временного измерения (неделя, день, месяц и т.д.) может иметь исключительную важность. Если, например, выбрать месяц, то средство анализа, возможно, сможет обобщить данные в еще большей степени и показать результаты по годам. Затем с помощью различных методов детализации можно представить данные по кварталам нужного года, а потом вновь по месяцам. Очевидно, что в этом случае нельзя выполнить более подробную временную детализацию, поскольку для этого нет данных. Выбор степени детализации по времени имеет большое значение, потому что позволяет уравновесить два фактора — необходимость в более детальной разбивке и объем хранилища данных. Таким образом, при проектировании хранилища данных необходимо уделять должное внимание временным измерениям и в каждом конкретном случае принимать решение о необходимой для обобщения степени детализации.
4. Пример «Система мониторинга подземных вод»
Рассмотрим процесс проектирования хранилища данных на примере системы мониторинга подземных вод.
Первым шагом проектирования структуры хранилища данных является выявление измерений и фактов. Количество таблиц фактов и измерений для этих фактов может варьироваться в зависимости от размера хранилища и его использования. В нашем примере это четыре измерения («Скважины», «Количество воды», «Цели отбора» и время.) и один факт (сам отбор воды в определенное время с целью мониторинга состояния подземных вод).
Очень важным моментом является выбор степени детализации временных измерений, она может составлять годы, месяцы, недели, дни и так далее. Эта характеристика выбирается непосредственно исходя из специфики проектируемого хранилища данных и его будущего использования. В данном примере целесообразно обобщать данные по неделям.
На рис. 6 представлена звездообразная схема для системы мониторинга подземных вод.
Рисунок 6 – Звездообразная схема системы мониторинга подземных вод
Далее следует определить таблицы измерений и фактов, т.е. наполнение их непосредственно атрибутами. На рис. 7 показаны определения таблиц, которые используются для реализации звездообразной схемы, изображенной на рис. 6.
Рисунок 7 – Определения таблиц для реализации звездообразной схемы сбыта продукции
После определения таблиц необходимо проверить таблицы измерений на предмет множественного соединения между ними. В данном случае таблицы «Скважины» единственным образом связана с таблицей «Цели отбора» через таблицу фактов. Тоже самое справедливо и для остальных таблиц, что удовлетворяет основному требованию к таблицам измерений и фактов.
Для исключения возможности использования лишних измерений необходимо проверить, все ли из выбранных измерений влияют на таблицу фактов. Так например, «Качество воды» влияет на таблицу фактов, т.к. при обобщении сведений по неделе может оказаться, что при неизменных остальных измерениях «Качество воды» будет иным, чем в предыдущий промежуток, тем самым факт изменился. Если окажется так, что данное измерение лишнее, его следует удалить.
Задание на лабораторную работу.
На основании БД, созданной в ходе предыдущей лабораторной работы, спроектируйте структуру хранилища данных. Для этого:
1. Выделите измерения и факты хранилища данных.
2. Определите структуры измерений и фактов хранилища данных.
3. Проверьте таблицы на предмет множественности связей между ними.
4. Проверьте, все ли измерения влияют на таблицу фактов.
Лабораторная работа №5