System Design Space
Граф знанийНастройки

Обновлено: 25 марта 2026 г. в 03:00

Designing Data-Intensive Applications (short summary)

hard

DDIA ценна тем, что превращает распределенные системы из набора легенд и терминов в цельный инженерный язык про данные, отказоустойчивость и рост.

В реальной работе эта книга помогает системно думать о моделях данных, репликации, партиционировании, транзакциях и потоковой обработке как о взаимосвязанных решениях, а не как о разрозненных главах из разных стеков.

На интервью, review и архитектурных обсуждениях она особенно полезна тем, что позволяет говорить не шаблонами, а через реальные эффекты роста: rebalancing, backpressure, schema evolution и цену консистентности.

Практическая польза главы

Практика проектирования

Систематизирует практические паттерны хранения и обработки данных для production-систем.

Качество решений

Дает оптику для выбора replication/partitioning/indexing по профилю нагрузки.

Interview-аргументация

Помогает объяснить trade-offs на языке reliability, latency, consistency и operability.

Риски и компромиссы

Фокусирует на отказах и эффектах роста: backpressure, rebalancing, schema evolution.

Designing Data-Intensive Applications (Высоконагруженные приложения. Программирование, масштабирование, поддержка)

Авторы: Martin Kleppmann
Издательство: O'Reilly Media, 2017 (1-е издание), 2025 (2-е издание)
Объём: 616 страниц

Разбор книги Martin Kleppmann: модели данных, репликация, партиционирование, транзакции, batch и stream processing.

Оригинал
Перевод

Первоисточник

Официальная страница книги Designing Data-Intensive Applications (Martin Kleppmann).

Открыть страницу книги

Структура книги

Книга разделена на три части, каждая из которых последовательно увеличивает масштаб рассмотрения — от одной машины до глобальных распределённых систем:

Часть I: Основы

Модели данных, хранение, кодирование. Как данные представляются и записываются на диск.

Часть II: Распределённые данные

Репликация, партиционирование, транзакции, консенсус. Масштабирование на несколько машин.

Часть III: Производные данные

Batch и stream processing. Построение пайплайнов обработки данных.

Часть I: Основы систем данных

Глава 1-2: Надёжность, масштабируемость и модели данных

Три столпа системы:

  • Reliability — система работает корректно даже при сбоях
  • Scalability — способность справляться с ростом нагрузки
  • Maintainability — простота поддержки и изменений

Модели данных:

  • Реляционная — таблицы, SQL, ACID
  • Документная — JSON, вложенность, гибкость
  • Графовая — узлы и рёбра, связи любой сложности

Глава 3: Хранение и извлечение данных

Одна из ключевых глав книги — как данные физически хранятся на диске.

LSM-Tree (Log-Structured Merge)

  • Оптимизирован для записи
  • Используется в Cassandra, RocksDB, LevelDB
  • Memtable → SSTable → Compaction

B-Tree

  • Оптимизирован для чтения
  • Используется в PostgreSQL, MySQL, Oracle
  • Страницы фиксированного размера, update-in-place

Глава 4: Кодирование и эволюция схем

Как сериализовать данные и обеспечить обратную/прямую совместимость:

JSON/XML

Человекочитаемые, большой размер

Thrift/Protocol Buffers

Бинарные, со схемой

Avro

Schema evolution, Hadoop-friendly

Часть II: Распределённые данные

Глава 5: Репликация

Single-Leader

  • Один мастер для записи
  • Простая модель
  • Проблема: single point of failure

Multi-Leader

  • Несколько мастеров
  • Для мульти-датацентров
  • Проблема: конфликты записи

Leaderless

  • Все ноды равны (Dynamo-style)
  • Quorum reads/writes
  • W + R > N для консистентности

Глава 6: Партиционирование (Sharding)

Стратегии партиционирования:

  • По ключу — hash(key) mod N
  • По диапазону — временные данные, географические
  • Consistent Hashing — минимизация перебалансировки

Проблемы:

  • Hot spots — неравномерная нагрузка
  • Scatter-gather — запросы ко всем шардам
  • Rebalancing — перераспределение данных

Глава 7: Транзакции

Глубокий разбор ACID и уровней изоляции — одна из сильнейших частей книги:

Уровень изоляцииЗащищает отНе защищает от
Read CommittedDirty reads, dirty writesNon-repeatable reads
Snapshot IsolationNon-repeatable readsWrite skew
SerializableВсе аномалии

Главы 8-9: Проблемы и консенсус

Что может пойти не так:

  • Сетевые разделения (network partitions)
  • Асимметричные сбои (partial failures)
  • Проблемы с часами (clock skew)
  • Byzantine faults

Алгоритмы консенсуса:

  • Paxos — классический, сложный
  • Raft — понятный, используется в etcd
  • Zab — ZooKeeper
  • FLP impossibility theorem

Часть III: Производные данные

Глава 10: Batch Processing

Unix философия:

Kleppmann проводит параллель между Unix pipes и современным batch processing:

cat log.txt | grep ERROR | sort | uniq -c

MapReduce и его эволюция:

  • MapReduce — простая модель, много I/O
  • Spark — in-memory, DAG execution
  • Flink — unified batch/stream

Глава 11: Stream Processing

Обработка данных в реальном времени — ключевая тема для современных систем:

Message Brokers

Kafka, RabbitMQ, Pulsar

Event Sourcing

Immutable event log как источник правды

Change Data Capture

Debezium, Maxwell

Глава 12: Будущее систем данных

Kleppmann завершает книгу философскими размышлениями о том, как строить корректные, устойчивые и этичные системы данных. Он обсуждает:

  • Композицию сервисов и data flow
  • End-to-end correctness гарантии
  • Этические аспекты обработки данных

Ключевые концепции для System Design Interview

DDIA не содержит готовых решений задач, но даёт глубокое понимание, которое позволяет уверенно отвечать на вопросы «почему?»:

Выбор базы данных

Понимание trade-offs между SQL и NoSQL, LSM vs B-Tree

Стратегии репликации

Когда использовать синхронную vs асинхронную репликацию

Партиционирование

Выбор partition key, избежание hot spots

Уровни изоляции

Объяснение аномалий и их предотвращение

Exactly-once semantics

Идемпотентность и дедупликация в stream processing

Консенсус

Понимание Raft/Paxos для distributed locking

📚 Вердикт

✅ Сильные стороны

  • Глубокое понимание «почему», а не только «как»
  • Отличные визуализации и примеры
  • Охват всего стека: от байтов до бизнес-логики
  • Множество ссылок на реальные системы
  • Честное обсуждение trade-offs

⚠️ Особенности

  • Объёмная книга (~600 страниц)
  • Нет готовых решений для интервью
  • Требует времени на усвоение
  • Некоторые разделы могут быть слишком академичными

🎯 Рекомендация:

DDIA — это must-read для любого инженера, работающего с распределёнными системами. Для подготовки к интервью используйте её вместе с практическими книгами (Alex Xu, Stanley Chiang) — DDIA даст понимание «почему», а практические книги — «как».

Связанные главы

Где найти книгу

Чтобы отмечать прохождение, включи трекинг в Настройки