Запрос запросов вне ColdFusion - PullRequest
2 голосов
/ 10 мая 2009

Мой опыт использования Adobe ColdFusion, хотя и несколько ограниченный, был абсолютно радостным и приятным.

Из всех хороших вещей, которые я мог бы сказать о ColdFusion, одна функция полностью сбила меня с ног. Это может быть не очень эффективным или полезным в производственном процессе, но в любом случае я говорю о так называемой функции «запроса запросов» или атрибуте dbtype="query" в cfquery. Это позволяет вам запускать операторы SQL для произвольных наборов данных, а не только для соединения с базой данных. Вы можете, например, присоединиться к результирующему набору, который вы только что извлекли из базы данных, и структуре в памяти (которая, конечно, подчиняется определенным ограничениям). Он обеспечивает быстрый и грязный способ «пост-обработки» данных, который иногда может быть гораздо более читабельным (и тоже гибким!), Чем, скажем, повторение набора данных в цикле.

Однако ColdFusion - не очень популярный продукт, и я не собираюсь останавливаться на том, почему это так. Я спрашиваю, есть ли какая-либо поддержка этого метода на других языках (например, библиотека, которая делает более или менее то же самое)? Python? Perl? Рубин? PHP? Что-нибудь? Потому что, мне кажется, потенциал этой функции огромен, возможно, не в производственном коде, но он абсолютно спасает жизнь, если вам нужно быстро что-то протестировать. Излишне говорить, что использование SQL ColdFusion для этого несколько ограничено, насколько мне известно, но, тем не менее, идея по-прежнему велика.

Ответы [ 7 ]

10 голосов
/ 11 мая 2009

Если вы не найдете ничего, что обрабатывает данные так же, как ColdFusion, помните, что оно очень хорошо работает с другими языками программирования. Вы всегда можете выполнить сложную обработку запросов в CF, а затем просто обернуть свою логику обработки в удаленные CFC и представить их как веб-сервисы, обслуживающие JSON.

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

Если вам нужно уйти от CF, попробуйте SqlAlchemy на Python или как другие постеры, на которых стоит упомянуть Rails и LINQ.

3 голосов
/ 10 мая 2009

я не могу для python, ruby, perl, php. однако .Net имеет что-то под названием LINQ , что по существу является QoQ для стероидов.

1 голос
/ 10 мая 2009

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

Например, используя Rails, вы получаете данные из модели, а не напрямую общаетесь с базой данных. Запросы или находки возвращаются как объекты массива, которые, в свою очередь, могут запрашиваться самим.

0 голосов
/ 29 января 2011

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

Может быть, в один из этих дней я пойму, как вызывать QoQ напрямую из Java под CF. ;)

0 голосов
/ 06 ноября 2009

Проводя анализ производительности Query of Queries, я был удивлен временем их выполнения, я не мог заставить их вернуться менее чем за 10 мс в моих тестах, где просто запросы к реальной базе данных возвращались бы за 1 мс или меньше. Я понимаю (по крайней мере, в CF MX 7), что, хотя это полезная функция, она не является высокооптимизированной. Я обнаружил, что гораздо быстрее перебирать запрос вручную, используя условную логику, чтобы заменить то, что я пытался сделать, своим запросом запросов.

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

0 голосов
/ 11 мая 2009

Вы также можете сделать это в .NET с помощью LINQ. LINQ позволит вам запрашивать объекты и базы данных.

0 голосов
/ 11 мая 2009

Эта методика (запрос запросов ColdFusion) является одной из худших идей. Он не только сохраняет бизнес-логику в базе данных, но и берет ту небольшую бизнес-логику, которую вы оставили в своем коде, и выталкивает ее в базу данных просто так.

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

Python и Ruby, а также другие языки, отсутствующие в вашем списке, такие как C # и Haskell, имеют исключительную поддержку для написания произвольных и мощных запросов к объектам в памяти. На самом деле это метод, который вам нужен, а не запрос запросов ColdFusion. Техника написания запросов к объектам в памяти является аспектом общего стиля программирования, называемого функциональное программирование .

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