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

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

Что такое куб данных


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

Дизайн-паттерн реализован в основном в двух контекстах: 

  1. Как предварительно агрегированная таблица в реляционной базе данных.
  2. Как объект данных в специализированной OLAP-системе.

В обоих контекстах кубы данных должны помогать бизнес-аналитикам предварительно упаковывать и агрегировать важные для стейкхолдеров показатели. Если вкратце, с 1980 по 2010 год специалисты прибегали к предварительной упаковке и агрегированию. Это помогало избежать оперативных агрегатных запросов, из-за которых резко снижалась доступная на тот момент пропускная способность обработки.

Сегодня эти проблемы стоят не так остро. Но к этой теме мы вернёмся позже.

Кубы данных в реляционных БД


Рассмотрим пример — таблицу с данными по продажам по региону, магазину и продукту:



Чтобы создать куб данных из взятого для примера дата-сета, нужно агрегировать сумму цен по каждой комбинации разрезов. В PostgreSQL и MS SQL имеется подблок GROUP BY под названием CUBE, который сделает эту работу за вас.

Вот как выглядит запрос CUBE с этими данными:

SELECT SUM(price) as total_sales, 
       region, 
       store,
       product 
FROM sales
GROUP BY CUBE(region, store, product);

Поскольку у взятого для примера дата-сета есть три разреза: регион, магазин, продукт, — вышеуказанный запрос выдаст восемь сгруппированных множеств и 29 строк данных (исходя из количества уникальных значений по разрезам).

Чтобы рассчитать общее количество сгруппированных множеств, созданных кубом данных, воспользуйтесь формулой: 2^number_of_dimensions.

Сгруппированные множества для этого примера:

(region, store, product),
(region, store),     
(region, product),     
(store, product),     
(region),     
(store),     
(product),      
()

В этом кубе данных нет ничего чрезмерно сложного: мы просто обобщили данные по каждому сочетанию разрезов. В прошлом дата-инженер создавал похожую таблицу и передавал её аналитику в виде общего представления по продажам.

Кубы данных в OLAP-системах


Как мы показали выше, куб данных можно реализовать в таблице стандартной БД, но их чаще используют в приложении Online Analytical Processing (OLAP).

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

Краткий исторический экскурс


Сейчас давайте ненадолго вернёмся в прошлое и разберёмся, что такое OLAP-системы и почему их вообще создали.

Сегодня, как и в 1970-х, бизнес-аналитика служит одной и той же цели: стейкхолдеры направляют запросы к данным и обобщают результаты по разным разрезам. К сожалению, десятилетия назад для выполнения этих запросов мог подойти только интерфейс используемых в компании рабочих баз данных SQL — тех самых, которые поддерживали цифровые бизнес-транзакции.

По современным меркам, компьютеры той эпохи работали очень медленно. Выполнять анализ непосредственно в рабочей базе данных было долго и дорого в плане затрат вычислительных ресурсов. Что ещё хуже, это мешало выполнять повседневные операции, для которых базы данных, собственно, и предназначались.

Приход OLAP-систем


В качестве решения этой проблемы разработчики ПО придумали отдельные хранилища, в которые загружали рабочие данные для анализа. Эти специализированные OLAP-системы хранили в предварительно агрегированном виде многомерную информацию, которую инженеры и аналитики называли  OLAP-кубами.

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

  • Roll up: объединить показатели в категории разрезов уровнем выше (город => область).
  • Drill Down: разбить обобщённые категории на категории уровнем ниже (область => город).
  • Slice and Dice: выбрать сегмент данных из одного или нескольких разрезов.
  • Pivot: поменять оси табличного представления.

В этом контексте OLAP-куб — это агрегат многомерных данных, а OLAP-система — интерфейс сводных таблиц, предназначенный для исследования куба с помощью языка запросов или GUI. Современные версии OLAP-систем — это IMB Cognos, Oracle Olap и Oracle Essbase.

Если искать в интернете, что такое OLAP-куб, Google будет раз за разом выводить описания в виде трёхмерного изображения куба, который состоит из кубиков поменьше. Суть таких схем — наглядно представить, как вышеописанные функции работают в OLAP-системе и как выглядят сегменты агрегированных данных, созданных пересекающимися разрезами.

Но поскольку этому визуальному представлению не хватает контекста, оно скорее запутывает, чем проясняет дело. Зато теперь, когда мы разобрались с основами, эта схема может нам пригодиться.


OLAP drill up&down en.png со страницы Wikipedia

Вчера и сегодня


С тех пор как разработчики разворачивали кубы данных и OLAP-системы в качестве решения для бизнес-аналитики, технологический ландшафт кардинально изменился. Эффективность обработки данных экспоненциально выросла, а благодаря облачным платформам вроде AWS, GCP и VK Cloud, ещё и существенно подешевела. Кроме того, колоночные хранилища упростили доступ к большому объёму данных при стандартных нагрузках.

Благодаря этим переменам необходимость в кубах и OLAP-системах заметно снизилась.

Сегодня аналитики могут безо всяких проблем на лету агрегировать данные по разным разрезам с помощью платформ типа BigQuery и Snowflake. Да и использование GUI для сведения воедино больших объёмов данных уже не вызывает трудностей. Такие инструменты, как DOMO и PowerBI, позволяют аналитикам с лёгкостью фрагментировать и анализировать данные вдоль и поперёк.

Заключение


Вернёмся к исходному вопросу — так что же такое OLAP-куб? Если очень коротко, это многомерная сводная таблица в OLAP-системе. Если не брать в расчёт особенности технической реализации, она похожа на сводную таблицу Excel.

Команда VK Cloud развивает собственные Big Data-решения. Будем признательны, если вы их протестируете и дадите обратную связь. Для тестирования пользователям при регистрации начисляем 3000 бонусных рублей.

Комментарии (5)


  1. Ivan22
    07.12.2022 14:30
    +3

    Благодаря этим переменам необходимость в кубах и OLAP-системах заметно снизилась.

    Ну да, ну да. А если вспомнить что тот же PowerBI данные загружает (если не юзаем DirectQuery) не куда-нибудь - а прямо что ни на есть в OLAP базу (VertiPaq движок называется). То оказывается что необходимость в OLAP кубах вообще повысилась, да еще как!

    Ну и любой альтернативный тул тоже имеет свою OLAP бд - что Qlik, что Табло, что Microstrategy. Даже Эксель(Power Pivot) собственно использует эту же OLAP db что и PowerBI для обработки данных.

    Просто то что эти бд скрыты под капотом BI тулов создает иллюзию что там какая-то магия, а по факту тот же OLAP что и 25 лет назад


    1. Ananiev_Genrih
      08.12.2022 05:54
      +2

      Если раскрыть аббревиатуру OLAP - online analytical processing. Т.е. это не технология, а парадигма хранения данных для работы с ними, это антоним OLTP (которя тоже не про технологию а парадигму).

      То есть по большому счету пофигу что там под капотом, классический многомерный MDX куб с агрегатами или табулярная модель на основе колоночной аналитической СУБД, и то и другое это OLAP. Так что автор комментария выше прав, OLAP никуда не ушёл, он просто поменял тех.стек. Тот же Microsoft (о котором почему-то не упомянул автор статьи) являясь крупнейшим в мире поставщиком OLAP в аналитике (=доля рынка SQL Server Analysis Services в сравнении с оракловыми и IBM решениями+доля рынка Excel в котором Power Pivot уже на борту+ Power BI) - и тот отказался от развития классических многомерных кубов в пользу колоночных решений, но при этом это все еще OLAP.


  1. vadim_bv
    08.12.2022 12:38
    +2

    Заголовок кликбейтный, какие мифы развенчаны?
    Вначале статься показалась интересной, а потом внезапно наступил конец. Хотелось бы пбольше про архитектуру, про заполнение, про тонкости извлечения данных, может быть, сравнить скорость выполнения запросов РСУБД vs предрасчитанный куб на тех же данных.
    Или стюардессу типа Oracle Essbase и иже с ними уже закопали?


    1. Ivan22
      08.12.2022 23:04

      все классичесские OLAP субд типа Essbase или MSAS - мертвы да.


  1. diamond_death
    09.12.2022 23:33
    +1

    А мужики то и не знают? https://kylin.apache.org/