ColdFusion 8 + MSSQL 2005 и тип данных CLOB в наборе результатов

Я работаю в среде CF8 и SQL 2005, а тип данных CLOB отключен в администраторе CF. Меня беспокоит, не повлияет ли производительность на включение типа данных CLOB в администраторе CF.

Причина, по которой я хочу/должен включить его, заключается в том, что SQL создает ответ AJAX XML. Когда ответ большой, результат либо усекается, либо возвращается с несколькими строками (в зависимости от того, как разработчик SQL создал хранимую процедуру). Включение CLOB позволяет вернуть весь результат. Другой вариант, который у меня есть, состоит в том, чтобы SQL всегда возвращал результат XML в нескольких строках и чтобы CF присоединялся к строке для каждой строки результата.

Кто-нибудь сталкивался с этой идеей или есть мысли? Спасибо!


person amaurer    schedule 22.03.2012    source источник


Ответы (2)


Я действительно думаю, что возврат данных Clob, вероятно, будет менее затратным, чем объединение нескольких строк данных в строку XML и последующий их анализ (ick!). То, что вы пытаетесь сделать, - это то, для чего предназначен CLOB. JDBC справляется с этим довольно хорошо. Удар по производительности, вероятно, незначителен. В конце концов, вы должны вернуть одинаковое количество символьных данных в любом случае, будь то в нескольких строках или в одном поле. И необходимость «разбить его» на стороне SQL, а затем «снова собрать» его на стороне CF, похоже, изобретает велосипед, чтобы быть уверенным.

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

person Mark A Kruger    schedule 22.03.2012
comment
Я склонен согласиться с вами в том, что производительность, вероятно, будет лучше, если jdbc справится с этим. Да, вы правы, говоря, что символы должны быть возвращены в любом случае, но переключатель, чтобы SQL возвращал строку/столбец результата вместо нескольких строк с одним столбцом, довольно прост. Это либо использование временной таблицы, либо переменной. Использование временной таблицы по умолчанию с разделением ответа xml и переменной не будет. Одна вещь, которую я получаю от объединения данных в CF, заключается в том, что проблема изолирована от включения CLOB для всего сайта. - person amaurer; 22.03.2012
comment
Вы правы, говоря, что тестирование подтвердит или опровергнет любые проблемы, но, как вы сказали ранее, это похоже на изобретение велосипеда, я тоже думаю, что кто-то уже рассматривал это раньше. Независимо от того, что мне нужно проверить, но я ищу что-то, что я, возможно, не учел, или какие-то ошибки. - person amaurer; 22.03.2012

Я бы просто попросил StoredProc вернуть набор данных или несколько наборов данных и просто построить XML так, как вам нужно, с помощью CF.

Мне никогда не приходилось использовать CLOB. Я почти всегда придерживаюсь типа данных varchar, и, похоже, он отлично справляется со своей задачей.

Существуют также варианты, в которых вы можете вызвать Stored Proc, который запускает MSSQL для создания фактического файла xml (а не просто строки) и просто возвращает вам имя файла. Затем вы можете использовать CFFILE action="read", чтобы получить строку xml и проанализировать ее соответствующим образом. Предполагая, что ваш веб-сервер и БД имеют общую область хранения файлов.

person TheJason    schedule 22.03.2012
comment
Джейсон, см. мой комментарий ниже. JDBC прекрасно справится с этим. Если есть достаточные ресурсы для обработки 10 000 символов данных в нескольких строках, значит, есть достаточные ресурсы и для отправки в одном поле. Это мое мнение (без обид :) Системы CMS часто полагаются на большой текст через JDBC. Это то, для чего он предназначен. - person Mark A Kruger; 22.03.2012
comment
@TheJason: К вашему сведению, чтобы избежать путаницы, я изменил сообщение, чтобы сказать varchar, а не текст (который является типом clob на сервере sql;). Если это не то, что вы имели в виду, просто откатите его назад. - person Leigh; 22.03.2012
comment
@Mark A Kruger: Согласен, без обид. Как я уже сказал, у меня никогда не было потребности в CLOB, так что, черт возьми, я знаю :) Но спасибо, что пробудили во мне интерес к CLOB. - person TheJason; 22.03.2012