Форматы хранения данных в OLAP-кубах
OLAP (On-Line Analytical Processing, аналитическая обработка в реальном времени) — это подход к представлению данных для анализа. В рамках темы рассматриваются три формата хранения: многомерный OLAP (MOLAP, Multidimensional OLAP), реляционный OLAP (ROLAP, Relational OLAP) и гибридный OLAP (HOLAP, Hybrid OLAP).
MOLAP
Суть формата
MOLAP хранит информацию не в виде отдельных записей и строк, как классические реляционные базы данных, а в форме сложного многомерного массива. Схема «звезда» или «снежинка» здесь важна скорее для визуализации и понимания связей между таблицами. Ключевой вопрос — не то, как данные показаны, а то, как они физически хранятся. В MOLAP они хранятся как многомерный массив.
Такой формат позволяет максимально быстро обрабатывать сложные аналитические запросы. Как только поступает запрос, схема типа «звезда» или «снежинка» оптимизируется под него, и результат возвращается быстро.
Преимущества
- Превосходные свойства индексации (indexing), то есть ускорения выполнения запросов.
- Высокая скорость обработки сложных аналитических запросов.
- Сложные вычисления на многомерном массиве выполняются намного быстрее, чем на строках данных.
- Формат хорошо подходит для сложных вычислимых функций.
Недостатки и ограничения
- MOLAP требует копирования и преобразования всех данных в нужный многомерный массив.
- Его можно применять только для небольших хранилищ.
- Если хранилище гигантское, придётся перестраивать его в десятки схем «звезда» и «снежинка» под каждый аналитический запрос.
- Большое хранилище придётся много раз переписывать в многомерные массивы, что требует огромных затрат памяти.
- Быстро наступает стадия перезаполнения памяти.
- Недостаток — низкий коэффициент использования дискового пространства.
- Если таблица разрежена (sparse data), то есть в данных есть «дырки», MOLAP становится крайне неэффективным: часть объёма не используется, но работа по записи всё равно выполняется.
- Набор измерений (dimensions) должен быть фиксирован.
- Набор запросов аналитиков должен быть неизменным по времени или меняться очень редко.
- Если требования бизнес-аналитика постоянно меняются, придётся каждый раз создавать и перезаполнять новые кубы, а эффективность резко падает.
Когда применять MOLAP
- Когда объём исходных данных не очень велик.
- Когда хранилище большое, но уровень агрегации (aggregation) крайне высокий. Например, данные суммируются сразу по годам, а детализация по месяцам не нужна. Тогда многомерный массив получается компактным.
- Когда отчёты постоянны по времени.
- Когда критически важно быстро получить ответ на запрос.
- Когда центральное звено — время отклика для бизнес-аналитика.
- Когда организация готова заплатить больше за физический объём памяти, дополнительное оборудование или кластер, чтобы всё работало быстрее.
- Когда нужны сложные вычисления на многомерных данных.
В реляционной модели с нормализацией (normalization) для сложных математических операций данные приходится «склеивать», и расчёты идут медленно. Многомерный куб лучше приспособлен к таким операциям.
ROLAP
Суть формата
ROLAP — это реляционная схема. Вся информация хранится в реляционных таблицах, в рамках третьей нормальной формы (3NF). Куб собирается только тогда, когда его запрашивает аналитик. Аналитик отправляет запрос, и данные приходят, но изначально они хранятся в форме реляционных наборов таблиц. Многомерного массива физически нет: куб искусственно строится из реляционных источников в момент запроса.
Если пользователь запрашивает сложную математическую операцию, например суммирование, она выполняется не на многомерном массиве, которого физически нет, а на первичном источнике — нормализованных таблицах. Поэтому ROLAP работает медленнее.
Преимущества
- ROLAP чаще реализуется на практике, потому что размер хранилища не позволяет использовать MOLAP.
- Для больших хранилищ ROLAP экономит память.
- Отдельная многомерная структура не хранится, поэтому при изменении структуры отчёта не нужно перестраивать физические структуры.
- Если форма отчёта меняется или нужны новые срезы, администратор пишет новый запрос, и результаты возвращаются по новой структуре.
- ROLAP удобен, когда отчёты и типы аналитики часто меняются.
- Сохраняется уровень безопасности информации: данные остаются в исходном первозданном виде.
- В MOLAP при перестройке в другую структуру можно потерять исходный уровень безопасности и доступа, а в ROLAP этого не происходит.
- Внутри ROLAP можно использовать «звездообразные» схемы для ускорения построения псевдомногомерного массива, который перестраивается только по факту запроса.
- Уровень нормализации немного опускают, чтобы ускорить построение искусственного многомерного куба.
Недостатки
- Главный недостаток по сравнению с MOLAP — меньшая производительность.
- Аналитические запросы бизнес-аналитика работают медленнее.
- Сложные вычисления на нормализованной структуре крайне неэкономичны.
Когда применять ROLAP
- Когда хранилище большое.
- Когда нужно экономить память.
- Когда отчёты часто меняются.
- Когда важна гибкость к новым срезам аналитики.
- Когда данные должны оставаться в исходной структуре с сохранением безопасности.
HOLAP
Суть формата
HOLAP — гибридная архитектура. Она объединяет ROLAP и MOLAP и вбирает достоинства каждого подхода. MOLAP требует плотных данных (dense data), сильно агрегированных, компактных. ROLAP хорошо работает, когда данные разрежены (sparse data), то есть содержат много «дырок» и представлены в большом объёме.
Серверы HOLAP используют ROLAP для разреженных данных и MOLAP для плотных данных. Запрос фрагментируется на подзапросы: часть информации берётся из схемы ROLAP, часть — из схемы MOLAP. Разреженные, слабоагрегированные данные хранятся в ROLAP. Плотные, сильно агрегированные данные хранятся в MOLAP. При поступлении запроса часть данных забирается из одного компонента, часть — из другого. Работает интеллектуальный механизм, который понимает, что откуда извлекать.
Агрегация хранится в форме MOLAP, а исходные измерения — в форме ROLAP.
Преимущества
- Отсутствует ограничение на размер, которое есть у MOLAP.
- За счёт компонента MOLAP происходит прирост производительности запроса.
- Не всё хранится в ROLAP: агрегаты уже посчитаны в форме многомерного массива.
- Сложная операция агрегирования и суммирования, которая неэкономична в ROLAP, избегается, потому что эта компонента заранее посчитана в MOLAP.
Недостатки
- Сложная функция, которая определяет, что брать из ROLAP, а что из MOLAP, может привести к проблемам.
- Взаимодействие и синхронизация (synchronization) двух компонентов забирают часть ресурсов.
- Производительность падает из-за необходимости обеспечивать синхронизацию между двумя компонентами.
- Это ключевой недостаток HOLAP.
Сравнение OLTP, ROLAP и MOLAP
| Критерий |
OLTP |
ROLAP |
MOLAP |
| Типовые операции |
Вставка и обновление данных |
Формирование отчёта |
Аналитика |
| Назначение |
Первичные источники информации, классические базы данных |
Детализированная отчётность |
Анализ с высокой агрегацией |
| Уровень требований |
Низкий |
Средний |
Высокий |
| Структура |
Записи, строки |
Реляционные таблицы, 3NF |
Многомерные массивы |
| Формы |
Фиксированные, регламентированные |
Определяются пользователем |
Определяются пользователем |
| Объём данных |
Небольшой, но транзакций много и часто |
От малого до большого |
Большой |
| Уровень данных |
Максимально детальный |
Детальные и суммарные данные, небольшой уровень агрегации |
Только суммарные агрегационные данные |
| Сроки хранения |
Только текущие данные |
Исторические и текущие данные |
Исторические и текущие данные |
| Структурные элементы |
Записи, строки |
Записи, строки |
Многомерные массивы |
В OLTP всё делается по принципу insert (вставка): информация обновляется, добавляются новые данные. ROLAP заточен под формирование отчёта: нужна детализированная информация о том, где, когда и сколько было продано. MOLAP заточен на аналитику, потому что у аналитики, как правило, высокий уровень агрегации, а аналитические операции тяжеловесные: сложные вычисления, математическое ожидание, дисперсия и другая математика. На реляционной схеме это считается крайне сложно, а на многомерных массивах — гипербыстро.
В OLTP структура не меняется, формы строго регламентированы и прописаны в техническом задании. Пользователь не может запросить новый столбец или сумму. В ROLAP и MOLAP пользователь сам определяет, как представить данные.
Достоинства и недостатки OLAP-отчётов
Достоинства
- Простота использования и восприятия выходных таблиц.
- OLAP-куб понятен: видны товар, продавец, время, годы, а в центре ячеек — объём продаж.
- Полнота аналитических данных.
- Полная и лёгкая настройка отчёта без программиста.
- За счёт OLAP-куба можно, как в Excel в сводной таблице, ставить галочки и выбирать, что выводить.
- Возможность быстро строить кастомный отчёт «на лету».
- Возможность детализировать отчёт в процессе анализа данных.
- Детализация (drill-down): можно раскрывать всё более детальную информацию, двигаться вниз по иерархии — от категории товара к подкатегории, затем к конкретному товару.
- Формирование отчётов намного быстрее.
- Непротиворечивость данных в отчётах.
- Консолидация информации из различных источников: в хранилище сливаются разные первичные источники, и видна консолидированная информация по всем базам.
- Повышенная защита данных.
- Эквивалентность одного OLAP-отчёта целому набору простых отчётов: отчёт можно двигать, крутить, вертеть и смотреть в разных срезах и за разные периоды.
- Вместо десятков или сотен плоских отчётов можно сформировать один многомерный отчёт.
Недостатки
- OLAP не ориентирован на получение форм отчётности с произвольным дизайном.
- Есть набор полей, которые сформировались в кубе. Если пользователь захочет то, что не попало в куб, такой отчёт построить не получится.
- Для нового поля, которого не было в предыдущих OLAP-кубах, нужно задействовать отдельные ресурсы, просить администратора и программиста сформировать новый куб. Это долгая и кропотливая работа.
- Некоторые пользователи визуально плохо воспринимают выходные таблицы с подтаблицами и объединением ячеек.
- Ограниченные возможности при создании оперативных отчётов.
- Основная проблема — необходимость разработки хранилища. 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 по назначению, формам и срокам хранения?