Раздел про базы данных полезен не каталогом технологий, а тем, что возвращает разговор к самой трудной части: какие свойства данных, запросов и отказов заставляют выбирать конкретный класс хранилища.
В повседневной инженерной работе эта глава помогает разложить систему на разные контуры хранения: транзакционное ядро, аналитические витрины, поисковый слой, кэш и журналы событий, чтобы не пытаться решить всё одной СУБД.
На интервью и в архитектурных обсуждениях она задаёт правильную рамку: сначала профиль нагрузки, консистентность, задержка и стоимость эксплуатации, и только потом названия конкретных движков.
Практическая польза главы
Карта нагрузок
Разложите продукт по профилям 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-движков с их архитектурными ограничениями и эксплуатационными компромиссами.
Как применять это на практике
Частые ошибки
Рекомендации
Материалы раздела
- Введение в хранение данных
- Фреймворк выбора СУБД
- Путеводитель по базам данных (short summary)
- Designing Data-Intensive Applications, 2nd Edition (short summary)
- Database Internals (short summary)
- PostgreSQL изнутри (short summary)
- PostgreSQL: архитектура и практики
- MySQL: архитектура и практики
- MongoDB: документная модель, репликация и консистентность
- Cassandra: архитектура и компромиссы
- ClickHouse: аналитическая СУБД
- Redis: база данных в памяти и архитектура
- YDB: распределённая SQL-архитектура
- CockroachDB: распределённая SQL-архитектура
- DuckDB: встроенный OLAP
- Базы данных временных рядов (TSDB): типы, компромиссы и выбор
Куда двигаться дальше
Соберите базу по системам хранения
Начните с Data Storage Intro, Фреймворк выбора СУБД и DDIA, чтобы сформировать системный язык выбора хранилищ.
Углубите движки и эксплуатацию
Далее переходите к обзорам PostgreSQL/MySQL/MongoDB/Cassandra/ClickHouse и внутренностям БД, чтобы уверенно принимать решения по данным в рабочей эксплуатации.
Связанные главы
- Фреймворк выбора СУБД - даёт прикладной алгоритм выбора СУБД под конкретный профиль нагрузки и архитектурные ограничения.
- Designing Data-Intensive Applications, 2nd Edition (short summary) - формирует фундамент по моделям данных, репликации и транзакциям для решений о хранилищах в распределённых системах.
- PostgreSQL: архитектура и практики - помогает разобрать OLTP-контур и практические компромиссы реляционной модели в рабочей эксплуатации.
- Cassandra: архитектура и компромиссы - расширяет тему масштабирования и консистентности для распределённых сценариев с интенсивной записью.
- ClickHouse: аналитическая СУБД и архитектура - добавляет аналитический OLAP-угол: колоночное хранение, партиционирование и чтение с высокой пропускной способностью.
