- Зачем: - улучшение производительности аналитических запросов и упрощение витрин согласно принципам Kimball Star Schema. - Что: - в dds.dim_routes добавлены денормализованные поля городов и моделей самолетов. - в скрипт загрузки dim_routes_load.sql добавлена фаза refresh для актуализации атрибутов. - загрузка dm.route_performance упрощена до 1 JOIN к измерению маршрутов. - обновлен DAG bookings_to_gp_dds и smoke-тесты структуры графа. - в документации (db_schema.md) отражены денормализация и lineage версий. - в dim_routes_load.sql исправлено затирание _load_id при refresh исторических версий. - Проверка: - make test (smoke-тесты структуры DAG проходят успешно).
5.3 KiB
TODO (maintainers / mentors)
Этот файл собирает идеи по доработке стенда, которые не критичны для текущих задач менти, но улучшат стабильность и удобство сопровождения.
Статус: ниже есть как актуальные, так и уже выполненные пункты.
-
Сделать REST API Airflow основным способом тестирования ETL вместо CLI-вызовов через
docker compose exec ... airflow ...:- обновить
TESTING.md, сместив фокус на REST API сценарии; - оставить CLI как резервный вариант для локальной отладки;
- проверить, что шаги тестирования воспроизводимы без входа в контейнер Airflow.
- обновить
-
Протестировать устойчивость
bookings-dbпосле остановки контейнеров:- прогнать сценарии
make stop->make upиmake down->make up; - зафиксировать, ломается ли генератор/данные в
bookings-db; - при необходимости добавить шаги восстановления и обновить документацию.
- прогнать сценарии
-
Собрать свой образ Airflow поверх
apache/airflow:2.9.2:- вынести установку Python‑зависимостей из runtime (
pip install ...при старте контейнеров) в отдельныйDockerfile; - переключить
docker-compose.ymlна использование этого образа дляairflow-webserver,airflow-schedulerиairflow-init; - обновить документацию (README/TESTING) под новую схему сборки.
- вынести установку Python‑зависимостей из runtime (
-
Переключить Airflow с
SequentialExecutor(SequentialScheduler) наLocalExecutorдля docker‑стенда:- проверить, какие параметры достаточно поменять в env/конфиге (
AIRFLOW__CORE__EXECUTOR) для образаapache/airflow:2.9.2; - убедиться, что примерные DAG’и (
csv_to_greenplum,bookings_to_gp_stage) ведут себя предсказуемо в режиме параллельного исполнения; - при необходимости скорректировать тесты и документацию (README/TESTING) с учётом нового executor’а.
- проверить, какие параметры достаточно поменять в env/конфиге (
-
Разобрать и стабилизировать интеграцию с Greenplum/PXF:
- убедиться, что PXF в контейнере
greenplumвсегда корректно инициализируется (нет ошибок видаprotocol "pxf" does not existпри первом запускеmake ddl-gp); - при необходимости доработать init‑скрипты в
pxf/init/и/или документацию, чтобы порядок действий для ментей был однозначным и воспроизводимым; - добавить краткий раздел в README/TESTING о типичных ошибках PXF/Greenplum и шагах по их устранению.
- диагностика текущего кейса:
docs/internal/pxf_bookings.md(раздел «Известная проблема»).
- убедиться, что PXF в контейнере
-
Разобраться с генератором demodb:
- после
make bookings-initтаблицаbookings.bookingsостаётся пустой; - патчи
bookings/patches/engine_jobs1_sync.patchиbookings/patches/install_drop_if_exists.patchпадают при применении (hunk failed / garbage in patch); - из‑за этого DAG
bookings_to_gp_stageвалится на проверках (источник пустой). - план:
plans/bookings-demodb-bugfix-plan.md
- после
-
Добавить раздел «Благодарности» в
README.md:- явно поблагодарить Postgres Pro за демо‑БД bookings (репозиторий
postgrespro/demodb); - указать автора Docker‑сборки Greenplum (
woblerr/docker-greenplum, образwoblerr/greenplum); - при необходимости сослаться на соответствующие лицензии/README исходных проектов.
- явно поблагодарить Postgres Pro за демо‑БД bookings (репозиторий
-
Добавить в образ Airflow установку
psql, чтобы тестировать загрузку CSV из CLI внутри контейнера (без root и дополнительных зависимостей на хосте). -
Денормализовать
dds.dim_routes(добавить departure_city, arrival_city, airplane_model, total_seats):- привести измерение в соответствие с принципом Кимбалла («самодостаточное измерение»);
- упростить
dm.route_performanceс 4-JOIN до 1-JOIN; - обновить DAG-зависимости: airports+airplanes DQ → routes load;
- подробный план:
docs/internal/dim_routes_denormalization_plan.md.