diff --git a/README.md b/README.md index 7734778..9d34608 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Этот роадмап — конспект моих подходов к обучению Data Engineering. Он подойдёт тем, кто хочет: - системно войти в профессию с нуля или близкого к нулю уровня; -- закрыть пробелы в базе (SQL, Git, Python, DWH, Airflow, GreenPlum); +- закрыть пробелы в базе (SQL, Git, Python, DWH, Airflow, Greenplum); - подготовиться к собеседованиям и первым рабочим задачам. Роадмап можно проходить самостоятельно или вместе со мной в формате менторства. @@ -11,50 +11,12 @@ ## Оглавление -- [О роадмапе](#о-роадмапе) - - [Оглавление](#оглавление) -- [Основные знания](#основные-знания) - - [Git и базовые инструменты](#git-и-базовые-инструменты) - - [База по Git](#база-по-git) - - [Основы Markdown](#основы-markdown) - - [Базы данных: SQL и моделирование данных](#базы-данных-sql-и-моделирование-данных) - - [База по SQL](#база-по-sql) - - [Повышение знаний SQL](#повышение-знаний-sql) - - [Моделирование данных](#моделирование-данных) - - [Python](#python) - - [Методологии разработки](#методологии-разработки) - - [1. Основы и сравнение подходов](#1-основы-и-сравнение-подходов) - - [2. Agile: Философия гибкости](#2-agile-философия-гибкости) - - [3. Scrum (Скрам)](#3-scrum-скрам) - - [4. Kanban (Канбан)](#4-kanban-канбан) - - [Практика: Как это выглядит в жизни](#практика-как-это-выглядит-в-жизни) - - [1. Jira (Мировой стандарт)](#1-jira-мировой-стандарт) - - [2. Yandex Tracker (Российский стандарт)](#2-yandex-tracker-российский-стандарт) - - [Технические навыки](#технические-навыки) - - [Продвинутый Git](#продвинутый-git) - - [Docker](#docker) - - [Запись встреч](#запись-встреч) -- [Практика и инструменты](#практика-и-инструменты) - - [Airflow](#airflow) - - [Greenplum](#greenplum) - - [Фундаментальная теория](#фундаментальная-теория) - - [Знакомство с Greenplum](#знакомство-с-greenplum) - - [Курсовая работа](#курсовая-работа) - - [Понятие сложности алгоритмов](#понятие-сложности-алгоритмов) -- [Карьера и менторство](#карьера-и-менторство) - - [Менторство по этому роадмапу](#менторство-по-этому-роадмапу) - - [Подготовка к собеседованиям](#подготовка-к-собеседованиям) - - [Помощь в подготовке резюме](#помощь-в-подготовке-резюме) - - [Навыки поиска работы с HH и Habr карьера](#навыки-поиска-работы-с-hh-и-habr-карьера) - - [Помощь с прохождением испытательного срока](#помощь-с-прохождением-испытательного-срока) -- [Расширенные навыки](#расширенные-навыки) - - [ClickHouse](#clickhouse) - - [NiFi](#nifi) - - [Kafka](#kafka) - - [dbt](#dbt) +- [Основные знания](#основные-знания) — Git, SQL, Python, методологии, Docker +- [Практика и инструменты](#практика-и-инструменты) — Airflow, Greenplum, курсовая работа +- [Карьера и менторство](#карьера-и-менторство) — резюме, собеседования, испытательный срок +- [Расширенные навыки](#расширенные-навыки) — ClickHouse, Streaming, Lakehouse, dbt - [Софт скиллы](#софт-скиллы) - [Дополнительные материалы](#дополнительные-материалы) - - [Записи ОМ](#записи-ом) Рекомендуемый способ использования: - двигаться по разделам последовательно, не перепрыгивая через базу; @@ -116,7 +78,7 @@ SQL и моделирование данных специально идут р - Глава 9 - Транзакции - Глава 10 - Повышение производительности + ДЗ -Вопросы оптимизации запросов хорошо описаны в курсе [QPT](https://postgrespro.ru/education/courses/QPT) от Postgres Pro. Полученные навыки применимы для работы в том числе с GreenPlum, и частично, другими БД. +Вопросы оптимизации запросов хорошо описаны в курсе [QPT](https://postgrespro.ru/education/courses/QPT) от Postgres Pro. Полученные навыки применимы для работы в том числе с Greenplum, и частично, другими БД. На момент написания, видеолекции были доступны только для старой версии Postgres 13, но ее вполне достаточно. ### Моделирование данных @@ -144,7 +106,6 @@ SQL и моделирование данных специально идут р - [Гибкие методологии проектирования 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) -- Краткая теория про [DWH](https://halltape.github.io/HalltapeRoadmapDE/DWH/) - повторим еще раз, в другом изложении - Хорошее общее введение в модели данных дано в статье и докладе от Yandex: [Как мы внедрили свою модель хранения данных — highly Normalized hybrid Model. Доклад Яндекса](https://habr.com/ru/companies/yandex/articles/557140/) **Когда блок «Базы данных» считаем пройденным:** @@ -170,6 +131,9 @@ SQL и моделирование данных специально идут р - Введение в [ООП](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: https://github.com/dementev-dev/jupyter-spark-docker @@ -180,7 +144,6 @@ SQL и моделирование данных специально идут р - [Хабр (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. @@ -310,7 +273,6 @@ Apache Airflow — инструмент для оркестрации ETL-про Теперь, понимая теорию, смотрим, как это реализовано в конкретном инструменте. - Простое введение: [Greenplum | Что это такое и как оно работает? - Youtube](https://www.youtube.com/watch?v=rLG9Z_HcKPY) -- Оно же, но текстом: https://halltape.github.io/HalltapeRoadmapDE/GREENPLUM/ - [Визуализатор распределения Greenplum](https://gpskew.rzvde.pro/) **Курс Yandex по Greenplum** — основной учебный курс, рекомендуется пройти целиком: @@ -412,41 +374,51 @@ Apache Airflow — инструмент для оркестрации ETL-про Мы кратко знакомимся с: -- **Apache NiFi** и **Kafka** — инструментами для построения потоковых и интеграционных пайплайнов; +- **Streaming** (NiFi + Kafka) — инструментами для построения потоковых и интеграционных пайплайнов; - **ClickHouse** — колоночной СУБД для высоконагруженной аналитики; +- **Lakehouse** (Spark, Iceberg, Trino) — архитектурой, построенной на разделении compute и storage; - **dbt** — подходом к трансформации данных как кода. -Практика ограничивается минимальным рабочим примером (например, запуск в Docker, простой пайплайн или SQL-модель). - +Практика ограничивается минимальным рабочим примером (запуск в Docker, простой пайплайн или SQL-модель). Этого достаточно, чтобы уверенно говорить об инструменте на собеседовании и понимать его место в архитектуре — а всё остальное при необходимости осваивается уже на проекте. ## ClickHouse Бесплатный курс https://yandex.cloud/ru/training/clickhouse Платный курс [ClickHouse для аналитика – Stepik](https://stepik.org/course/100210/promo?search=6551441002) -## NiFi -Плейлист [Apache NiFi с нуля за 3 часа. Конструктор вместо кода - Youtube](https://youtube.com/playlist?list=PL4MpKy3QjNp_rOEEibc4Ro8UK4g8vLX6_&si=W_hidjHmBOZ_aUfS) — первые 4 видео, дальше — по желанию. +## Streaming (NiFi + Kafka) +NiFi — визуальный конструктор потоков данных, Kafka — распределённая очередь сообщений. Вместе они закрывают типичный сценарий: принять данные, буферизовать, доставить в хранилище. -Практика: -- собираем отдельный стенд в Docker Compose с Postgres и NiFi; -- в NiFi настраиваем простой генератор данных. +Материалы: +- [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) -## Kafka -[Лучший Гайд по 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. -Практика: -- расширяем предыдущий стенд, добавляя Kafka; -- строим поток данных: NiFi → Kafka; -- добавляем обратный поток: 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` — этого достаточно, чтобы увидеть весь цикл. + **Когда блок расширенных навыков считаем пройденным:** -- вы можете на собеседовании кратко объяснить, когда уместны NiFi/Kafka, ClickHouse и dbt, и чем они дополняют базовый стек (Postgres, Airflow, Greenplum); -- понимаете типичные сценарии: потоковые интеграции и очереди (Kafka/NiFi), аналитические витрины и отчёты на ClickHouse, трансформации данных в dbt; +- вы можете на собеседовании кратко объяснить, когда уместны Streaming (NiFi/Kafka), ClickHouse, Lakehouse-стек и dbt, и чем они дополняют базовый стек (Postgres, Airflow, Greenplum); +- понимаете типичные сценарии: потоковые интеграции и очереди (NiFi + Kafka), аналитические витрины и отчёты на ClickHouse, Lakehouse-архитектура (Spark/Iceberg/Trino), трансформации данных как код (dbt); - не боитесь увидеть эти инструменты в описании вакансии и можете поддержать содержательный разговор об их месте в архитектуре. ---