Databases

Базы данных

База данных (БД) — организованный набор данных, хранящийся так, чтобы его можно было быстро искать, изменять и защищать от потери.

Что такое база данных

База данных (БД, database) — организованный набор данных вместе с описанием их структуры, хранящийся так, чтобы данные можно было быстро искать, изменять и восстанавливать после сбоя. Управляет базой отдельная программа — СУБД; в разговорной речи «базой» часто называют и то и другое.

Простыми словами. База данных — это не «файл с данными», а склад с картотекой и кладовщиком. В обычном файле, чтобы найти нужную строку, придётся прочитать его целиком. В базе есть индексы (картотека), правила целостности (нельзя положить заказ без покупателя) и учёт операций, благодаря которому обрыв питания посреди записи не оставит половину заказа.

Что база делает, а файл — нет

  • Параллельный доступ. Сотни клиентов пишут одновременно, не затирая правки друг друга.
  • Транзакции. Группа изменений применяется целиком или не применяется вовсе.
  • Целостность.Ключи и ограничения не дают появиться битым связям.
  • Запросы. На SQL выражают выборку декларативно, а планировщик сам решает, как её выполнить.
  • Восстановление. Журнал транзакций позволяет откатиться на нужный момент.

Транзакции и ACID

ACID — четыре свойства, которые классические БД гарантируют для транзакции:

Свойство Смысл
Atomicity Все операции транзакции применяются целиком либо откатываются
Consistency После транзакции не нарушены ограничения и связи
Isolation Параллельные транзакции не видят промежуточных состояний друг друга
Durability Зафиксированная транзакция переживёт отключение питания
BEGIN;
UPDATE accounts SET balance = balance - 1000 WHERE id = 1;
UPDATE accounts SET balance = balance + 1000 WHERE id = 2;
COMMIT;  -- либо оба UPDATE, либо ни одного

OLTP и OLAP

OLTP (Online Transaction Processing, оперативная обработка транзакций) — режим работы базы под потоком коротких операций: оформить заказ, списать деньги, обновить статус. Каждая транзакция трогает единицы строк, но их тысячи в секунду. Это то, ради чего существуют PostgreSQL, MySQL, MS SQL Server.

OLAP (Online Analytical Processing) — противоположный режим: редкие тяжёлые запросы, которые агрегируют миллионы строк ради отчёта.

OLTP OLAP
Запросы Короткие, точечные Длинные, агрегирующие
Строк за запрос Единицы Миллионы
Данные Актуальные Исторические
Хранение По строкам По колонкам
Примеры PostgreSQL, MySQL ClickHouse, Greenplum

Смешивать режимы в одной базе — классическая ошибка: аналитический отчёт на боевой OLTP-базе съедает диск и память, из-за чего у пользователей отваливаются оформления заказов. Стандартное решение — выгружать данные в хранилище через ETL либо снимать отчёты с реплики.

Виды баз данных

  • Реляционные — данные в таблицах со строгой схемой, язык SQL.
  • Документные — JSON-подобные документы без общей схемы (MongoDB).
  • Key-value — словарь «ключ → значение» (Redis).
  • Колоночные — оптимизированы под аналитику (ClickHouse).
  • Time-series — метрики с меткой времени (InfluxDB).
  • Встраиваемые — база как один файл внутри приложения (SQLite).

Подробнее о разделении — в статье про реляционные и NoSQL БД.

Что нужно базе от инфраструктуры

БД почти всегда упирается в диск и память, а не в процессор. Практические ориентиры при выборе сервера:

  • Диск — NVMe SSD. Случайные чтения мелкими блоками — основной шаблон нагрузки; на HDD оно деградирует на порядки.
  • RAM больше рабочего набора. Если горячие данные помещаются в память, диск читается редко.
  • Резервное копированиедампы и журналы транзакций, обязательно с проверкой восстановления.
  • Репликация — вторая копия на другом сервере, чтобы отказ диска не был потерей данных.

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер