Пакетная обработка — подход к обработке данных, при котором обрабатывается сразу большой объём данных, накопленный за определённый промежуток времени: пакет (batch).
Особенности пакетной обработки:
■ хорошо подходит для больших объёмов данных;
■ можно спрогнозировать нагрузку, потому что обработка происходит с определённой периодичностью;
■ простая отладка, повторяемость запуска конвейера;
■ ограниченность размера пакета данных;
■ запуск по расписанию;
■ возможна задержка как по времени, так и по актуальности — пока данные дожидаются обработки пакета, они могут стать неактуальными.
Пакетная обработка применяется чаще, потому что позволяет закрыть большую часть задач по управлению данными. Пример задачи для пакетной обработки: собрать и визуализировать статистику продаж за период (неделю, месяц, год) для маркетингового отдела.
На рынке много готовых решений для реализации пакетной обработки.
- Apache Airflow. Одно из самых зрелых решений, можно назвать стандартом в этой области.
- Luigi. Одна из альтернатив Airflow.
- Dagster. Одно из новых решений для реализации пакетной обработки.
ETL-конвейер реализуется в виде
DAG — Directed Acyclic Graph (направленный ациклический граф). По сути DAG представляет собой цепочку задач.
Основная особенность DAG в том, что он направлен строго в одну сторону, то есть процесс не может вернуться на предыдущие шаги.
Рассмотрим пример простого пакетного ETL-конвейера, реализованного с помощью Apache Airflow.
Представим, что нам необходимо реализовать миграцию данных о продажах интернет-магазина в ElasticSearch (документо-ориентированная база данных с мощным поисковым движком). Исходные данные о продажах хранятся в PostgreSQL. Так процесс сводится к задачам:
■ извлечь данные из PostgreSQL;
■ преобразовать данные в нужный формат — в данном случае JSON;
записать данные в ElasticSearch.