Что такое архитектура Data Warehouse?

«Что такое архитектура Data Warehouse?» — вопрос из категории Архитектура, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Ключевые принципы архитектуры:

  • Предметная ориентация: Данные организованы вокруг ключевых сущностей бизнеса (например, продажи, клиенты, продукты), а не вокруг операционных процессов.
  • Интеграция: Данные из разнородных источников (OLTP-системы, CRM, лог-файлы) очищаются, трансформируются и приводятся к единому формату, словарям и единицам измерения.
  • Неизменяемость и временная привязка: Данные являются историческими снимками. После загрузки они обычно не обновляются, а новые записи добавляются с временными метками, что позволяет анализировать изменения во времени.
  • Оптимизация для чтения: Структура (часто звездообразная или снежинка) и индексы оптимизированы для выполнения сложных агрегирующих запросов, а не для частых операций вставки/обновления.

Типичные компоненты архитектуры:

  1. Источники данных: Операционные системы (ERP, CRM), базы данных, внешние API.
  2. Слой ETL/ELT: Процесс Extract (извлечение), Transform (трансформация), Load (загрузка) или его современная вариация ELT.
  3. Хранилище данных: Ядро DWH, где данные хранятся в виде фактов (меры) и измерений (контекст).
  4. Слой представления данных: Витрины данных (Data Marts), OLAP-кубы или слои для конкретных отделов.
  5. Инструменты доступа: BI-платформы (Tableau, Power BI), SQL-клиенты для аналитиков.

Пример логической схемы (звезда):

-- Таблица фактов (меры)
CREATE TABLE fact_sales (
    sale_id INT PRIMARY KEY,
    date_key INT, -- Ссылка на измерение даты
    product_key INT, -- Ссылка на измерение продукта
    customer_key INT, -- Ссылка на измерение клиента
    quantity_sold INT,
    revenue DECIMAL(10,2)
);

-- Таблица измерений (контекст)
CREATE TABLE dim_product (
    product_key INT PRIMARY KEY,
    product_name VARCHAR(255),
    category VARCHAR(100),
    supplier VARCHAR(100)
);
-- Аналогично dim_date, dim_customer

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