Словарь дата-инженерии на пальцах
Дальше в курсе на тебя польётся жаргон: пайплайн, ETL, warehouse, batch, оркестрация. Чтобы он не пугал, разберём эти слова заранее — каждое в одном-двух простых предложениях и с бытовой аналогией. Не нужно зубрить определения наизусть. Нужно, чтобы при следующей встрече слово было знакомым, а не страшным.
Держи в голове картинку из прошлого урока: данные текут по трубам от источника к крану. Почти весь словарь ниже — это просто названия частей этого водопровода.
Источник (source)
Источник — это место, где данные рождаются. База приложения, сайт, мобильное приложение, датчик, внешний сервис вроде платёжной системы — всё это источники. Дата-инженер не создаёт данные сам, он их забирает из источников.
Бытовая аналогия: источник — это родник или скважина. Вода (данные) сама там появляется, наша задача — провести от неё трубу.
У одной компании источников обычно много: отдельно база заказов, отдельно реклама, отдельно поддержка клиентов. Часть работы DE — подключиться к каждому и регулярно вытаскивать оттуда свежие данные.
Хранилище данных (data warehouse)
Хранилище данных (англ. warehouse, читается «вэрхаус») — это большая база, специально устроенная под анализ. Туда складывают данные из всех источников, чтобы по ним удобно было считать отчёты и отвечать на вопросы бизнеса.
Бытовая аналогия: warehouse — это большой склад-распределитель. С разных фабрик (источников) туда свозят товар, аккуратно раскладывают по полкам, и теперь по складу легко найти что угодно и посчитать остатки.
Важно: warehouse — это не та база, в которой работает само приложение. Приложению нужна скорость на мелких операциях (записать один заказ), а складу — умение быстро перелопатить миллионы строк ради одного отчёта. Это разные задачи, поэтому и базы разные. Подробно разницу мы разберём в модуле про OLTP и OLAP.
Пайплайн (pipeline)
Пайплайн — это путь данных от источника до хранилища, собранный из последовательных шагов. Забрать данные, почистить, преобразовать, положить на место — всё это шаги одного пайплайна.
Бытовая аналогия: пайплайн — это конвейер на заводе. Сырьё заезжает с одного конца, проходит через станции (помыть, нарезать, упаковать) и выезжает готовым продуктом с другого. Если одна станция сломалась — встаёт весь конвейер.
Слово «pipeline» буквально и переводится как «трубопровод». Когда дата-инженер говорит «у меня упал пайплайн», он имеет в виду «сломалась одна из труб, по которой ехали данные, и они не доехали».
ETL и ELT
Это два способа построить пайплайн. Оба состоят из трёх шагов, спрятанных в буквах:
- E — Extract (извлечь): забрать данные из источника.
- T — Transform (преобразовать): почистить и привести к нужному виду — например, убрать дубли, перевести даты в один формат, посчитать суммы.
- L — Load (загрузить): положить данные в хранилище.
Разница только в порядке двух последних букв:
- ETL — сначала преобразуем, потом грузим уже готовое. (Извлёк -> почистил -> положил.)
- ELT — сначала грузим сырьё в хранилище, а преобразуем уже внутри него. (Извлёк -> положил -> почистил на месте.)
Бытовая аналогия: представь, что везёшь овощи с рынка. ETL — это помыть и нарезать овощи прямо на рынке, а домой привезти готовый салат. ELT — это привезти грязные овощи домой и резать их на своей кухне, где есть большая раковина и удобные ножи. Какой способ лучше — зависит от того, где у тебя удобнее «кухня». В современном мире с мощными хранилищами чаще выбирают ELT. Отдельный модуль курса посвящён именно этому выбору.
Batch и stream (партиями или ручьём)
Данные можно доставлять двумя ритмами.
- Batch (батч, «пакет/партия») — данные едут порциями по расписанию. Например, раз в час или раз в сутки собрали всё накопившееся и отправили одной пачкой.
- Stream (стрим, «поток/ручей») — данные едут по одному, непрерывно, сразу как появились. Каждое новое событие тут же бежит по трубе дальше.
Бытовая аналогия: batch — это автобус, который отходит по расписанию и везёт сразу всех пассажиров. Stream — это эскалатор, по которому люди едут по одному и непрерывно. Автобус проще и дешевле, но ждать его дольше. Эскалатор даёт мгновенность, но устроен сложнее.
Большинство пайплайнов в мире — batch, потому что отчёту «за вчера» не нужна мгновенность. Stream нужен там, где промедление дорого: антифрод, рекомендации в реальном времени, мониторинг.
Оркестрация (orchestration)
Когда пайплайнов становится много и одни зависят от других, кто-то должен ими дирижировать: запускать в нужном порядке, по расписанию, перезапускать упавшие. Это и есть оркестрация.
Оркестрация — это управление запуском шагов: что за чем запускается, когда и что делать, если шаг упал. Программу, которая этим занимается, называют оркестратором (самый известный — Airflow, но о нём позже).
Бытовая аналогия: оркестрация — это дирижёр оркестра. Каждый музыкант (пайплайн) умеет играть свою партию, но без дирижёра они вступят вразнобой. Дирижёр следит, чтобы скрипки вступили после вступления, а не до, и чтобы при сбое всё не развалилось.
Не пугайся, когда позже встретишь слово «DAG» рядом с оркестрацией. DAG — это просто схема «какой шаг от какого зависит», нарисованная стрелками: сначала забрать данные -> потом почистить -> потом построить отчёт. Мы разберём DAG отдельно и подробно. Сейчас достаточно знать, что оркестратор дирижирует шагами по такой схеме.
Собираем словарь в одну картинку
Прочитай это предложение медленно, подставляя только что выученные слова:
Дата-инженер строит пайплайны, которые забирают данные из источников, преобразуют их (ETL или ELT), доставляют партиями или потоком в хранилище, а запускает всё это по расписанию оркестратор.
Если предложение целиком понятно — модуль выполнил свою задачу. Дальше каждое из этих слов получит свой урок и свои детали. Но теперь, встречая жаргон, ты будешь узнавать знакомые лица, а не пугаться незнакомцев.
Попробуй сам
- Закрой урок и своими словами, не подглядывая, объясни вслух три слова: пайплайн, источник, хранилище. Если застрял — это нормально, открой и перечитай именно тот абзац.
- Придумай свою бытовую аналогию для batch и stream (не автобус и эскалатор). Например, из мира еды, почты или транспорта. Чем твоя аналогия лучше или хуже?
- Возьми приложение из задания прошлого урока. Назови его источник данных и придумай один отчёт, который бизнес хотел бы получать из хранилища. Нужен ли этому отчёту stream, или хватит batch раз в сутки?