Базы данных, которые не тормозят и не теряют данные

Проектируем схему, настраиваем индексы, репликацию и шардирование. PostgreSQL, MongoDB, Redis, ClickHouse — под ваши задачи и нагрузки.

Когда база данных становится узким местом

База тормозит — тормозит всё приложение

Медленные запросы

Страница грузится 5 секунд, потому что SELECT без индекса сканирует миллион строк.

Данные растут, запросы тормозят всё сильнее

То, что работало мгновенно год назад, сейчас — 10 секунд. База не масштабируется.

Потеря данных при сбое

Упал сервер с единственной БД — всё. Резервные копии не настроены или устарели.

Нагрузка на запись убивает чтение

Клиенты жалуются, что сайт тормозит. А у вас просто отчёты считаются и блокируют таблицы.

Миграции ломают прод

Добавили колонку — всё упало. Потому что миграции тестировали непонятно где.

Нет понимания, что происходит

Кто делает тяжёлые запросы? Какие таблицы раздулись? Почему кэш не помогает? Без мониторинга — гадание.

Какие базы данных мы используем и зачем

Нет «лучшей БД». Есть подходящая под задачу

01

PostgreSQL — надёжность и ACID

Классические реляционные данные. Транзакции, внешние ключи, сложные JOIN. Банки, ERP, CRM, интернет-магазины.
02

PostgreSQL — расширяемость

JSONB, полнотекстовый поиск, географические запросы (PostGIS). Одна БД вместо нескольких.
03

MongoDB — гибкая схема

Документная БД. Меняете структуру данных без миграций. Прототипы, каталоги, логи, контент.
04

MongoDB — горизонтальное масштабирование

Шардирование из коробки. Данные не помещаются на один сервер? MongoDB размажет их по кластеру.
05

Redis — скорость

Данные в оперативной памяти. Кэш, сессии, очереди, счётчики, лидерборды. Микросекундные ответы.
06

ClickHouse — аналитика

Колоночная БД для OLAP. Миллиарды строк. Группировки, агрегации, дашборды. Ответы за секунды, а не минуты.

База тормозит, но вы не знаете, с чего начать?

Медленные запросы, блокировки, растущие таблицы — с этим сталкивается каждый проект рано или поздно.
Пришлите описание: какая БД, сколько данных, какие запросы самые тяжёлые. Мы проанализируем и скажем, где узкое место: индексы, схема, железо или архитектура.

Этапы работы с базой данных

Как мы проектируем и сопровождаем базы данных

01

Анализ требований

от 2–4 дней

Собираем информацию о данных: структура, объёмы, типы

Оцениваем нагрузку: сколько запросов в секунду, чтение или запись преобладает

Выясняем требования к транзакциям (ACID), консистентности, доступности

Узнаём, нужны ли сложные выборки, полнотекстовый поиск, геоданные

Результат:

Документ с требованиями: объёмы данных, профиль нагрузки (OLTP / OLAP), требования к ACID и доступности

Ответственные:

Аналитик , Архитектор БД.

02

Выбор типа БД

от 1–2 дней

На основе требований выбираем тип БД:

PostgreSQL — транзакции, сложные запросы, надёжность

MongoDB — гибкая схема, быстрые прототипы, горизонтальное масштабирование

ClickHouse — аналитика, миллиарды строк, агрегации

Redis — скорость, кэш, сессии, очереди

При необходимости комбинируем несколько БД в одном проекте

Результат:

Выбран и утверждён тип (или типы) базы данных под конкретные задачи проекта

Ответственные:

Архитектор БД, Технический лид.

03

Проектирование схемы

от 3–7 дней

Проектируем таблицы / коллекции, колонки, типы данных

Определяем связи (один-ко-многим, многие-ко-многим)

Закладываем первичные, внешние и составные ключи

Добавляем индексы под частые запросы

Настраиваем ограничения (NOT NULL, UNIQUE, CHECK)

Результат:

ER-диаграмма (схема данных) и SQL/NoSQL скрипты для создания схемы

Ответственные:

Архитектор БД, Backend-разработчик.

04

Настройка инфраструктуры

от 2–5 дней

Разворачиваем сервер БД (on-premise или облако)

Настраиваем репликацию (master-slave / master-master)

Настраиваем автоматические резервные копии (полные + инкрементальные)

Настраиваем мониторинг (Prometheus + Grafana, slow query log)

Конфигурируем connection pool (минимум / максимум соединений)

Тюним параметры БД под нагрузку (shared_buffers, work_mem и т.д.)

Результат:

Рабочий кластер БД с репликацией, бэкапами, мониторингом и оптимальными параметрами

Ответственные:

DevOps инженер, Администратор БД.

05

Оптимизация запросов

Включаем slow query log, находим самые тяжёлые запросы

Анализируем план выполнения через EXPLAIN

Добавляем недостающие индексы

Переписываем неоптимальные SELECT (убираем SELECT *, добавляем JOIN вместо подзапросов)

Денормализуем там, где это оправдано

06

Сопровождение и масштабирование

постоянно

Мониторим производительность ежедневно

Периодически обновляем версии СУБД (с тестированием)

Регулярно проверяем восстановление из бэкапов

При росте данных — добавляем реплики на чтение

Когда данных слишком много для одного сервера — внедряем шардирование

При изменении нагрузки — пересматриваем параметры и индексы

Результат:

База данных работает стабильно годами. Данные не теряются. Нагрузка не убивает производительность

Ответственные:

Администратор БД, DevOps инженер.

Почему базы данных часто становятся проблемой

Как делают «для галочки»

Как делаем мы

Индексы на все колонки подряд. INSERT тормозит, SELECT не ускорился

Анализируем реальные запросы. Ставим индексы только там, где они действительно нужны

Миграции — вручную на проде. «Ой, что-то пошло не так»

Миграции кодом, через CI/CD. Откат за минуту. Тестируем на копии прода

Нет мониторинга. Узнаём о проблеме от клиента

Slow query log + Prometheus + Grafana. Увидели проблему до того, как клиент заметил

Один мастер на всё. Нагрузка на чтение убивает запись

Master-replica. Чтение — на реплики. Запись — на мастер. Нагрузка распределена

Бэкап раз в сутки. Последний час данных потеряли

Автоматические бэкапы каждые 15 минут + WAL архивация. Point-in-time recovery

Данные растут, запросы тормозят. Никто не знает, что делать

Анализируем, предлагаем решение: шардирование, партиционирование, смена типа БД

Connection pool не настроен. 1000 подключений — БД легла

Настроили pool: min=10, max=50. БД дышит свободно

Расскажите о данных — предложим архитектуру БД

Пришлите описание: какая БД сейчас, сколько данных, какие запросы самые тяжёлые, какие проблемы беспокоят.
Мы проанализируем и предложим: индексы, оптимизацию, репликацию, шардирование или полную смену типа БД.

Наши кейсы

Наши клиенты

Логотип компании Федеральная служба по контролю за алкогольным и табачным рынками Логотип компании РИТ групп Логотип компании Sopytka Логотип компании Аксиоматика Логотип компании NETSOFT Логотип компании UNIVEF Логотип компании ГИЛС Логотип компании МГЮА Логотип компании ФССП России Логотип компании Центринформ Логотип компании Азбука вкуса Логотип компании АИС «Выпускник» Логотип компании Ай-Теко Логотип компании Inline Логотип компании АЮРО Логотип компании ВентЭйт Логотип компании ТехникаПРО Логотип компании Млесна
Логотип компании Млесна Логотип компании ТехникаПРО Логотип компании ВентЭйт Логотип компании АЮРО Логотип компании Inline Логотип компании Ай-Теко Логотип компании АИС «Выпускник» Логотип компании Азбука вкуса Логотип компании Центринформ Логотип компании ФССП России Логотип компании МГЮА Логотип компании ГИЛС Логотип компании UNIVEF Логотип компании NETSOFT Логотип компании Аксиоматика Логотип компании Sopytka Логотип компании РИТ групп Логотип компании Федеральная служба по контролю за алкогольным и табачным рынками

Наша команда

G-lab - Павел

Павел

Генеральный директор, архитектор

G-lab - Владимир

Владимир

Заместитель генерального директора по тех. вопросам, руководитель отдела Back-end разработки

G-lab - Александр

Александр

Руководитель отдела фронтенд разработки

G-lab - Анна

Анна

Руководитель отдела разработки CRM и веб систем

G-lab - Катерина

Катерина

Ведущий специалист по внедрению СЭД

G-lab - Валерий

Валерий

Ведущий Java разработчик, DevOps

G-lab - Павел

Павел

Ведущий разработчик веб систем

G-lab - Елена

Елена

Ведущий Front-end разработчик

G-lab - Наталья

Наталья

Ведущий эксперт по пользовательским интерфейсам и дизайну

G-lab - Максим

Максим

Старший аналитик

G-lab - Татьяна

Татьяна

Главный бухгалтер

G-lab - Валентина

Валентина

Специалист по сопровождению контрактов

Выбирайте партнёра, которому доверяют лидеры

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

Отзывы о нас

Свяжитесь с нами — обсудим вашу задачу

Оставьте контакты, и наш специалист предложит оптимальное решение под вашу структуру, регламенты и сроки. Без лишних звонков и общих презентаций.