ETL и ELT

~ 15 минут
Любое хранилище данных — это специализированная система. Она хранит данные для дальнейшего анализа. Данные попадают в хранилище из разных источников.
Чтобы данные попали в хранилище, необходимо разработать систему сбора. Для этого сейчас существует целое направление — Big Data. Одна из целей этого направления — сбор и обработка данных для их транспортировки в хранилище.
В этом уроке мы рассмотрим два подхода к обработке данных — ETL и ELT.

Подходы к обработке данных

✏️ ETL (Extract, Transform, Load) и ELT (Extract, Load, Transform) — это два подхода к пакетной загрузке данных в хранилище.
Под загрузкой здесь мы пониманием не только передачу данных от источников на первый слой хранения в хранилище, но и распределение данных между слоями хранилища.
ETL и ELT состоят из одного и того же набора процессов. Отличие в том, что эти процессы расположены в разном порядке. Расскажем подробнее про каждый из них.

Extract — извлечение

Это процесс извлечения исходных данных из базы источника.
Под источником понимается не только база данных, но и любой другой вид организации хранения данных в системах, которые их создают. Например, ERP-система или CRM-система.
Если вы используете ETL, то на этом этапе данные отправляются во временную промежуточную область хранение. А если используете ELT, они сразу отправляются в хранилище данных или систему хранения данных хранилища данных.

Transform — преобразование

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

Load — загрузка

Это процесс записи данных в слой хранилища.
Итак, при выборе между ETL и ELT основной вопрос состоит в том, какой процесс выполнять после извлечения — загрузку или трансформацию.
Чтобы разобраться, какой вариант вам подходит, нужно сравнить их между собой.

Как выбрать подход

ETL

💡 ETL используют, когда данные нужно преобразовать перед загрузкой в хранилище.
Подход ETL выбирают, если хранилище предварительно структурировано (обычно в реляционном формате) и приведено к нормальной форме в соответствии с выбранной архитектурой данных.
Хранилище данных OLAP обычно работает с реляционными структурами. Поэтому данные, которые загружаются в хранилище OLAP, нужно преобразовать в реляционный формат. Иначе хранилище не сможет их использовать. Также нужно учитывать, что в ходе подготовки данных к загрузке, возможно, потребуется обогатить их данными из других систем источников. Именно поэтому преобразование выполняется перед загрузкой в хранилище.

ELT

💡 ELT используют, когда данные не нужно преобразовать перед загрузкой в хранилище.
В этом подходе процесс преобразования данных происходит после того, как они загружены в хранилище. Так делают, потому что сама архитектура хранилища другая и нет необходимости в промежуточном хранении данных, которые поступают из разных источников. Их записывают в первый слой хранения такими, какие они приходят.
Такой подход заложен в архитектуре хранилища данных Data Lake (озеро данных).
Озёра данных — это специальные типы хранилищ данных или даже отдельная архитектура хранения данных. В отличие от хранилищ данных OLAP, озёра данных принимают любые структурированные или неструктурированные данные. Они не требуют преобразования данных перед загрузкой. Данные из систем источников немедленно загружают в хранилище. При этом формат и тип данных могут быть любыми.
Преобразование в этом случае происходит внутри хранилища — уже после того, как данные были в него загружены.

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

Если сравнивать ETL и ELT, то вы заметите, что у подхода ELT есть ряд важных преимуществ:
  • Выше скорость работы. Это происходит за счёт того, что данные не нужно трансформировать перед загрузкой.
  • Выше доступность и отказоустойчивость. Поскольку в ELT отсутствует механизм трансформации, в ELT хранилище работает более автономно и в большей степени изолировано от процессов во внешних системах. Все данные можно мгновенно загрузить в систему, что обеспечивает простоту и надёжность механизма. Поэтому у ELT хранилищ более высокая доступность. Отказоустойчивость решения тоже в целом выше.
  • Ниже стоимость обслуживания. Пользователям, как правило, не нужен план технического обслуживания в режиме реального времени. Данные точно будут загружены в хранилище. А если возникнет ошибка на этапе трансформации, то её можно будет решить с меньшим приоритетом.
  • Выше безопасность. При работе с личными данными необходимо соблюдать требования законодательства. Если используете подход ETL, то нужно будет создать собственные решения для мониторинга и защиты данных. А вот ELT-решения предоставляют множество готовых функций для обеспечения безопасности хранилища. В том числе — детализированный контроль доступа и многофакторную аутентификацию.
💡 У подхода ELT много преимуществ, но нельзя сказать, что во всех ситуациях он будет лучшим решением. Иногда его просто невозможно использовать. Например, ELT не подходит для архитектуры Data Warehouse.
Таким образом, ETL рекомендуется использовать для архитектуры Data Warehouse и ситуаций, когда данные необходимо загрузить в заранее спроектированную структуру хранения.
ELT подходит для случаев, когда данные из источников надо загрузить в неструктурированное хранилище Data Lake и ему подобные. Подразумевается, что затем данные будут трансформироваться внутри хранилища, чтобы разложить их по внутренним слоям хранения.
На этом всё — урок подошёл к концу. Вам осталось только выполнить несколько заданий и подвести итоги!

Задание 1

Какие преимущества у ELT-подхода перед ETL?
В ELT-подходе необходимо дополнительно настраивать процессы для трансформации данных.
В ELT-подходе данные загружаются сразу в хранилище. Это повышает отказоустойчивость системы.
При ELT-подходе тратится меньше времени на загрузку данных в хранилище, потому что перед загрузкой данные не трансформируют. При этом нельзя гарантировать, что итоговое время обработки данных будет меньше, чем в ETL-подходе.
В ELT-подходе она ниже, потому что пользователям не требуется план технического обслуживания в режиме реального времени.
Подход ELT предоставляет множество готовых функций, которые позволяют обезопасить хранилище данных. Среди них — детализированный контроль доступа и многофакторная аутентификация.

Задание 2

Изучите ситуации и выберите, какой подход к работе с данными следует использовать в каждой из них.
Разработчикам умного дома нужно настроить обработку данных. Данные каждого пользователя собираются с десятков датчиков
ELT
Приложения интернета вещей, которые используют потоки данных от датчиков, обычно лучше работают с потоком ELT. Он позволяет быстрее обрабатывать данные.
Разработчикам необходимо настроить интеграцию с устаревшими базами данных
ETL
Для такой ситуации больше подойдёт ETL-подход. Сперва данные нужно подготовить, а потом уже загрузить в хранилище.
Разработчики телекоммуникационной компании используют хранилище, которое принимает неструктурированные данные
ELT
В этом случае можно использовать ELT-подход, потому что трансформация данных происходит после их загрузки в хранилище.
Специалистам крупного банка нужно найти скрытые источники данных для аналитики, чтобы предложить клиентам новые продукты и услуги
ETL
Подход ETL полезен в экспериментах с данными. Чтобы решить такую задачу, первым делом нужно провести подготовительную работу — трансформировать данные, загрузить их и провести аналитику.
Аналитикам исследовательского медицинского центра необходимо настроить обработку снимков МРТ для проверки научных гипотез
ELT
ELT хорошо обрабатывает любые типы данных, в том числе — неструктурированные. Например, изображения, которые невозможно хранить в табличном формате.
Исследовательский отдел компании по добыче полезных ископаемых хочет построить прогноз о тенденциях добычи в конкретных географических районах
ETL
ETL поможет собрать как можно больше информации со всех сенсоров на месте извлечения и обработать эту информацию, чтобы сделать её легко читаемой.
Руководитель маркетингового отдела автомобильной компании поставил задачу аналитикам ― проанализировать продажи за прошлый год, чтобы выстроить стратегию маркетинговых кампаний на будущий год
ETL
Для задач анализа данных и выстраивания стратегий больше подойдёт ETL-подход.

Итоги

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