Какая-либо хорошая литература по производительности соединения по сравнению с систематической денормализацией?

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

7
задан Community 23 May 2017 в 10:33
поделиться

2 ответа

мысль: у вас есть явное несоответствие импеданса, уровень доступа к данным, который разрешает доступ только к одной таблице? Остановитесь здесь, это просто несовместимо с оптимальным использованием реляционной базы данных. Реляционные базы данных предназначены для очень хорошего выполнения сложных запросов. Не иметь другого выбора, кроме возврата одной таблицы и, предположительно, выполнять какое-либо объединение на уровне баизнеса, просто не имеет смысла.

Для обоснования нормализации и потенциальных затрат на согласованность вы можете обратиться ко всем материалам из Codd и далее, см. статью Википедии .

Я предсказываю, что бенчмаркинг такого рода вещей будет делом нескончаемым, особых случаев будет предостаточно. Я утверждаю, что нормализация - это «нормально», люди получают достаточно хорошую производительность для чистого дизайна базы данных. Возможно, подходом может быть опрос: «Насколько нормализованы ваши данные? По шкале от 0 до 4».

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

Насколько я знаю, Размерное моделирование - единственный метод систематической денормализации, за которым стоит некоторая теория. Это основа методов хранения данных .

DM был впервые предложен Ральфом Кимбаллом в « Манифесте пространственного моделирования » в 1997 году. Кимбалл также написал множество книг. Книга, которая, кажется, имеет лучшие обзоры, - это " The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling (Second Edition) " (2002), хотя я еще не читал ее.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

хотя ни один из них не будет таким быстрым, как в денормализованном дизайне, в котором предпочтение отдается одному типу запросов.

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

хотя ни один из них не будет таким быстрым, как в денормализованном дизайне, в котором предпочтение отдается одному типу запросов.

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

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

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