Job 2026 md

title: Конспект источника 6 — М. Клеппман, «Designing Data-Intensive Applications» (рус. изд. «Высоконагруженные приложения») — карта глав и порядок чтения source: https://dataintensive.net/ author: Мартин Клеппман конспект: подготовлено 2026-09-17, TASK-45.10; сжатая карта — knowledge-base.md §12 (TASK-45.1); здесь — детальная: все главы с приоритетами, порядок чтения под слоты 18/21/22.09, план конспектирования «5 минут у доски». 2026-09-17 (TASK-45.39) — дополнено под 2-е издание (§0): соответствие глав, полный текст 2-го изд. — materials/ddia-2ed/ch-*.md статус: книга — источник глубины для раундов 2–3 тренировок и следующих секций; перед первой секцией не читать подряд, только по карте ниже


Источник 6: DDIA (Клеппман) — карта глав и порядок чтения

Единственный «книжный» источник в наборе: не статья на 20 минут, а ~600 страниц. Поэтому правило одно: DDIA читается только по карте, главы под задачи секции, по 1–2 главы в день, каждая глава закрывается пересказом у доски. Сжатая версия карты — knowledge-base.md §12; этот файл — рабочий инструмент: что брать из каждой главы на секцию, в каком порядке читать под слоты и как конспектировать.

Почему книга вообще в списке: секция проверяет «достаточность» (статья Яндекса), а вопросы этапов 4–6 — «почему это хранилище», «что случится при падении мастера», «какая консистентность и чем платим» — это дословно часть II книги. Кандидат, который отвечает на такие вопросы языком trade-off'ов Клеппмана, звучит на уровень выше.


0. Два издания: соответствие глав (TASK-45.39)

У книги два издания, и нумерация глав у них разная:

  • 1-е издание (Kleppmann, 2017) = русский перевод «Высоконагруженные приложения» (Питер). 12 глав. Карта §2 ниже и порядок чтения §3 записаны по нему.
  • 2-е издание (Kleppmann & Riccomini, 2025, 673 стр.; PDF — materials/DDIA-2nd-edition.pdf, полный текст глав — materials/ddia-2ed/ch-*.md). 14 глав: гл. 1 переписана, гл. 2 новая (НФТ + кейс домашних лент), старые гл. 5–9 сдвинулись в 6–10 (в гл. 8 «Транзакции» вошли распределённые транзакции, в гл. 10 добавлены «ID Generators and Logical Clocks»), пакетная обработка → гл. 11, потоки → 12, гл. 13 «Философия стриминга», гл. 14 — этика; в гл. 5 появилось durable execution / workflow engines (Temporal, Restate).
1-е изд. (рус. перевод) 2-е изд. Что изменилось
1. Надёжность, масштабируемость, поддерживаемость 1. Trade-Offs in Data Systems Architecture переписана: OLTP/OLAP вынесен сюда, cloud vs self-hosted
2. Defining Nonfunctional Requirements новая: кейс лент (polling vs материализация, 1M записей/с), перцентили, metastable failure
2. Модели данных 3. Data Models and Query Languages + Event Sourcing/CQRS, DataFrames
3. Хранение и извлечение 4. Storage and Retrieval примерно то же (LSM vs B-tree)
4. Кодирование и эволюция 5. Encoding and Evolution + durable execution / workflow engines
5. Репликация 6. Replication без сдвига смысла
6. Партиционирование 7. Partitioning / Sharding + мультиарендность
7. Транзакции 8. Transactions + распределённые транзакции из старой гл. 9
8. Проблемы распределённых систем 9. The Trouble with Distributed Systems без сдвига смысла
9. Консистентность и консенсус 10. Consistency and Consensus + ID Generators and Logical Clocks (Lamport/HLC/vector)
10. Пакетная обработка 11. Batch Processing
11. Потоковая обработка 12. Stream Processing
12. Будущее 13. A Philosophy of Streaming Systems переработана
14. Doing the Right Thing новая: этика данных

Приоритеты по структуре 2-го издания: главы 6–10 — ядро (репликация → шардирование → транзакции → отказы → консистентность/консенсус), 1–5 — вторично (фундамент), 11–13 — опционально (гл. 12 полезна перед секцией — вопросы про Kafka), 14 — этика (после секций). При чтении русского перевода ориентируемся на колонку слева; по 2-му изданию — справа. Карта переноса выжимок 2-го издания в KB — materials/ddia-2ed/_map.md.


1. Как читать под секцию: 6 принципов

  1. Не подряд. Скелет — гл. 1 и 3 (словарь + хранение), сердце — вся часть II (гл. 5–9). Часть III — только гл. 11 до секций, остальное после.
  2. Темп: 1–2 главы в день, по 45–75 минут. Глава «закрыта» не когда прочитана, а когда пересказана у доски за 5 минут без книги (§4).
  3. Каждая глава — конспект в один экран: схема + 3 термина + 1 trade-off + 1 вопрос с секции, который она закрывает (§4).
  4. Каждая глава привязывается к базе знаний: после пересказа отметить, в какой раздел knowledge-base.md (§3–11) ложится материал — так книга постепенно «перетекает» в шпаргалки, а не остаётся отдельной горой.
  5. В день секции книгу не открывать (методичка §5: после 12:00 только шпаргалки). DDIA — питание тренировок, а не шпаргалка перед боем.
  6. Русское издание («Высоконагруженные приложения», Питер) — это 1-е издание: нумерация глав совпадает с английским 1-м изд., но НЕ со 2-м (соответствие — §0). Названия глав здесь даны по смыслу, ориентируемся на номера.

2. Карта 12 глав: приоритет, время, что брать на секцию

Приоритеты: ЯДРО — обязательно, вопросы отсюда почти гарантированы; вторично — после ядра, добавляют глубины на этапах 3–4; опционально — после секций / к уровню staff.

Часть I. Основы данных (главы 1–4) — фундамент словаря, читать быстро

Гл. Тема Приоритет Время Что брать на секцию Куда ложится
1 Надёжность, масштабируемость, поддерживаемость ЯДРО (быстро) 45 мин Словарь всей секции: как описать нагрузку (RPS, доля чтения/записи, объём данных); латентность p50/p99 и почему среднее врёт; вертикальное vs горизонтальное масштабирование; эластичность; «сначала опиши нагрузку — потом проектируй» KB §1–2; этапы 1 и 5 методички
2 Модели данных и языки запросов Вторично 45 мин Реляционная vs документная: локальность данных vs связи many-to-many; когда NoSQL оправдан (доступ по ключу, локальность документа), а когда грабли (связи, транзакции); графовые модели — обзорно KB §3; лента (профиль/посты), мессенджер в classic-designs.md
3 Хранение и извлечение ЯДРО 60 мин LSM-tree vs B-tree — любимый вопрос этапа 4: LSM — быстрый write (memtable → SSTable → компактация) ценой read amplification; B-tree — быстрый и предсказуемый read ценой write amplification; хеш-индексы; вторичные индексы; OLTP vs OLAP (колоночные хранилища) — обзорно KB §3; выбор KVS в URL shortener
4 Кодирование и эволюция схем Вторично 45 мин Обратно-совместимость: JSON/protobuf/Avro; эволюция схем (старый читатель ↔ новый писатель); зачем schema registry в событийных системах; миграции без даунтайма KB §8, §10 (эксплуатация: смены схемы данных — прямой вопрос этапа 6)

Часть II. Распределённые данные (главы 5–9) — сердце книги и секции, читать всё

Гл. Тема Приоритет Время Что брать на секцию Куда ложится
5 Репликация ЯДРО 60 мин Single-leader / multi-leader / leaderless; sync vs async (чем платим при отказе); replication lag и сессионные гарантии (read-your-writes); failover: detect → elect → promote и чем опасен split brain; конфликты multi-leader KB §5, §9; этап 6 («что при падении мастера БД»)
6 Партиционирование ЯДРО 60 мин Range vs hash партиционирование; skew и hot keys (celebrity problem); ребалансировка (mod N — плохо; consistent hashing / фиксированные партиции); запросы по нескольким шардам (scatter/gather); вторичные индексы поверх шардов KB §6; лента (шардирование по user_id), URL shortener
7 Транзакции ЯДРО 75 мин Уровни изоляции: read committed → snapshot isolation → serializable; гонки: dirty read, lost update, write skew, phantom; serializable snapshot isolation (SSI) на уровне идеи; слабая изоляция = источник race conditions в нашей схеме KB §7; лента (счётчики, дедупликация), мессенджер
8 Проблемы распределённых систем ЯДРО 60 мин Partial failure — норма, а не авария; timeout = «не знаю, выполнилось или нет»; нереалистичные модели отказов; часы: monotonic vs wall clock, почему распределённые алгоритмы не доверяют времени; GC-паузы и «зомби»-лидеры, fencing KB §9; этап 6 (отказоустойчивость, экстремальные условия)
9 Консистентность и консенсус ЯДРО (самая плотная) 120 мин (2 сессии) Linearizability и чем она отличается от serializability (классический вопрос-ловушка); CAP/PACELC своими словами; кворумы R+W>N и их ловушки (stale read при лаге); eventual consistency; консенсус Raft/Paxos на уровне идей (лидер, термы, голосование); зачем ZooKeeper/etcd; fencing tokens KB §7, §9; этап 6; вопросы «сильная консистентность vs доступность при партиции»

Часть III. Производные данные (главы 10–12) — опционально до секций

Гл. Тема Приоритет Время Что брать на секцию Куда ложится
10 Пакетная обработка Опционально 45 мин Идея MapReduce: partition-parallel batch-джобы; когда batch вместо stream (переработка всей истории); join в batch — обзорно KB §8; медиа-хостинг (транскодинг как batch-очередь)
11 Потоковая обработка Вторично 60 мин Delivery semantics: at-least/at-most/exactly-once и почему exactly-once — иллюзия без идемпотентного консьюмера; event time vs processing time; окна; replay; CDC KB §8; вопросы про Kafka в ленте и мессенджере — прямое попадание
12 Будущее Опционально 30 мин Общая картина: deriving state from event log, сближение batch и stream. На секцию почти не идёт — (общее развитие, уровень staff)

Чего из книги на секцию НЕ надо

  • Детали алгоритмов Raft/Paxos (выборы, журналы по шагам) — на уровне идей: «лидер + кворум + термин», схему выборов не рисуем.
  • Формальные модели консистентности и доказательства (гл. 9, конец) — называем гарантию и trade-off, а не теорему.
  • Внутренности компактации LSM (leveled/tiered, размеры буферов) — достаточно «write идёт в memtable, флаш в SSTable, компактация в фоне, read может пройтись по нескольким таблицам».
  • CRDT и продвинутые разрешения конфликтов — упомянуть словом при multi-leader, не глубже.

3. Порядок чтения под слоты (18.09 / 21.09 / 22.09)

Универсальный порядок ядра (если бы слотов не было): гл. 1 → 3 → 5 → 6 → 7 → 8 → 9 → 11 (по 1-му изд.; для 2-го — 1 → 4 → 6 → 7 → 8 → 9 → 10 → 12, см. §0), затем вторичное (2, 4) и опциональное (10, 12). Порядок внутри части II — книжный: репликация → партиции → транзакции → отказы → консенсус, каждая глава опирается на предыдущую.

Привязка к слотам — по вариантам методички §5 (какой слот возьмём — решает пользователь):

Сценарий До секции Между секциями / после Норма
А — слот 18.09 (интенсив ~4 ч) DDIA не трогать вовсе: все 4 часа — статья, методичка, KB, тренировка URL shortener После секции: гл. 1, 3 (скелет) → гл. 5, 6 → гл. 7–9 (по 1 гл/день) → гл. 11; гл. 2, 4 — по остатку 0 глав до, ~8 глав после
Б — слот 21.09 (~8 ч на 4 дня) Чт вечер: —; Пт–сб: гл. 1, 3; Вс: гл. 5, 6; пн до 12:00 — повтор конспектов, не новая глава После секции: гл. 7, 8, 9 (плотное ядро, гл. 9 на 2 сессии) → гл. 11 → гл. 2, 4 4 главы до, остальное после
В — слот 22.09 (полный курс ~12 ч) Чт–пт: гл. 1, 3 (плюс базовые материалы); Сб–вс: гл. 5, 6, 7; пн: гл. 8, 9 (гл. 9 — 2 сессии); вт до 12:00: гл. 11 + повтор конспектов ч. II После секций: гл. 2, 4 → гл. 10, 12 8 глав до, 4 после

Стоп-правила (жёстко):

  • В день секции новых глав не открывать — только повтор своих конспектов-«одноэкранок» (§4) и шпаргалки KB §11.
  • Не успеваем план — режем с хвоста, а не по времени: очередность жертв — сначала гл. 6 (карта в KB §12 заменяет), потом гл. 7 (достаточно KB §7), потом гл. 11. Гл. 9 не резать никогда: консенсус/консистентность — самый дорогой вопрос секции.
  • Главу не начали — не бросать на середине: лучше пересказать меньший кусок (§4), чем тащить полкниги без конспекта.

4. План конспектирования: «5 минут у доски» после каждой главы

Ритуал закрытия главы — по образцу протокола само-тренировки (методичка §6.1): доска/большой лист, телефон на запись, проговор вслух.

4.1 Процедура (10 минут на главу)

  1. Закрыл книгу. Таймер на 5 минут.
  2. У доски рисуешь центральную схему главы по памяти и проговариваешь вслух, как будто объясняешь интервьюеру.
  3. Ещё 5 минут — самопроверка по чек-листу ниже; чего не хватило — отметить в книге на завтра (перечитать только проблемный раздел).
  4. Сфотографировать доску, сохранить 5–7 строк текстом.

4.2 Чек-лист пересказа (5 пунктов — всё должно прозвучать)

  1. Схема механизма — центральная картинка главы (leader-follower с лагом; memtable → SSTable → компактация; кворумное чтение/запись; таймлайн гонки lost update).
  2. 3 термина главы — определения своими словами, не цитатой (например: replication lag, write skew, linearizability).
  3. 1 главный trade-off — «что получаем / чем платим» (LSM: быстрый write ↔ дорогой read; async-репликация: скорость ↔ риск потери данных при failover).
  4. 1 вопрос с секции, который закрывает глава — сформулировать и тут же ответить (например: «что произойдёт при падении мастера?»).
  5. Привязка — назвать раздел KB (§3–11) и эталон из classic-designs.md, куда это ложится.

4.3 Фиксация и критерий «глава закрыта»

  • Схемы и заметки: training/ddia/ch-NN-<дата>.jpg + накопительный notes.md (5–7 строк на главу по пунктам чек-листа). Структура папки — по образцу ../algo-exam/.
  • Критерий: пересказ уложился в 5 минут без заглядывания в книгу. Не уложился — глава не закрыта: перечитать проблемный раздел, повторить пересказ завтра перед следующей главой.
  • Ритм: не больше 2 глав в день; глава → пересказ → перерыв. Два пересказа подряд без записи в notes.md — нарушение протокола.
  • Термины из закрытых глав, которые звучат на тренировках, — переносить в шпаргалку KB §11 («что назвать на секции»), чтобы книга работала на секцию, а не лежала отдельным архивом.

Связанные документы

  • ../knowledge-base.md §12 — сжатая карта DDIA (зеркало этого файла для быстрого доступа)
  • ../knowledge-base.md §1–11 — разделы, к которым привязываются главы
  • materials/ddia-2ed/ — полный текст 2-го издания (TASK-45.39): 14 глав с выжимками, _map.md — карта переноса в KB
  • ../methodology.md §5–6 — варианты подготовки под слоты и протокол тренировок (на нём построен §4 этого файла)
  • ../classic-designs.md — эталонные разборы, на которые ссылаются привязки глав