feat(docs): добавлены PRD и программа обучения для курса по Lakehouse
- Зачем: - Формализовать цели, аудиторию и структуру учебного курса для плавного погружения джунов в Lakehouse-архитектуру. - Что: - Создан docs/PRD_Course.md с описанием JTBD, "Aha-moments" и метрик успеха. - Создан docs/COURSE_PLAN.md с детальной программой из 10 интерактивных уроков. - Проверка: - Файлы присутствуют в директории docs и корректно ссылаются друг на друга.
This commit is contained in:
@@ -0,0 +1,44 @@
|
|||||||
|
# Программа учебного курса: Введение в Lakehouse
|
||||||
|
|
||||||
|
Ориентировочная разбивка на 10 интерактивных уроков (Jupyter Notebooks).
|
||||||
|
Каждый урок рассчитан на 1-1.5 часа вдумчивой работы (теория + самостоятельная практика).
|
||||||
|
|
||||||
|
## Блок I. Основы Lakehouse (Storage + Format)
|
||||||
|
|
||||||
|
* **01_intro_and_storage.ipynb**
|
||||||
|
* Что такое Lakehouse. Разделение хранения и вычислений.
|
||||||
|
* Загрузка сырых файлов (CSV/JSON) в MinIO (S3).
|
||||||
|
* **02_first_iceberg_table.ipynb**
|
||||||
|
* Создание первой Iceberg-таблицы через Spark.
|
||||||
|
* Изучение структуры файлов (data, metadata, manifests) в MinIO.
|
||||||
|
|
||||||
|
## Блок II. Единая точка правды (Catalog + Compute)
|
||||||
|
|
||||||
|
* **03_the_catalog.ipynb**
|
||||||
|
* Роль JDBC-каталога (PostgreSQL).
|
||||||
|
* Как разные движки находят таблицы.
|
||||||
|
* **04_spark_meets_trino.ipynb**
|
||||||
|
* Разделение ролей (Spark пишет, Trino читает).
|
||||||
|
* Выполнение SQL-запросов к Iceberg-таблицам через Trino (интеграция вызовов Trino прямо в Jupyter).
|
||||||
|
|
||||||
|
## Блок III. Инженерия данных (Data Pipelines)
|
||||||
|
|
||||||
|
* **05_bronze_layer.ipynb**
|
||||||
|
* Чтение сырых данных Spark'ом и инжест "как есть" (Raw to Bronze).
|
||||||
|
* **06_silver_layer_and_schema_evolution.ipynb**
|
||||||
|
* Очистка данных.
|
||||||
|
* *Практика:* самостоятельное применение Schema Evolution (добавление/изменение колонок).
|
||||||
|
* **07_gold_layer_and_partitioning.ipynb**
|
||||||
|
* Агрегации бизнес-метрик.
|
||||||
|
* *Практика:* самостоятельное партиционирование таблиц для ускорения запросов (Partition Pruning).
|
||||||
|
|
||||||
|
## Блок IV. Продвинутые фичи Lakehouse
|
||||||
|
|
||||||
|
* **08_time_travel_and_snapshots.ipynb**
|
||||||
|
* Работа со снапшотами (Snapshots).
|
||||||
|
* *Практика:* восстановление таблицы после ошибочных `DELETE`/`UPDATE`, чтение "исторических" данных.
|
||||||
|
* **09_lakehouse_maintenance.ipynb**
|
||||||
|
* Проблема мелких файлов.
|
||||||
|
* Компактизация (Compaction) и очистка старых версий (Vacuum).
|
||||||
|
* **10_final_pipeline.ipynb**
|
||||||
|
* *Практика:* самостоятельный финальный end-to-end мини-пайплайн (Bronze -> Silver -> Gold), объединяющий все пройденные концепции.
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
# Product Requirements Document (PRD): Учебный курс «Введение в Lakehouse»
|
||||||
|
|
||||||
|
## 1. Product Vision & Value Proposition
|
||||||
|
|
||||||
|
**Видение:** Создать интерактивный практический курс, который "сломает" привычную картину мира монолитных баз данных (PostgreSQL/Greenplum) и плавно перестроит мышление студентов на парадигму распределенных систем (Lakehouse).
|
||||||
|
**Ценность:** Дать безопасную, наглядную "песочницу" для старта работы с современным Lakehouse, чтобы переход от классических БД к связке S3 + Iceberg + Spark/Trino прошел легко, предсказуемо и с минимальным трением.
|
||||||
|
|
||||||
|
## 2. Target Audience (Целевая аудитория)
|
||||||
|
|
||||||
|
* **Кто:** Junior Data Engineers, менти, студенты.
|
||||||
|
* **Их текущая картина мира:** Привыкли к классическим СУБД. Для них база данных — это единый "черный ящик", где движок вычислений (Compute) и жесткие диски (Storage) неразделимы, строго реляционны и транзакционны.
|
||||||
|
* **Бэкграунд:** Уверенно пишут SQL, знают Python, понимают классические слои DWH (Raw, ODS, DDS), умеют работать с Docker.
|
||||||
|
|
||||||
|
## 3. Problem Statement & Jobs-To-Be-Done (JTBD)
|
||||||
|
|
||||||
|
**Ключевая проблема:**
|
||||||
|
Когнитивный диссонанс при столкновении с Big Data и Lakehouse. Студенты не понимают, как набор Parquet-файлов в папках (S3) может быть "базой данных", зачем нужен отдельный каталог метаданных (Iceberg/Hive) и почему для записи мы используем один инструмент (Spark), а для чтения — другой (Trino). У них нет четкой ментальной модели распределенных систем.
|
||||||
|
|
||||||
|
**Jobs-To-Be-Done (JTBD):**
|
||||||
|
* *Основной JTBD:* «Когда я перехожу на новый проект или получаю задачу, связанную с Lakehouse, я хочу **быстро понять общую архитектуру и влиться в работу с минимальным трением**, чтобы не чувствовать себя слепым котенком и не сломать прод из-за непонимания распределенной природы данных».
|
||||||
|
* *Вторичный JTBD:* «Я хочу получить практический обзор современных технологий (Spark, Iceberg, Trino), чтобы уверенно отвечать на вопросы на собеседованиях и расширить свой кругозор за пределы PostgreSQL».
|
||||||
|
|
||||||
|
## 4. Ключевые "Aha-Moments" (Моменты озарения)
|
||||||
|
|
||||||
|
Курс должен быть спроектирован так, чтобы студент через практику испытал следующие инсайты:
|
||||||
|
1. **Storage is Just Files:** «Ого, таблица в Lakehouse — это просто набор Parquet-файлов в бакете MinIO!»
|
||||||
|
2. **Decoupled Compute:** «Вау, я могу писать данные Spark'ом, а читать Trino, и они оба смотрят на одни и те же файлы без их копирования!»
|
||||||
|
3. **The Magic of Metadata:** «Так вот зачем нужен Iceberg! Это просто умный JSON-манифест, который говорит движкам, какие именно файлы читать для Time Travel или партиционирования».
|
||||||
|
|
||||||
|
## 5. Метрики Успеха и Формат (Goals & Success Metrics)
|
||||||
|
|
||||||
|
**Цели продукта:**
|
||||||
|
1. Студент может пройти курс от начала до конца за **~12 часов** вдумчивой работы в браузере (Jupyter + MinIO UI + Trino UI).
|
||||||
|
2. Студент может своими словами (на собеседовании или коллегам) объяснить архитектуру Lakehouse (Storage, Compute, Catalog) и зачем нужен табличный формат (Iceberg).
|
||||||
|
3. Студент умеет самостоятельно реализовать базовый пайплайн (чтение, трансформация, запись) в парадигме Lakehouse.
|
||||||
|
|
||||||
|
**User Experience / Flow (Пользовательский опыт):**
|
||||||
|
Подход **«50/50 (Теория + Самостоятельная практика)»**. Ноутбуки предоставляют теорию, демистифицирующую Lakehouse (нацеленную на вызов "Aha-Moments"), примеры кода (50%) и заготовки ячеек. Студент изучает пример, а затем самостоятельно дописывает код для решения задачи, закрепляя новые концепции на практике. Финал курса — самостоятельный сквозной мини-пайплайн.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Содержание (Scope)
|
||||||
|
|
||||||
|
Ориентировочная программа на 10 интерактивных уроков (Jupyter Notebooks) вынесена в отдельный документ: **[COURSE_PLAN.md](./COURSE_PLAN.md)**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Технические Требования и Ограничения
|
||||||
|
|
||||||
|
**Technical Requirements (В скоупе)**
|
||||||
|
* Использование существующего `docker-compose.yml` (Spark, Trino, MinIO, PostgreSQL, Jupyter).
|
||||||
|
* Установка дополнительных библиотек в образ Jupyter (например, `trino-python-client`), чтобы студенты могли выполнять запросы к Trino прямо из ноутбука.
|
||||||
|
* Подготовка небольших, но реалистичных датасетов (CSV/JSON) в папке репозитория.
|
||||||
|
|
||||||
|
**Out of Scope (Вне скоупа / На будущее)**
|
||||||
|
* Оркестрация пайплайнов (Airflow, Dagster).
|
||||||
|
* Развертывание в Kubernetes / Облаках.
|
||||||
|
* Тюнинг производительности Spark на больших объемах данных.
|
||||||
Reference in New Issue
Block a user