BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс Современная архитектура хранилища данных » Размерное моделирование и витрины данных по Кимбаллу

Размерное моделирование и витрины данных по Кимбаллу

Неужели размерное моделирование безнадежно устарело?

Прежде чем ответить на этот вопрос, предлагаю сделать шаг назад и посмотреть, что именно мы понимаем под моделированием размерных данных.

 

Зачем нужно моделировать данные?

Вопреки распространенному мнению, модели данных служат не только для того, чтобы служить ER-диаграммой для проектирования физической базы данных. Модели данных отражают всю сложность бизнес-процессов на предприятии. Они документируют важные бизнес-правила и концепции, а также помогают стандартизировать ключевую терминологию предприятия. Они обеспечивают ясность процессов и помогают выявить  двусмысленность ключевых бизнес-процессов. Кроме того, модели данных можно использовать и для эффективного взаимодействия с другими заинтересованными сторонами. Вы не будете строить дом или мост без чертежа, не так ли? Так зачем Вам строить приложение для работы с данными, например хранилище данных, без четкого плана?

 

Для чего нужны размерные модели?

Размерное моделирование - это особый подход к моделированию данных. В качестве синонимов размерной модели мы также используем такие понятия, как витрина данных (data mart) или схема «звезда» (star schema, оптимизированная для аналитики данных. Взгляните на приведенную ниже размерную модель, она интуитивно понятна. Мы сразу видим, как можно «нарезать» данные о заказах по клиентам, продуктам или датам и оценить эффективность бизнес-процесса "Заказы", агрегируя и сравнивая ключевые метрики.

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

 

Моделирование данных vs Размерное моделирование

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

Примечание: Стандартное моделирование данных также называется 3NF-моделированием.

Стандартный подход к моделированию данных не подходит для задач бизнес-аналитики. Большое количество таблиц приводит к большому количеству соединений, замедляющих работу. В аналитике данных мы по возможности стараемся их избегать. В размерных моделях мы денормализуем несколько связанных таблиц в одну, например, несколько таблиц из нашего предыдущего примера могут быть предварительно объединены в одну таблицу: география.

 

Так почему же некоторые люди утверждают, что размерное моделирование умерло?

Думаю, Вы согласитесь, что моделирование данных в целом и размерное моделирование в частности - довольно полезное занятие. Так почему же некоторые люди утверждают, что размерное моделирование бесполезно в эпоху больших данных и Hadoop?

Как Вы понимаете, на это есть определенные причины.

 

Хранилища данных безнадежно устарели

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

 

Заблуждение, связанное со схемой на чтение (schema on read)

Второй аргумент, который я довольно часто слышу, звучит примерно так: "Мы придерживаемся подхода схемы на чтение, поэтому нам больше не нужно моделировать данные". На мой взгляд, концепция схемы на чтение - одно из самых больших заблуждений в аналитике данных. Я согласен с тем, что полезно хранить необработанные данные в дампе, который не содержит схем. Однако этот аргумент не должен использоваться как оправдание для полного отказа от моделирования данных. Подход с использованием схемы на чтение - это не что иное, как перекладывание ответственности на последующие процессы. Кто-то все равно должен будет определить типы данных. Каждый процесс, который обращается к дампу данных без схемы, должен самостоятельно разобраться в том, что происходит. Такая работа с течением времени накапливается и в результате превращается в «снежный ком», а ведь ее можно легко избежать, сразу определив типы данных и надлежащую схему.

 

Физические аспекты модели данных

Существуют ли веские аргументы в пользу того, чтобы объявить размерные модели окончательно устаревшими? На самом деле, есть и более веские аргументы, чем те два, которые я перечислил выше. Они требуют понимания физического моделирования данных и принципов работы Hadoop.

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

 

Доведение денормализации до полного конца

Почему бы не довести денормализацию до полного конца - избавиться от всех объединений и прийти к одной единственной таблице? Действительно, такой вариант полностью устранит необходимость в каких-либо соединениях. Однако, у данного решения есть ряд серьезных «побочных эффектов». Прежде всего, это значительно увеличит объем т хранилища, так как нам нужно будет хранить много избыточных данных. С появлением колоночных форматов хранения для аналитики данных это уже не так актуально. Более серьезной проблемой полной денормализации является тот факт, что каждый раз при изменении значения одного из атрибутов нам нужно будет обновить его в нескольких местах - возможно, нам потребуется тысяча или даже миллионы обновлений. Один из способов решить эту проблему - полностью перезагружать наши модели каждую ночь, что гораздо быстрее и проще. Колоночные базы данных обычно используют следующий подход: сначала они хранят обновления данных в памяти и затем асинхронно записывают их на диск.

 

Распределение данных в распределенной реляционной базе данных (MPP)

При создании размерных моделей на Hadoop, например Hive, SparkSQL и т. д., нам необходимо хорошо разбираться в одной очень важной особенности технологии, которая отличает ее от распределенных реляционных баз данных, таких как Teradata. При распределении данных по узлам в MPP мы обладаем контролем над размещением записей. Основываясь на стратегии разбиения (например, хэш, список, диапазон и т. д.), мы можем разместить ключи отдельных записей в разных вкладках на одном узле. Благодаря гарантированной совместной локальности данных наши соединения будут выполняться очень быстро, поскольку нам не нужно передавать данные по сети. Взгляните на пример, представленный ниже. Записи с одинаковым ORDER_ID из таблиц ORDER и ORDER_ITEM окажутся на одном узле.

 

Распределение данных на Hadoop

В этом состоит одно из ключевых отличий от систем на базе Hadoop, где мы разбиваем данные на большие «куски», распределяем и реплицируем их по узлам в распределенной файловой системе Hadoop (HDFS). При такой стратегии распределения данных мы не можем гарантировать их совместную локальность. Взгляните на пример ниже. Записи для ключа ORDER_ID - на разных узлах.

Для того, чтобы осуществить объединения, нам нужно будет отправить данные по сети, что неизбежно отразиться на производительности в целом.

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

А что же делать, если у нас есть большая таблица фактов и большая таблица измерений, например, клиентов или продуктов? Или когда у нас есть две большие таблицы фактов?

 

Размерные модели в Hadoop

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

Для объединения двух больших таблиц фактов мы можем вложить таблицу с меньшей степенью детализации в таблицу с большей степенью детализации, например, большую таблицу ORDER_ITEM вложить в таблицу ORDER. Современные движки запросов, такие как Impala или Drill, нам в помощь.

Эта стратегия вложения данных также полезна для сложных концепций Кимбалла, таких как связующие таблицы для представления отношений M:N в размерной модели.

 

Hadoop и медленно меняющиеся измерения

Хранение в файловой системе Hadoop является неизменяемым. Другими словами, Вы можете только вставлять и/или добавлять новые записи. Изменять данные нельзя. Если Вы работаете с реляционными хранилищами данных, то поначалу это может показаться немного странным. Однако, по большому счету, базы данных работают аналогичным образом: они хранят все изменения данных в неизменяемом журнале записей (известный в Oracle как redo log) до того, как процесс асинхронно обновит данные в файлах данных.

Какое влияние оказывает неизменяемость на наши размерные модели? Возможно, Вы помните концепцию медленно меняющихся измерений (SCDs) из курса моделирования размерностей. SCD по желанию сохраняют историю изменений атрибутов. Они позволяют нам составлять отчеты по метрикам на основе значения атрибута в определенный момент времени. Однако это не является функцией по умолчанию. По умолчанию мы обновляем таблицы измерений последними значениями. Так каковы же тогда наши возможности в Hadoop? Помните! Мы не можем обновлять данные. Мы можем просто сделать SCD процессом по умолчанию и проводить аудит любых изменений. Если мы хотим запускать отчеты по текущим значениям, мы можем создать представление поверх SCD, которое будет извлекать только последнее значение. Это можно легко сделать с помощью оконных функций. В качестве альтернативы можно запустить так называемую службу уплотнения, которая физически создает отдельную версию таблицы измерений только с последними значениями.

 

Эволюция хранения в Hadoop

Эти ограничения Hadoop не остались без внимания производителей платформ Hadoop. В Hive теперь есть ACID-транзакции и обновляемые таблицы. Но , похоже, эта функция до сих пор не работает должным образом . Компания Cloudera применила другой подход - с помощью Kudu они создали новый обновляемый формат хранения, который размещается не в HDFS, а в локальной файловой системе ОС. Он полностью очищен от ограничений Hadoop и больше похож на традиционный слой хранения в столбчатых MPP. Вообще, для любых BI и дашбордов лучше использовать MPP, например Impala + Kudu, чем Hadoop. При этом у MPP также есть свои ограничения, особенно когда речь идет об отказоустойчивости, параллелизме и масштабируемости. Как только Вы сталкиваетесь с этими аспектами, Hadoop и его близкий родственник Spark – к Вашим услугам. Мы подробно рассматриваем все эти ограничения в нашем учебном курсе «Big Data для профессионалов области хранения данных», где также даем подробные рекомендации по использованию СУБД или SQL в Hadoop/Spark.

 

Вердикт. Устарели ли размерные модели и схема «звезда»?

Мы все знаем, что Ральф Кимбалл давно ушел на пенсию. Но его основные идеи и концепции по-прежнему актуальны и продолжают жить. Нам приходится адаптировать их к новым технологиям и типам хранилищ, но они по-прежнему имеют свою ценность.

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
Data Mesh: топологии и гранулярность домена
Следующая статья →
Какие ML-платформы нужны бизнесу, и кто их может сделать
Запросить видео презентацию Запросить доступ к демо стенду online Узнать стоимость лицензий

Задать вопрос

loading...

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • Ситилинк

    Электронный дискаунтер «Ситилинк» — один из крупнейших онлайн‑ритейлеров России (3‑е место по объему онлайн‑продаж в рейтинге Data Insight и Ruward 2016 года E‑commerce Index TOP‑100, 8 место в рейтинге Forbes «20 самых дорогих компаний Рунета — 2017»). На рынке работает 9 лет.

    В ассортименте дискаунтера более 50 000 наименований компьютерной цифровой, бытовой и садовой техники, офисной мебели и других товарных категорий. Более 700 мировых брендов в портфеле. Около 4 000 сотрудников по всей России

  • Группа компаний "Дёке" производит товары для внешней отделки загородных домов. Ассортимент включает виниловый сайдинг, фасадные панели, водосточные системы, чердачные лестницы и гибкую битумную черепицу. Продукция Дёке вызывает гордость у сотрудников и партнеров компании.

  • ПАО АНК «Башнефть» — российская вертикально-интегрированная нефтяная компания, с 2016 года входит в ПАО НК «Роснефть». Главный офис расположен в городе Уфе (Башкортостан). Добыча углеводородов – более 21 млн тонн нефти в год. Объем переработки – более 18 млн тонн нефти в год. Число сотрудников – более 33 тыс. человек.

  • В «Пивоваренной компании «Балтика» аналитическая платформа Loginom применяется для моделирования процессов или построения отчетов, в том числе для формирования рекомендаций по корректировке плана промоактивностей.
     
  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.