Prog Academy
RU UA
Данные и аналитика

Что такое хранилище данных (Data Warehouse)?

Хранилище данных (DWH) — отдельная база, куда собирают данные из всех систем компании специально для анализа и отчётности. Она хранит историю, приведённую к единой структуре, и не мешает работе основных приложений.

Обычная база приложения оптимизирована под быстрые операции с отдельными записями: создать заказ, обновить статус. Тяжёлый аналитический запрос по всем годам на такой базе замедлит рабочую систему, поэтому аналитику выносят отдельно.

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

Где применяется

Хранилище появляется, когда компания перерастает отчётность «из одной базы». Данные о заказах живут в интернет-магазине, оплаты — в учётной системе, обращения — в CRM, расходы — в рекламных кабинетах; собрать из этого единый отчёт напрямую невозможно.

Сейчас такие хранилища чаще всего облачные: BigQuery, Snowflake, Redshift или PostgreSQL для небольших объёмов. Структуру проектируют звездой — таблица фактов с событиями и справочники вокруг неё, — а наполняют ETL-процессами по ночам. Поверх работают BI-инструменты и аналитики со своими запросами.

Пример

Аналитик хочет посчитать выручку по когортам клиентов за три года. В базе интернет-магазина такой запрос повесит сайт на несколько минут. В хранилище он выполняется на копии данных, которая для этого и предназначена, и никто из покупателей ничего не замечает.

SELECT d.year_month,
       s.region,
       SUM(f.revenue) AS revenue
FROM fact_sales f
JOIN dim_date  d ON d.date_key  = f.date_key
JOIN dim_store s ON s.store_key = f.store_key
GROUP BY d.year_month, s.region
ORDER BY d.year_month;
Схема «звезда»: таблица фактов ссылается на справочники, поэтому отчёт строится одним соединением.

Частые вопросы

Чем хранилище отличается от обычной базы данных?

Назначением. База приложения оптимизирована под частые операции с отдельными записями и работает в реальном времени. Хранилище рассчитано на тяжёлые запросы по всей истории сразу и обновляется порциями по расписанию, не мешая работе продукта.

Что такое data lake и чем он отличается от хранилища?

Озеро данных хранит всё подряд в исходном виде: логи, файлы, выгрузки, изображения — без заранее заданной структуры. Хранилище содержит очищенные и согласованные данные, готовые для отчётности. Часто их используют вместе: озеро как первичный склад, хранилище как витрина.

Нужно ли хранилище небольшой компании?

Не всегда. Пока источник один и объёмы небольшие, отчёты можно строить прямо на копии базы. Повод задуматься появляется, когда источников становится несколько, а разные отделы начинают приносить на встречу разные цифры по одному и тому же показателю.

Как часто обновляют данные в хранилище?

Чаще всего раз в сутки ночью — этого достаточно для управленческой отчётности. Там, где решения принимаются быстрее, настраивают загрузку каждый час или потоковую передачу. Чем ближе к реальному времени, тем дороже обходится инфраструктура и поддержка.

Связанные термины