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

Обновлено: 24 июня 2026 г. в 15:37

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

лёгкий

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

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

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

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

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

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

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

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

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

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

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

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

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

Рамка выбора и редакторский фокус

Фокус главы

архитектурных границах систем хранения и ключевых компромиссах выбора БД

Профиль нагрузки

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

Когда выбирать

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

Граница и риск

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

Связать дальше

Связывайте выводы с фреймворком выбора СУБД, DDIA и практическими обзорами конкретных движков.

Контекст

Designing Data-Intensive Applications, 2nd Edition

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

Читать обзор

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

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

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

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

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

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

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

Реляционные (SQL), документные, «ключ-значение» (key-value), ширококолоночные и графовые базы закрывают разные классы задач и дают разные гарантии. Универсального варианта нет — выбор всегда что-то отдаёт.

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

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

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

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

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

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

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

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

Активный шаг 1/5

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

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

Что проверить

  • Соотношение чтения и записи, объём данных, размер рабочей выборки и горячие пользовательские сценарии.
  • Бюджет задержек, RPO/RTO, пиковая нагрузка и классы запросов, которые нельзя деградировать.

Практика

  • Workload profile с read/write ratio, объёмами и SLO.
  • Карта критичного пути от API до конкретного хранилища.

Вопросы для самопроверки

  • Какая операция первой сломает пользовательский опыт при росте нагрузки?
  • Что важнее для этого сценария: задержка, свежесть данных или восстановление после сбоя?

Ошибка, которую ловим

Выбрать СУБД по популярности, не проверив форму нагрузки, критичные пути и реальные цели восстановления.

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

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

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

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

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

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

Одна СУБД на всё снижает операционную сложность, но плохо ложится на разнородные данные. Архитектура с несколькими типами хранилищ подстраивается точнее — ценой ещё одной технологии, которую нужно уметь эксплуатировать.

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

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

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

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

Модели данных, принципы выбора СУБД и фундамент проектирования сервисов, которые упираются в данные раньше, чем в вычисления.

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

Обзор движков транзакционной обработки OLTP, аналитической обработки OLAP и NoSQL: на чём каждый силён, где упирается в потолок и что это стоит в эксплуатации.

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

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

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

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

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

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

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

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

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

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

Затем разберите обзоры PostgreSQL/MySQL/MongoDB/Cassandra/ClickHouse и внутреннее устройство СУБД — там видно, как принятые компромиссы ведут себя под реальной нагрузкой.

Источники для входа в тему

  • Designing Data-Intensive Applications - обзор книги Martin Kleppmann о надёжных, масштабируемых и сопровождаемых системах данных.
  • PostgreSQL documentation: Tutorial - официальное введение в PostgreSQL, реляционные концепции, SQL и базовые возможности СУБД.
  • MongoDB documentation: Data Modeling - официальное руководство по документной модели и проектированию данных под шаблоны доступа.
  • Martin Fowler: Polyglot Persistence - классический разбор идеи подбирать разные хранилища под разные классы данных и операций — и где за это приходится платить сложностью.

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

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