Бакалавриат
2026/2027



Системы баз данных
ID 1160132
Статус:
Курс по выбору (Прикладная математика и информатика)
Кто читает:
Базовая кафедра Яндекс
Где читается:
Факультет компьютерных наук
Когда читается:
3-й курс, 1, 2 модуль
Охват аудитории:
для своего кампуса
Преподаватели:
Торилов Дмитрий Михайлович
Язык:
русский
Кредиты:
5
Контактные часы:
56
Программа дисциплины
Аннотация
Курс посвящён системам хранения и обработки данных - от одной реляционной базы до платформы данных компании. Студенты узнают, как устроена и как исполняет запросы классическая СУБД (PostgreSQL), чем отличаются колоночные аналитические системы (ClickHouse), как проектируют и наполняют хранилища данных, что меняется, когда данные не помещаются на одну машину, и что лежит за пределами реляционной модели - NoSQL и векторные базы данных для приложений на основе LLM.
Цель освоения дисциплины
- Знать устройство реляционной СУБД: организацию хранения, индексы, оптимизатор, транзакции и механизмы обеспечения ACID.
- Уметь писать аналитические SQL-запросы (JOIN, агрегаты, CTE, оконные функции) и оптимизировать их по плану выполнения.
- Уметь проектировать схемы данных для транзакционной и аналитической нагрузки, включая размерное моделирование хранилищ.
- Знать архитектуру хранилищ данных и подходы к их построению (слои, ETL/ELT, Inmon, Kimball, Data Vault) и уметь организовать надёжную загрузку данных с помощью Airflow и dbt.
- Понимать принципы колоночного хранения и аналитических СУБД (ClickHouse, MPP-системы) и область их применения.
- Знать архитектуру Apache Spark и уметь писать и оптимизировать распределённые вычисления: читать планы, выбирать стратегии джойнов, бороться с перекосом данных, подбирать ресурсы.
- Понимать архитектуру Lakehouse, устройство табличных форматов (Iceberg, Delta Lake) и уметь аргументированно выбирать между хранилищем и lakehouse.
- Знать основы потоковой обработки данных (Kafka, Structured Streaming, CDC).
- Знать основные классы NoSQL-систем и векторных баз данных и уметь выбирать систему хранения под задачу, включая задачи поиска для LLM-приложений.
Планируемые результаты обучения
- Навык восстановления СУБД после сбоя
- Навык планирования и оптимизации запросов в СУБД
- Навык организации хранения данных в реляционной СУБД
- Знает примеры баз данных
- Знает про: Locks и latches, Page-cache операционной системы, Оптимизацию буферных пулов, Buffer pool replacement policies.
- Знает про индексы и хеш-таблицы.
- Знает про B+-деревья.
- Знает про сортировку и агрегацию.
- Знает про хранение данных.
- Знает про нормализацию в базах данных.
- Знает про план и модели выполнения запросов.
- Знает про оптимизацию запроса.
- Знает про проблемы durability и восстановление после сбоя.
- Студент проектирует реляционную схему данных по описанию предметной области, обосновывает выбор ключей, ограничений и степени нормализации.
- Студент пишет аналитические запросы на SQL с использованием соединений, агрегатов, CTE и оконных функций.
- Студент читает план выполнения запроса в PostgreSQL, ClickHouse и Spark, находит узкое место и устраняет его (индекс, переписывание запроса, партиционирование, стратегия джойна).
- Студент объясняет механизмы транзакций, уровни изоляции и связанные с ними аномалии, репликацию и её ограничения.
- Студент сравнивает строчное и колоночное хранение и выбирает СУБД под транзакционную или аналитическую нагрузку.
- Студент проектирует хранилище данных по схеме «звезда», реализует медленно меняющиеся измерения.
- Студент реализует инкрементальную идемпотентную загрузку данных в виде DAG в Apache Airflow и описывает трансформации в dbt с проверками качества.
- Студент выбирает формат хранения файлов (CSV, Parquet, Avro и др.) и библиотеку обработки (Pandas, Polars, DuckDB) исходя из объёма и характера данных.
- Студент разрабатывает и оптимизирует приложения на PySpark: объясняет план выполнения, устраняет лишний shuffle и перекос данных, подбирает параметры ресурсов.
- Студент создаёт таблицы в формате Iceberg / Delta Lake, использует time travel и эволюцию схемы, объясняет, как достигается ACID над объектным хранилищем.
- Студент описывает устройство Apache Kafka и реализует простую потоковую обработку с окнами.
- Студент классифицирует NoSQL-системы и векторные базы данных и обосновывает выбор системы хранения для заданного сценария, включая RAG-приложения.
- Студент собирает в команде работающий сквозной конвейер данных и представляет его архитектуру.
Содержание учебной дисциплины
- Введение. Зоопарк систем данных и карта курса: OLTP vs OLAP, реляционная модель, повторение базового SQL, сквозные линии курса
- Проектирование схемы данных: сущности и связи, ключи и ограничения, нормальные формы и осознанная денормализация
- SQL для аналитики: JOIN и их ловушки, GROUP BY и агрегаты, CTE и рекурсия, оконные функции
- Как СУБД исполняет запрос: страницы, B-tree и другие индексы, статистика и оптимизатор, чтение EXPLAIN, антипаттерны
- Транзакции и надёжность: ACID, уровни изоляции и аномалии, MVCC, блокировки, WAL; репликация и шардирование (обзор)
- Колоночные СУБД и аналитическая нагрузка: строчное vs колоночное хранение, компрессия, векторизация, партиционирование; ClickHouse
- Основы построения хранилищ данных: слои staging → core → витрины, подходы Inmon / Kimball / Data Vault, ETL vs ELT, MPP (Greenplum)
- Размерное моделирование: факты и измерения, звезда и снежинка, гранулярность, SCD, суррогатные ключи, календарное измерение
- Оркестрация и загрузка данных: DAG и Apache Airflow, инкрементальная загрузка, идемпотентность, backfill, dbt, проверки качества данных
- Данные на одной машине: форматы файлов (CSV, JSON, Parquet, ORC, Avro, Pickle), Pandas и память, Polars, DuckDB
- Распределённое хранение и вычисления: HDFS и S3, YARN, MapReduce, архитектура Spark (driver, executors, shuffle), RDD vs DataFrame, ленивые вычисления
- Spark: оптимизация и тюнинг: Catalyst и AQE, чтение explain, стратегии джойнов, skew, ресурсы; кейс «ноутбук, который убивает кластер»
- Lakehouse: от data lake к lakehouse, табличные форматы Delta Lake / Iceberg / Hudi, ACID над объектным хранилищем, time travel, каталоги, medallion-архитектура
- NoSQL и выбор системы под задачу: key-value, документные, широкостолбцовые, графовые СУБД; CAP и согласованность; карта выбора СУБД
- Потоковые данные: Kafka (топики, партиции, consumer groups, гарантии доставки), Structured Streaming / Flink, Lambda и Kappa, CDC
- Векторные базы данных и данные для LLM: эмбеддинги, ANN-индексы (HNSW, IVF), pgvector / Qdrant, гибридный поиск, RAG, feature store; итоги курса
- Storage. Хранение данных.
- Буферный пул.
- Log-structured storage.
- Индексы. Хеш-таблицы.
- B+-деревья.
- Сортировка и агрегация.
- Joins.
- Выполнение запроса.
- Оптимизация запросов.
- Проблемы durability и восстановление после сбоя.
- Управление транзакциями.
- Распределенные базы данных.
Список литературы
Рекомендуемая основная литература
- Kimball, Ralph, and Margy Ross. The data warehouse toolkit: The definitive guide to dimensional modeling. John Wiley & Sons, 2013.
- PostgreSQL 16 изнутри - Рогов Е. - Издательство "ДМК Пресс" - 978-5-93700-305-8 - 2024 - русский - https://e.lanbook.com/book/456800 - ЛАНЬ - 456800
- Высоконагруженные приложения. Программирование, масштабирование, поддержка - Клеппман Мартин - Астана: Спринт Бук - 978-601-08-3514-6 - 2024 - русский - https://ibooks.ru/product/335521 - iBOOKS - 335521
- Системы баз данных : полный курс, Гарсиа-Молина, Г., 2004
Рекомендуемая дополнительная литература
- Введение в системы баз данных. Классическое издание. Т.1: ., Дейт, К. Дж., 2024
- Введение в системы баз данных. Классическое издание. Т.2: ., Дейт, К. Дж., 2024
- Распределенные данные. Алгоритмы работы современных систем хранения информации - Петров Алекс - Санкт-Петербург: Питер - 978-5-4461-1640-9 - 2021 - русский - https://ibooks.ru/product/336732 - iBOOKS - 336732