Классы баз данных: OLTP, OLAP, HTAP и типы хранения

Базы данных различаются по типу нагрузки (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 — локальные и мобильные сценарии.