Архитектура СУБД

Паттерны нагрузок: OLTP, OLAP и как их измерять

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

OLTP (Online Transaction Processing)

Это транзакции в реальном времени.

  • Суть: Короткие, точечные запросы на чтение и запись. Нагрузка состоит из тысяч мелких операций в секунду.
  • Хранение: Строковое (Row-oriented). Данные одной сущности лежат рядом на диске, чтобы их можно было быстро обновить целиком.
  • Примеры: Банкоматы, биллинг такси, корзина в e-commerce.
  • Ключевые метрики железа: Упирается в Latency (задержку одной операции) и IOPS (кол-во операций ввода-вывода в секунду диска).
OLAP (Online Analytical Processing)

Это многомерная аналитика.

  • Суть: Длинные, тяжелые запросы, сканирующие гигабайты и терабайты данных. В основном read-only (или редкие массивные загрузки данных батчами).
  • Хранение: Колоночное (Column-oriented). Значения одного столбца лежат рядом, что позволяет сжимать их и читать только нужные колонки, не трогая остальные.
  • Примеры: Финансовые отчеты, расчет ML-моделей, дашборды для маркетинга.
  • Ключевые метрики железа: Упирается в Throughput (пропускную способность, МБ/с). Здесь важен не быстрый поиск мелкого блока, а скорость, с которой диск отдает сплошной поток данных.
Сравнительная таблица
Параметр OLTP OLAP
Тип запросов Поиск по ID, короткие UPDATE Сложные JOIN, агрегации (SUM, AVG)
Индексы B-Tree / LSM Bitmap, Bloom Filters
Оптимизация под IOPS + Latency Throughput + Сжатие данных
Популярные СУБД PostgreSQL, MySQL, CockroachDB ClickHouse, Snowflake, Redshift

Современный тренд — HTAP (Hybrid Transactional/Analytical Processing). Это попытка объединить два мира в одной системе. Например, TiDB или Google AlloyDB под капотом хранят данные и в строках (для быстрых транзакций), и реплицируют их в колонки (для аналитики), автоматически направляя запрос в нужный движок.

Немного про железо: IOPS, Latency и Throughput

Когда мы говорим, что БД «тормозит», чаще всего она ждет ответа от диска. На системном дизайне важно не путать эти три метрики:

  1. IOPS (Input/Output Operations Per Second): Сколько независимых мелких блоков диск может прочитать или записать за секунду. SSD дает десятки и сотни тысяч IOPS, HDD — всего 100-200. Это критично для OLTP.
  2. Latency (Задержка): Время от отправки запроса к диску до получения первого байта ответа. В In-Memory базах (Valkey) счет идет на микросекунды, на SSD — на миллисекунды.
  3. Throughput (Пропускная способность): Объем данных (МБ/с или ГБ/с), который можно прокачать за единицу времени. Диск может иметь плохой IOPS, но отличный Throughput (например, чтение большого файла с HDD). Это критично для OLAP.