TGViewer
Системный Аналитик Системный Аналитик @sys_sa · 19.1K subscribers
Post #363 17.1K
✨ Денормализация в БД и не только

Ранее мы рассказывали про нормализацию в БД, рассмотрим обратный процесс.

Денормализация — внесение избыточности в БД путём объединения таблиц, чтобы упростить структуру и ускорить чтения данных

Отличие от нормализации

Нормализация нужна для устранения избыточности данных; для разделения информации по отдельным таблицам, чтобы обеспечать целостность и упростить обслуживания БД
😀Увеличивает количество джойнов при выполнении запросов и может замедлять чтение данных

Денормализация
, наоборот, вводит избыточность обратно в БД, объединяя таблицы и дублируя информацию
😀Запросы становятся проще, операции чтения быстрее. Но могут возникнуть трудности с поддержкой и обновлением из-за риска несогласованности


✨ Когда применяется

😀для ускорения чтения данных за счет сокращения количества джойнов
😀в системах с большим объемом операций чтения и минимальным количеством обновлений, где производительность чтения критична
😀для ускорения разработки и оптимизации работы приложений

✨ Методы

😀 Добавление избыточных данных: дублирование данных в нескольких таблицах для сокращения соединений при запросах
😀 Добавление производных или агрегированных столбцов: включение полей с предварительно вычисленными значениями, например, общей суммы заказа.
😀 Объединение таблиц: слияние смежных таблиц в одну для уменьшения операций соединения
😀 Денормализация иерархических структур: дублирование информации о верхних уровнях иерархии на нижних для упрощения запросов
😀 Использование материализованных представлений: хранение результатов сложных запросов в виде отдельной таблицы для быстрого доступа
😀 Введение таблиц сумм и счётчиков: создание отдельных таблиц для хранения суммарной информации, например, общее количество товаров, проданных за день, или общее количество посетителей сайта. Позволяет избежать необходимости агрегации больших объёмов данных при каждом запросе

✨ Примеры

😀Агрегация данных: в таблице заказов хранится не только идентификатор клиента, но и агрегированная информация о клиенте, например, общая сумма покупок. Это избавляет от необходимости соединять таблицы заказов и клиентов для расчета общих покупок клиента
😀Кэширование результатов запросов: в таблице с продуктами может храниться не только информация о продукте, но и предварительно рассчитанное количество продуктов на складе. Это снижает нагрузку на СУБД за счет уменьшения количества вычислений при каждом запросе

✨ Недостатки

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

✨ Совет

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


✨ Денормализация в других областях

😀Data Warehouse: улучшает производительность аналитических запросов через агрегированные структуры данных для быстрого выполнения запросов OLAP
😀NoSQL базы данных: для оптимизации горизонтального масштабирования и ускорения доступа к данным, храня связанные данные вместе
😀Frontend-разработка: при проектировании состояния приложений, например в Redux для React, для упрощения доступа к данным и улучшения производительности
😀Микросервисы: улучшает независимость и отказоустойчивость сервисов, храня данные, необходимые каждому микросервису в его собственной базе


⭐️ Подборки материалов по этой и другим темам доступны в
базе знаний по системному анализу

#бд
  • 👍 36
  • ❤ 7
  • 🔥 6
  • 👏 2
More from @sys_sa
  1. Sep 26, 2026Как облегчить работу ИТ-аналитика уже сейчас — без долгосрочных перестроек процессов? Обсу…
  2. Sep 24, 2026️️️️️️️️📚Курс: «Системный аналитик. Экспертный уровень». За 146 часов обучения получите а…
  3. Aug 28, 2026❓ ICAM (Incident Cause Analysis Method) ICAM (Incident Cause Analysis Method) — метод разб…
  4. Aug 19, 2026🖥 NewSQL NewSQL — класс реляционных СУБД, который совмещает привычный SQL и строгие ACID…
  5. Jul 14, 2026🔼 Server Driven UI (SDUI) Server Driven UI (SDUI) — архитектурный подход, при котором сер…
  6. Jul 7, 2026📊 Сравнение Баз данных и Хранилищ данных ▫️База данных – оперативное хранилище, где содер…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →