Денормализация в базах данных

Опубликовано: 18 Августа, 2021

Денормализация - это метод оптимизации базы данных, при котором мы добавляем избыточные данные в одну или несколько таблиц. Это может помочь нам избежать дорогостоящих объединений в реляционной базе данных. Обратите внимание, что денормализация не означает отказ от нормализации. Это метод оптимизации, который применяется после нормализации.

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

Например, в нормализованной базе данных у нас может быть таблица курсов и таблица учителей. В каждой записи в Courses будет храниться учитель ID для курса, но не учительName. Когда нам нужно получить список всех курсов с именем Учителя, мы должны выполнить соединение между этими двумя таблицами.

В некотором смысле это здорово; если учитель меняет свое имя, нам нужно обновить имя только в одном месте.
Недостатком является то, что если таблицы большие, мы можем потратить излишне много времени на объединение таблиц.
Таким образом, денормализация приводит к другому компромиссу. При денормализации мы решаем, что у нас все в порядке с некоторой избыточностью и некоторыми дополнительными усилиями по обновлению базы данных, чтобы получить преимущества эффективности от меньшего количества соединений.

Плюсы денормализации: -

  1. Получение данных происходит быстрее, так как мы делаем меньше соединений
  2. Запросы для получения могут быть проще (и, следовательно, с меньшей вероятностью будут содержать ошибки),
    поскольку нам нужно смотреть меньше таблиц.

Минусы денормализации: -

  1. Обновления и вставки дороже.
  2. Денормализация может затруднить написание обновления и вставки кода.
  3. Данные могут быть противоречивыми. Какое «правильное» значение для фрагмента данных?
  4. Избыточность данных требует большего объема хранилища.

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