Базы данных различаются по типу нагрузки (OLTP, OLAP, HTAP) и по способу хранения (на диске, в памяти, встроенные, один файл). От этого зависят сценарии использования и механизмы надёжности.
По виду нагрузки
OLTP (Online Transactional Processing)
Обработка транзакций в реальном времени: много коротких запросов (найти пользователя, обновить статус), высокая скорость и низкая задержка. Примеры: создание заказа, смена статуса заказа.
Когда использовать: приложения с частыми операциями чтения/записи (CRM, интернет-магазины). Аналитические запросы на OLTP-системе при росте данных могут сильно нагружать её.
OLAP (Online Analytical Processing)
Аналитическая обработка больших объёмов данных: сложные запросы (выручка за год, анализ логов), отчёты, дашборды. Примеры: средняя стоимость поездок за месяц, агрегации по регионам.
Когда использовать: бизнес-аналитика, отчётность. Нагрузка OLAP на ту же систему, что и OLTP, часто приводит к падению производительности транзакций.
HTAP (Hybrid Transactional Analytical Processing)
Гибридные БД: одновременно поддержка транзакций (построчное хранение) и аналитики (колоночное). Пример: YDB (Яндекс).
Когда использовать: нужны и транзакции, и аналитика в одной системе (реальное время + отчёты).
По архитектуре хранения
Персистентные базы данных
Данные на диске (HDD/SSD). Движок БД и журнал (WAL — Write-Ahead Log) обеспечивают долговременное хранение. Пример: PostgreSQL.
Когда использовать: данные должны переживать рестарты и сбои (заказы, пользователи).
InMemory базы данных
Данные в оперативной памяти. Высокая скорость, низкие задержки. Могут использовать WAL или снапшоты для частичной персистентности; при рестарте процесса данные теряются, если не было сброса на диск.
Когда использовать: кэш, временные данные, сессии (Redis).
Механизмы надёжности:
- Снапшоты: периодическое сохранение состояния на диск. Минус — потеря данных между последним снапшотом и сбоем.
- WAL: запись изменений в журнал до подтверждения клиенту; после рестарта состояние восстанавливается из WAL. Компактизация WAL в снапшот раз в 5–60 минут снижает объём лога.
- Репликация: копирование данных на другие инстансы (отдельная тема).
Embedded базы данных
БД встраивается в приложение как библиотека; данные в файлах на том же сервере. Поддержка индексов, транзакций, конкурентного доступа без сетевого слоя. Пример: SQLite в мобильном приложении для локальной истории поездок.
Когда использовать: локальное хранение в приложениях с ограниченным доступом к сети.
Single File базы данных
Все данные (включая индексы и структуру) в одном файле. Пример: SQLite. Удобно копировать и переносить; подходит для мобильных и небольших приложений.
Отличие от embedded: embedded может использовать несколько файлов/каталогов (например, колоночные БД); single file — строго один файл.
Выбор класса БД — как выбор транспорта: для ежедневных транзакций — OLTP (реляционная БД), для тяжёлой аналитики — OLAP (колоночная), для гибрида — HTAP; персистентные — надёжное хранилище, InMemory — скорость и кэш, embedded/single file — локальные и мобильные сценарии.