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

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

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

easy

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

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

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

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

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

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

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

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

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

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

Стройте roadmap миграции: от одного storage к polyglot-модели без остановки сервиса и с контролем риска.

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

Показывайте решение через trade-offs CAP/PACELC, latency budget и стоимость эксплуатации, а не через список технологий.

Контекст

Designing Data-Intensive Applications

Ключевой источник по data models, consistency, replication и инженерным компромиссам хранилищ.

Читать обзор

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

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

Почему эта часть важна

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

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

Storage trade-offs критичны для архитектуры

SQL, document, key-value, wide-column и графовые БД решают разные классы задач и дают разные гарантии.

Надежность данных - это инженерная дисциплина

Репликация, транзакции, восстановление и backup-стратегии требуют системного проектирования, а не точечных фиксов.

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

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

Storage-компетенция обязательна в System Design

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

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

Шаг 1

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

Определите read/write ratio, размер данных, требования к latency и RTO/RPO для ключевых пользовательских сценариев.

Шаг 2

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

Сопоставьте доменные сущности и тип запросов с подходящей моделью: relational, document, key-value, columnar или graph.

Шаг 3

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

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

Шаг 4

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

Определите схему репликации, партиционирования, failover и кэширования до запуска production-нагрузки.

Шаг 5

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

Добавьте lifecycle-правила для миграций схемы, архивирования, cost control и наблюдаемости данных.

Ключевые storage trade-offs

Строгая консистентность vs latency и доступность

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

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

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

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

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

Managed DB vs инфраструктурный контроль

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

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

Storage foundations

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

Database engines in practice

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

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

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

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

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

Начинать выбор хранилища с чётких требований по latency, RPO/RTO, консистентности и expected growth.
Валидировать модель данных на реальных query-паттернах и сценариях отказов до production rollout.
Документировать storage trade-offs в ADR: выбранные гарантии, ограничения и условия пересмотра решения.
Строить observability для БД как часть платформы: latency per query class, saturation, replication lag и error budget.

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

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

Соберите storage-базу

Начните с Data Storage Intro, Database Selection Framework и DDIA, чтобы сформировать системный язык выбора хранилищ.

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

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

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

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