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

Ответ

DWH (Data Warehouse, хранилище данных) — это централизованное, предметно-ориентированное, интегрированное и неизменяемое хранилище исторических данных, собранных из различных операционных систем (OLTP). Оно предназначено для поддержки бизнес-аналитики (BI), отчетности и принятия решений, а не для обработки транзакций.

Ключевые характеристики (по Инмону):

  1. Предметная ориентация: Данные организованы вокруг ключевых бизнес-сущностей (клиенты, продукты, продажи), а не вокруг операционных процессов.
  2. Интегрированность: Данные из разных источников (CRM, ERP, лог-файлы) приводятся к единым стандартам именования, форматов и единиц измерения.
  3. Неизменяемость (Time-Variant): Данные добавляются, но не обновляются или удаляются в контексте истории. Каждая запись имеет временную метку, что позволяет анализировать изменения во времени.
  4. Нерегламентированность (Nonvolatile): После загрузки данные в DWH, как правило, не изменяются. Операции — это добавление новых данных и их чтение.

Типичная архитектура:

  • Источники данных (OLTP-системы): Базы данных заказов, логистики, веб-сервисы.
  • ETL/ELT-процесс:
    • Extract (Извлечение): Получение данных из источников.
    • Transform (Трансформация): Очистка, стандартизация, обогащение и бизнес-преобразования.
    • Load (Загрузка): Загрузка подготовленных данных в хранилище.
  • Слой хранения: Само хранилище, часто использующее звездообразную или снежинную схему с фактами и измерениями для оптимизации аналитических запросов.
  • Слой представления: Витрины данных (Data Marts), оптимизированные под нужды конкретных департаментов (финансы, маркетинг).
  • Инструменты доступа: BI-системы (Tableau, Power BI), SQL-клиенты для аналитиков.

Почему не использовать OLTP-базу для аналитики? Аналитические запросы (JOIN по большим таблицам, агрегации) в OLTP-системах выполняются медленно, мешают операционной работе и используют неподходящую нормализованную схему. DWH решает эти проблемы, предоставляя оптимизированную для чтения модель.

Ответ 18+ 🔞

А, ну это про тот самый склад данных, где всё копится, как хлам на балконе, только в цифровом виде. Слушай, представь себе: у тебя в компании куча разных систем — одна считает продажи, другая клиентов ведёт, третья логистику. И каждая нихуя не дружит с другой, данные у всех в своём формате, как будто на разных планетах. Так вот, DWH (Data Warehouse, он же хранилище данных) — это такой центральный универсальный склад, куда весь этот разнобой свозят, приводят к одному знаменателю и раскладывают по полочкам, чтобы потом можно было нормально анализировать.

Основные фишки, как завещал Инмон:

  1. Предметная ориентация: Тут данные не по процессам, а по сущностям. Не «как прошла оплата заказа №666», а «всё про клиента Ваську, всё про продукт «Говнодробилка-3000», всё про продажи в целом». Удобно, ёпта.
  2. Интегрированность: Это самое главное! Данные из всех этих разношёрстных систем чистят, приводят к общим названиям, форматам и единицам измерения. Чтобы «рубли» не путались с «долларами», а «Иванов И.И.» был одним человеком, а не тремя разными записями. Без этого — пиздец и каша.
  3. Неизменяемость (Time-Variant): Сюда данные только добавляются, как в исторический архив. Что загрузили — то навсегда. Каждая запись привязана ко времени. Хочешь посмотреть, как менялись продажи аж с 2015-го? Пожалуйста, вся история как на ладони, её никто не переписывал задним числом.
  4. Нерегламентированность (Nonvolatile): После загрузки данные тут, в основном, только читают. Никаких постоянных апдейтов и удалений. Добавили новую порцию данных за вчера — и всё. Стабильно, как швейцарские часы.

Как это всё, блядь, работает (типичная архитектура):

  • Источники: Всё, откуда можно высосать данные — базы заказов, логистики, даже логи веб-сервисов. Овердохуища источников бывает.
  • Процесс ETL/ELT (святое святых):
    • Extract (Извлечение): Вытаскиваем сырые данные из всех этих систем. Иногда процесс такой, что терпения ноль, ебать.
    • Transform (Трансформация): Вот тут начинается магия. Данные чистят (убирают мусор), стандартизируют, обогащают и применяют к ним бизнес-правила. Самый сложный и важный этап.
    • Load (Загрузка): Запихиваем уже причёсанные данные прямо в хранилище.
  • Слой хранения: Само ядро хранилища. Часто используют звёздообразную или снежинную схему — есть большие таблицы фактов (например, «Продажи») и справочники-измерения («Клиенты», «Продукты», «Время»). Запросы к такой структуре летают.
  • Слой представления: На основе большого хранилища делают витрины данных (Data Marts) — это как отдельные прилавки для разных отделов. Финансистам — своя витрина, маркетологам — своя, чтобы им не ковыряться во всём хуе с горы.
  • Инструменты доступа: Всё то, через что аналитики и руководители получают доступ к данным: BI-системы вроде Tableau, Power BI или просто SQL-клиенты для тех, кто в теме.

А самый главный вопрос: нахуя это всё, если есть обычная база? А вот представь: у тебя есть операционная система (OLTP), которая обрабатывает заказы каждую секунду. Это как касса в «Пятёрочке» в час пик. И ты пытаешься прямо на этой кассе запустить тяжёлый аналитический отчёт за пять лет, с кучей соединений таблиц и агрегаций. Что будет? Всё накроется медным тазом. Запрос будет выполняться часами, а кассиры вообще ничего не смогут делать. Доверия к такому — ноль, ебать. DWH как раз решает эту проблему: он отвязан от операционки, оптимизирован под чтение и анализ, и позволяет ковыряться в исторических данных, никому не мешая.