查询ColdFusion外部的查询

时间:2009-05-10 18:01:14

标签: sql coldfusion qoq

我使用Adobe ColdFusion的经验,即使仍然有些限制,绝对是快乐和愉快的。

在关于ColdFusion的所有好事中,有一个功能让我完全不知所措。它可能既不是非常有效,也不适用于制作,但无论如何,我说的是所谓的“查询查询”功能,或dbtype="query" cfquery属性。它允许您针对任意数据集运行SQL语句,而不仅仅是数据库连接。例如,您可以加入一个结果集,即刚从数据库中检索到的结果集和内存结构(当然,受某些限制)。它提供了一种快速而肮脏的方式来对数据进行“后处理”,有时可以更加可读(也更灵活!),比如在循环中迭代数据集。

然而,ColdFusion不是一个非常受欢迎的产品,我不会回答它为什么会这样的原因。我要问的是,这种技术在其他语言中是否有任何支持(如图书馆,或多或少相同)?蟒蛇? Perl的?红宝石? PHP?什么?因为,对我来说,似乎这个功能的潜力很大,可能不是在生产代码中,但如果你需要快速测试一下,它绝对可以节省生命。毋庸置疑,根据我的知识,SQL ColdFusion的用途有点受限,但是,这个想法仍然很棒。

7 个答案:

答案 0 :(得分:10)

如果你没有找到任何处理数据的东西以及ColdFusion,那么请记住它与其他编程语言的搭配非常好。您始终可以在CF中执行繁重的查询处理,然后将处理逻辑包装在远程CFC中,并将它们作为提供JSON的Web服务公开。

这将让您在尝试使用其他语言时从ColdFusion的优点中受益。

如果您需要远离CF,请尝试使用Python中的SqlAlchemy,或者像其他海报一样说Rails和LINQ值得玩。

答案 1 :(得分:3)

我不能用于python,ruby,perl,php。然而.Net有一种称为LINQ的东西,它基本上是类固醇的QoQ。

答案 2 :(得分:1)

许多框架使用对象关系映射(ORM),它将数据库表转换为对象。

例如,使用Rails可以从模型中获取数据,而不是直接与数据库通信。查询或查找作为数组对象返回,而这些对象又可以自己查询。

答案 3 :(得分:0)

您也可以使用LINQ在.NET中完成此操作。 LINQ将允许您查询对象和数据库。

答案 4 :(得分:0)

在对查询查询进行性能分析时,我对它们的执行时间感到惊讶,在我的测试中,我无法让它们在不到10毫秒的时间内返回,只是对实际数据库的查询将在1毫秒或更短的时间内返回。我的理解(至少在CF MX 7中)是虽然这是一个有用的功能,但它不是一个高度优化的功能。我发现手动循环遍历查询要更快地执行条件逻辑来替换我尝试对查询查询执行的操作要快得多。

话虽如此,如果初始查询很慢,它比进入数据库要快。只是不要使用它认为它总是比做更有创意的排序或初始查询更快,因为每个QofQ远非瞬时。

答案 5 :(得分:0)

对于Java,有三个值得一看的项目,每个项目都有自己的正面和负面,有些比其他项目更多。 JoSQL JoSQLJXPathMetaModel

也许有一天我会弄清楚如何直接从CF下面的Java调用QoQ。 ;)

答案 6 :(得分:-14)

这种技术(ColdFusion的查询查询)是最糟糕的想法之一。它不仅将业务逻辑保留在数据库中,而且还会将您在代码中留下的少量业务逻辑带到数据库中,只是为了恶意。

您需要的是一种良好的语言,这是弥补缺陷的不错技巧。

Python和Ruby,以及不在列表中的其他语言,如C#和Haskell,都支持对内存中的对象编写任意和强大的查询。这实际上是您想要的技术,而不是ColdFusion的查询查询。针对内存中对象编写查询的技术是一种称为函数式编程的一般编程风格的一个方面。