Проектирование баз данных
Данные должны работать быстро. И надёжно.
Архитектура, оптимизация и развитие баз данных для корпоративных информационных систем.
- PK
idbigint -
nametext -
emailtext
- PK
idbigint - FK
customer_idbigint -
created_attimestamp
- PK
idbigint -
skutext -
nametext
- PK
idbigint - FK
order_idbigint - FK
product_idbigint -
quantityinteger
Производительность
Находим причину задержек.
Меняем то, что влияет на работу.
Долгий отчёт, зависший поиск и очередь транзакций могут иметь разные причины. Начинаем с измерений, чтобы связать технические изменения с конкретной задачей бизнеса.
- Медленный поиск
- Блокировки
- Тяжёлые отчёты
До · пример плана
Запрос читает лишние строки
Для выборки последних заказов клиента база может просматривать таблицу и отдельно сортировать результат. Находим причину по плану выполнения и профилю нагрузки.
- 01
Limit - 02
Sort: created_at DESC - 03
Seq Scan · Filter: customer_id = 42
Время выполнения запроса
После · пример плана
Индекс соответствует запросу
Составной B-tree индекс по customer_id и created_at позволяет выбирать подходящие записи в нужном порядке. Проверяем, использует ли его планировщик на ваших данных.
- 01
Limit - 02
Index Scan - 03
Index Cond: customer_id = 42
Время выполнения запроса
Показан учебный пример запроса последних заказов клиента, без процентов ускорения и замеров реального проекта. Результат оцениваем на согласованном наборе запросов.
Архитектура и миграции
Схема, которая выдерживает изменения.
Переводим бизнес-правила в понятную модель: сущности, связи, типы, ограничения и жизненный цикл данных. Нормализация помогает управлять целостностью; осознанную денормализацию рассматриваем для подтверждённых задач чтения.
- Фиксируем, где находится источник достоверных данных и кто отвечает за изменения.
- Проверяем типы, ограничения и совместимость запросов при переходе между СУБД.
- Согласуем окно переключения, критерии сверки и план возврата.
Переход под контролем
Перенос — это больше,
чем копирование таблиц.
- 01
Исходная система
Схема, объём, зависимости и процедуры.
- 02
Пробный перенос
Преобразование типов, сверка записей и тесты приложения.
- 03
Переключение
Согласованное окно, контроль целостности и наблюдение.
PostgreSQL · MS SQL · MySQL
Маршрут и ограничения определяем после обследования.
Основа надёжной эксплуатации
Быстродействие — часть целой системы.
Индексы и SQL
Изучаем планы запросов, статистику и селективность. Сопоставляем выигрыш при чтении с расходами на запись, хранение и обслуживание индексов.
Транзакции
Определяем границы операций, уровни изоляции и порядок изменений. Разбираем блокировки и конфликты, сохраняя согласованность данных.
Резервные копии
Проектируем расписание, хранение и контроль копий. Согласуем допустимую потерю данных и время восстановления, проверяем восстановление на стенде.
Права доступа
Разделяем роли приложения, аналитиков и администраторов. Ограничиваем привилегии и фиксируем значимые изменения в журналах.
Как проходит аудит
От наблюдений к плану изменений.
- 01
Контекст и нагрузка
Собираем проблемные сценарии, требования приложения и ограничения доступа. Выбираем безопасный способ обследования.
- 02
Диагностика
Изучаем структуру, планы SQL, блокировки, использование ресурсов и резервное копирование.
- 03
Проверка гипотез
Проверяем изменения на стенде или в согласованном контуре. Сравниваем результаты на одинаковых условиях.
- 04
Внедрение и передача
Проводим изменения по плану, наблюдаем за нагрузкой и передаём схему, рекомендации и инструкции.
Детали проекта
Ответы на важные вопросы
Следующий шаг
Дайте вашим данным
продуманную основу.
Расскажите, что нужно ускорить, спроектировать или перенести. Определим границы задачи и начнём с обследования.
Напишите нам на service@system-pro.net — мы рассмотрим ваш запрос и свяжемся с вами для обсуждения деталей.