1b.app
Скопійоване посилання -

Вещает технический директор OneBox: Нормализация и денормализация баз данных

Вещает технический директор OneBox: Нормализация и денормализация баз данных

Ежедневно я задаю себе вопрос - зачем была придумана стандартизация Базы данных, если в большинстве случаев её применение приводит к плачевным последствиям в плане производительности . Очень часто разработчики при создании больших проектов стараются применять денормализацию и нормализацию к продукту который они делают, но делают это бездумно - что в подавляющем большинстве случаев приводит к не оптимальному использованию ресурсов.

Как правило если продумывать все шаги проектирования или создания модели данных, то использование нормализации даст свои плоды и хороший результат. Но не стоит бросаться в крайность и слепо следовать четким стандартам MySQL или другой СУБД.

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

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

Есть моменты в рабочей практике - когда клиенты задают вопросы - «Почему та или иная часть вашей БД не нормализована или не денормализована - это же критичная ошибка» - и у меня сразу появляются мысли о том что - как люди которые не знают приложение и его архитектуру - могут утверждать подобные вещи, ведь производительность добивается путем анализа под большой нагрузкой БД. Поэтому для себя я сделал вывод что идеальна та База данных в которой структура может выполнять наиболее частые или тяжелые запросы - максимально эффективно и экономично с точки зрения использования серверных ресурсов и такая БД не обязательно должна соответствовать нормальной форме.

Устименко Игорь