- Зачем: - в разделе ClickHouse не было ссылок на учебные стенды; - аудит сайта выявил битые ссылки и сломанный рендеринг списков в MkDocs - Что: - добавлены стенды clickhouse-learning-cluster и clickstream-ch-kafka-superset-demo; - пустые строки перед списками (CTE, Jira, Яндекс.Трекер) — рендерились абзацем с буквальными маркерами; - убраны лишние `**` после ссылки на Yandex Tracker (ломали разметку); - голые URL оформлены markdown-ссылками (karpov docker, jupyter-spark-docker, курс Яндекса по CH); - ссылка на datetime: зеркало django.fun заменено на docs.python.org/ru; - исправлена опечатка «конспектов лекция» → «лекций»; - mkdocs.yml: в заголовок домашки в nav добавлен пропущенный слой ODS; - AGENTS.md: Site URL обновлён на de.dementev.space (старый адрес отдаёт 404) - Проверка: - mkdocs build --strict (без ошибок); - grep по site/index.html — исправленные списки рендерятся как <ul>/<li> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
497 lines
46 KiB
Markdown
497 lines
46 KiB
Markdown
## О роадмапе
|
||
|
||
Этот роадмап — конспект моих подходов к обучению Data Engineering.
|
||
Он подойдёт тем, кто хочет:
|
||
|
||
- системно войти в профессию с нуля или близкого к нулю уровня;
|
||
- закрыть пробелы в базе (SQL, Git, Python, DWH, Airflow, Greenplum);
|
||
- подготовиться к собеседованиям и первым рабочим задачам.
|
||
|
||
Роадмап можно проходить самостоятельно или вместе со мной в формате менторства.
|
||
Если хотите идти с поддержкой ментора — напишите в Telegram: [@dementev_dev](https://t.me/dementev_dev).
|
||
|
||
### Оглавление
|
||
|
||
- [Основные знания](#основные-знания) — Git, SQL, Python, методологии, Docker
|
||
- [Практика и инструменты](#практика-и-инструменты) — Airflow, Greenplum, курсовая работа
|
||
- [Карьера и менторство](#карьера-и-менторство) — резюме, собеседования, испытательный срок
|
||
- [Расширенные навыки](#расширенные-навыки) — ClickHouse, Streaming, Lakehouse, dbt
|
||
- [Софт скиллы](#софт-скиллы)
|
||
- [Дополнительные материалы](#дополнительные-материалы)
|
||
|
||
Рекомендуемый способ использования:
|
||
|
||
- двигаться по разделам последовательно, не перепрыгивая через базу;
|
||
- выполнять практику и домашки, а не только смотреть материалы;
|
||
- возвращаться к разделам по мере появления реальных задач.
|
||
|
||
---
|
||
|
||
## Основные знания
|
||
|
||
[[к оглавлению]](#оглавление)
|
||
|
||
### Git и базовые инструменты
|
||
|
||
#### База по Git
|
||
Что такое контроль версий, когда используется, ПОЧЕМУ и как мы в обучении будем использовать.
|
||
Как создать репозиторий на GitHub, сохранять в нем изменения.
|
||
|
||
- [Что такое Git для Начинающих / GitHub за 30 минут / Git Уроки - Youtube](https://www.youtube.com/watch?v=VJm_AjiTEEc)
|
||
- [Git: Конфликты для Начинающих // Git Cherry Pick, Git Revert, Git Reset - Youtube](https://www.youtube.com/watch?v=F7FnnfnB9YY)
|
||
- Книга [Pro Git](https://git-scm.com/book/ru/v2) - читать главу 1
|
||
|
||
#### Основы Markdown
|
||
|
||
- [Язык Markdown и файл README | Git и GitHub для начинающих - Youtube](https://www.youtube.com/watch?v=8lEDTrr-G4U)
|
||
- [Markdown и его возможности: простой способ оформления текста](https://kurshub.ru/journal/blog/markdown-chto-eto/)
|
||
- [Синтаксис Markdown: подробная шпаргалка для веб-разработчиков / Skillbox Media](https://skillbox.ru/media/code/yazyk-razmetki-markdown-shpargalka-po-sintaksisu-s-primerami/)
|
||
|
||
Домашки по остальным темам тренируемся делать в Git, там же пишем документацию.
|
||
|
||
**Когда блок Git и базовые инструменты считаем пройденным:**
|
||
|
||
- вы уверенно создаёте репозиторий, коммитите изменения и отправляете их на GitHub;
|
||
- имеете представление о работе с ветками: создание, переключение, что такое merge/PR и разруливание простых конфликтов;
|
||
- оформляете базовую документацию в Markdown (README, заголовки, списки, ссылки, кодовые блоки).
|
||
|
||
### Базы данных: SQL и моделирование данных
|
||
|
||
SQL и моделирование данных специально идут рядом: сначала учимся уверенно извлекать данные запросами, затем — понимать и проектировать структуру данных, чтобы ETL/витрины были осмысленными.
|
||
#### База по SQL
|
||
Книга: [PostgreSQL. Основы языка SQL](https://postgrespro.ru/education/books/sqlprimer) - Глава 1 "Введение в базы данных и SQL" + ДЗ
|
||
|
||
Бесплатный тренажер: [Интерактивный тренажер по SQL – Stepik](https://stepik.org/course/63054/promo)
|
||
Целевой уровень знания SQL - Live кодинг на собесе. Проверяем на первом мок-интервью
|
||
|
||
**CTE**
|
||
|
||
- Зачем нам CTE: [Getting started with CTEs | dbt Labs](https://www.getdbt.com/blog/getting-started-with-cte)
|
||
- Подробнее про синтаксис: [PostgreSQL : Документация: 17: 7.8. Запросы WITH (Общие табличные выражения) : Компания Postgres Professional](https://postgrespro.ru/docs/postgresql/17/queries-with)
|
||
|
||
Для дальнейшей тренировки и поддержания уровня можно использовать [Database - LeetCode](https://leetcode.com/problem-list/database/). Хорошая подборка задачек: [SQL 50 - Study Plan - LeetCode](https://leetcode.com/studyplan/top-sql-50/)
|
||
|
||
#### Повышение знаний SQL
|
||
|
||
Смотрим курс от Postgres Pro [DEV1](https://postgrespro.ru/education/courses/DEV1)
|
||
Темы - от "Введение" до "SQL" включительно, "Управление доступом", "Резервное копирование". Для лучшего усваивания материала проделываем все примеры и домашние задания из конспектов лекций.
|
||
С темой "PL/pgSQL" можно ознакомиться обзорно.
|
||
|
||
Для развития навыков инженера будет полезно лабораторные работы делать не в виртуальной машине, а в docker контейнере. Предложенный (не обязательный) вариант - в каталоге `postgres-bookings` репозитория.
|
||
|
||
Для дальнейшего закрепления материала - читаем книгу [PostgreSQL. Основы языка SQL](https://postgrespro.ru/education/books/sqlprimer)
|
||
|
||
- Глава 8 - Индексы + ДЗ
|
||
- Глава 9 - Транзакции
|
||
- Глава 10 - Повышение производительности + ДЗ
|
||
|
||
Вопросы оптимизации запросов хорошо описаны в курсе [QPT](https://postgrespro.ru/education/courses/QPT) от Postgres Pro. Полученные навыки применимы для работы в том числе с Greenplum, и частично, другими БД.
|
||
На момент написания, видеолекции были доступны только для старой версии Postgres 13, но ее вполне достаточно.
|
||
|
||
#### Моделирование данных
|
||
Понимание того, **как устроены данные и зачем они нужны**, — ключ к качественным ETL-процессам.
|
||
Мы кратко разбираем:
|
||
|
||
- Основные подходы: нормализованные (3NF) vs денормализованные (звезда, снежинка)
|
||
- Что такое staging, marts, слои raw / clean / business
|
||
- Как проектировать таблицы под конкретные сценарии использования
|
||
|
||
Цель — не стать архитектором, а **уметь читать и объяснять структуру данных**, чтобы писать осмысленные запросы и трансформации.
|
||
|
||
Материалы (включая демо DWH-модель из этого репозитория):
|
||
|
||
- Мартин Клеппман — «Высоконагруженные приложения» - Глава 2: Модели данных и языки запросов. - Для понимания, чем реляционная модель (SQL) отличается от документной (NoSQL) и графовой, и почему для аналитики мы всё ещё любим таблицы
|
||
(Важно: не перепутайте главу 2 с Частью 2 про распределенные данные!).
|
||
- [Яндекс Практикум: что такое нормализация, простыми словами (для самых начинающих)](https://practicum.yandex.ru/blog/chto-takoe-normalizaciya-dannyh/)
|
||
- [Базы данных. 1,2,3 нормальные формы. - Youtube](https://www.youtube.com/watch?v=zwQzL80U51c)
|
||
- [Введение в структуру хранилища данных](dwh-modeling/README.md)
|
||
- Теория про Slowly Changing Dimensions: [SCD](dwh-modeling/SCD.md)
|
||
- (Опционально) Ральф Кимбалл — «Инструментарий хранения и анализа данных» (The Data Warehouse Toolkit) - первые 3 главы
|
||
- Практика по моделированию статусов клиента: [домашка STG → ODS → DDS → DM](dwh-modeling/Homework_Customer_Status_DDS_DM.md)
|
||
- Еще про Data Vault:
|
||
- Конспект и примеры из этого репозитория: [DataVault.md](dwh-modeling/DataVault.md)
|
||
- [DataVault за 10 минут - Youtube](https://www.youtube.com/watch?v=9oQs_wJ045I)
|
||
- Статья [«Что такое Data Vault: моделирование КХД для архитектора Big Data»](https://bigdataschool.ru/blog/what-is-data-vault/) — обзор, плюсы/минусы, контекст применения.
|
||
- [Гибкие методологии проектирования Data Vault и Anchor Modeling | Евгений Ермаков | karpov.courses](https://www.youtube.com/watch?v=fNGIOb8SJvU)
|
||
- Лекция в рамках курса по DWH: именно [«Основы Data Vault, создаем первую модель»](https://www.youtube.com/watch?v=65b99XCuiR4) — хороший формат: теория + пример.
|
||
- Доклад - практический пример: [Денис Лукьянов — Data Vault 2.0. Когда внедрять, проблемы применения при построении DWH на Greenplum](https://www.youtube.com/watch?v=oGwQbeP5iss)
|
||
- Хорошее общее введение в модели данных дано в статье и докладе от Yandex: [Как мы внедрили свою модель хранения данных — highly Normalized hybrid Model. Доклад Яндекса](https://habr.com/ru/companies/yandex/articles/557140/)
|
||
|
||
**Когда блок «Базы данных» считаем пройденным:**
|
||
|
||
- вы уверенно пишете запросы с JOIN, агрегатами, подзапросами и CTE;
|
||
- можете подробно объяснить план запроса в Postgres, понимаете где планировщик отработал корректно, а где - есть возможность улучшить;
|
||
- можете объяснить простую модель данных (3NF/звезда) и прочитать схему DWH;
|
||
- решаете типовые задачи уровня SQL live-coding без долгих пауз.
|
||
|
||
|
||
### Python
|
||
|
||
- Если совсем не знакомы с Python, начинаем с курса ["Поколение Python": курс для начинающих – Stepik](https://stepik.org/course/58852/info)
|
||
- Изучаем глубже и "оттачиваем" live coding: ["Поколение Python": курс для продвинутых – Stepik](https://stepik.org/course/68343/info)
|
||
- Продолжение "базы", спрашиваемой на собеседованиях, по Python: ["Поколение Python": курс для профессионалов](https://stepik.org/course/82541/promo). Курс очень полезный, но платный. Вместо него можно почитать "продвинутые" темы дальше.
|
||
- "Продвинутые" темы:
|
||
- [Полезные функции](https://pyneng.readthedocs.io/ru/latest/book/10_useful_functions/index.html)
|
||
- [Работа с файлами в формате CSV, JSON, YAML](https://pyneng.readthedocs.io/ru/latest/book/17_serialization/index.html)
|
||
- [Итераторы, итерируемые объекты и генераторы](https://pyneng.readthedocs.io/ru/latest/book/13_iterator_generator/index.html)
|
||
- [Декораторы Python: пошаговое руководство](https://habr.com/ru/companies/otus/articles/727590/)
|
||
- Работа с датой/временем: [официальная документация по модулю datetime](https://docs.python.org/ru/3/library/datetime.html)
|
||
- ООП
|
||
- [Tproger: «ООП простыми словами»](https://tproger.ru/experts/oop-in-simple-words)
|
||
- Введение в [ООП](https://metanit.com/python/tutorial/7.1.php)
|
||
- [Яндекс Учебник: «Объектная модель Python: классы, поля и методы»](https://education.yandex.ru/handbook/python/article/obuektnaya-model-python-klassy-polya-i-metody)
|
||
- [Real Python: OOP in Python (tutorial)](https://realpython.com/python3-object-oriented-programming/)
|
||
- Виртуальные окружения (venv) — изолируют зависимости проекта; настройте перед установкой Jupyter и библиотек
|
||
- [Habr: как настроить виртуальное окружение](https://habr.com/ru/articles/889670/)
|
||
- [SkillFactory: Виртуальные окружения в Python](https://blog.skillfactory.ru/venv-virtualnoe-okruzhenie-v-python/)
|
||
- Jupyter Lab
|
||
- [Блог Практикума: «Что такое Jupyter Notebook: как установить и открыть»](https://practicum.yandex.ru/blog/chto-takoe-jupyter-notebook/)
|
||
- Готовая реализация Jupyter Lab, включающая в себя Spark, в Docker: [jupyter-spark-docker](https://github.com/dementev-dev/jupyter-spark-docker)
|
||
- Pandas
|
||
- [GeeksforGeeks: “Why Pandas is Used in Python”](https://www.geeksforgeeks.org/pandas/why-pandas-is-used-in-python/)
|
||
- [Skillbox: «Для чего нужна библиотека Pandas»](https://skillbox.ru/media/code/rabotaem-s-pandas-osnovnye-ponyatiya-i-realnye-dannye/)
|
||
- [Official: “10 minutes to pandas”](https://pandas.pydata.org/docs/user_guide/10min.html)
|
||
- [Хабр (RUVDS): «Моя шпаргалка по pandas»](https://habr.com/ru/companies/ruvds/articles/494720/)
|
||
- [Tproger: «Наглядная шпаргалка по операциям с DataFrame»](https://tproger.ru/articles/pandas-data-wrangling-cheatsheet)
|
||
|
||
Полезно, но дороговато и не обязательно: хорошее комбо SQL + Python — ["Поколение Python": профи + ООП + SQL – Stepik](https://stepik.org/course/233341/promo?search=7181036958)
|
||
|
||
Цель — уверенно решать простые задачи на Python в формате live-coding; дальше эти навыки пригодятся для создания DAG Airflow.
|
||
|
||
**Когда блок Python считаем пройденным:**
|
||
|
||
- вы без подсказок пишете небольшие скрипты с циклами, функциями, обработкой ошибок и работой с коллекциями;
|
||
- умеете читать и модифицировать чужой код, в том числе с использованием pandas и DataFrame;
|
||
- уверенно проходите простой live-coding по Python для DE: прочитать CSV/JSON, отфильтровать, сгруппировать данные и посчитать агрегаты.
|
||
- можете отвечать как на простые вопросы собеседований (циклы, списки, словари), так и продвинутые (итераторы, декораторы, управление памятью, базовые понятия ООП)
|
||
|
||
### Методологии разработки
|
||
|
||
> **Зачем это разработчику?**
|
||
> 1. **Работа в команде.** Вам нужно понимать «правила игры». Почему задачи двигаются именно так? Зачем мы встречаемся каждое утро на 15 минут? Почему нельзя просто взять задачу из середины списка?
|
||
> 2. **Собеседование и «легенда».** Когда вас спросят: «Как строилась работа в вашей прошлой команде?», вы должны ответить грамотно. Использование правильной терминологии (спринты, груминг, ретроспектива, WIP-лимиты) — это маркер профессионализма. Это показывает, что вы не просто писали код в вакууме, а были частью налаженного процесса.
|
||
|
||
#### 1. Основы и сравнение подходов
|
||
Для начала нужно понять глобальную разницу между жестким планированием (Waterfall) и гибкой разработкой (Agile).
|
||
|
||
- [Waterfall или Agile, Scrum или Kanban: что выбрать](https://habr.com/ru/companies/kaiten/articles/906006/) — *Базовая статья. Читать внимательно, закрывает вопросы и по Waterfall, и по выбору пути.*
|
||
- [Agile, Scrum, Kanban - обзор, отличия, мифы](https://www.youtube.com/watch?v=LhA5aWjHTJw) — *Видео для закрепления. Помогает разложить кашу в голове по полочкам.*
|
||
|
||
#### 2. Agile: Философия гибкости
|
||
Agile — это не метод, а философия. Scrum и Kanban — это инструменты этой философии.
|
||
|
||
- [Scrum vs Kanban: отличия и разница Agile методов](https://kaiten.ru/blog/kanban-vs-scrum/) — *Сравнение двух главных фреймворков. Важно понять, где заканчивается один и начинается другой.*
|
||
|
||
#### 3. Scrum (Скрам)
|
||
Используется, когда мы создаем продукт и работаем спринтами (циклами).
|
||
*Часто встречается в продуктовых командах, где DE работает в связке с Backend/Frontend.*
|
||
|
||
- [Методология Scrum: принципы, ценности, этапы](https://kaiten.ru/blog/chto-takoie-scrum-i-kak-ispolzovat/)
|
||
|
||
#### 4. Kanban (Канбан)
|
||
Используется для управления потоком задач и поддержки.
|
||
*Наиболее популярен в Data Engineering и DevOps, так как данные поступают непрерывно, и их сложно «запереть» в двухнедельный спринт.*
|
||
|
||
- [Канбан: метод, инструменты и принципы](https://kaiten.ru/blog/cto-takoe-kanban/)
|
||
|
||
#### Практика: Как это выглядит в жизни
|
||
|
||
Теория — это хорошо, но на работе вы увидите конкретный интерфейс (Jira или Yandex Tracker). Важно понимать, куда нажимать и как двигать задачи.
|
||
|
||
##### 1. Jira (Мировой стандарт)
|
||
Самый популярный инструмент. Скорее всего, вы столкнетесь именно с ним.
|
||
|
||
* [Как работать с Jira на реальных проектах](https://www.youtube.com/watch?v=oPgm-fsHVfM) (15 мин) — *Отличное видео, где показывают базу: как создать задачу, как перетащить её по доске (Kanban) и что писать в комментариях. Смотреть с 04:00, где начинается практика.*
|
||
* [Создание и настройка Scrum-досок в JIRA](https://www.youtube.com/watch?v=u-u8NRyApUs) — *Если хотите увидеть, как выглядит Спринт и Бэклог изнутри.*
|
||
|
||
##### 2. Yandex Tracker (Российский стандарт)
|
||
Активно внедряется в крупных компаниях РФ. Логика та же, но интерфейс другой.
|
||
|
||
* [Начало работы в Яндекс.Трекере](https://www.youtube.com/watch?v=pdlYiijjn70) (3 мин) — *Супер-короткий официальный гайд. За 3 минуты показывают всё: очереди, доски, карточки.*
|
||
* [Настройка процесса разработки в Tracker](https://www.youtube.com/watch?v=EdKlYJR2ph0&t=397s) (c 06:37) — *Более глубокий разбор: как выглядит очередь задач разработчика и жизненный цикл тикета.*
|
||
|
||
> **💡 Совет:**
|
||
> Не бойтесь кнопок. Главное правило любого трекера: **«Взял задачу в работу — переведи статус в In Progress»**. Это сигнал команде, что вы заняты и вас лучше не отвлекать.
|
||
|
||
**Когда блок «Методологии разработки» считаем пройденным:**
|
||
|
||
- вы в общих чертах можете объяснить разницу Waterfall vs Agile и Scrum vs Kanban;
|
||
- знаете основные мероприятия Scrum (planning / daily / review / retro) и что от вас ожидается на каждом;
|
||
- умеете работать с трекером (Jira/Tracker): создать/уточнить задачу, взять в работу, корректно двигать статусы и оставлять понятные комментарии;
|
||
- умеете своевременно сообщать о блокерах и уточнять требования, если задача «не бьётся» или в ней не хватает входных данных.
|
||
|
||
### Технические навыки
|
||
|
||
#### Продвинутый Git
|
||
|
||
- Сжатый, но емкий видеогайд: [GIT, GitHub, GitLab. Полный АКТУАЛЬНЫЙ гайд ЗА ПОЛТОРА ЧАСА. Без этого выгонят с работы - Youtube](https://www.youtube.com/watch?v=0Y-fneoUIO8)
|
||
- Книга: [Pro Git](https://git-scm.com/book/ru/v2) - главы
|
||
- 2 Основы Git
|
||
- 3 Ветвление в Git
|
||
- 5 Распределённый Git
|
||
- 6 GitHub
|
||
- [Курс работы с Git и GitLab - ЭФКО ЦПР | YouTube плейлист](https://www.youtube.com/playlist?list=PLbf8m52BvqlFlblJqQKPuEU26pwgqe7zK). Настоятельно рекомендую проделать за лектором все те действия что он показывает.
|
||
|
||
Целевой уровень знания - понимание процесса GitFlow. Как создать ветку, влить изменения в другие ветки. Понимание, зачем.
|
||
На собесах обычно не спрашивают, но нужно в работе.
|
||
|
||
#### Docker
|
||
|
||
- Курс [Docker от karpov.courses](https://karpov.courses/docker)
|
||
|
||
Основное предназначение для нас - учебные стенды, где мы разбираем и тренируемся с разными технологиями. На работе - иногда пригождается. На собесах спрашивают редко.
|
||
|
||
#### Запись встреч
|
||
OBS Studio
|
||
|
||
- Руководство по OBS: [OBS Studio - Настройка ОБС для Записи Игр и Стрима | Настройка Микрофона в Обс и т.д - Youtube](https://www.youtube.com/watch?v=bj8VEphZ65U)
|
||
- [Как записывать собеседования](https://docs.google.com/document/d/1qd8uRYlAaZp9c5zpvCVBOvYQCEukGHI9PEPjnjahI1k/)
|
||
|
||
**Когда блок технических навыков считаем пройденным:**
|
||
|
||
- вы понимаете базовый GitFlow: как организована работа с ветками в команде и как ваши коммиты попадают в прод;
|
||
- используете Docker для учебных стендов: запускаете контейнеры, смотрите логи и при необходимости перезапускаете сервисы;
|
||
- при необходимости умеете настроить запись экрана/созвонов, чтобы сохранять материалы обучения.
|
||
|
||
---
|
||
|
||
## Практика и инструменты
|
||
|
||
[[к оглавлению]](#оглавление)
|
||
|
||
### Airflow
|
||
Apache Airflow — инструмент для оркестрации ETL-процессов.
|
||
|
||
Мы используем его для:
|
||
|
||
- планирования задач,
|
||
- отслеживания зависимостей между шагами,
|
||
- визуализации статуса выполнения.
|
||
|
||
Материалы:
|
||
|
||
- [Учебник по Airflow](https://github.com/dementev-dev/airflow-manual)
|
||
|
||
**Когда блок Airflow считаем пройденным:**
|
||
|
||
- вы можете объяснить, что такое DAG, задачи, операторы и сенсоры, и как между ними задаются зависимости;
|
||
- на базе учебного стенда подготавливаете, отлаживаете и запускаете свои DAG'и с расписанием и несколькими шагами (например, загрузка данных и последующие трансформации);
|
||
- уверенно смотрите логи, находите место падения и понимаете, как перезапустить задачу.
|
||
|
||
### Greenplum
|
||
Разбираем, чем Greenplum отличается от PostgreSQL и зачем нужны MPP-хранилища.
|
||
|
||
#### Фундаментальная теория
|
||
Прежде чем нажимать кнопки, нужно понять "физику" больших данных. Почему обычный Postgres начинает тормозить?
|
||
|
||
- Мартин Клеппман, "Высоконагруженные приложения":
|
||
- Глава 1. Надежность, масштабируемость. (Разбираемся, чем вертикальное масштабирование отличается от горизонтального).
|
||
- Глава 3 (только конец главы). Читаем разделы:
|
||
- «Обработка транзакций или аналитика?» (OLTP or OLAP?) — ключевое различие нагрузок.
|
||
- «Хранение по столбцам» — почему аналитика требует другого способа записи данных на диск.
|
||
- Зачем: Это объясняет, почему Greenplum устроен именно так. Без этого вы будете пытаться работать с ним как с обычным Postgres.
|
||
|
||
#### Знакомство с Greenplum
|
||
Теперь, понимая теорию, смотрим, как это реализовано в конкретном инструменте.
|
||
|
||
- Простое введение: [Greenplum | Что это такое и как оно работает? - Youtube](https://www.youtube.com/watch?v=rLG9Z_HcKPY)
|
||
- [Визуализатор распределения Greenplum](https://gpskew.rzvde.pro/)
|
||
|
||
**Курс Yandex по Greenplum** — основной учебный курс, рекомендуется пройти целиком:
|
||
|
||
- [Бесплатный курс Yandex Cloud по Greenplum](https://yandex.cloud/ru/training/greenplum)
|
||
- Практику по курсу удобно делать на стенде [airflow-dwh-gp-lab](https://github.com/dementev-dev/airflow-greenplum) — `make up` поднимает рабочий Greenplum с PXF, не нужен облачный кластер.
|
||
- Стенд покрывает основные темы курса: типы таблиц (heap / appendonly), политики дистрибуции, сжатие, PXF, анализ планов выполнения (`EXPLAIN`).
|
||
- Единственное ограничение: cloud-специфичные темы (тема 2 курса — развёртывание в Yandex Cloud) на локальном стенде не покрыты.
|
||
|
||
Дополнительно:
|
||
|
||
- [Учебный курс по Greenplum от datafinder](https://datafinder.ru/products/uchebnyy-kurs-po-greenplum) — отдельные главы для углубления.
|
||
|
||
**Когда блок Greenplum считаем пройденным:**
|
||
|
||
- вы понимаете, как данные распределяются по сегментам, что такое skew и как его увидеть;
|
||
- на базе стенда `airflow-dwh-gp-lab` можете загружать и выгружать данные в Greenplum, выполнять запросы и разбирать планы выполнения (`EXPLAIN`);
|
||
- можете объяснить, в чём практическая разница между MPP-хранилищем и одиночным Postgres на уровне типичных задач DE и собеседований.
|
||
|
||
### Курсовая работа
|
||
Курсовая работа — важный майлстоун роадмапа: ваш первый end-to-end data-проект. После неё у вас есть ключевые технические навыки для старта карьеры в Data Engineering.
|
||
|
||
Курсовая выполняется на том же стенде [airflow-dwh-gp-lab](https://github.com/dementev-dev/airflow-greenplum), который вы уже использовали для практики по Greenplum.
|
||
|
||
**Что внутри:**
|
||
|
||
- Стенд содержит DWH с реализованным эталонным срезом (STG → ODS → DDS → DM) — это ваш образец для подражания.
|
||
- Задача — довести DWH до полного, реализовав недостающие загрузки по аналогии с эталоном.
|
||
- Есть готовый план от аналитика (ТЗ с маппингами и бизнес-правилами) — не нужно придумывать, что делать.
|
||
- Встроенная автоматическая проверка реализации поможет убедиться в корректности до проверки ментором.
|
||
- Ветка `main` — рабочая (с заготовками для реализации), ветка `solution` — эталон для сверки.
|
||
|
||
**Когда блок курсовой работы считаем пройденным:**
|
||
|
||
- все загрузки реализованы, DWH заполняется полностью (STG → ODS → DDS → DM);
|
||
- автоматическая проверка (валидационный DAG) проходит без ошибок;
|
||
- вы можете на собеседовании за 5–10 минут рассказать архитектуру проекта, его цели и показать ключевые части кода.
|
||
|
||
### Понятие сложности алгоритмов
|
||
В Data Engineering редко требуется писать сложные алгоритмы, но важно понимать, как оценивать эффективность кода:
|
||
|
||
- в SQL — через объём сканируемых данных, типы JOIN’ов, использование индексов;
|
||
- в Python — через асимптотику операций с pandas/списками (например, O(n) vs O(n²)).
|
||
|
||
Это помогает избегать «тормозящих» решений на собеседованиях и в реальных пайплайнах.
|
||
|
||
---
|
||
|
||
## Карьера и менторство
|
||
|
||
[[к оглавлению]](#оглавление)
|
||
|
||
### Менторство по этому роадмапу
|
||
|
||
Если вы нашли этот роадмап в интернете и хотите пройти его не в одиночку, а с поддержкой ментора, можно присоединиться ко мне.
|
||
|
||
**Что даёт менторство:**
|
||
|
||
- структурный план прохождения роадмапа под вашу ситуацию;
|
||
- разбор вопросов по SQL / DWH / Airflow и другим темам из этого документа;
|
||
- разбор домашних заданий и код-ревью;
|
||
- помощь с подготовкой к собеседованиям (резюме, мок-интервью).
|
||
|
||
**Как записаться**
|
||
|
||
Просто напишите мне в Telegram: [@dementev_dev](https://t.me/dementev_dev)
|
||
со словами «Хочу пройти роадмап с ментором» — дальше всё обсудим.
|
||
|
||
### Подготовка к собеседованиям
|
||
Цель блока — сформировать «опыт от 2 лет» и уметь корректно его показать в резюме и на собеседовании.
|
||
|
||
#### Помощь в подготовке резюме
|
||
|
||
- Видео от ОМ по составлению резюме
|
||
- [Как накрутить опыт в резюме | «Ультимативный гайд» @digital_ninja](https://www.youtube.com/watch?v=EPuogJuYsvY)
|
||
- [Как писать резюме, чтобы его читали - доклад - Boosty](https://boosty.to/m0rtymerr/posts/71b02a6b-8116-466a-b945-b2ed793abd8f)
|
||
- [Как грамотно продать себя на собеседовании / Созвон сообщества - Boosty](https://boosty.to/m0rtymerr/posts/7289cd23-60c6-4010-bb1c-a5b28dac399a)
|
||
- Практика: совместная работа над резюме — ментор помогает переработать опыт, сформировать убедительную карьерную историю и подготовиться к вопросам по ней.
|
||
|
||
#### Поиск работы и собеседования
|
||
|
||
- [Как подтвердить опыт без трудовой / Хабр против работяг](https://www.youtube.com/watch?v=GHqABzA1zi8)
|
||
- Видео по прохождению собеседований из сообщества ОМ — *в подготовке*
|
||
- Практика: мок-собеседования с ментором — тренировка ответов, разбор слабых мест, психологическая подготовка к реальным интервью.
|
||
|
||
#### Помощь с прохождением испытательного срока
|
||
|
||
- [Как успешно пройти испытательный срок в IT | «Ультимативный гайд» c @digital_ninja - Youtube](https://www.youtube.com/watch?v=r1lWP5rYVdk)
|
||
- [Испытательный срок - доклад - Boosty](https://boosty.to/m0rtymerr/posts/40e7f17e-022b-495c-8d03-dabbe4383b8e)
|
||
|
||
**Когда блок подготовки к собеседованиям считаем пройденным:**
|
||
|
||
- у вас есть актуальное резюме под DE с понятными примерами проектов вместо «пустого» опыта;
|
||
- вы умеете искать и отбирать вакансии на HH и Habr Карьера, адаптируя отклики под конкретную позицию;
|
||
- вы прошли хотя бы пару мок-собеседований, получили обратную связь и по результатам доработали резюме и стратегию поиска.
|
||
|
||
---
|
||
|
||
## Расширенные навыки
|
||
Эти темы выходят за рамки базового минимума для старта в Data Engineering, но дают более полное представление об экосистеме.
|
||
Их цель — понимать, зачем и когда используется тот или иной инструмент, а не осваивать его на уровне администратора или DevOps-инженера.
|
||
|
||
[[к оглавлению]](#оглавление)
|
||
|
||
Мы кратко знакомимся с:
|
||
|
||
- **Streaming** (NiFi + Kafka) — инструментами для построения потоковых и интеграционных пайплайнов;
|
||
- **ClickHouse** — колоночной СУБД для высоконагруженной аналитики;
|
||
- **Lakehouse** (Spark, Iceberg, Trino) — архитектурой, построенной на разделении compute и storage;
|
||
- **dbt** — подходом к трансформации данных как кода.
|
||
|
||
Практика ограничивается минимальным рабочим примером (запуск в Docker, простой пайплайн или SQL-модель).
|
||
Этого достаточно, чтобы уверенно говорить об инструменте на собеседовании и понимать его место в архитектуре — а всё остальное при необходимости осваивается уже на проекте.
|
||
|
||
### ClickHouse
|
||
|
||
Материалы:
|
||
|
||
- Бесплатный курс [ClickHouse от Yandex Cloud](https://yandex.cloud/ru/training/clickhouse)
|
||
- Платный курс [ClickHouse для аналитика – Stepik](https://stepik.org/course/100210/promo?search=6551441002)
|
||
|
||
Стенды для практики:
|
||
|
||
- [clickhouse-learning-cluster](https://github.com/dementev-dev/clickhouse-learning-cluster) — учебный кластер ClickHouse в Docker Compose: 4 узла, репликация, шардинг, балансировка через HAProxy. Задачи курса Яндекса удобно выполнять на этом стенде — облачный кластер не нужен.
|
||
- [clickstream-ch-kafka-superset-demo](https://github.com/dementev-dev/clickstream-ch-kafka-superset-demo) — стенд, имитирующий полноценное аналитическое хранилище на ClickHouse: Kafka, Airflow, дашборды в Superset, мониторинг (Prometheus/Grafana), слои STG → ODS → DDS → DM и разные виды учебных потоков. Внутри — продвинутый курс «Кликстрим на ClickHouse».
|
||
|
||
### Streaming (NiFi + Kafka)
|
||
NiFi — визуальный конструктор потоков данных, Kafka — распределённая очередь сообщений. Вместе они закрывают типичный сценарий: принять данные, буферизовать, доставить в хранилище.
|
||
|
||
Материалы:
|
||
|
||
- [Apache NiFi с нуля за 3 часа (Youtube-плейлист)](https://youtube.com/playlist?list=PL4MpKy3QjNp_rOEEibc4Ro8UK4g8vLX6_&si=W_hidjHmBOZ_aUfS) — первые 4 видео, дальше — по желанию
|
||
- [Лучший Гайд по Kafka для Начинающих За 1 Час (Youtube)](https://www.youtube.com/watch?v=hbseyn-CfXY)
|
||
|
||
Практика — на стенде [nifi-kafka-postgres-lab](https://github.com/dementev-dev/nifi-kafka-postgres-lab) (Docker Compose с NiFi, Kafka и Postgres):
|
||
|
||
- настраиваем в NiFi простой генератор данных и поток в Postgres;
|
||
- строим поток NiFi → Kafka → NiFi → Postgres.
|
||
|
||
### Lakehouse (Spark, Iceberg, Trino)
|
||
|
||
> Секция в разработке. Lakehouse — отдельное направление в DE, построенное на разделении compute и storage, открытых табличных форматах (Iceberg, Delta) и движках распределённой обработки (Spark, Trino). Этот роадмап фокусируется на классическом DWH-стеке, поэтому полноценный блок пока не готов — ниже только отправные точки для самостоятельного изучения.
|
||
|
||
- [DataLearn: «Что такое Apache Spark»](https://youtu.be/Tl9YzC-dQLI) — введение в Spark с нуля, ~40 минут
|
||
- Стенд для экспериментов: [mini-lakehouse-lab](https://github.com/dementev-dev/mini-lakehouse-lab) (Spark + Iceberg + Trino + MinIO)
|
||
|
||
### dbt
|
||
dbt (data build tool) — инструмент для трансформации данных в хранилище.
|
||
|
||
Мы рассматриваем его как альтернативу «ручному» написанию сложных CTE и для понимания современного подхода к моделированию данных как кода.
|
||
|
||
Материалы:
|
||
|
||
- [dbt quickstart (официальный гайд)](https://docs.getdbt.com/guides/manual-install?step=1)
|
||
- [Перевод документации dbt на русский](https://docs.getdbt.tech/)
|
||
|
||
Практика:
|
||
|
||
- Клонировать [jaffle-shop](https://github.com/dbt-labs/jaffle-shop), установить dbt-duckdb, прогнать `dbt build`, `dbt test`, `dbt docs generate && dbt docs serve` — этого достаточно, чтобы увидеть весь цикл.
|
||
|
||
**Когда блок расширенных навыков считаем пройденным:**
|
||
|
||
- вы можете на собеседовании кратко объяснить, когда уместны Streaming (NiFi/Kafka), ClickHouse, Lakehouse-стек и dbt, и чем они дополняют базовый стек (Postgres, Airflow, Greenplum);
|
||
- понимаете типичные сценарии: потоковые интеграции и очереди (NiFi + Kafka), аналитические витрины и отчёты на ClickHouse, Lakehouse-архитектура (Spark/Iceberg/Trino), трансформации данных как код (dbt);
|
||
- не боитесь увидеть эти инструменты в описании вакансии и можете поддержать содержательный разговор об их месте в архитектуре.
|
||
|
||
---
|
||
|
||
## Софт скиллы
|
||
|
||
[[к оглавлению]](#оглавление)
|
||
|
||
- [Все ветви дохода в IT / Полный гайд по деньгам](https://youtube.com/live/JHClTWwK1EM)
|
||
- [Гайд как писать отзывы](https://boosty.to/m0rtymerr/posts/b04040ec-0f46-4524-9c75-188a513140ad?share=post_link)
|
||
- [Гайд по Антистрессу](https://youtu.be/bu0YiXOKaoU)
|
||
|
||
---
|
||
|
||
## Дополнительные материалы
|
||
|
||
[[к оглавлению]](#оглавление)
|
||
|
||
- [ananevsyu/SandBox_DB_public: Песочница для изучения различных технологий связанных с инженерией данных](https://gitflic.ru/project/ananevsyu/sandbox_db_public)
|
||
- Клон проекта [dementev_dev/sandbox_db_public-форк](https://gitflic.ru/project/dementev_dev/sandbox_db_public-fork)
|
||
- [System Design. Разбор книги "Высоконагруженные приложения". Глава 1 - Youtube](https://www.youtube.com/watch?v=owjrIB_5go8) — отличный видео-конспект первой главы Клеппмана на русском.
|
||
- [Индексы в БД - Youtube](https://www.youtube.com/watch?v=DyqtBiDrz3g)
|
||
- [Spark + Iceberg in 1 Hour - Memory Tuning, Joins, Partition - Youtube](https://www.youtube.com/watch?v=3R-SLYK-P_0)
|
||
- [Введение в устройство Parquet и Iceberg - habr](https://habr.com/ru/companies/vktech/articles/959398/)
|
||
- [Введение в Apache Iceberg. Основы, архитектура, как работает?](https://ivan-shamaev.ru/apache-iceberg-tutorial-architecture-how-to-work/#__Apache_Iceberg-2)
|
||
- [Алгоритмы: теория и практика. Методы – Stepik](https://stepik.org/course/217/info)
|
||
- [Алгоритмы: теория и практика. Структуры данных – Stepik](https://stepik.org/course/1547/promo)
|
||
- [Apache Hadoop для самых маленьких: HDFS, RACK-AWARENESS, репликация и Data Locality - Youtube](https://youtu.be/0fsY5bW2l84)
|
||
- [Книга. Введение в Apache Kafka для системных аналитиков и проектировщиков интеграций](https://systems.education/kafka)
|
||
- [Перевод документации dbt на русский язык](https://docs.getdbt.tech/)
|
||
|
||
### Записи ОМ
|
||
|
||
- [Как пройти собеседование на программиста | Ультимативный гайд с @om_nazarov - Youtube](https://www.youtube.com/watch?v=tzSdiYZ52kI)
|
||
- [Как стать программистом в 2025 | «Ультимативный гайд» с @om_nazarov](https://www.youtube.com/watch?v=6151ekTOl38)
|