Открыть сервис

ELT

ELT (от англ. Extract, Load, Transform — «Извлечение, Загрузка, Преобразование») — это один из подходов к организации процесса обработки данных в хранилищах данных (Data Warehouse) и аналитических системах, при котором данные сначала извлекаются из источников и загружаются в целевую систему (обычно в «сыром» виде), а затем преобразуются (очищаются, нормализуются, агрегируются) непосредственно внутри неё. В отличие от классического подхода ETL (Extract, Transform, Load), где преобразование выполняется на промежуточном сервере до загрузки, ELT переносит вычислительную нагрузку на сторону хранилища, что особенно эффективно при работе с большими объёмами данных и современными облачными платформами.

История и предпосылки возникновения

Подход ELT начал активно развиваться в 2010-х годах, что было связано с несколькими технологическими сдвигами. Традиционные реляционные базы данных и локальные хранилища не всегда справлялись с ростом объёмов информации, а вычислительные мощности облачных решений (Amazon Redshift, Google BigQuery, Snowflake) позволили выполнять сложные преобразования непосредственно в хранилище. Кроме того, распространение «озёр данных» (Data Lake) на базе Hadoop и Spark, где данные хранятся в неструктурированном виде, сделало загрузку без предварительной обработки более логичной. В результате ELT стал стандартом для многих современных Data Warehouse, особенно в контексте Big Data.

Принцип работы и этапы

Процесс ELT состоит из трёх последовательных этапов:

  1. Извлечение (Extract). Данные собираются из различных источников: реляционных баз данных (Oracle, PostgreSQL, MySQL), API веб-сервисов, файлов (CSV, JSON, Parquet), потоковых систем (Kafka) и других. На этом этапе данные могут быть как структурированными, так и полуструктурированными (например, JSON-логи).
  1. Загрузка (Load). Извлечённые данные загружаются в целевую систему без какой-либо предварительной обработки. В хранилище они попадают в так называемые «сырые» или «staging» таблицы, где сохраняются в исходном формате. Это позволяет минимизировать время загрузки и избежать потери информации.
  1. Преобразование (Transform). После загрузки данные преобразуются с помощью SQL-запросов, скриптов на Python или других инструментов. Преобразования включают очистку (удаление дубликатов, исправление ошибок), нормализацию (приведение к единому формату), агрегацию (суммирование, подсчёт средних значений) и создание витрин данных (Data Marts) для конкретных аналитических задач.

Классификация и разновидности

В зависимости от архитектуры и целей выделяют несколько вариантов ELT:

  • Классический ELT — данные загружаются в сыром виде, а преобразования выполняются внутри хранилища. Подходит для систем, где хранилище обладает достаточной вычислительной мощностью.
  • ELT с промежуточной обработкой — перед загрузкой может выполняться минимальная фильтрация (например, удаление заведомо некорректных записей), но основная трансформация всё равно происходит в хранилище.
  • ELT на основе Data Lake — данные загружаются в озеро данных (Data Lake) в неструктурированном виде, а затем преобразуются и перемещаются в структурированное хранилище (Data Warehouse) с помощью инструментов типа Apache Spark или Presto.
  • ELT в реальном времени (Streaming ELT) — данные извлекаются и загружаются непрерывно из потоковых источников (например, логов веб-сервера), а преобразования выполняются с минимальной задержкой.

Преимущества и недостатки

Преимущества

  • Скорость загрузки. Поскольку преобразование не выполняется на этапе извлечения, данные загружаются в хранилище значительно быстрее, что критично для больших объёмов.
  • Гибкость. Сырые данные можно перерабатывать и анализировать многократно, меняя логику преобразований без повторного извлечения из источников. Это упрощает итеративную разработку аналитических моделей.
  • Снижение нагрузки на источники. Преобразование переносится на хранилище, что уменьшает нагрузку на операционные базы данных и API.
  • Масштабируемость. Современные облачные хранилища (Snowflake, BigQuery, Redshift) позволяют динамически наращивать вычислительные ресурсы для выполнения сложных трансформаций.

Недостатки

  • Требования к хранилищу. Для хранения сырых данных необходимо больше места, а для их преобразования — значительные вычислительные мощности. Это может увеличить стоимость облачных ресурсов.
  • Сложность управления. При большом количестве источников и разнородных форматов данных требуется тщательное проектирование схемы «сырых» таблиц и процедур очистки.
  • Задержка аналитики. Если преобразования выполняются в пакетном режиме (например, раз в сутки), данные могут быть неактуальными для задач, требующих реального времени.
  • Необходимость квалификации. Разработка эффективных SQL-запросов для трансформации больших объёмов данных требует высокой квалификации специалистов.

Применение

ELT широко используется в областях, где требуется обработка больших массивов данных с высокой скоростью загрузки:

  • Big Data и аналитика. В компаниях, работающих с терабайтами и петабайтами данных (интернет-компании, ритейл, телекоммуникации), ELT позволяет быстро загружать логи, транзакции и данные с датчиков.
  • Облачные хранилища. Платформы вроде Snowflake, Google BigQuery и Amazon Redshift по умолчанию оптимизированы под ELT, так как их архитектура предполагает разделение хранения и вычислений.
  • Data Lakehouse. Гибридные решения, объединяющие Data Lake и Data Warehouse (например, Databricks), часто используют ELT для загрузки сырых данных в озеро и последующей трансформации в структурированные таблицы.
  • Интеграция с SaaS-сервисами. Многие современные инструменты интеграции данных (Fivetran, Stitch, Airbyte) реализуют именно ELT, загружая данные из CRM, ERP и других систем напрямую в хранилище.

Инструменты и технологии

Для реализации ELT используются как коммерческие, так и открытые решения:

  • Облачные платформы: Snowflake, Google BigQuery, Amazon Redshift, Microsoft Azure Synapse Analytics.
  • Инструменты интеграции: Fivetran, Stitch, Airbyte, Hevo Data.
  • Фреймворки для трансформации: dbt (Data Build Tool) — один из самых популярных инструментов для написания и версионирования SQL-преобразований в ELT-пайплайнах.
  • Потоковая обработка: Apache Kafka, Apache Flink, Spark Streaming.

Сравнение с ETL

Хотя ELT и ETL преследуют одну цель — подготовку данных для анализа, их архитектурные различия определяют сферы применения:

  • ETL лучше подходит для небольших и средних объёмов данных, когда требуется высокая степень очистки до загрузки, а также для систем с ограниченными вычислительными ресурсами хранилища.
  • ELT предпочтительнее для больших данных, облачных сред и сценариев, где важна скорость загрузки и гибкость последующей обработки.

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

Источники

  • Kimball, R., & Caserta, J. (2004). The Data Warehouse ETL Toolkit. Wiley.
  • Inmon, W. H. (2005). Building the Data Warehouse. Wiley.
  • Документация Snowflake: «ELT vs ETL» (2023).
  • Документация Google BigQuery: «Best practices for loading data» (2024).
  • Статья «What is ELT?» на сайте dbt Labs (2023).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →