Введение

Стратегия, применяемая к ранее нормализованным базам данных. Денормализация — это стратегия, используемая для повышения производительности уже нормализованной базы данных. В информатике денормализация — это процесс, направленный на улучшение скорости чтения данных в базе данных за счет некоторой потери скорости записи, путем добавления избыточных копий данных или их группировки. Она часто обусловлена требованиями к производительности или масштабируемости в системах управления реляционными базами данных, которым необходимо выполнять очень большое количество операций чтения. Денормализация отличается от ненормализованной формы тем, что преимущества денормализации могут быть полностью реализованы только при работе с моделью данных, которая в остальном является нормализованной.

Реализация

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

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

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

Внедрение DBA

Другой подход — денормализация логической модели данных. При аккуратном подходе это может обеспечить сопоставимое улучшение времени отклика запросов, но за определенную цену: теперь на разработчика базы данных ложится ответственность за обеспечение согласованности денормализованной базы данных. Это достигается путем создания правил в базе данных, называемых ограничениями, которые определяют, как поддерживать синхронизацию избыточных копий информации, что может легко свести на нет всю процедуру денормализации. Увеличение логической сложности модели данных и дополнительная сложность, связанная с этими ограничениями, делают этот подход рискованным. Более того, ограничения подразумевают компромисс: они ускоряют чтение (SELECT в SQL), но замедляют запись (INSERT, UPDATE и DELETE). Это означает, что денормализованная база данных при высокой нагрузке на запись может демонстрировать более низкую производительность, чем ее функционально эквивалентный нормализованный аналог.