Базы данных
База данных (БД) — организованный набор данных, хранящийся так, чтобы его можно было быстро искать, изменять и защищать от потери.
Что такое база данных
База данных (БД, 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 больше рабочего набора. Если горячие данные помещаются в память, диск читается редко.
- Резервное копирование — дампы и журналы транзакций, обязательно с проверкой восстановления.
- Репликация — вторая копия на другом сервере, чтобы отказ диска не был потерей данных.
Связанные термины
- СУБД — программа, которая управляет базой данных
- SQL — язык запросов к реляционным базам
- Реляционные и NoSQL БД — основные модели данных
- Индексы в БД — почему поиск в базе быстрый
- Ключи в БД — как связаны таблицы
- DWH / хранилища данных — куда уходит аналитика
Готовы запустить GPU-задачу?
Запустить GPU-сервер