2014-11-14 4 views
1

Мы начали использовать COGNOS около 3 лет назад. Мы использовали COGNOS 8 и теперь находимся в COGNOS 10. Нам постоянно говорят, что использование динамических SQL-запросов вместо использования модели COGNOS крайне плохо, поскольку это вызывает проблемы с производительностью и что IBM не рекомендует. У нас никогда не было проблемы, характерной для динамического SQL, и они работают так же хорошо, как отчеты, которые используют модель.Динамический SQL по сравнению с использованием модели

Есть ли проблемы с производительностью или недостатки, характерные для динамических SQL-запросов? Настоятельно рекомендуется IBM, чтобы они не использовались?

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

Цените свои комментарии/отзывы.

+2

Множество негативов для меня. Вы не можете обеспечить согласованность. Что мешает мне присоединиться к тем же таблицам совершенно по-другому от вас? Обслуживание - это кошмар. Если что-то меняется в вашей базе данных, вы должны изменить его в каждом отдельном отчете, вместо того, чтобы менять его один раз в модели.Я считаю, что это также помешает вам воспользоваться некоторыми из более новых функций в Cognos (DQM, динамические кубы). – Andrew

+1

@Andrew - Спасибо за комментарий. Я полностью согласен с вами в вопросах обслуживания, но я действительно просто смотрю на это с точки зрения производительности и есть ли недостатки в производительности при использовании динамического SQL. –

+0

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

ответ

1

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

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

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

Редактировать: Важно отметить, что критерии, установленные в фильтрах Report Studio, не будут передаваться в ваши запросы Dynamic SQL до тех пор, пока данные не будут восстановлены. Для больших наборов данных это может быть крайне неэффективно. Чтобы передать критерии в ваш Dynamic SQL из ваших приглашений, используйте #prompt ('yourPromptVariableNamehere') # или #promptmany ('yourMultiSelectPromptVariablehere') #. Это эмпирическое правило, запустите свой динамический SQL-запрос за пределами cognos и посмотрите, сколько данных возвращается. Если у вас есть гигантский запрос о продаже, который нужно как минимум фильтровать по дате или ветви, поместите подсказку на странице приглашения, чтобы заставить пользователя выбрать конкретную дату/период/диапазон дат/ветвь/и т. Д. в свои подсказки и добавьте критерии в свой динамический SQL-запрос с синтаксисом prompt/promptmany. Запросы могут по-прежнему использоваться в качестве регулярных фильтров внутри запросов Report Studio, но все эти критерии фильтруются ПОСЛЕ того, как результирующий набор возвращается из базы данных, если вы используете динамические запросы без подсказки/promptmany.

0

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

С другой стороны, очевидно, что вы можете настроить SQL лучше, чем на машине. Я бы не сказал, что динамический SQL может вызвать проблемы с производительностью в целом.

IBM не рекомендует динамический SQL, потому что только с соответствующей моделью, созданной с помощью менеджера фреймворка, вы можете использовать все возможности Cognos.

Смежные вопросы