Сегодня поговорим о том, как устроены модели данных в BI-платформах. Рассмотрим два основных типа моделей данных, которые используются в BI: физическую и логическую.
Когда стоит вопрос о выборе BI-платформы, реализация модели данных является одним из ключевых критериев, на который мы обращаем внимание в первую очередь. Важно понимать, как работает модель данных в конкретной BI-системе, так как функционал модели во-многом определяет возможности платформы по работе с данными в целом. Это также поможет выбрать подходящий способ работы с данными в зависимости от задач бизнеса и технических ограничений платформы. Обсудим преимущества каждой модели данных, а также ограничения и способы их частичного обхода.
Физическая модель
Физическая модель данных в BI представляет собой структуру, в которой таблицы связаны между собой через активные неотключаемые джоины. С их помощью формируется один SQL-запрос и возвращается одна итоговая результирующая таблица. Все данные, которые связаны через джоины в этой модели, извлекаются и соединяются сразу на уровне модели.
Это значит, что однажды построенный на основе физической модели SQL-запрос останется неизменным и всегда будет задействовать все таблицы модели вне зависимости от того, нужны они в данной конкретной визуализации или нет.
Альтернативой создания физической модели и единого датасета может выступать заранее созданная на стороне СУБД витрина данных. В большинстве случаев, за счет материализации данных в СУБД и отсутствия джоинов на этапе сборки визуализации, такой вариант обеспечит более высокую скорость работы и производительность.
Оптимальное использование:
Физическая модель подходит для работы с простыми моделями, такими как звезда и снежинка или одна готовая денормализованная витрина.
Ограничения:
Работа со сложной структурой данных. Реализация сложной модели с несколькими фактовыми таблицами (например, созвездие) невозможна.
Гибкость. Изменение требований к дашборду требует пересмотра всей модели: от уровня детализации до разреза данных.
Производительность. При увеличении числа таблиц и сложных расчётов запросы становятся тяжелее. С учетом того, что количество таких запросов пропорционально числу визуализаций в дашборде, это может существенно снизить скорость работы отчёта.
Логическая модель
Логическая модель данных — это более гибкий подход к организации данных в BI, при котором SQL-запросы генерируются динамически для каждой визуализации и задействуют только ту часть модели, которая содержит необходимые данные. Связи между таблицами описываются на уровне метаданных модели, но вместо объединения всех данных сразу в единый запрос, связи активируются только при использовании данных этой таблицы в визуализации. Таким образом, логическая модель добавляет новый уровень абстракции над данными.
Преимущества:
-
Производительность.
Меньший объем обрабатываемых данных в запросе позволяет снизить нагрузку на КХД/внутренний движок платформы.
Ускорение работы слайсеров при работе со справочниками уникальных значений.
Минимизация ошибок. Добавление новой таблицы в модель не повлечет за собой дублирование данных или изменение структуры итоговой таблицы.
Гибкость. Логическую модель можно легко адаптировать к изменениям в бизнес-требованиях. Новые поля или таблицы могут быть добавлены в модель без необходимости пересмотра всех существующих связей и таблиц, поскольку добавление новой таблицы не повлечет за собой дублирования данных или изменений в структуре итоговой таблицы.
Ограничения:
Потенциальная избыточность. Чрезмерная гибкость модели и лояльность к ошибкам моделирования может привести к «захламлению» её структуры и необоснованной перегруженности модели из-за неконтролируемого добавления дополнительных срезов, витрин, агрегатов и фактовых таблиц.
Компромиссное решение
Очевидно, что функционал физической модели практически во всем уступает функционалу логической модели. Однако с точки зрения вендора платформы, реализация механизма логической модели гораздо более трудозатратна и кратно сложнее, чем физической. В чистом виде физическая модель практически не встречается в современных BI-платформах, однако повсеместно используется ее улучшенная версия.
Существенно повысить гибкость физической модели позволяет функционал глобальных фильтров, которые, конечно, не заменяют полноценные логические связи между таблицами, но позволяет синхронно фильтровать данные в разных таблицах/датасетах по общим полям.
Допустим, у вас есть два разных, не связанных между собой датасета. При добавлении фильтра в дашборд, он будет проверять наличие полей с таким названием во всех используемых в дашборде датасетах и далее автоматически фильтровать данные по всем датасетам, где нашел совпадение. Таким образом, такие глобальные фильтры обеспечивают согласованную фильтрацию данных в разных таблицах, даже при отсутствии явных связей между ними. Если необходимо фильтровать не все таблицы, а лишь некоторые, то как правило, можно настроить список таблиц/визуализаций, на которые фильтр будет влиять.
Преимущества:
Повышение гибкости физической модели. Даже в отсутствие прямой связи между датасетами такие фильтры позволяют частично синхронизировать данные. Это удобно, если таблицы содержат данные, которые логически связаны, но физически хранятся в разных фактовых таблицах или в разных денормализованных витринах, связь между которыми в физической модели создала бы замножение строк.
Простота использования. Синхронизация фильтров в разных датасетах происходит автоматически при добавлении их в дашборд, не требуя дополнительных действий от разработчика.
Ограничения:
Не заменяет полноценные связи. Если требуется подтянуть информацию из другой таблицы или объединить данные из разных датасетов, глобальные фильтры не помогут.
Зависимость от нейминга полей. Для работы этой системы необходимо, чтобы поля в разных таблицах имели одинаковые названия, иначе авто-фильтрация не сработает.
Эти ограничения указывают на то, что связь через фильтры и параметры — это скорее облегченная альтернатива логической модели, подходящая для работы с простыми связями, а не универсальное решение для всех сценариев работы с данными.
Сравнение моделей
Критерий |
Физическая модель |
Компромиссная модель |
Логическая модель |
Формирование запроса в БД |
Все таблицы соединяются между собой сразу, в одном запросе. |
Таблицы объединяются только по мере необходимости для конкретной визуализации. |
|
Производительность |
Может снижаться на больших объемах данных из-за повсеместного использования избыточных данных |
Оптимизированная производительность за счет динамического создания запросов с минимальным количеством джоинов и избыточных данных. |
|
Гибкость |
Изменения в структуре данных требуют пересмотра модели, гранулярности витрины и задействованных таблиц. |
Возможна связанная работа фильтров в разных датасетах, что позволяет в некоторых случаях реализовать более сложные модели |
Модель легко изменяется, новые данные могут быть интегрированы без глобальных изменений в модели. |
Лояльность к ошибкам моделирования |
Небрежное моделирование может привести к замножению строк. В идеале готовая витрина должна создаваться до загрузки в BI-платформу |
Логическая модель лояльна к разрастанию, смешиванию фактовых таблиц, денормализованных витрин, агрегатов и пр. |
Применимость разных моделей
Физическая модель будет оптимальной для:
Простых моделей данных.
Малых и средних объёмов данных, где производительность не является критичной
Отчетов, где данные уже были рассчитаны и подготовлены на стороне СУБД, и нужно просто построить дашборд на готовой витрине.
Пример 1: Дашборд с информацией по ежедневным остаткам товаров на складах. Пользователь дашборда может быстро проанализировать, что требует пополнения.
Пример 2: Ежемесячный отчет по продажам, в котором отображается сводка по выручке и количеству проданных единиц товара по каждому клиенту.
Компромиссное решение с фильтрами подойдёт для:
Проектов, где нужно минимальными средствами повысить гибкость физической модели
Связанных логически данных, в случае если не нужно делать общие расчеты на основе нескольких датасетов
Пример 1: Дашборд, где пользователь может выбрать страну, и эта информация будет автоматически фильтровать и данные о клиентах, и данные о продажах, даже если таблицы связаны не напрямую.
Пример 2: Дашборд построен на данных двух готовых витрин разной детализации, которые не нужно связывать между собой, но необходимо смотреть данные по одинаковым товарам, странам, месяцам.
Логическая модель необходима для:
Сложных моделей данных с несколькими фактами (например, созвездие).
Больших объёмов информации, где важно контролировать производительность запросов.
Сценариев, где важна гибкость при добавлении новых данных без пересмотра всей модели.
Пример 1: Анализ эффективности маркетинговых кампаний, где визуализации требуют разных наборов данных в зависимости от анализа: одна визуализация может использовать таблицы клиентов и продаж, а другая — данные о рекламных кампаниях и поведении пользователей.
Пример 2: В сети супермаркетов требуется аналитическая система для анализа Sell-Out и Sell-In, которые являются отдельными бизнес-процессами, но используют общие справочники, такие как «Товары», «Клиенты» и др.
Реализация моделей в BI-платформах
Следует понимать, что реализация логической и физической модели может отличаться в разных платформах. Выше описаны общие правила, характерные для каждой из моделей, но уровень реализации этих моделей может быть разным.
В Fine BI, к примеру, реализована логическая модель данных. В результате, для каждой визуализации будет генерироваться свой SQL-запрос, включающий только нужные таблицы модели. Но при этом реализация модели созвездия, включающей несколько фактовых таблиц, может оказаться непростой задачей.
В то же время Power BI, который имеет одну из самых продвинутых логических моделей на рынке, помимо поддержки моделей данных любой сложности, включая созвездие, позволяет еще и «на лету» подменять используемое соединение между двумя таблицами. Так, например, в одной визуализации (меры) таблица1 и таблица2 будут связываться по id1, а для другой визуализации (меры) связь произойдет по id2.
Мировые лидеры среди BI-платформ, такие как Power BI, Tableau, QlikSense и другие, используют логическую модель данных. В большинстве российских и Open-Source платформах реализована дополненная глобальными фильтрами физическая модель, но также есть и платформы с логической моделью (например Дельта BI, Fine BI, PIX BI). Кроме того, есть платформы, реализующие логическую модель с помощью OLAP-кубов, например Форсайт, Alpha BI, Visiology v2.
Многие российские вендоры понимают преимущества логической модели, но также адекватно оценивают сложность и трудозатраты на ее реализацию. Поэтому на старте разработки решили использовать физическую модель с глобальными фильтрами и сфокусироваться на развитии другого критичного функционала платформы. Сейчас, когда основной объем функционала уже реализован, многие вендоры включают в Roadmap на ближайший год переход к логической модели, что, несомненно, повысит конкурентоспособность российских BI-платформ, в том числе, на мировом рынке.
deadfoster
Крутая статья! Анастасия,подскажите в статье упоминается, что в большинстве российских BI-платформ используется дополненная глобальными фильтрами физическая модель. Какие основные трудности возникают у вендоров при переходе к реализации логической модели данных?
anastapenko Автор
Добрый день, хороший вопрос! При подготовке к статье я обратилась к одному из Российских вендоров, чтобы узнать из первых рук причины выбора именно физической модели. Вот такие аргументы привел вендор, ниже дополнила своими комментариями.
Здесь речь идет о том, что если для каждой визуализации не нужно составлять свой отдельный запрос, отбирая только нужные таблицы, а оставлять 1 запрос со всеми джоинами, то это может ускорить формирование запроса к БД поскольку запрос не будет составлять дианмически. Тем не менее, запрос с избыточными джоинами будет отрабатывать дольше, чем запрос с меньшим количеством джоинов.
Здесь говорится об использовании "компромиссной модели", когда мы можем передать фильтры из дашборда в две разные модели и синхронно фильтровать данные. Это действительно решает часть проблем физической модели, но все же не заменяет настоящих логических связей между моделями.
LOD-выражения в BI-платформе обычно реализуются с помощью оконных функций или CTE. Это не устраняет изначальную проблему с задубливанием или с излишней дателизацией данных, но предлагает действенный, хоть и не оптимальный способ сделать расчет корректным. Однако нужно понимать, что не все ограничения физической модели можно обойти с помощью LOD-выражений.
При соединии двух фактовых таблиц, обе модели: и физическая и логическая будут вести себя одинаково, а именно - задублят данные. Поскольку принцип работы джоина двух таблиц не меняется от способа реализации модели и происходим типичным для любой РСУБД образом, то и результат джоина будет одинаковый. Другой вопрос, что если связь между фактовыми таблицами не нужна для визуализации/расчета, то логическая модель ее не создаст, в то время как физическая модель всегда использует все джоины и таблицы, которые в ней созданы.
Кроме того, вендор поделился сложностями реализации логической модели:
По итогу, реализация физической модели обходится вендору существенно дешевле с точки зрения разработки и при этом позволяет закрыть довольно большой пласт требований. Тем не менее, логическая модель - это, несомненно, другой уровень гибкости в работе с данными в BI-платформе. Многие вендоры понимают это и включают реализацию логической модели в роадмэп будущего развития своей платформы.