Должны ли мы денормализовать данные в документе для повышения производительности?(База данных документов) - PullRequest
2 голосов
/ 22 февраля 2012

В моей системе Журнал сотрудников Запросы и запросы относятся к оборудованию.

Во избежание загрузки документов «Сотрудник» и «Оборудование» каждый раз, когда мне нужно отобразить Запрос, я хочу денормализовать имя сотрудника и инвентарный номер оборудования, имя производителя и модель в документе «Запрос».

Я здесь не на том пути?Это антипаттерн?

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


PS: Ссылки на Рекомендации по моделированию базы данных документов также приветствуются.

Ответы [ 3 ]

2 голосов
/ 22 февраля 2012

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

Мое личное мнение таково, что вы всегда должны использовать .Include, если у вас нет действительно веской причины не использовать его.

1 голос
/ 22 февраля 2012

Хитрый, в вашем случае действительно ли нужно обновить информацию, если она изменится?Если Салли Мэй запросила новый ноутбук в 2011 году, имеет ли смысл изменить этот запрос на «Салли Мэй-Джонс» в 2012 году?

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

1 голос
/ 22 февраля 2012

Здесь - хороший короткий пост о денормализации.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...