НЕЗАВИСИМЫЙ УЧЕБНЫЙ ПРОЕКТ · ARTSHVETSOV
Системы данных.
Хранение данных, распределённые системы и обработка событий.
Объяснения, модели и задачи для самостоятельного изучения. Источники и статус проекта ↓
Процент учитывает чтение, самопроверку задач, верные ответы, контроль от 80% и итоговый проект. Время считается в уроках и контроле: фон, ручная пауза и бездействие дольше 5 минут не учитываются. Предыдущие занятия не восстановлены задним числом.
Сайт с собой
Скачай текущие страницы сайта и все восемь курсов. Затем открывай тот же адрес из закладки или значок приложения — даже после закрытия браузера и отключения интернета.
Проверяем копию…
Как добавить значок приложения
- Нажми «Скачать весь сайт для офлайн» и дождись статуса «Готово».
- Если появилась кнопка «Установить приложение» — нажми её. Иначе открой меню браузера: Chrome / Edge — «Установить приложение»; Safari на iPhone / iPad — «Поделиться» → «На экран Домой»; Safari на Mac — «Файл» → «Добавить в Dock».
- Открывай значок с этого же устройства. Если установки нет в меню, сохрани адрес в закладках: офлайн-копия работает и без значка.
Онлайн страницы обновляются с сервера. Кнопка обновления сохраняет новую полную копию для следующего отключения. Видео на внешних сайтах, источники и отправка лайков требуют сети; описания видео остаются доступны.
Ответы, заметки и время занятий сохраняются отдельно от материалов. Удаление копии их не затронет. Очистка данных сайта удалит и прогресс; браузер также может освобождать место. На другом устройстве нужно скачать свою копию.
УРОКОВ: 24 · ПРОВЕРОК: 48 · САМОСТОЯТЕЛЬНЫХ ЗАДАЧ: 24
От требований к работающей модели системы
Цель: объяснять механизмы, находить опасные сценарии и обосновывать выбор по условиям задачи.
Ориентир по времени: 15 часов на уроки с упражнениями, ещё 1–2 часа на контроль и проект. Это оценка для планирования; сложную тему стоит пройти повторно.
Что нужно на входе
Достаточно обычной арифметики и опыта использования сайтов. Клиент, сервер, таблицы, запросы и специальные термины вводятся в уроках. Проходи темы по порядку: задания опираются на уже разобранные механизмы. Инвариант — правило, которое система обязана сохранять, например «одно место нельзя продать дважды».
Как проходить урок
Прочитай механизм, проследи пример по шагам и исследуй модель, если она есть. Напиши решение до открытия разбора. Сверь его по критериям, затем ответь на два вопроса. Непонятную предпосылку можно открыть по ссылке в уроке.
Прогресс считает чтение, решённые проверки и твою самопроверку письменной задачи. Само открытие страницы не засчитывается.
Программа и результат каждого блока
БЛОК 1
Основы
Выбрать модель и способ хранения, объяснить стоимость запросов и обновлений.
БЛОК 2
Распределённые данные
Спроектировать копии, разделение данных и поведение чтения/записи при отставании.
БЛОК 3
Координация
Разобрать гонки, таймауты и потерю связи без подмены одной гарантии другой.
БЛОК 4
Обработка данных
Построить воспроизводимый путь от события до отчёта и восстановить его после сбоя.
Как проверить, что ты ориентируешься
В итоговом разделе — 12 новых ситуаций и проект продажи билетов с четырьмя частями. Рабочий ориентир — не менее 10 из 12 в контроле и обоснованное решение всех частей проекта.
Угадывание ответов не подтверждает понимание. Письменные решения оцениваешь ты по явным критериям. После перерыва вернись к темам, которые не можешь объяснить своими словами.
Источники и статус проекта
Независимый учебный курс о системах данных. Designing Data-Intensive Applications (DDIA, «Высоконагруженные приложения») Мартина Клеппмана — один из основных источников наряду с научными статьями и документацией разработчиков. Объяснения, упражнения и интерактивные модели подготовлены для этого проекта.
Проект не связан с Мартином Клеппманом, O’Reilly Media или издателями переводов DDIA и не одобрен ими. Названия книг и продуктов используются для указания источников.
- Мартин Клеппман — Designing Data-Intensive Applications ↗
1-е издание, O’Reilly Media, 2017. Известна в русском переводе как «Высоконагруженные приложения». Ссылка ведёт на сайт книги.
- Google SRE: мониторинг распределённых систем ↗
Rob Ewaschuk; редактор Betsy Beyer. Site Reliability Engineering, глава Monitoring Distributed Systems.
- MongoDB: моделирование данных ↗
- PostgreSQL: типы индексов ↗
- PostgreSQL: составные индексы ↗
- RocksDB: leveled compaction ↗
- Apache Avro: разрешение схем ↗
- Apache Kafka: архитектура и гарантии ↗
- PostgreSQL: standby и синхронная репликация ↗
- DynamoDB: распределение нагрузки по ключам ↗
- PostgreSQL: изоляция транзакций ↗
- PostgreSQL: примеры аномалий и SSI ↗
- PostgreSQL: многоверсионность (MVCC) ↗
- PostgreSQL: явные блокировки ↗
- Cambridge: материалы по распределённым системам ↗
- Мартин Клеппман: распределённые блокировки ↗
- Мартин Клеппман: точные определения CAP ↗
- Raft: алгоритм, статья и визуализация ↗
- PostgreSQL: PREPARE TRANSACTION ↗
- Fischer, Lynch, Paterson: невозможность асинхронного консенсуса ↗
- Google Research: MapReduce ↗
- Apache Beam: окна, время, watermark и triggers ↗
- Debezium: transactional outbox ↗
Внешние материалы доступны на сайтах их авторов и издателей на установленных ими условиях. Ссылки не предоставляют разрешения на воспроизведение этих материалов.
Об ошибках или вопросах об использовании материалов можно написать владельцу сайта. Укажи страницу курса, спорный фрагмент и исходный материал.