2

我使用 Adob​​e ColdFusion 的体验,即使仍然有些局限,也绝对是快乐和愉快的。

在我能说的关于 ColdFusion 的所有优点中,有一个功能完全让我大吃一惊。dbtype="query"它可能在生产中既不是很有效,也不是很有用,但无论如何,我说的是所谓的“查询的查询”功能,或者cfquery. 它允许您针对任意数据集运行 SQL 语句,而不仅仅是数据库连接。例如,您可以加入一个刚刚从数据库中检索到的结果集和一个内存结构(当然,要受到某些限制)。它提供了一种快速而简单的方法来对数据进行“后处理”,有时比在循环中遍历数据集更具可读性(也更灵活!)。

但是,ColdFusion 不是一个非常受欢迎的产品,我不打算讨论它为什么会这样。我要问的是,其他语言是否支持这种技术(比如图书馆,或多或少相同)?Python?珀尔?红宝石?php?任何事物?因为,在我看来,这个功能的潜力是巨大的,可能不在生产代码中,但如果你需要快速测试一些东西,它绝对是救命稻草。不用说,据我所知,用于此目的的 SQL ColdFusion 有些有限,但这个想法仍然很棒。

4

7 回答 7

10

如果您没有发现任何可以像 ColdFusion 一样处理数据的东西,那么请记住它与其他编程语言配合得很好。您总是可以在 CF 中进行繁重的查询处理,然后只需将处理逻辑包装在远程 CFC 中,并将它们公开为提供 JSON 的 Web 服务。

这将使您在尝试其他一些语言时从您发现的 ColdFusion 的优点中受益。

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

于 2009-05-11T00:04:19.023 回答
3

我不能用于 python、ruby、perl、php。然而,.Net 有一个叫做LINQ的东西,它本质上是类固醇上的 QoQ。

于 2009-05-10T18:31:37.460 回答
1

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

例如,使用 Rails 您可以从模型中获取数据,而不是直接与数据库对话。查询或发现以数组对象的形式返回,而这些对象本身又可以被查询。

于 2009-05-10T18:11:00.380 回答
0

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

于 2009-05-11T18:53:15.990 回答
0

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

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

于 2009-11-06T03:07:47.903 回答
0

对于 Java,有三个项目值得一看,每个项目都有自己的优点和缺点,其中一些比其他的更像 SQL。JoSQL JoSQLJXPathMetaModel

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

于 2011-01-29T02:38:20.163 回答
-15

这种技术(ColdFusion 的查询查询)是目前最糟糕的想法之一。它不仅将业务逻辑保留在数据库中,而且还提取了您在代码中留下的少量业务逻辑,并将其推送到数据库中只是出于恶意。

你需要的是一门好的语言,而不是糟糕的技术来弥补不足。

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

于 2009-05-11T00:20:07.577 回答