Введение в OLAP и хранилища данных

Формат хранения данных в OLAP-кубе

В материале рассматриваются три формата хранения данных в OLAP-кубах: многомерный (MOLAP), реляционный (ROLAP) и гибридный (HOLAP). Логика изложения — от сути каждого формата к его преимуществам, недостаткам и условиям применения. Затем сравниваются OLTP, ROLAP и MOLAP по операциям, объёму, детализации, срокам хранения и структуре, а также перечисляются общие достоинства и ограничения OLAP-отчётов.

Основные мысли

В результате изучения лекции слушатель будет способен:
1. Объяснять, чем отличаются MOLAP, ROLAP и HOLAP по способу хранения данных.
2. Определять, когда применяется каждый формат с учётом объёма, агрегации, плотности данных и частоты изменения отчётов.
3. Анализировать преимущества и недостатки MOLAP, ROLAP и HOLAP.
4. Сравнивать OLTP, ROLAP и MOLAP по назначению, структуре, объёму, детализации и срокам хранения.
5. Выбирать формат OLAP-хранения для практической ситуации.
6. Оценивать влияние разреженности, плотности и уровня агрегации на эффективность куба.
7. Формулировать ограничения OLAP-отчётов и условия их применения.
Показывать лекцию целиком
Краткое изложение

Форматы хранения данных в OLAP-кубах

OLAP (On-Line Analytical Processing, аналитическая обработка в реальном времени) — это подход к представлению данных для анализа. В рамках темы рассматриваются три формата хранения: многомерный OLAP (MOLAP, Multidimensional OLAP), реляционный OLAP (ROLAP, Relational OLAP) и гибридный OLAP (HOLAP, Hybrid OLAP).

MOLAP

Суть формата

MOLAP хранит информацию не в виде отдельных записей и строк, как классические реляционные базы данных, а в форме сложного многомерного массива. Схема «звезда» или «снежинка» здесь важна скорее для визуализации и понимания связей между таблицами. Ключевой вопрос — не то, как данные показаны, а то, как они физически хранятся. В MOLAP они хранятся как многомерный массив.

Такой формат позволяет максимально быстро обрабатывать сложные аналитические запросы. Как только поступает запрос, схема типа «звезда» или «снежинка» оптимизируется под него, и результат возвращается быстро.

Преимущества

Недостатки и ограничения

Когда применять MOLAP

В реляционной модели с нормализацией (normalization) для сложных математических операций данные приходится «склеивать», и расчёты идут медленно. Многомерный куб лучше приспособлен к таким операциям.

ROLAP

Суть формата

ROLAP — это реляционная схема. Вся информация хранится в реляционных таблицах, в рамках третьей нормальной формы (3NF). Куб собирается только тогда, когда его запрашивает аналитик. Аналитик отправляет запрос, и данные приходят, но изначально они хранятся в форме реляционных наборов таблиц. Многомерного массива физически нет: куб искусственно строится из реляционных источников в момент запроса.

Если пользователь запрашивает сложную математическую операцию, например суммирование, она выполняется не на многомерном массиве, которого физически нет, а на первичном источнике — нормализованных таблицах. Поэтому ROLAP работает медленнее.

Преимущества

Недостатки

Когда применять ROLAP

HOLAP

Суть формата

HOLAP — гибридная архитектура. Она объединяет ROLAP и MOLAP и вбирает достоинства каждого подхода. MOLAP требует плотных данных (dense data), сильно агрегированных, компактных. ROLAP хорошо работает, когда данные разрежены (sparse data), то есть содержат много «дырок» и представлены в большом объёме.

Серверы HOLAP используют ROLAP для разреженных данных и MOLAP для плотных данных. Запрос фрагментируется на подзапросы: часть информации берётся из схемы ROLAP, часть — из схемы MOLAP. Разреженные, слабоагрегированные данные хранятся в ROLAP. Плотные, сильно агрегированные данные хранятся в MOLAP. При поступлении запроса часть данных забирается из одного компонента, часть — из другого. Работает интеллектуальный механизм, который понимает, что откуда извлекать.

Агрегация хранится в форме MOLAP, а исходные измерения — в форме ROLAP.

Преимущества

Недостатки

Сравнение OLTP, ROLAP и MOLAP

Критерий OLTP ROLAP MOLAP
Типовые операции Вставка и обновление данных Формирование отчёта Аналитика
Назначение Первичные источники информации, классические базы данных Детализированная отчётность Анализ с высокой агрегацией
Уровень требований Низкий Средний Высокий
Структура Записи, строки Реляционные таблицы, 3NF Многомерные массивы
Формы Фиксированные, регламентированные Определяются пользователем Определяются пользователем
Объём данных Небольшой, но транзакций много и часто От малого до большого Большой
Уровень данных Максимально детальный Детальные и суммарные данные, небольшой уровень агрегации Только суммарные агрегационные данные
Сроки хранения Только текущие данные Исторические и текущие данные Исторические и текущие данные
Структурные элементы Записи, строки Записи, строки Многомерные массивы

В OLTP всё делается по принципу insert (вставка): информация обновляется, добавляются новые данные. ROLAP заточен под формирование отчёта: нужна детализированная информация о том, где, когда и сколько было продано. MOLAP заточен на аналитику, потому что у аналитики, как правило, высокий уровень агрегации, а аналитические операции тяжеловесные: сложные вычисления, математическое ожидание, дисперсия и другая математика. На реляционной схеме это считается крайне сложно, а на многомерных массивах — гипербыстро.

В OLTP структура не меняется, формы строго регламентированы и прописаны в техническом задании. Пользователь не может запросить новый столбец или сумму. В ROLAP и MOLAP пользователь сам определяет, как представить данные.

Достоинства и недостатки OLAP-отчётов

Достоинства

Недостатки

Краткие итоги

Ключевая логика выбора формата хранения OLAP-куба строится на компромиссе между скоростью аналитических запросов, объёмом памяти и гибкостью к изменениям. MOLAP выигрывает в скорости за счёт физического многомерного массива и развитой индексации, но требует копирования и преобразования данных, плохо переносит разреженность и частое изменение измерений и отчётов. Поэтому он уместен там, где исходные данные малы или сильно агрегированы, а аналитические запросы стабильны и критично время отклика.

ROLAP сохраняет данные в реляционной нормализованной форме и собирает куб виртуально под запрос. Он экономит память, сохраняет исходную модель безопасности и легко адаптируется к новым срезам, но проигрывает в производительности на сложных вычислениях. HOLAP снимает ограничение размера MOLAP и ускоряет агрегатные запросы за счёт предрасчёта, однако платит за это сложной синхронизацией компонентов и накладными расходами. Сравнение с OLTP показывает, что эти системы решают разные задачи: OLTP — оперативные транзакции и фиксированные формы, ROLAP — отчётность на нормализованных данных, MOLAP — аналитику с высокой агрегацией. Практический выбор зависит от объёма, плотности, уровня агрегации, частоты изменения отчётов и требований к скорости. Достоинства OLAP-кубов — простота восприятия, гибкая настройка, детализация, консолидация и эквивалентность множеству плоских отчётов — проявляются только при наличии хранилища и не отменяют ограничений по дизайну и оперативным отчётам.

Рассматриваются три формата хранения данных в OLAP-кубах: MOLAP, ROLAP и HOLAP.

MOLAP — многомерный OLAP. Данные хранятся в виде сложного многомерного массива, а не отдельных строк. Схема «звезда» или «снежинка» важна для визуализации, но физически информация лежит в массиве. Это позволяет быстро обрабатывать сложные аналитические запросы и сложные вычисления. Преимущества: превосходная индексация, высокая скорость, удобство для сложных вычислимых функций. Недостатки и ограничения: требуется копирование и преобразование данных; подходит для небольших хранилищ; большое хранилище пришлось бы многократно перестраивать под разные запросы; быстро заканчивается память; низкий коэффициент использования диска; разреженные данные с «дырками» делают MOLAP неэффективным; набор измерений должен быть фиксирован; запросы должны быть стабильны. Если требования аналитиков часто меняются, кубы приходится перестраивать, и эффективность падает. MOLAP применяют, когда исходных данных немного или когда хранилище большое, но агрегация очень высокая. Также он нужен там, где критично время отклика и где готовы увеличивать память и оборудование. Он хорош для сложных вычислений, потому что на многомерном массиве считать быстрее, чем на строках.

ROLAP — реляционный OLAP. Данные хранятся в реляционных таблицах в третьей нормальной форме. Куб собирается только по запросу аналитика, физически многомерного массива нет. Сложные операции идут на нормализованных таблицах, поэтому работа медленнее. Но ROLAP часто используется, потому что большие хранилища не позволяют применять MOLAP: он экономит память. Если отчёт или срез меняется, достаточно написать новый запрос, не перестраивая физические структуры. Это удобно при частой смене отчётов и аналитики. ROLAP сохраняет исходную структуру безопасности, потому что данные остаются в первоначальном виде. В MOLAP при перестройке можно потерять уровень безопасности. Для ускорения внутри ROLAP иногда используют звездообразные схемы и немного снижают нормализацию, чтобы быстрее строить псевдомногомерный куб. Главный недостаток ROLAP — меньшая производительность по сравнению с MOLAP.

HOLAP — гибридный OLAP. Он объединяет ROLAP и MOLAP. Разреженные и слабоагрегированные данные хранятся в ROLAP. Плотные и сильно агрегированные данные — в MOLAP. Агрегация хранится в MOLAP, исходные измерения — в ROLAP. Запрос фрагментируется: часть берётся из ROLAP, часть — из MOLAP. Преимущества: нет ограничения на размер, как у MOLAP; есть прирост производительности за счёт заранее посчитанных агрегатов, поэтому не нужно выполнять тяжёлое суммирование в ROLAP. Недостатки: сложная логика выбора источника данных, необходимость синхронизации двух компонентов, расход ресурсов и падение производительности из-за этой синхронизации.

Сравнение OLTP, ROLAP и MOLAP: OLTP — первичные источники, классические базы данных. Там выполняются вставки и обновления. ROLAP заточен под отчёты с детализированной информацией. MOLAP — под аналитику с высокой агрегацией. Требования: у OLTP низкие, у ROLAP средние, у MOLAP высокие. Структура: OLTP — записи и строки; ROLAP — реляционные таблицы 3NF; MOLAP — многомерные массивы. Формы: в OLTP фиксированные и регламентированные, в ROLAP и MOLAP определяются пользователем. Объём: в OLTP транзакций много, но они маленькие; в ROLAP — от малого до большого; в MOLAP — большой. Уровень данных: в OLTP максимально детальный; в ROLAP детальные и суммарные данные с небольшим уровнем агрегации; в MOLAP только суммарные агрегационные данные. Сроки хранения: в OLTP только текущие; в ROLAP и MOLAP — исторические и текущие. Структурные элементы: в OLTP и ROLAP — записи и строки; в MOLAP — многомерные массивы.

Достоинства OLAP-отчётов: простота использования и восприятия таблиц; понятный куб, где видны товар, продавец, время и объём продаж; полнота аналитических данных; лёгкая настройка отчёта без программиста, как в сводной таблице Excel; возможность детализации drill-down по иерархии; быстрое формирование отчётов; непротиворечивость данных; консолидация информации из разных источников; повышенная защита данных; один OLAP-отчёт эквивалентен набору плоских отчётов, потому что его можно смотреть в разных срезах и периодах.

Недостатки OLAP-отчётов: нет ориентации на произвольный дизайн; если нужного поля нет в кубе, отчёт не построить; для нового поля требуется новый куб, а это долгая работа администратора и программиста; некоторые пользователи плохо воспринимают таблицы с объединёнными ячейками; ограничены возможности оперативных отчётов; главная проблема — необходимость сначала разработать хранилище, без которого OLAP-куб построить нельзя.

Выводы

1. MOLAP хранит данные в многомерном массиве, а не в строках.
2. MOLAP быстр для аналитики и сложных вычислений, но требует преобразования данных.
3. MOLAP плохо работает с разреженными данными и большими объёмами.
4. MOLAP применим при малом хранилище или высокой агрегации.
5. Для MOLAP важны фиксированные измерения и стабильные запросы.
6. ROLAP хранит данные в реляционной форме 3NF и строит куб виртуально.
7. ROLAP экономит память и гибок к изменению отчётов.
8. ROLAP сохраняет исходную структуру безопасности, но медленнее MOLAP.
9. HOLAP сочетает ROLAP для разреженных данных и MOLAP для плотных агрегатов.
10. HOLAP ускоряет агрегаты, но требует синхронизации и ресурсов.
11. OLTP ориентирован на транзакции, ROLAP — на отчёты, MOLAP — на аналитику.
12. OLAP-отчёты удобны и консолидированы, но зависят от хранилища и ограничены кубом.

Вопросы для самопроверки

1. Чем хранение в MOLAP отличается от хранения в реляционных таблицах?
2. Почему MOLAP быстрее обрабатывает сложные аналитические запросы?
3. Какие ограничения появляются при использовании MOLAP на больших хранилищах?
4. Как разреженность данных влияет на эффективность MOLAP?
5. В каких случаях MOLAP применим даже при большом хранилище?
6. Почему для MOLAP важна стабильность набора измерений и запросов?
7. Как ROLAP строит куб и почему его можно назвать виртуальным?
8. Какие преимущества ROLAP даёт при частом изменении отчётов?
9. Почему ROLAP медленнее MOLAP на сложных вычислениях?
10. Как HOLAP распределяет данные между ROLAP и MOLAP?
11. Какие недостатки HOLAP связаны с синхронизацией компонентов?
12. Чем отличаются OLTP, ROLAP и MOLAP по назначению, формам и срокам хранения?
Вернуться к учебному плану