Денормализация в базах данных
Денормализация - это метод оптимизации базы данных, при котором мы добавляем избыточные данные в одну или несколько таблиц. Это может помочь нам избежать дорогостоящих объединений в реляционной базе данных. Обратите внимание, что денормализация не означает отказ от нормализации. Это метод оптимизации, который применяется после нормализации.
В традиционной нормализованной базе данных мы храним данные в отдельных логических таблицах и пытаемся минимизировать избыточные данные. Мы можем стремиться иметь только одну копию каждой части данных в базе данных.
Например, в нормализованной базе данных у нас может быть таблица курсов и таблица учителей. В каждой записи в Courses будет храниться учитель ID для курса, но не учительName. Когда нам нужно получить список всех курсов с именем Учителя, мы должны выполнить соединение между этими двумя таблицами.
В некотором смысле это здорово; если учитель меняет свое имя, нам нужно обновить имя только в одном месте.
Недостатком является то, что если таблицы большие, мы можем потратить излишне много времени на объединение таблиц.
Таким образом, денормализация приводит к другому компромиссу. При денормализации мы решаем, что у нас все в порядке с некоторой избыточностью и некоторыми дополнительными усилиями по обновлению базы данных, чтобы получить преимущества эффективности от меньшего количества соединений.
Плюсы денормализации: -
- Получение данных происходит быстрее, так как мы делаем меньше соединений
- Запросы для получения могут быть проще (и, следовательно, с меньшей вероятностью будут содержать ошибки),
поскольку нам нужно смотреть меньше таблиц.
Минусы денормализации: -
- Обновления и вставки дороже.
- Денормализация может затруднить написание обновления и вставки кода.
- Данные могут быть противоречивыми. Какое «правильное» значение для фрагмента данных?
- Избыточность данных требует большего объема хранилища.
В системе, которая требует масштабируемости, как и в любой крупной технологической компании, мы почти всегда используем элементы как нормализованных, так и денормализованных баз данных.