Магистратура
2025/2026





Основы Data Engineering
Статус:
Курс обязательный (Аналитика больших данных)
Где читается:
Факультет компьютерных наук
Когда читается:
2-й курс, 1 модуль
Охват аудитории:
для своего кампуса
Преподаватели:
Паточенко Евгений Анатольевич
Язык:
русский
Кредиты:
3
Контактные часы:
28
Программа дисциплины
Аннотация
Дисциплина познакомит с теоретическими основами баз данных, включая нормализацию, теорему CAP и технологии NoSQL и изучат методы создания ETL-пайплайнов для обработки данных. Они углубят свои знания в SQL и применят их на практике. Кроме того, курс представит введение в инженерию данных через изучение реляционных баз данных на примере PostgreSQL. Студенты познакомятся с архитектурой баз данных, научатся анализировать план запроса и работать с расширениями. Приобретенные навыки позволят студентам эффективно автоматизировать рутинные задачи без необходимости привлечения разработчиков, что способствует их универсальности и профессиональной адаптивности в области обработки и анализа данных.
Цель освоения дисциплины
- Освоить базовые и продвинутые концепции работы СУБД — понять архитектуру реляционных и MPP баз данных, отличия различных типов СУБД и области их применения.
- Научиться проектировать и анализировать структуры данных — создавать ER-диаграммы, определять ключи, нормальные формы, применять нормализацию и денормализацию.
- Приобрести навыки работы с PostgreSQL, ClickHouse и Greenplum — подключение к базам, создание и модификация объектов, загрузка и выгрузка данных, использование индексов, партиционирования и оптимизация запросов.
- Овладеть написанием эффективных SQL-запросов — включая условия, циклы, пользовательские функции, работу с геоданными (PostGIS), соединения таблиц с выбором оптимального алгоритма join, а также особенности синтаксиса ClickHouse и Greenplum.
- Изучить и применить методы оптимизации производительности — анализ планов выполнения запросов, выбор оптимальных стратегий соединения таблиц, использование встроенных функций, настройка вычислений для распределённых систем.
- Получить опыт работы с большими данными в распределённых средах — обрабатывать данные с помощью Spark, работать с различными источниками (S3, PostgreSQL, Parquet, CSV), применять UDF-функции, управлять партициями и кэшированием.
- Подготовиться к профессиональным задачам и собеседованиям — решать практические и теоретические кейсы по СУБД, PostgreSQL, ClickHouse, Spark и Greenplum, уметь объяснять архитектуру и оптимизационные подходы.
Планируемые результаты обучения
- Студенты будут разбираться в устройстве ER-диаграмм
- - Студенты смогут читать ER
- - Студенты научатся находить ошибки в ER
- - Научатся заполнять ER (пустая ER - с помощью квиза заполняем блоки)
- - Будут уметь проектировать ER (ручная проверка ИЛИ самопроверка по чек-листу)
- Студенты смогут отвечать на вопросы собеседующего о том, что такое НФ, что такое потенциальный ключ
- Будут уметь находить потенциальный ключ
- Научатся проверять поля на потенциальный ключ
- Научатся проверять, что таблица в 1НФ
- Студенты смогут отвечать на вопросы собеседующего о том, что такое 2НФ и 3НФ
- Смогут находить первичный ключ
- Смогут проверять, что таблица в 2НФ\1НФ\3НФ
- Смогут отвечать на вопросы собеседующего о том, что такое нормализация и денормализация
- Будут уметь нормализовать и денормализовать формы
- Понимает структуру и типичный формат вопросов по базам данных на собеседованиях.
- Умеет быстро и чётко отвечать на вопросы по ключевым темам: архитектура СУБД, проектирование БД, реляционная модель, нормализация, оптимизация запросов.
- Разбирается в типичных подводных камнях собеседований и умеет избегать распространённых ошибок в ответах.
- Понимает, что такое Postgres и какие у неё есть особенности
- Сможет подключиться к Postgres из DBeather
- Сможет подключиться из терминала
- Сможет отправить запрос и получить ответ
- Понимает, что такое DDL и его роль в управлении базой данных.
- Умеет создавать и удалять таблицы в PostgreSQL.
- Умеет загружать данные в таблицы.
- Умеет писать DDL-сценарии с учётом особенностей PostgreSQL
- Понимает, что такое алгоритм, циклы, условия и функции в контексте PL/pgSQL.
- Умеет писать запросы с использованием расширений языка PostgreSQL.
- Умеет использовать циклы, условия и пользовательские функции в запросах.
- Умеет применять возможности PL/pgSQL для реализации алгоритмов обработки данных.
- Понимает назначение и возможности модулей PostgreSQL.
- Умеет писать запросы с использованием PostGIS для работы с геоданными.
- Понимает, что такое индексы, как они работают и для чего применяются.
- Понимает, что такое партиции, как они работают и в каких случаях используются.
- Умеет выбирать оптимальные комбинации индексов и партиций для ускорения запросов.
- Понимает различия между алгоритмами join: loop, hash, merge.
- Понимает сложность выполнения каждого алгоритма.
- Умеет применять разные типы join в зависимости от задачи.
- Понимает, что такое план запроса и как его читать.
- Умеет анализировать план выполнения запроса.
- Умеет применять базовые техники оптимизации SQL-запросов.
- Умеет использовать знания из предыдущих уроков для оптимизации планов запросов.
- Понимает структуру и логику типичных вопросов по PostgreSQL на собеседованиях.
- Умеет быстро и чётко объяснять ключевые концепции: архитектура PostgreSQL, типы команд (DDL, DML, TCL), транзакции и их свойства.
- Разбирается в основных алгоритмах join, их отличиях и применении.
- Умеет читать план выполнения запроса и приводить примеры оптимизаций.
- Понимает, что такое ClickHouse, его архитектуру и ключевые особенности.
- Понимает отличия ClickHouse от PostgreSQL.
- Умеет подключаться к ClickHouse через разные клиенты
- Понимает, какие существуют виды таблиц в ClickHouse и в каких случаях их использовать.
- Понимает принципы работы движков таблиц.
- Умеет создавать таблицы в ClickHouse с использованием DDL.
- Умеет учитывать особенности создания таблиц, индексов и движков в ClickHouse.
- Понимает отличия реализации SQL в ClickHouse от других СУБД.
- Понимает работу встроенных функций и логических JOIN.
- Умеет писать запросы с использованием встроенных функций и JOIN в ClickHouse.
- Понимает, что такое план запроса в ClickHouse, индексы, партиции и особенности работы с ними.
- Понимает, что такое «узкое место» в производительности запросов.
- Умеет правильно партиционировать таблицы.
- Умеет задавать первичный ключ.
- Умеет применять алгоритмы сжатия данных.
- Понимает типовую структуру и тематику вопросов по ClickHouse на собеседованиях.
- Понимает, как объяснять архитектуру, ключевые компоненты и преимущества ClickHouse.
- Умеет отвечать на вопросы по видам таблиц, индексам, партициям и алгоритмам join.
- Умеет разбирать план запроса.
- Понимает структуру и типовые форматы вопросов по СУБД на собеседованиях.
- Умеет отвечать на теоретические вопросы по реляционным БД, PostgreSQL и ClickHouse.
- Понимает ключевые отличия PostgreSQL и ClickHouse и умеет их объяснять.
- Умеет выполнять практические задачи по SQL в PostgreSQL: создание и модификация таблиц, индексов, партиций.
- Умеет писать и оптимизировать SQL-запросы с использованием функций, циклов, условий и разных типов join.
- Умеет анализировать план выполнения запроса и предлагать оптимизационные меры.
- Умеет создавать таблицы разных типов и настраивать партиционирование.
- Умеет писать эффективные запросы с учётом особенностей движков и колоночного хранения.
- Умеет анализировать план выполнения запроса, находить «узкие места» и оптимизировать их.
- Понимает, как применять агрегатные функции, join и алгоритмы сжатия в ClickHouse.
- - знает архитектуру spark и принципы его работы
- - знает контекст применения инструмента spark - почему используем и для каких задач
- - знает основные понятия spark: spark driver, spark executor, spark job, spark stages, spark tasks, партиция, концепция lazy evaluation, shuffle, команда action
- - знает, что такое wide и narrow трансформации, понимает разницу между wide и narrow трансформациями
- - знает про RDD, DataFrame, DataSet как основные структуры данных Spark
- - Знает про инструмент Spark.SQL
- Студент умеет писать простые и сложные запросы на Spark: - умеет создавать Spark DataFrame - умеет фильтровать Spark DataFrame - умеет сортировать Spark DataFrame - умеет группировать и агрегировать Spark DataFrame - умеет джойнить Spark DataFrame - умеет работать с колонками Spark DataFrame
- - умеет работать с партициями (писать, читать, удалять) c помощью Spark, как использовать при записи, чтении, для оптимизации запросов
- - умеет читать данные из parquet/csv, записывать данные в parquet/csv в s3
- - умеет записывать и сохранять данные в csv с помощью pandas и boto3
- - умеет читать и записывать данные в postgres;
- - понимает общие принципы работы с БД с помощью Spark;
- Студент понимает, как писать оптимизированные запросы на spark: - понимает как работает repartition,
- - понимает как управлять числом партиций,
- - знает про параметр spark.sql.shuffle.partitions и как его настраивать
- - понимает, как пользоваться параллелизмом spark
- Понимает типовую структуру и тематику вопросов по Apache Spark на собеседованиях.
- Понимает архитектуру Spark, его компоненты и ключевые принципы работы.
- Умеет объяснить разницу между wide и narrow трансформациями и их влияние на производительность.
- Понимает работу с партициями, репартиционированием и настройкой параметра spark.sql.shuffle.partitions.
- Умеет работать с форматами данных (Parquet, CSV), подключать внешние источники (S3, PostgreSQL).
- Готов решать практические задания по Spark, аналогичные встречающимся на собеседованиях.
- Понимает, какие темы по Spark встречаются на собеседованиях.
- Умеет объяснять архитектуру Spark и работу его компонентов (RDD, DataFrame, Dataset).
- Разбирается в трансформациях (wide и narrow), партиционировании и join.
- Готов отвечать на теоретические вопросы и выполнять базовые тестовые задания в формате квизов.
- Понимает принципы написания простых и оптимизированных запросов в Spark.
- Умеет читать и анализировать код на Spark.
- Умеет применять базовые и продвинутые приёмы оптимизации (broadcast join, caching, настройка партиций).
- Понимает, что такое СУБД, их назначение и основные функции.
- Понимает, по каким критериям можно сравнивать СУБД (OLTP/OLAP, архитектура, хранение данных, транзакционная модель, масштабирование, поддержка SQL, тип хранения, лицензия).
- Умеет различать реляционные и нереляционные (NoSQL) СУБД, а также специализированные СУБД (графовые, in-memory и др.).
- Разбирается в отличиях строчного и колоночного хранения, ACID и BASE, вертикального и горизонтального масштабирования.
- Знает особенности и области применения PostgreSQL, Greenplum, ClickHouse, DuckDB и Redis.
- Может аргументированно выбрать СУБД в зависимости от конкретной задачи и предъявляемых требований.
- Понимает, для чего нужны реляционные и MPP базы данных, как они устроены, и для каких задач они подходят.
- Понимает место БД в компаниях (банки, еком и тп).
- Понимает, что не стоит делать с реляционными БД.
- Понимает, как работать с основными объектами баз данных и особенностями их реализации в PostgreSQL и Greenplum
- Знает популярные клиенты (PSQL и Dbeaver) для подключения к PostgreSQL и Greenplum.
- Умеет подключаться и работать из командной строки.
- Понимает, что есть в словаре данных или системном каталоге, зачем он нужен и умеет работать с ним.
- Понимает, как СУБД обрабатывает запросы от пользователя и в чем особенности этого процесса в МРР системах
- Умеет понимать план запроса
- Знает, чем отличаются планы запроса в обычной СУБД и в МРР СУБД
- Знает, на что обращать внимание в плане запроса
- Знает о дополнительных возможностях Greenplum, дополнительных языках программирования и границах их применения.
- Умеет работать на практике с геоданными а также с текстом в GreenPlum
- Понимает, какие задачи можно решать с помощью Greenplum, и отличия Greenplum от других СУБД.
- Понимает принципы работы OLTP и OLAP и знает, в каких случаях уместно использовать каждую модель.
- Умеет применять PostGIS для работы с геоданными в Greenplum.
- Умеет группировать и кластеризовать объекты по заданным признакам с использованием пространственных данных.
- Разбирается в подходах к обработке больших объемов данных в параллельных вычислительных средах.
- Умеет решать бизнес-кейсы, связанные с анализом аренды объектов и отзывов клиентов, включая обработку текстовых полей.
- Понимает различия в работе с геоданными в Greenplum и других системах, таких как ClickHouse и PostgreSQL.
- Готов объяснить, как выстраивается пайплайн обработки данных с учетом особенностей Greenplum.
Содержание учебной дисциплины
- ER-диаграммы: базовые принципы
- ER-диаграммы: чтение диаграмм
- ER-диаграммы: создание диаграмм
- Реляционная модель данных: термины и 1НФ
- Реляционная модель данных: 2НФ и 3НФ
- Нормализация и денормализация
- Типичные вопросы на собеседовании
- СУБД Postgres
- DDL в Postgres
- DML и TCL на PG
- Особенности PL/pgSQL
- Модули PostgreSQL
- Индексы и партиции
- Физические виды JOIN
- Оптимизация запросов
- Типичные вопросы на собеседовании 2
- Что такое ClickHouse?
- DDL в ClickHouse
- Особенности SQL в Clickhouse
- План запроса в Clickhouse
- Типичные вопросы на собеседовании 3
- Описание и тренировочные квизы
- Техническое собеседование 1
- Техническое собеседование 2
- Spark: устройство, архитектура, контекст применения, основные термины
- Простые запросы на Spark
- Чтение и запись с помощью Spark
- Продвинутая работа со Spark: тонкости и оптимизация запросов
- Типичные вопросы на собеседовании 4
- Тренировочные квизы
- Техническое собеседование
- Вебинар "Обзор современных СУБД"
- Архитектура реляционных и MPP баз данных
- Объекты баз данных. Место баз данных в компании
- Подключение к PostgreSQL и Greenplum. Работа со словарем данных
- Обработка запросов в традиционных и MPP СУБД
- Обработка запросов в традиционных и MPP СУБД. Практика
- Применение R, Python, GeoSpatial в расчетах на GreenPlum
- Применение R, Python, GeoSpatial в расчетах на GreenPlum: Практика
- Практикум по GreenPlum: geospatial и обработка текстовых полей
Элементы контроля
- Домашнее задание к разделам (урокам) 1-39. Квиз на закрепление основных понятий уроков411 тестовых заданий: 1 урок – 14 заданий, 2 урок – 12 заданий, 3 урок – 28 заданий , 5 урок – 15 заданий, 6 урок – 17 заданий, 7 урок – 8 заданий, 8 урок – 11 заданий, 9 урок – 21 задание, 10 урок – 21 задание, 11 урок – 18 заданий, 12 урок – 15 заданий, 13 урок – 15 заданий, 14 урок – 18 заданий, 15 урок – 16 заданий, 16 урок – 21 задание, 18 урок – 19 заданий, 19 урок – 19 заданий, 20 урок – 18 заданий, 21 урок – 24 задания, 23 урок – 20 заданий, 26 урок – 9 заданий, 27 урок – 3 задания, 28 урок – 4 задания, 29 урок – 8 заданий, 31 урок – 20 заданий, 35 урок – 15 заданий, 37 урок – 6 заданий, 38 урок – 1 задание, 39 урок – 5 заданий.
- Домашнее задание к разделам (урокам) 3-40. Практические задания по PostgreSQL, ClickHouse и Spark.187 практических задач: 3 урок – 4 задания , 4 урок – 2 задания, 5 урок – 3 задания, 7 урок – 2 задания, 9 урок – 9 заданий, 10 урок – 9 заданий, 11 урок – 5 заданий, 12 урок – 12 заданий, 13 урок – 11 заданий, 14 урок – 10 заданий, 15 урок – 3 задания, 18 урок – 3 задания, 19 урок – 12 заданий, 20 урок – 11 заданий, 21 урок – 2 задания, 24 урок – 29 заданий, 25 урок – 14 заданий, 27 урок – 7 заданий, 28 урок – 4 задания, 29 урок – 4 задания, 32 урок – 3 задания, 36 урок – 8 заданий, 38 урок – 11 заданий, 40 урок – 5 заданий.
Промежуточная аттестация
- 2025/2026 1st moduleИтоговая оценка соответствует сумме баллов за выполненные задания на LMS karpov.courses, приведенные к 10-балльной шкале (см. таблицу). Для каждого задания на LMS-платформе karpov.courses определён дедлайн в 14 календарных дней, после наступления которого студенту начисляется 70% от итогового балла за задание.
Список литературы
Рекомендуемая основная литература
- Базы данных : курс лекций и материалы для практических занятий, Карпова, И. П., 2013
Рекомендуемая дополнительная литература
- Руководство по реляционной СУБД DB2 : руководство для пользователей программного продукта "IBN Database 2" фирмы IBM, Дейт, К., 1988