Раздел 26 · Data Engineering

Батч против стрима: два взгляда на данные

junior~15 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

В блоке про профессию дата-инженера мы построили для Отто, операционного директора доставки «Гонец», ночной пайплайн: раз в сутки заказы едут из приложения в хранилище, и утром на дашборде уже вчерашний день. Для отчётов этого хватает, но некоторые вопросы Отто до утра ждать не могут. Этот блок про то, как данные о заказах доезжают от приложения курьера до дашборда за секунды. Начнём с вопроса, который мы уже задавали со стороны батча: как часто возить данные.

Почта и телефон

Есть два способа узнать новости от друга. Можно ждать письма: раз в неделю почтальон приносит конверт, в нём всё, что случилось за неделю. А можно получать сообщения в телефон: друг пишет, и ты сразу видишь.

Письмо удобно. Его читают за один раз, в нём всё собрано и упорядочено. Но если в понедельник у друга сломалась машина, ты узнаешь об этом в воскресенье.

Сообщения приходят по одному и без перерыва. Зато про машину ты узнаешь через минуту.

С данными так же. Письмо это батч, сообщения это поток.

Батч: всё за период одной пачкой

Батч собирает данные за период и обрабатывает их разом. В «Гонце» это выглядело бы так: раз в час задание забирает из базы приложения все заказы за прошедший час, считает опоздания по зонам и кладёт результат в хранилище, откуда его читает дашборд Отто.

12:00  задание стартует
12:00  читает заказы с 11:00 до 12:00
12:03  считает опоздания по зонам
12:04  дашборд обновился
13:00  всё сначала

У батча честные плюсы:

  • Просто. Это скрипт по расписанию. Если он упал, его перезапускают, и он обработает тот же час заново.
  • Дёшево. Машина работает несколько минут в час, остальное время свободна.
  • Удобно считать. Все заказы часа лежат перед тобой, их можно отсортировать, сгруппировать, сравнить.

Главный минус в том, что данные стареют, пока ждут выгрузки. Заказ, созданный в 12:02, попадёт на дашборд только в 13:04, через час с лишним.

урок из курса

Урок из курса «Data Engineering». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.