Каково влияние ресурса от нормализации базы данных?

Первое хорошее объяснение шаблонов разработки UI, которые я прочитал, было в блоге Jeremy Miller - Здание Ваш Собственный CAB. Это описывает общие шаблоны - Пассивное Представление, MVP, и т.д. и обращается к некоторым способам, которыми Вы могли бы реализовать их в C#.

5
задан cdeszaq 4 September 2009 в 14:35
поделиться

8 ответов

Silverlight 2.0 не поддерживает изображения TIFF в соответствии с this .

Однако в статье, как я полагаю, объясняется способ преобразования изображения TIFF в JPEG или png (который поддерживается Silverlight). Однако вам придется выполнять эту обработку на стороне сервера.

поскольку разработчикам может потребоваться составить более сложные запросы (но, с другой стороны, вам потребуется меньше усилий при разработке для поддержания целостности данных)

Так что единственный реальный ответ - обычный: это зависит;)

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


Edit: Что касается конкретного контекста, добавленного cdeszaq, я бы сказал: «Удачи вам в разъяснении»;)

Очевидно, с более чем 300 таблицами и без ограничений (!), Ответ на ваш вопрос определенно " нормализация снизит потребность в ресурсах на всех уровнях »(и, вероятно, очень существенно), но:

Рефакторинг такого беспорядка будет серьезным мероприятием . Если только одно приложение использует эту базу данных, это уже ужасно - если их много, это может стать кошмаром!

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

Не игнорируйте, что это работающая система - даже если она уродливая и ужасная,

13
ответ дан 18 December 2019 в 05:44
поделиться

«Нормализация» применяется только и исключительно к логическому проекту базы данных.

Логический дизайн базы данных и физический дизайн базы данных - это две совершенно разные вещи. Теория баз данных всегда предполагала, что все будет именно так. Тот факт, что разработчики, которые игнорируют / игнорируют это различие (по незнанию, по небрежности, по лени или по любой другой так называемой, но недействительной «причине»), составляют подавляющее большинство, не делает их правыми.

Можно сказать, что логический проект нормализован или нет, но логический дизайн по своей сути не несет каких-либо «характеристик производительности» вообще. Так же, как 'c: = c + 1;' не несет никаких эксплуатационных характеристик.

6
ответ дан 18 December 2019 в 05:44
поделиться

На ваш вопрос есть очень простой ответ: это зависит.

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

Мой совет по денормализации: делайте это только тогда, когда это действительно больно, и убедитесь, что у вас есть все сценарии, когда это произойдет. для поддержания целостности данных после любых вставок, обновлений или удалений.

3
ответ дан 18 December 2019 в 05:44
поделиться

Чтобы подчеркнуть некоторые моменты, сделанные в предыдущих плакатах: действительно ли ваша текущая схема денормализована? Правильный способ (imho) спроектировать базу данных:

  • Как можно лучше понять систему / информацию для моделирования
  • Построить полностью нормализованную модель
  • Затем, если и как вы сочтете необходимым, денормализовать контролируемым способом, чтобы повысить производительность

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

Я хочу сказать, что если вы никогда не полностью нормализовали, у вас нет денормализованной базы данных, у вас есть ненормализованная один. И я думаю, что вы можете придумать более описательные, но менее вежливые термины для этих баз данных.

3
ответ дан 18 December 2019 в 05:44
поделиться

Я обнаружил, что нормализация в некоторых случаях улучшает производительность .

Маленькие таблицы читаются быстрее. Плохо денормализованная база данных часто будет иметь (а) более длинные строки и (б) больше строк, чем нормализованный дизайн.

Чтение меньшего количества более коротких строк означает меньшее количество физических операций ввода-вывода.

2
ответ дан 18 December 2019 в 05:44
поделиться

Во-первых, вам придется выполнять вычисления набора результатов . Например, если у вас есть блог с количеством сообщений , вы можете сделать:

select count(*) from Post where BlogID = @BlogID

, что дороже, чем

select PostCount from Blog where ID = @BlogID

и может привести к SELECT N + 1 проблема, если вы не будете осторожны.

Конечно, со вторым вариантом вам придется иметь дело с сохранением целостности данных, но если первый вариант достаточно болезненный, тогда вы заставляете его работать.

Будьте осторожны, чтобы не попасться преждевременной оптимизации . Сделайте это нормализованным способом, затем измерьте производительность в соответствии с требованиями, и только в том случае, если она не соответствует требованиям, вы можете попытаться денормализовать.

1
ответ дан 18 December 2019 в 05:44
поделиться

Нормализованные схемы обычно лучше работают для INSERT / UPDATE / DELETE, потому что нет «аномалий обновления», а фактические изменения, которые необходимо внести, более локализованы.

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

1
ответ дан 18 December 2019 в 05:44
поделиться

Я хотел уточнить пункт 3 Хенрика Опеля . Затраты на разработку могут возрасти, но это не обязательно. Фактически, нормализация базы данных должна упростить или позволить использовать такие инструменты, как ORM, генераторы кода, средства записи отчетов и т. Д. Эти инструменты могут значительно сократить время, затрачиваемое на уровень доступа к данным ваших приложений, и перейти от разработки к добавлению бизнеса. значение.

Вы можете найти хорошее обсуждение StackOverflow здесь об аспекте разработки нормализованных баз данных. Было много хороших ответов, комментариев и над чем подумать.

1
ответ дан 18 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: