Денормализация - Denormalization

Денормализация это стратегия, используемая на ранее -нормализованный база данных для повышения производительности. В вычисление, денормализация - это попытка улучшить производительность чтения база данных, за счет потери некоторой производительности записи, добавив избыточный копии данных или путем группировки данных.[1][2] Часто мотивируется спектакль или же масштабируемость в реляционный программное обеспечение базы данных необходимость выполнения очень большого количества операций чтения. Денормализация отличается от ненормализованная форма в том, что преимущества денормализации могут быть полностью реализованы только на модели данных, которая в противном случае нормализована.

Выполнение

А нормализованный дизайн часто «хранит» разные, но связанные части информации в отдельных логических таблицах (называемых отношениями). Если эти отношения физически хранятся в виде отдельных файлов на диске, создание базы данных запрос который извлекает информацию из нескольких отношений ( присоединиться к операции ) может быть медленным. Если соединяется много отношений, это может быть чрезмерно медленным. Есть два способа справиться с этим.

Поддержка СУБД

Один из способов - сохранить нормализованный логический дизайн, но разрешить система управления базами данных (СУБД) для хранения дополнительной избыточной информации на диске для оптимизации ответа на запрос. В этом случае ответственность за обеспечение согласованности любых избыточных копий лежит на программном обеспечении СУБД. Этот метод часто реализуется в SQL как проиндексированные представления (Microsoft SQL Server ) или же материализованные представления (Oracle, PostgreSQL ). Представление может, среди прочего, представлять информацию в формате, удобном для запросов, а индекс гарантирует, что запросы к представлению оптимизированы физически.

Реализация DBA

Другой подход - денормализовать логический дизайн данных. При осторожном подходе можно добиться аналогичного улучшения ответа на запрос, но за счет затрат - теперь разработчик базы данных несет ответственность за то, чтобы денормализованная база данных не стала противоречивой. Это делается путем создания правил в базе данных под названием ограничения, которые определяют, как следует поддерживать синхронизацию избыточных копий информации, что может легко сделать процедуру денормализации бессмысленной. Это увеличение логического сложность структуры базы данных и дополнительной сложности из-за дополнительных ограничений, которые делают этот подход опасным. Кроме того, ограничения вводят компромисс, ускорение чтения (ВЫБРАТЬ в SQL) при замедлении записи (ВСТАВЛЯТЬ, ОБНОВИТЬ, и УДАЛИТЬ). Это означает, что денормализованная база данных при большой нагрузке записи может предложить хуже производительности, чем его функционально эквивалентный нормализованный аналог.

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

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

Примеры методов денормализации включают:

  • «Сохранение» количества элементов «многие» в отношении «один ко многим» в качестве атрибута отношения «один»
  • Добавление атрибутов в отношение из другого отношения, с которым оно будет соединено
  • Звездные схемы, которые также известны как модели измерения фактов и были расширены на схемы снежинок
  • Готовое резюме или Кубы OLAP

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

Смотрите также

Рекомендации

  1. ^ Г. Л. Сандерс и С. К. Шин. Влияние денормализации на производительность СУБД. В материалах конференции HICSS, январь 2001 г.
  2. ^ С. К. Шин и Г. Л. Сандерс. Стратегии денормализации для извлечения данных из хранилищ данных. Системы поддержки принятия решений, 42 (1): 267-282, октябрь 2006 г.