Как работает хранилище данных
Многие слышали термин «хранилище данных», но представляют его просто как «большую базу, где всё лежит». На самом деле DWH устроен сложнее и интереснее. Это не один сервер и не одна программа, а целая архитектура, которая каждый день бесшумно собирает, чистит, структурирует и раскладывает информацию по полочкам. Пользователи даже не замечают её работы – они просто открывают отчёт в BI-системе и видят актуальные цифры.
Давайте разберём, как работает хранилище данных, из каких слоёв оно состоит и что происходит внутри в момент, когда менеджер вносит заказ в CRM.
Откуда берутся данные? Источники
Любое хранилище начинается с источников. Это все системы, в которых бизнес ежедневно фиксирует факты своей деятельности:
- CRM (продажи, заявки, клиенты);
- ERP и 1С (товары, склад, финансы);
- маркетинговые системы (Яндекс.Метрика, Google Analytics, рекламные кабинеты);
- колл-трекинг и чаты;
- Excel-файлы с подрядчиками;
- логи сайта и мобильного приложения.
Проблема в том, что все эти системы говорят на разных языках. В CRM дата «02.03.2025» записана как «02.03.2025», в 1С – как «2025-03-02», а в Excel – как «02.мар.2025». У одного клиента может быть три карточки с разными телефонами. Задача хранилища – привести этот хаос к единому стандарту.
Первый слой: зона временного хранения
Прежде чем данные попадут в «чистое» хранилище, они проходят через промежуточную зону. Представьте себе приёмный поклад на складе: груз привезли, выгрузили, проверили, что ничего не разбито, пересчитали – но на основное место хранения ещё не положили.
На техническом уровне промежуточная зона – это специальные таблицы в базе данных, куда информация копируется «как есть» из исходных систем. Здесь не происходит очистка или преобразование – только извлечение. Это нужно по двум причинам:
- Чтобы не дёргать рабочую CRM каждый раз, когда хранилище перестраивает данные.
- Чтобы иметь «сырой слой» для отладки и восстановления, если что-то пошло не так.
Процесс, который переносит данные из источника в промежуточную зону, а затем – в основное хранилище, называется ETL.
ETL: извлечение, преобразование, загрузка
ETL расшифровывается как Extract, Transform, Load – извлечение, преобразование, загрузка. Это сердце хранилища данных. Обычно ETL-процессы запускаются по расписанию: каждую ночь, каждый час или в реальном времени.
Шаг 1. Извлечение (Extract)
Специальные скрипты или ETL-инструменты подключаются к каждому источнику и забирают новые или изменённые записи. Чаще всего используется инкрементальная загрузка – то есть только то, что изменилось со вчерашнего дня. Это экономно и быстро.
Шаг 2. Преобразование (Transform)
Самый важный и трудоёмкий этап. Данные очищаются, нормализуются и приводятся к единому формату:
- Удаляются дубликаты (один и тот же клиент – одна запись).
- Исправляются ошибки (пустые поля заполняются значениями по умолчанию, даты приводятся к стандарту).
- Переименовываются поля так, чтобы они имели понятные названия («client_id» вместо «cid_4321»).
- Вычисляются новые показатели (например, сумма заказа = цена × количество).
- Осуществляется денормализация – то есть данные из разных таблиц объединяются, чтобы ускорить будущие запросы.
Шаг 3. Загрузка (Load)
Очищенные и преобразованные данные записываются в основное хранилище. Если ETL отработал без ошибок, система переходит к следующему циклу. Если в процессе произошёл сбой (например, источник временно недоступен), хранилище не загружает «битые» данные и пишет лог для администратора. После загрузки старые данные в промежуточной зоне могут быть удалены или оставлены для аудита – это зависит от настроек.
Ядро DWH: хранилище в узком смысле
После ETL данные попадают в центральную зону хранилища. Здесь они организованы по принципу «звезда» или «снежинка» – это стандартные схемы моделирования для аналитических систем.
Выделяют два типа таблиц:
- Таблицы фактов – содержат измеримые события (продажа, звонок, переход по рекламе). Здесь хранятся числа: сумма, количество, длительность.
- Таблицы измерений – содержат контекст: кто продал, какой товар, в каком городе, в какой день. Это как подписи к цифрам.
Например, таблица факта «Продажи» может ссылаться на измерение «Клиент», измерение «Товар», измерение «Дата» и измерение «Менеджер».
Витрины данных (Data Marts)
Не всем пользователям нужно полное хранилище. Маркетологу – одни разрезы, логисту – другие, финансовому директору – третьи. Поэтому поверх основного DWH строят витрины данных – это срезы хранилища, «заточенные» под конкретный отдел или задачу.
Витрина может быть:
- физической (отдельная база данных, куда копируются нужные таблицы);
- логической (просто виртуальное представление с правами доступа к части исходных таблиц).
Для бизнес-пользователя витрина выглядит как готовая папка с отчётами. Он ничего не знает про ETL и промежуточную зону – просто открывает Power BI или Tableau и строит графики.
Как пользователи работают с DWH? BI-системы
Само по себе хранилище данных – это всё ещё база, в которой неудобно делать аналитику ручными SQL-запросами. Поэтому поверх DWH подключают BI-системы (Business Intelligence). Это интерфейсы с красивыми дашбордами, где руководитель может нажать пару кнопок и увидеть динамику продаж по дням.
BI-система генерирует SQL-запрос к хранилищу, получает результат и рисует график или сводную таблицу. Весь процесс занимает секунды, потому что данные уже очищены, структурированы и оптимизированы для аналитики.
Отличие DWH от обычной базы данных
Часто путают хранилище данных с обычной операционной базой (например, 1С или CRM). Разница фундаментальна:
| Характеристика | Обычная база (OLTP) | Хранилище данных (OLAP) |
|---|---|---|
| Основная задача | Быстро записать транзакцию (создать заказ) | Быстро прочитать и агрегировать тысячи строк |
| Структура | Нормализованная (много маленьких таблиц) | Денормализованная (звезда, меньше JOIN) |
| Данные | Только текущее состояние (или короткая история) | История за годы |
| Нагрузка | Много мелких запросов | Мало, но очень тяжёлых запросов |
DWH не нужен, чтобы оформлять заказы. Он нужен, чтобы понять, почему заказов стало больше или меньше, кто из клиентов самый прибыльный, как сработала рекламная кампания.
Компания Intez Group проектирует и внедряет хранилища данных любой сложности. Мы помогаем настроить ETL-процессы, спроектировать модель данных (звезда/снежинка), создать витрины и подключить BI-системы. Работаем с локальными и облачными решениями.