Learning Platform
Глоссарий Troubleshooting
Урок 16.02 · 18 мин
Начальный
kimballbottom-upconformed-dimensionsbus-architecture

Kimball: data marts из conformed dimensions

В прошлом уроке — Inmon: единое нормализованное ядро, из которого выводятся витрины. Теперь второй классический подход, во многом противоположный по направлению движения. Ральф Кимбалл (Ralph Kimball) сформулировал его в книге «The Data Warehouse Toolkit» (1996). Это bottom-up методология — «снизу вверх».

Если Inmon строит сначала общее (ядро), то Kimball строит сначала частное (отдельные витрины под конкретные процессы) и интегрирует их в целое позже — через механизм, который вы уже изучили в модуле про dimension-таблицы: conformed dimensions. Это противоположное Inmon направление движения, и именно оно определяет все остальные различия двух подходов — скорость, требования к команде, способ обеспечения согласованности.


Идея: начни с витрины, не с ядра

У Inmon перед первым отчётом надо построить корпоративное ядро. Kimball предлагает обратное: не ждать ядра, а сразу взять один конкретный бизнес-процесс и построить под него размерную витрину (star schema).

Выбрали процесс «продажи» — спроектировали fct_sales, окружили его dimensions, наполнили из source-систем. Витрина готова и уже отвечает на вопросы бизнеса. Отдельного нормализованного enterprise-ядра при этом нет вообще — размерные витрины и есть warehouse.

Каждая витрина строится по знакомому вам четырёхшаговому процессу Kimball: выбрать бизнес-процесс, объявить grain, выбрать dimensions, выбрать facts. Результат — star schema, сразу оптимизированная под аналитические запросы: dimension соединяется с fact одним JOIN, никаких десятков соединений нормализованной схемы.

Стоит увидеть, в чём именно философское расхождение с Inmon. Inmon считает, что сначала надо построить «правильную» полную картину всего предприятия, а потом из неё нарезать удобные куски. Kimball исходит из того, что полную картину предприятия заранее построить трудно и долго, а ценность бизнесу нужна быстро — поэтому надо начинать с конкретного, ясно очерченного процесса, который понятен и нужен прямо сейчас. Это прагматичный, итеративный взгляд: не «спроектируем идеальный фундамент», а «решим конкретную задачу, потом следующую, и пусть хранилище вырастет из реальных потребностей». Размерная модель (star schema) для этого подходит идеально — она строится вокруг одного бизнес-процесса и сразу даёт удобный для запросов результат.

Kimball: витрины строятся напрямую из источников
Source-системыOLTP-базы, ERP, CRM, внешние источники — те же, что и у Inmon.
ETL прямо в витрину
Data mart: star schemaРазмерная витрина под конкретный бизнес-процесс. Fact в центре, dimensions вокруг. Строится сразу, без промежуточного нормализованного ядра.
сразу доступна для запросов
BI и отчётыАналитики работают с витриной напрямую. Star schema оптимизирована под запросы: dimension — один JOIN.

Bottom-up: но как же интеграция?

Здесь возникает законный вопрос. Если строить витрины по отдельности, не получится ли тот самый хаос, которого Inmon избегает своим ядром? Витрина продаж со своим справочником клиентов, витрина поддержки — со своим, и числа не сходятся?

Ответ Kimball — conformed dimensions и bus architecture. Вы уже изучали это в модуле 13, теперь видно, какую роль оно играет в методологии целиком.

Идея: витрины строятся по отдельности, но не на произвольных, а на общих, согласованных dimensions. dim_customer, dim_date, dim_product — conformed: одни и те же таблицы с одними и теми же ключами, переиспользуемые всеми витринами. Когда витрина продаж и витрина поддержки обе ссылаются на одну dim_customer, они автоматически интегрированы — drill-across между ними работает.

Инструмент планирования — bus matrix (тоже из модуля 13): строки — бизнес-процессы, столбцы — conformed dimensions. Команда рисует bus matrix в начале, договариваясь о наборе общих dimensions. Дальше витрины можно делать по одной, в любом порядке — они состыкуются, потому что ключи conformed dimensions совпадают.

Интеграция по Kimball: витрины на общей шине conformed dimensions
Шина conformed dimensionsdim_customer, dim_date, dim_product — согласованные dimensions с едиными ключами. Общая основа для всех витрин.
все витрины подключаются к шине
Витрина продажfct_sales. Построена первой, подключена к conformed dimensions.
Витрина поддержкиfct_support. Построена позже, использует те же conformed dimensions — интегрирована автоматически.
Витрина поставокfct_shipments. Добавлена ещё позже. Состыковалась через общую шину без переделок.

Так bottom-up даёт интегрированный warehouse: целое собирается из частей не через единое ядро, а через общую шину согласованных dimensions. Набор всех витрин, подключённых к общей шине, и есть enterprise data warehouse в терминологии Kimball.

NOTE

Ключ к Kimball — conformed dimensions. Без них bottom-up действительно превратился бы в хаос несвязанных витрин. С ними отдельные витрины образуют единое целое. Поэтому bus matrix рисуют в самом начале — до первой витрины, как договор о наборе общих dimensions.


Цена и выгода подхода Kimball

Профиль сильных и слабых сторон у Kimball зеркальный по отношению к Inmon.

Выгода — быстрый результат. Не нужно строить корпоративное ядро перед первым отчётом. Выбрали процесс, построили витрину — бизнес уже получает ценность. В индустрии Kimball-проекты традиционно описывают как «быстрее доходящие до результата», чем Inmon: первая витрина появляется заметно раньше.

Выгода — incremental-доставка. Warehouse растёт витрина за витриной. Каждая новая витрина — это законченный, полезный результат, а не «ещё один кусок недостроенного фундамента». Можно остановиться, показать ценность, продолжить.

Выгода — мягче требования к команде. Спроектировать одну star schema проще, чем корпоративную нормализованную модель всего предприятия. Порог входа ниже.

Цена — дисциплина conformed dimensions. Вся интеграция держится на том, что dimensions действительно conformed. Если команда схалтурит и витрины начнут заводить свои справочники, warehouse рассыпется на несвязанные острова. Inmon-ядро навязывает согласованность структурой; Kimball требует её соблюдать дисциплиной.

Эту цену важно не недооценивать. У Inmon ошибиться с согласованностью трудно: ядро одно, и витрины физически не могут разойтись. У Kimball согласованность — это договорённость, которую люди должны соблюдать на каждом шаге: использовать общую dim_customer, а не делать свою; согласовывать изменения conformed dimensions с другими командами; поддерживать bus matrix в актуальном состоянии. Стоит одной команде под давлением сроков завести «временный» собственный справочник клиентов — и drill-across с её витриной ломается. Поэтому Kimball-проект требует не только технической, но и организационной дисциплины: code review, владельцы conformed dimensions, общие соглашения. Там, где этой дисциплины нет, bottom-up действительно вырождается в хаос несвязанных витрин — ровно то, чем критики пугают Kimball.

WARNING

Цифры “3-6 месяцев на Kimball-проект” — индустриальная молва, как и “9-18 месяцев” для Inmon. Это не измеренные данные. Корректная формулировка: Kimball-подход, как правило, доходит до первого результата быстрее, чем Inmon. От называния точных сроков в месяцах лучше воздержаться — реальный срок зависит от множества факторов.

Kimball-light в dbt — от методологии к структуре папок и ref()

Где Kimball уместен

Bottom-up подход Kimball оправдан там, где важны скорость запуска и постепенная отдача.

  • Нужен быстрый результат. Когда бизнесу важно увидеть работающую аналитику скоро, а не через длительный enterprise-проект.
  • Постепенный рост. Когда warehouse удобнее наращивать витрина за витриной, показывая ценность на каждом шаге.
  • Команда без тяжёлого enterprise-опыта. Star schema доступнее в проектировании, чем корпоративная нормализованная модель.
  • Аналитический фокус. Размерная модель изначально заточена под BI-запросы — это её родная задача.

Kimball — самый распространённый подход к аналитическому моделированию и сегодня; современные инструменты вроде dbt прямо рекомендуют строить Kimball-витрины.

Стоит понять, почему именно Kimball оказался так живуч в эпоху облачных warehouse и dbt. Размерная модель идеально ложится на инструментарий ELT: каждая витрина — это набор SQL-трансформаций, dimensions и facts материализуются как таблицы, conformed dimensions переиспользуются через ref(). Инкрементальная природа Kimball — «витрина за витриной» — точно совпадает с тем, как команды работают в dbt: модель за моделью, pull request за pull request. Там, где громоздкое корпоративное ядро Inmon плохо сочетается с быстрым итеративным циклом, Kimball-витрина — естественная единица работы. Поэтому современный консенсус: размерное моделирование остаётся стандартом аналитического слоя, и dbt прямо ведёт пользователя к Kimball-структурам (dim_*, fct_*, staging-intermediate-marts).

При этом важно не впасть в другую крайность. То, что Kimball удобен и распространён, не делает его универсальным ответом. Для строго auditable хранения сырья из множества источников лучше подходят другие структуры (Data Vault), а размерная витрина в современной архитектуре всё чаще не источник истины, а gold/consumption-слой поверх него. Kimball — отличный инструмент для своей задачи (аналитический слой для BI), и грамотный инженер применяет его именно как инструмент, а не как догму. В следующем уроке сравним Inmon и Kimball напрямую — по времени, согласованности и требованиям к команде.

АспектХарактеристика подхода Kimball
НаправлениеBottom-up: сначала витрины, интеграция позже
Источник истиныСами размерные витрины (star schema)
ИнтеграцияЧерез conformed dimensions и bus architecture
Сильная сторонаБыстрый результат, incremental-доставка, ниже порог
Слабая сторонаСогласованность держится на дисциплине conformed dimensions
Когда уместенНужен быстрый результат, постепенный рост, BI-фокус

Попробуй сам

Та же компания, что в прошлом уроке: интернет-магазин, склад, CRM поддержки.

  1. Опишите по шагам, как строился бы warehouse по Kimball: с чего начать, что делать дальше.
  2. Что в подходе Kimball играет роль «источника истины» вместо нормализованного ядра Inmon?
  3. Витрина продаж и витрина поддержки обе используют «клиента». За счёт какого механизма они оказываются согласованы — и что будет, если этим механизмом пренебречь?
  4. Сравните: у Inmon согласованность обеспечивается структурой (единое ядро), у Kimball — чем? В чём риск второго варианта?

Проверка знанийKnowledge check
В чём суть bottom-up подхода Kimball, как при построении витрин по отдельности достигается их интеграция, и каков характерный компромисс этого подхода в сравнении с Inmon?
ОтветAnswer
Kimball — это bottom-up подход: сначала строится частное, потом собирается целое. Вместо корпоративного нормализованного ядра берут один конкретный бизнес-процесс и сразу строят под него размерную витрину (star schema) по четырёхшаговому процессу — выбрать процесс, объявить grain, выбрать dimensions, выбрать facts. Витрина сразу оптимизирована под аналитические запросы и сразу отвечает на вопросы бизнеса; отдельного enterprise-ядра нет — размерные витрины и есть warehouse. Интеграция витрин, построенных по отдельности, достигается через conformed dimensions и bus architecture: витрины строятся не на произвольных, а на общих согласованных dimensions (dim_customer, dim_date, dim_product — одни и те же таблицы с едиными ключами для всех витрин). Когда две витрины ссылаются на одну conformed dimension, они автоматически интегрированы, drill-across между ними работает. Инструмент планирования — bus matrix (процессы по строкам, conformed dimensions по столбцам), которую рисуют в самом начале как договор о наборе общих dimensions; дальше витрины делают по одной в любом порядке, и они состыковываются, потому что ключи conformed dimensions совпадают. Характерный компромисс зеркален Inmon: выгода — быстрый результат (первая витрина появляется заметно раньше, не нужно ждать ядра), incremental-доставка (warehouse растёт витрина за витриной, каждая — законченный результат) и более низкий порог для команды (одна star schema проще корпоративной модели). Цена — согласованность держится не на структуре, а на дисциплине: вся интеграция работает, только пока dimensions действительно conformed; если команда схалтурит и витрины заведут свои справочники, warehouse рассыпется на несвязанные острова. Inmon навязывает согласованность структурой единого ядра, Kimball требует её соблюдать дисциплиной.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 4. Что означает 'bottom-up' в подходе Kimball?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 5