Какие классические модели данных для хранилищ данных (DWH) ты знаешь?

«Какие классические модели данных для хранилищ данных (DWH) ты знаешь?» — вопрос из категории Моделирование данных и DWH, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В контексте хранилищ данных (DWH) я в основном работаю с двумя классическими моделями:

  1. Снежинка (Snowflake Schema):

    • Это нормализованная версия звезды. Центральная таблица фактов связана с таблицами измерений, которые, в свою очередь, могут иметь свои нормализованные под-измерения (таблицы-справочники).
    • Плюсы: Экономия дискового пространства за счет устранения избыточности данных, более простая поддержка целостности.
    • Минусы: Более сложные запросы с большим количеством JOIN, что может снижать производительность для аналитиков.
    • Когда использовать: Когда приоритетом является эффективное хранение и минимизация избыточности, а сложность запросов приемлема.
  2. Звезда (Star Schema):

    • Наиболее распространенная и простая модель. В центре находится таблица фактов с числовыми метриками (мерностями), окруженная денормализованными таблицами измерений с описательными атрибутами.
    • Плюсы: Высокая производительность запросов благодаря минимуму JOIN, простота для понимания и использования аналитиками.
    • Минусы: Избыточность данных и потенциальные аномалии обновления из-за денормализации.
    • Когда использовать: Когда ключевой приоритет — скорость выполнения аналитических запросов и простота для конечных пользователей.

Выбор между ними — это компромисс между производительностью запросов («Звезда») и эффективностью хранения/гибкостью («Снежинка»). В большинстве проектов я начинаю со «Звезды» и нормализую до «Снежинки» только те измерения, где это критично для экономии места.