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

Обновлено: 3 мая 2026 г. в 10:20

Фреймворк выбора СУБД

средний

Практический фреймворк выбора СУБД по профилю нагрузки: OLTP и OLAP, соотношение чтения и записи, консистентность, репликация, шардирование, стоимость владения и операционные риски.

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

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

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

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

Отбор по критериям

Формируйте 2-3 кандидата СУБД на основе профиля чтения и записи, требований к сервисному уровню и характера запросов вместо выбора по популярности.

Оценочная матрица

Сравнивайте варианты по консистентности, задержке p95/p99, операционной сложности и полной стоимости владения.

Реестр рисков

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

Защита решения

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

Фундамент

Database Internals

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

Открыть главу

В этой главе выбор начинается не с любимой технологии, а с , и . Сначала мы разводим и , затем фиксируем , , , , и .

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

OLTP и OLAP: с чего начать выбор

OLTP

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

  • p95/p99 задержки критичны для пользовательских операций.
  • Нужны гарантии ACID и предсказуемая семантика транзакций.
  • Частые точечные чтения и записи по ключу.

PostgreSQL / MySQL / распределённый SQL в зависимости от масштаба и требований к консистентности.

OLAP

Тяжёлые аналитические запросы, агрегации по большим диапазонам, колоночное чтение и оптимизация стоимости анализа.

  • Основная нагрузка - аналитика и отчёты с преобладанием чтения.
  • Нужны материализованные витрины и массовый приём данных из пакетных и потоковых контуров.
  • Допускается более дорогой путь записи ради быстрого анализа.

ClickHouse / DWH / lakehouse-хранилище с колоночным движком.

Пять осей выбора СУБД

1. Профиль чтения и записи

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

  • Сколько операций записи и чтения в секунду ожидается на старте и через год?
  • Каков горячий набор данных и по каким ключам к нему обращаются?
  • Есть ли всплески трафика и как часто нужны исторические пересчёты или массовые загрузки?

2. Консистентность и транзакции

Решите, где нужна строгая консистентность, а где достаточно согласования со временем.

  • Допустимо ли читать устаревшие данные и в каких пользовательских сценариях это безопасно?
  • Требуются ли транзакции по нескольким строкам или сущностям?
  • Какие гарантии чтения и записи бизнес считает обязательными?

3. Репликация

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

  • Нужна ли синхронная репликация для критичных данных?
  • Какие RPO/RTO целевые метрики для аварийного восстановления?
  • Какое отставание репликации приемлемо для продукта?

4. Шардирование

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

  • Какой ключ шардирования минимизирует горячие точки нагрузки и межшардовые запросы?
  • Насколько болезненны повторное шардирование и миграции ключей?
  • Какие операции станут распределенными транзакциями?

5. Операционная сложность

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

  • Есть ли экспертиза в команде по выбранной СУБД?
  • Как устроены резервное копирование, восстановление, наблюдаемость и дежурства?
  • Сколько стоит кластер при целевом объёме и требуемом уровне сервиса?

Быстрая матрица выбора

Транзакционный бэкенд: заказы, платежи, аккаунты

Сначала OLTP

Строгая консистентность, транзакции и низкая задержка чтения и записи.

Продуктовая аналитика, BI и разовые исследовательские запросы

Сначала OLAP

Большие сканы и агрегации эффективнее выполнять в колоночных хранилищах.

Смешанная нагрузка: операции и аналитика

Несколько типов хранилищ

Разведите путь записи OLTP и аналитический контур через CDC/ETL/ELT-конвейер.

Глобальный масштаб с региональными требованиями SLA

Репликация и выборочное шардирование

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

Практика

Репликация и шардирование

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

Открыть главу

Репликация и шардирование: минимальные правила

Репликация

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

Шардирование

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

Частые ошибки выбора СУБД

Выбирать базу только по хайпу, без профиля нагрузки и требований к уровню сервиса.

Шардировать слишком рано, до исчерпания вертикального масштабирования и индексов.

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

Смешивать OLTP и тяжёлую аналитику в одном кластере без изоляции ресурсов.

Считать CAP/PACELC теоретическими и не фиксировать явные консистентностные допущения.

Источники

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

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