Лабораторная: проверить распределение данных и план запроса Greenplum #13

Open
opened 2026-09-22 16:35:59 +03:00 by ddmitry · 0 comments
Owner

Part of #8

Статус и учебный результат

Кандидат на обязательный компактный опыт после курса Greenplum. Перед включением проверить возможности текущего стенда и определить место рядом со сборкой факта или витринами.

Студент пишет DDL, сравнивает два варианта распределения одинаковых данных и объясняет наблюдаемую раскладку и план запроса. Выбор ключа должен подтверждаться опытом.

Место и самостоятельная часть

Нужен заполненный и проверенный набор данных; кандидат — факт продаж и связанные измерения. Студент создает свои таблицы для сравнения, выбирает ключи распределения, выполняет одинаковую нагрузку и анализирует результаты. Готовые загрузки обеспечивают входные данные.

Что предусмотреть

  1. До написания инструкции проверить фактическое число primary-сегментов Greenplum и объем данных. Если текущая конфигурация не позволяет показать различия, сначала описать минимально необходимое изменение и его стоимость; не выдавать сравнение на одном сегменте за опыт MPP.
  2. Выбрать один воспроизводимый сюжет: перекос при неудачном ключе или влияние распределения на обмен данными при соединении. Подготовить вход и запрос, на которых наблюдение устойчиво.
  3. Создать и наполнить два варианта таблицы одинаковыми строками. Проверить эквивалентность наборов и результата запроса, собрать статистику.
  4. Посмотреть число строк по сегментам и EXPLAIN/EXPLAIN ANALYZE, связать наблюдения с выбранным распределением. Не задавать обязательное ускорение в разах: вывод о плане и раскладке должен опираться на фактические результаты.
  5. Студент выбирает вариант под данную нагрузку и объясняет его ограничения. Описать, какие учебные объекты остаются после опыта или удаляются.

Критерии этой лабораторной

  • Подтверждены несколько primary-сегментов, достаточный вход и воспроизводимость выбранного наблюдения.
  • Студент самостоятельно создает DDL и сравнивает два распределения при одинаковых данных и запросе.
  • Эквивалентность результатов проверена; сохранены раскладка по сегментам и планы.
  • Вывод опирается на наблюдения, а текст объясняет, к какой нагрузке он относится.
  • Зафиксированы ресурсные требования и место работы в обязательном маршруте; если опыт требует расширения стенда, решение об этом принято до выпуска задания.

Границы и результат работы автора

Подготовить задание для студента, необходимые заготовки/проверки и проверенный способ выполнения. Назвать входное состояние, самостоятельную часть, проверочные случаи и состояние для продолжения. Готовый стенд должен запускаться до лабораторной; выбранную часть разбирает уже студент во время задания. Стенд можно ломать и пересобирать, сохраняя файлы решения и понятный способ продолжения.

Материалы для автора и полное решение относятся к solution; инструкция для студента и необходимые общие средства — к main. Переносить изменения выборочно с учетом различий веток. При размещении задания обновить его место во входе в задания и связанные ссылки; существующие задания ODS, измерений и DM сохраняются.

Общая проверка готовности

  • Из описанного начального состояния выполнены все случаи задания на стенде; сохранены команды и наблюдаемые результаты.
  • Неверное решение обнаруживается предусмотренными проверками; восстановление и повторный запуск проверены там, где они входят в задание.
  • Инструкция на русском соответствует подготовке учащегося, различает готовые части и самостоятельные решения; результат позволяет продолжить маршрут.
  • Проверены ссылки и команды; git diff --check пройден. Для изменений Python/DAG выполнены make lint и make test, а пропуски тестов перечислены отдельно. Статические проверки не заменяют учебный прогон.

Сначала прочитать

Part of #8 ## Статус и учебный результат Кандидат на обязательный компактный опыт после курса Greenplum. Перед включением проверить возможности текущего стенда и определить место рядом со сборкой факта или витринами. Студент пишет DDL, сравнивает два варианта распределения одинаковых данных и объясняет наблюдаемую раскладку и план запроса. Выбор ключа должен подтверждаться опытом. ## Место и самостоятельная часть Нужен заполненный и проверенный набор данных; кандидат — факт продаж и связанные измерения. Студент создает свои таблицы для сравнения, выбирает ключи распределения, выполняет одинаковую нагрузку и анализирует результаты. Готовые загрузки обеспечивают входные данные. ## Что предусмотреть 1. До написания инструкции проверить фактическое число primary-сегментов Greenplum и объем данных. Если текущая конфигурация не позволяет показать различия, сначала описать минимально необходимое изменение и его стоимость; не выдавать сравнение на одном сегменте за опыт MPP. 2. Выбрать один воспроизводимый сюжет: перекос при неудачном ключе или влияние распределения на обмен данными при соединении. Подготовить вход и запрос, на которых наблюдение устойчиво. 3. Создать и наполнить два варианта таблицы одинаковыми строками. Проверить эквивалентность наборов и результата запроса, собрать статистику. 4. Посмотреть число строк по сегментам и `EXPLAIN`/`EXPLAIN ANALYZE`, связать наблюдения с выбранным распределением. Не задавать обязательное ускорение в разах: вывод о плане и раскладке должен опираться на фактические результаты. 5. Студент выбирает вариант под данную нагрузку и объясняет его ограничения. Описать, какие учебные объекты остаются после опыта или удаляются. ## Критерии этой лабораторной - [ ] Подтверждены несколько primary-сегментов, достаточный вход и воспроизводимость выбранного наблюдения. - [ ] Студент самостоятельно создает DDL и сравнивает два распределения при одинаковых данных и запросе. - [ ] Эквивалентность результатов проверена; сохранены раскладка по сегментам и планы. - [ ] Вывод опирается на наблюдения, а текст объясняет, к какой нагрузке он относится. - [ ] Зафиксированы ресурсные требования и место работы в обязательном маршруте; если опыт требует расширения стенда, решение об этом принято до выпуска задания. ## Границы и результат работы автора Подготовить задание для студента, необходимые заготовки/проверки и проверенный способ выполнения. Назвать входное состояние, самостоятельную часть, проверочные случаи и состояние для продолжения. Готовый стенд должен запускаться до лабораторной; выбранную часть разбирает уже студент во время задания. Стенд можно ломать и пересобирать, сохраняя файлы решения и понятный способ продолжения. Материалы для автора и полное решение относятся к `solution`; инструкция для студента и необходимые общие средства — к `main`. Переносить изменения выборочно с учетом различий веток. При размещении задания обновить его место во входе в задания и связанные ссылки; существующие задания ODS, измерений и DM сохраняются. ## Общая проверка готовности - [ ] Из описанного начального состояния выполнены все случаи задания на стенде; сохранены команды и наблюдаемые результаты. - [ ] Неверное решение обнаруживается предусмотренными проверками; восстановление и повторный запуск проверены там, где они входят в задание. - [ ] Инструкция на русском соответствует подготовке учащегося, различает готовые части и самостоятельные решения; результат позволяет продолжить маршрут. - [ ] Проверены ссылки и команды; `git diff --check` пройден. Для изменений Python/DAG выполнены `make lint` и `make test`, а пропуски тестов перечислены отдельно. Статические проверки не заменяют учебный прогон. ## Сначала прочитать - Задачу серии #8 и [авторскую заметку](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/solution/docs/design/labs_development.md). - [DDL факта](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/main/sql/dds/fact_flight_sales_ddl.sql) - [Загрузка факта](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/main/sql/dds/fact_flight_sales_load.sql) - [Витрина для выбора нагрузки](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/main/sql/dm/sales_report_load.sql) - [Конфигурация стенда](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/main/docker-compose.yml) - [Образ Greenplum](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/main/Dockerfile.greenplum)
ddmitry added the needs-triage label 2026-09-22 16:35:59 +03:00
Sign in to join this conversation.