Конкретная архитектура зависит от количества источников, объема данных, требований к скорости обновления и сценариев использования. Но в большинстве проектов можно выделить несколько основных уровней.
1. Источники данныхНа первом уровне находятся системы, в которых данные появляются изначально:
- ERP и учетные системы;
- CRM;
- базы данных;
- Excel и другие файлы;
- внешние API и веб-сервисы;
- объектные хранилища;
- потоковые источники.
У каждого источника своя структура. Один и тот же клиент может иметь разные идентификаторы в CRM и 1С, а справочник товаров — отличающиеся названия и коды.
Поэтому задача DWH начинается не с копирования таблиц, а с определения того,
как эти данные будут сопоставляться между собой.2. Загрузка данных и stagingСледующий уровень отвечает за получение информации из источников. Для этого используются
ETL/ELT-процессы (способы извлечения, загрузки и преобразования данных), а
оркестрацию загрузок (управление последовательностью и расписанием этих процессов) можно реализовать, например, через Apache Airflow.
Важный вопрос здесь — не только «как забрать данные», но и
что именно загружать. Для небольших источников допустима полная загрузка, когда данные каждый раз переносятся целиком.
При больших объемах обычно переходят на инкрементальную схему (загрузка только новых или изменившихся данных) или
CDC (Change Data Capture — отслеживание изменений в источнике и передача только тех записей, которые были изменены).
После получения данных их часто помещают в staging (промежуточный слой, где данные хранятся максимально близко к исходному виду). Он отделяет прием информации от последующих преобразований и позволяет контролировать качество данных до их попадания в основную модель DWH.
Так если источник неожиданно поменял структуру, ошибку можно обнаружить на staging до того, как она попадет в основную модель и сломает витрины. Для этого дополнительно используют контроль схемы, проверки количества записей, дубликатов и других показателей качества.
3. DWH CoreВ центральном слое формируется согласованная модель данных. Здесь объединяются источники, унифицируются справочники, задаются ключи и правила обработки.
Одна из важных особенностей DWH —
историчность. В рабочей системе значение может просто измениться, например, клиент переехал, товар получил другую категорию, подразделение сменило название. Для аналитики этого недостаточно. Нужно понимать, каким было значение на момент конкретной продажи или другого события.
Поэтому в хранилище изменения часто сохраняются как новые версии, а не просто перезаписываются поверх старых данных. Это позволяет корректно анализировать динамику бизнеса и восстанавливать состояние данных на определенный момент времени.