Проектирование баз данных

Данные должны работать быстро. И надёжно.

Архитектура, оптимизация и развитие баз данных для корпоративных информационных систем.

  • PostgreSQL
  • MS SQL
  • MySQL
commerce / data model Связи 1 : N
customers
  • PK id bigint
  • name text
  • email text
orders
  • PK id bigint
  • FK customer_id bigint
  • created_at timestamp
products
  • PK id bigint
  • sku text
  • name text
order_items
  • PK id bigint
  • FK order_id bigint
  • FK product_id bigint
  • quantity integer
PK первичный ключ FK внешний ключ
Пример модели: клиент → заказы → позиции заказа ← товары. Внешние ключи связывают сущности; количество хранится в позиции заказа.

Производительность

Находим причину задержек.
Меняем то, что влияет на работу.

Долгий отчёт, зависший поиск и очередь транзакций могут иметь разные причины. Начинаем с измерений, чтобы связать технические изменения с конкретной задачей бизнеса.

  • Медленный поиск
  • Блокировки
  • Тяжёлые отчёты

До · пример плана

Запрос читает лишние строки

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

  1. 01 Limit
  2. 02 Sort: created_at DESC
  3. 03 Seq Scan · Filter: customer_id = 42

Время выполнения запроса

Начало серииКонец серии
Условная шкала. Фактическое время и план зависят от данных, статистики, сервера и конкурентной нагрузки.

Показан учебный пример запроса последних заказов клиента, без процентов ускорения и замеров реального проекта. Результат оцениваем на согласованном наборе запросов.

Архитектура и миграции

Схема, которая выдерживает изменения.

Переводим бизнес-правила в понятную модель: сущности, связи, типы, ограничения и жизненный цикл данных. Нормализация помогает управлять целостностью; осознанную денормализацию рассматриваем для подтверждённых задач чтения.

  • Фиксируем, где находится источник достоверных данных и кто отвечает за изменения.
  • Проверяем типы, ограничения и совместимость запросов при переходе между СУБД.
  • Согласуем окно переключения, критерии сверки и план возврата.

Переход под контролем

Перенос — это больше,
чем копирование таблиц.

  1. 01

    Исходная система

    Схема, объём, зависимости и процедуры.

  2. 02

    Пробный перенос

    Преобразование типов, сверка записей и тесты приложения.

  3. 03

    Переключение

    Согласованное окно, контроль целостности и наблюдение.

PostgreSQL · MS SQL · MySQL
Маршрут и ограничения определяем после обследования.

Основа надёжной эксплуатации

Быстродействие — часть целой системы.

Индексы и SQL

Изучаем планы запросов, статистику и селективность. Сопоставляем выигрыш при чтении с расходами на запись, хранение и обслуживание индексов.

Транзакции

Определяем границы операций, уровни изоляции и порядок изменений. Разбираем блокировки и конфликты, сохраняя согласованность данных.

Резервные копии

Проектируем расписание, хранение и контроль копий. Согласуем допустимую потерю данных и время восстановления, проверяем восстановление на стенде.

Права доступа

Разделяем роли приложения, аналитиков и администраторов. Ограничиваем привилегии и фиксируем значимые изменения в журналах.

Как проходит аудит

От наблюдений к плану изменений.

  1. 01

    Контекст и нагрузка

    Собираем проблемные сценарии, требования приложения и ограничения доступа. Выбираем безопасный способ обследования.

  2. 02

    Диагностика

    Изучаем структуру, планы SQL, блокировки, использование ресурсов и резервное копирование.

  3. 03

    Проверка гипотез

    Проверяем изменения на стенде или в согласованном контуре. Сравниваем результаты на одинаковых условиях.

  4. 04

    Внедрение и передача

    Проводим изменения по плану, наблюдаем за нагрузкой и передаём схему, рекомендации и инструкции.

Детали проекта

Ответы на важные вопросы

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

Дайте вашим данным
продуманную основу.

Расскажите, что нужно ускорить, спроектировать или перенести. Определим границы задачи и начнём с обследования.

Напишите нам на — мы рассмотрим ваш запрос и свяжемся с вами для обсуждения деталей.