// Engineering Log
Базы данных: Часть 1 — Типы и назначение
Опубликовано 21.09.2026
// Быстрый маршрут
Эта статья относится к теме Серверы и инфраструктура.
База данных — это организованное хранилище информации, к которому приложение обращается, чтобы записывать, искать, изменять и удалять данные. Сервер баз данных (СУБД) — программа, которая управляет этим хранилищем: принимает запросы, следит за целостностью данных, разграничивает доступ и восстанавливает работу после сбоев.
Зачем нужна СУБД, если есть файлы и таблицы
Пока данных мало и с ними работает один человек, хватает таблицы Excel. Трудности начинаются, когда записей становятся тысячи, а пользователей — десятки:
- одновременная работа. Два менеджера меняют один заказ одновременно, и одно из изменений теряется;
- целостность. Заказ ссылается на клиента, которого уже удалили, или сумма списана со счёта, но не зачислена на другой;
- поиск. Найти нужную запись среди миллионов строк без индексов долго;
- доступ. Бухгалтеру нужны платежи, но не пароли пользователей;
- сбои. После отключения питания файл может остаться наполовину записанным.
СУБД решает эти задачи системно: у неё есть транзакции, индексы, права доступа и журнал изменений, по которому данные восстанавливаются после аварии.
Транзакции и ACID простыми словами
Транзакция — группа операций, которая выполняется целиком или не выполняется вовсе. Классический пример — перевод денег: списание с одного счёта и зачисление на другой должны пройти вместе. Надёжность транзакций описывают четыре свойства ACID:
- атомарность (Atomicity) — либо выполняются все операции транзакции, либо ни одна;
- согласованность (Consistency) — после транзакции данные удовлетворяют всем заданным правилам: ограничениям, внешним ключам, проверкам;
- изолированность (Isolation) — параллельные транзакции не видят промежуточных результатов друг друга; насколько строго — задаёт уровень изоляции;
- долговечность (Durability) — подтверждённая транзакция сохраняется даже при сбое сразу после подтверждения.
Многие распределённые NoSQL-системы жертвуют частью этих гарантий ради доступности и масштабирования. Такой подход называют BASE: система остаётся доступной, а согласованность между узлами достигается не мгновенно, а через некоторое время (eventual consistency). Для корзины интернет-магазина это приемлемо, для остатков на банковском счёте — нет.
Основные типы баз данных
Реляционные (SQL)
Данные хранятся в таблицах со строгой схемой: у каждого столбца свой тип, связи между таблицами задаются внешними ключами. Запросы пишутся на языке SQL, который позволяет объединять таблицы (JOIN), группировать и фильтровать данные.
- Когда подходят: учёт, CRM, интернет-магазины, биллинг — везде, где данные связаны между собой и важна их точность.
- Представители: PostgreSQL, MySQL и MariaDB, SQLite; из коммерческих — Oracle Database и Microsoft SQL Server.
Реляционная СУБД — разумный выбор по умолчанию. Современные PostgreSQL и MySQL умеют хранить и индексировать JSON, поэтому гибкие поля не обязательно выносить в отдельную базу.
Ключ-значение
Самая простая модель: по ключу хранится значение, и получить его можно только по ключу. Такие системы очень быстры, потому что обычно держат данные в оперативной памяти.
- Когда подходят: кеш, сессии пользователей, счётчики, очереди, ограничение частоты запросов.
- Представители: Redis и его свободный форк Valkey, Memcached.
Документные
Запись — это документ в формате JSON (или его двоичном варианте BSON) с произвольной вложенной структурой. Документы одной коллекции могут различаться набором полей.
- Когда подходят: каталоги товаров с разными характеристиками, контент, профили пользователей, данные, структура которых часто меняется.
- Представители: MongoDB, Couchbase.
Колоночные
Под этим названием скрываются два разных класса систем:
- аналитические колоночные СУБД хранят каждый столбец отдельно и сжимают его. Запрос вроде «сумма продаж по регионам за год» читает только два нужных столбца из сотен и выполняется за секунды на миллиардах строк. Представители — ClickHouse, Apache Druid;
- широкостолбцовые (wide-column) хранилища распределяют данные по множеству серверов и рассчитаны на огромные потоки записи. Представители — Apache Cassandra, ScyllaDB, HBase.
Временные ряды
Оптимизированы под данные с отметкой времени: метрики серверов, показания датчиков, котировки. Умеют сжимать такие данные, прореживать старые значения и быстро строить агрегаты за интервал.
- Представители: Prometheus и VictoriaMetrics (метрики мониторинга), InfluxDB, расширение TimescaleDB для PostgreSQL.
Графовые
Хранят сущности как узлы, а связи между ними — как рёбра. Эффективны там, где главное — сами связи: рекомендации, поиск мошеннических цепочек, социальные графы.
- Представители: Neo4j, Memgraph.
Как выбрать базу данных
| Задача | Разумный выбор |
|---|---|
| Сайт на CMS, интернет-магазин, CRM | PostgreSQL или MySQL/MariaDB — по требованию CMS |
| Мобильное или настольное приложение, небольшой сервис на одном сервере | SQLite |
| Кеш, сессии, очереди | Redis или Valkey |
| Разнородные документы с меняющейся структурой | PostgreSQL с JSONB; MongoDB — если документная модель действительно основная |
| Аналитика по большим объёмам событий | ClickHouse |
| Метрики мониторинга | Prometheus, VictoriaMetrics |
При выборе стоит проверить несколько вещей:
- Что поддерживает ваше приложение. WordPress работает с MySQL и MariaDB, «1С:Предприятие» — с PostgreSQL (в том числе в сборке Postgres Pro) и Microsoft SQL Server. Выбирать базу вопреки требованиям приложения не имеет смысла.
- Нужны ли транзакции. Если данные связаны с деньгами, остатками или документами, нужна СУБД с полноценным ACID.
- Как будет расти нагрузка. Большинство проектов годами живут на одном сервере с репликой для резервирования. Горизонтальное масштабирование (шардинг) усложняет эксплуатацию, и закладывать его заранее стоит только при реальной необходимости.
- Лицензия. Условия у популярных СУБД различаются: PostgreSQL распространяется под свободной лицензией, MySQL Community — под GPL, у MongoDB и Redis лицензии в последние годы менялись. Это важно, если вы собираетесь предоставлять базу как услугу.
- Кто будет её обслуживать. Резервные копии, обновления и мониторинг нужны любой СУБД. Если своего администратора нет, стоит рассмотреть управляемую базу данных у облачного провайдера.
Часто в одном проекте работает несколько баз: PostgreSQL хранит заказы, Redis — сессии и кеш, ClickHouse — аналитику. Это нормальная практика: каждая система решает свою задачу.
// Похожая задача
Если у вас похожая ситуация
Эта статья относится к одной из рабочих тем. Можно продолжить чтение по теме, перейти на главную, чтобы понять, чем я занимаюсь, или сразу открыть услуги.
Тема статьи
Серверы и инфраструктура
VPS, Linux, веб-стек, миграции, хостинг, базы данных и базовая эксплуатация.
Часто с этим приходят
- Перенести сайт или сервис на новый сервер
- Настроить Linux, Nginx, базу данных и бэкапы
- Разобраться, почему всё работает нестабильно
// Следующий шаг
Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.
Открыть услуги// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related