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

Обновлено: 4 мая 2026 г. в 20:57

Зачем разбираться в системах хранения

лёгкий

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

Раздел про базы данных полезен не каталогом технологий, а тем, что возвращает разговор к самой трудной части: какие свойства данных, запросов и отказов заставляют выбирать конкретный класс хранилища.

В повседневной инженерной работе эта глава помогает разложить систему на разные контуры хранения: транзакционное ядро, аналитические витрины, поисковый слой, кэш и журналы событий, чтобы не пытаться решить всё одной СУБД.

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

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

Карта нагрузок

Разложите продукт по профилям OLTP, OLAP и потоковой обработки и заранее зафиксируйте, где нужна строгая консистентность, а где допустима задержка.

Границы хранилищ

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

План эволюции

Стройте дорожную карту миграции: от одной БД к архитектуре с несколькими типами хранилищ без остановки сервиса и с контролем риска.

Аргументация на интервью

Показывайте решение через компромиссы CAP/PACELC, бюджет задержек и стоимость эксплуатации, а не через список технологий.

Контекст

Designing Data-Intensive Applications, 2nd Edition

Ключевой источник по моделям данных, консистентности, репликации и инженерным компромиссам хранилищ.

Читать обзор

Раздел «Системы хранения» нужен, чтобы проектировать данные как архитектурный фундамент продукта, а не как вспомогательную деталь после выбора API. На практике решения о хранилищах определяют надёжность, задержку, стоимость и пределы масштабирования всей системы.

Эта глава связывает System Design с реальными решениями по БД: какую модель данных выбрать, где нужны строгие гарантии консистентности и как управлять эволюцией хранилища в рабочей среде.

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

Почему системы хранения определяют архитектуру

Хранилище определяет границы системы

Выбор модели данных и СУБД влияет на API, консистентность, задержку, масштабирование и ежедневную эксплуатацию.

Компромиссы хранения становятся архитектурными решениями

SQL, документные, key-value, ширококолоночные и графовые базы решают разные задачи и дают разные гарантии.

Надёжность данных требует отдельного проектирования

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

Ошибки выбора СУБД дорого исправлять

Поздняя миграция модели данных и схемы хранения обычно стоит дороже, чем ранняя валидация ограничений домена.

Компетенция в хранилищах обязательна в System Design

На интервью и в реальной эксплуатации ожидают, что инженер умеет обосновывать выбор БД через нагрузку, консистентность и стоимость владения.

Как проходить раздел по системам хранения

Шаг 1

Зафиксировать профиль нагрузки и критичные пути

Определите соотношение чтения и записи, объём данных, требования к задержке и цели восстановления для ключевых пользовательских сценариев.

Шаг 2

Выбрать модель данных под домен

Сопоставьте доменные сущности и тип запросов с подходящей моделью: реляционной, документной, key-value, колоночной или графовой.

Шаг 3

Задать консистентность и транзакционные границы

Решите, где нужна строгая ACID-семантика, а где допустима консистентность в конечном итоге и компенсационные механики.

Шаг 4

Спроектировать масштабирование и доступность

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

Шаг 5

Планировать эволюцию хранилища как дорожную карту

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

Ключевые компромиссы систем хранения

Строгая консистентность против задержки и доступности

Чем выше требования к согласованности, тем дороже обходятся распределённые записи и тем сложнее удерживать низкую задержку.

Нормализация против скорости чтения

Нормализованные схемы упрощают целостность, но денормализация часто нужна для сценариев с преобладанием чтения.

Универсальная БД против специализированного стека

Одна БД снижает операционную сложность, но архитектура с несколькими типами хранилищ лучше подстраивается под разные данные.

Управляемая БД против инфраструктурного контроля

Управляемые сервисы ускоряют поставку, но могут ограничивать тонкую настройку, переносимость и контроль стоимости на масштабе.

Что входит в раздел

Основы систем хранения

Модели данных, принципы выбора БД и системные основы проектирования сервисов, интенсивно работающих с данными.

Движки баз данных на практике

Практический обзор OLTP/OLAP и NoSQL-движков с их архитектурными ограничениями и эксплуатационными компромиссами.

Как применять это на практике

Частые ошибки

Выбирать СУБД по популярности вместо профиля нагрузки и требований к консистентности.
Откладывать стратегию репликации, резервного копирования и восстановления до первых инцидентов.
Переусложнять архитектуру с несколькими типами хранилищ без операционной готовности команды.
Игнорировать эволюцию схемы и совместимость миграций при росте продукта.

Рекомендации

Начинать выбор хранилища с чётких требований по задержке, консистентности, целям восстановления и ожидаемому росту.
Проверять модель данных на реальных шаблонах запросов и сценариях отказов до поэтапного запуска в рабочую среду.
Документировать компромиссы хранения в ADR: выбранные гарантии, ограничения и условия пересмотра решения.
Строить наблюдаемость БД как часть платформы: задержка по классам запросов, насыщение ресурсов, отставание репликации и бюджет ошибок.

Материалы раздела

Куда двигаться дальше

Соберите базу по системам хранения

Начните с Data Storage Intro, Фреймворк выбора СУБД и DDIA, чтобы сформировать системный язык выбора хранилищ.

Углубите движки и эксплуатацию

Далее переходите к обзорам PostgreSQL/MySQL/MongoDB/Cassandra/ClickHouse и внутренностям БД, чтобы уверенно принимать решения по данным в рабочей эксплуатации.

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

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