Введение
Стратегия, применяемая к ранее нормализованным базам данных. Денормализация — это стратегия, используемая для повышения производительности уже нормализованной базы данных. В информатике денормализация — это процесс, направленный на улучшение скорости чтения данных в базе данных за счет некоторой потери скорости записи, путем добавления избыточных копий данных или их группировки. Она часто обусловлена требованиями к производительности или масштабируемости в системах управления реляционными базами данных, которым необходимо выполнять очень большое количество операций чтения. Денормализация отличается от ненормализованной формы тем, что преимущества денормализации могут быть полностью реализованы только при работе с моделью данных, которая в остальном является нормализованной.
Denormalization is a strategy used on a previously normalized database to increase performance. In computing, denormalization is the process of trying to improve the read performance of a database, at the expense of losing some write performance, by adding redundant copies of data or by grouping data. It is often motivated by performance or scalability in relational database software needing to carry out very large numbers of read operations. Denormalization differs from the unnormalized form in that denormalization benefits can only be fully realized on a data model that is otherwise normalized.
Реализация
Нормализованная схема проектирования часто "хранит" различные, но взаимосвязанные фрагменты информации в отдельных логических таблицах (называемых отношениями). Если эти отношения физически хранятся как отдельные файлы на диске, выполнение запроса к базе данных, извлекающего информацию из нескольких отношений (операция соединения), может быть медленным. Если соединяется большое количество отношений, это может оказаться недопустимо медленным. Существует два подхода к решению этой проблемы.
Поддержка СУБД
Один из методов заключается в поддержании нормализованной логической структуры, но разрешить системе управления базами данных (СУБД) хранить дополнительную избыточную информацию на диске для оптимизации времени отклика запросов. В этом случае ответственность за обеспечение согласованности любых избыточных копий лежит на программном обеспечении СУБД. Этот метод часто реализуется в SQL в виде индексированных представлений (Microsoft SQL Server) или материализованных представлений (Oracle, PostgreSQL). Представление может, в частности, представлять информацию в формате, удобном для запросов, а индекс обеспечивает физическую оптимизацию запросов к этому представлению.
Внедрение DBA
Другой подход — денормализация логической модели данных. При аккуратном подходе это может обеспечить сопоставимое улучшение времени отклика запросов, но за определенную цену: теперь на разработчика базы данных ложится ответственность за обеспечение согласованности денормализованной базы данных. Это достигается путем создания правил в базе данных, называемых ограничениями, которые определяют, как поддерживать синхронизацию избыточных копий информации, что может легко свести на нет всю процедуру денормализации. Увеличение логической сложности модели данных и дополнительная сложность, связанная с этими ограничениями, делают этот подход рискованным. Более того, ограничения подразумевают компромисс: они ускоряют чтение (SELECT в SQL), но замедляют запись (INSERT, UPDATE и DELETE). Это означает, что денормализованная база данных при высокой нагрузке на запись может демонстрировать более низкую производительность, чем ее функционально эквивалентный нормализованный аналог.