// 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, интернет-магазин, CRMPostgreSQL или MySQL/MariaDB — по требованию CMS
Мобильное или настольное приложение, небольшой сервис на одном сервереSQLite
Кеш, сессии, очередиRedis или Valkey
Разнородные документы с меняющейся структуройPostgreSQL с JSONB; MongoDB — если документная модель действительно основная
Аналитика по большим объёмам событийClickHouse
Метрики мониторингаPrometheus, VictoriaMetrics

При выборе стоит проверить несколько вещей:

  1. Что поддерживает ваше приложение. WordPress работает с MySQL и MariaDB, «1С:Предприятие» — с PostgreSQL (в том числе в сборке Postgres Pro) и Microsoft SQL Server. Выбирать базу вопреки требованиям приложения не имеет смысла.
  2. Нужны ли транзакции. Если данные связаны с деньгами, остатками или документами, нужна СУБД с полноценным ACID.
  3. Как будет расти нагрузка. Большинство проектов годами живут на одном сервере с репликой для резервирования. Горизонтальное масштабирование (шардинг) усложняет эксплуатацию, и закладывать его заранее стоит только при реальной необходимости.
  4. Лицензия. Условия у популярных СУБД различаются: PostgreSQL распространяется под свободной лицензией, MySQL Community — под GPL, у MongoDB и Redis лицензии в последние годы менялись. Это важно, если вы собираетесь предоставлять базу как услугу.
  5. Кто будет её обслуживать. Резервные копии, обновления и мониторинг нужны любой СУБД. Если своего администратора нет, стоит рассмотреть управляемую базу данных у облачного провайдера.

Часто в одном проекте работает несколько баз: PostgreSQL хранит заказы, Redis — сессии и кеш, ClickHouse — аналитику. Это нормальная практика: каждая система решает свою задачу.

// Похожая задача

Если у вас похожая ситуация

Эта статья относится к одной из рабочих тем. Можно продолжить чтение по теме, перейти на главную, чтобы понять, чем я занимаюсь, или сразу открыть услуги.

Тема статьи

Серверы и инфраструктура

VPS, Linux, веб-стек, миграции, хостинг, базы данных и базовая эксплуатация.

Часто с этим приходят

  • Перенести сайт или сервис на новый сервер
  • Настроить Linux, Nginx, базу данных и бэкапы
  • Разобраться, почему всё работает нестабильно

// Следующий шаг

Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.

Открыть услуги

// Contact

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Написать в Telegram

Отвечаю в течение рабочего дня (03:00–13:00 GMT)

Или оставьте заявку здесь:

Подтвердите, что вы не бот.

Написать и получить быстрый ответ