- Зачем: - необходимо зафиксировать структуру второго модуля «Ментальная модель Lakehouse» и подготовить инфраструктуру для инспекции компонентов. - Что: - создан файл plans/module-02-lakehouse-mental-model.md с детальным планом работ, целями и чекпоинтом. - в jupyter/Dockerfile добавлены библиотеки boto3 и psycopg2-binary для программного доступа к MinIO и PostgreSQL из ноутбуков. - модуль 2 добавлен в общий индекс планов в plans/README.md. - Проверка: - файл плана соответствует методике курса, в Dockerfile запинены версии библиотек.
6.2 KiB
6.2 KiB
Модуль 2. Ментальная модель Lakehouse: storage, catalog, compute
Статус: Draft
Последнее обновление: 2026-03-07
Цель
Убрать "магическое" восприятие Lakehouse и связать новую модель с привычным миром классических монолитных СУБД (PostgreSQL/Greenplum). Студент должен на практике увидеть физическое разделение ролей: где лежат данные, где хранятся метаданные, и кто выполняет вычисления.
Результат для студента
После прохождения модуля студент:
- понимает, что таблица в Lakehouse в практическом смысле — это согласованный набор файлов данных и метаданных;
- может проследить цепочку записи
Spark -> catalog -> MinIOна примере маленькой demo-таблицы; - осознает разницу между "одной базой данных" и набором независимых компонентов Lakehouse;
- умеет находить физические артефакты таблицы в объектном хранилище (MinIO);
- умеет находить записи о таблице в каталоге метаданных (PostgreSQL);
- не путает физическое хранение с логической таблицей.
Deliverables
notebooks/02_lakehouse_mental_model.ipynbкак основной ноутбук Модуля 2;- Подготовленные диагностические шаги (например, вспомогательные функции в
src/sparkили запросы/скрипты прямо в ноутбуке) для инспекции MinIO и PostgreSQL; - Обновление индекса планов в
plans/README.md.
План работ
- Подготовить структуру
notebooks/02_lakehouse_mental_model.ipynbпо методике курса:объяснение -> демонстрация -> самостоятельное повторение -> checkpoint. - Написать короткий теоретический блок с параллелями: классический DWH (Greenplum/Postgres) vs. Lakehouse (Storage + Catalog + Compute).
- Сделать готовую демонстрацию: создание отдельного namespace (например,
lakehouse.module_02) и небольшой demo-таблицы через Spark, запись пары строк. Для обеспечения идемпотентности и чистоты при повторном прохождении использоватьCREATE OR REPLACE TABLE(или очистку таблицы перед записью) и конструкцииIF NOT EXISTSдля namespace. - Разработать шаги для инспекции:
- запрос к PostgreSQL (каталогу метаданных), чтобы увидеть регистрацию таблицы;
- запрос к MinIO (например, s3a list или boto3), чтобы увидеть появление файлов данных (parquet) и метаданных (json/avro).
- Сформулировать самостоятельное задание: студент создает свою таблицу, пишет в нее данные и находит её следы в хранилище и каталоге.
- Включить в конец ноутбука обязательный шаг очистки (cleanup) — удаление таблиц и namespace
module_02, чтобы не оставлять мусор для следующих модулей. - Описать вопросы для Checkpoint.
Checkpoint
Студент должен уметь:
- показать конкретные файлы данных и метаданных созданной таблицы в MinIO (через UI или код);
- показать запись о таблице в PostgreSQL и объяснить, на что указывает поле
metadata_location; - объяснить, что произойдёт, если удалить файлы из MinIO, но не трогать каталог (или наоборот);
- сопоставить эти наблюдения с ролями
storageиcatalog.
Acceptance Criteria
- Ноутбук
02_lakehouse_mental_model.ipynbполностью раскрывает тему декомпозиции Lakehouse без глубокого погружения в спецификацию Iceberg. - Демонстрации работают в локальном окружении (Jupyter) и наглядно показывают изменения в MinIO и PostgreSQL.
- Самостоятельное задание выполнимо на базе показанных примеров.
- Модуль 2 добавлен в индекс
plans/README.md.
Риски
- Излишнее углубление во внутренности Iceberg-манифестов. Нужно держать фокус только на факте их наличия и разделения
data/metadata. - Доступность PostgreSQL/MinIO из Jupyter: необходимо убедиться, что в
jupyter/Dockerfileустановленыboto3иpsycopg2-binary, а также учитывать DNS-резолвpostgres-icebergиз контейнераjupyter(сетьspark-netэто позволяет, но могут быть нюансы).
Out of Scope
- Загрузка и чтение сырых данных (NYC Taxi) — отложено до Модуля 3.
- Сложные трансформации.
- Чтение одной таблицы двумя движками (Spark и Trino) — отложено до Модуля 6 (в этом модуле чтение демо-таблицы будет только через Spark SQL для базовой верификации записи).