2009-05-10 15 views
2

Adob​​e ColdFusionを使用した経験は、まだ多少限定されていても、絶対に楽しくて楽しいものでした。ColdFusion以外のクエリのクエリ

私がColdFusionについて言えることは、良いことのうち、1つの機能が完全に私の足を吹き飛ばしたことです。とにかく、私はいわゆる "クエリのクエリ"機能、またはdbtype="query"属性がcfqueryということについて話しています。これにより、データベース接続だけでなく、任意のデータセットに対してSQL文を実行できます。たとえば、データベースから取得した結果セットとメモリ内の構造(つまり、特定の制限に従う)の結果セットを結合することができます。これは、ループの中でデータセットを繰り返し処理するよりも、時には読み易く(柔軟性もあります)、データの「後処理」を行うためのクイックアンドダーティな方法を提供します。

しかし、ColdFusionは非常に一般的な製品ではありません。その理由を説明しません。私が尋ねるのは、他の言語(ライブラリのように、多かれ少なかれ同じ)でこのテクニックがサポートされているということですか? Python? Perl?ルビー? PHP?何か?なぜなら、この機能の可能性は膨大であり、プロダクションコードではない可能性があるからです。何かを素早くテストする必要があるならば、絶対的な命を救う人です。言うまでもありませんが、SQL ColdFusionの使用方法は、私の知る限りではいくぶん限定されていますが、依然として素晴らしいアイデアです。

答えて

10

データとColdFusionを処理するものが見つからない場合は、他のプログラミング言語でもうまく動作することを覚えておいてください。あなたは常にCFで多量のクエリ処理を行い、処理ロジックをリモートのCFCでラップし、JSONを処理するWebサービスとして公開します。

これにより、他の言語を試してみると、ColdFusionの優れた点を享受できます。

CFから離れる必要がある場合は、PythonでSqlAlchemyを試してみるか、他のポスターと同じように、RailsとLINQは一緒に遊ぶ価値があると言います。

+0

ああ、私はSqlAlchemyを読んだことがあります、それはまさに私が欲しいものです!アプリケーションと連携してcoldfusionを使用する場合は、別の言語で書かれていますが、これまでに行ったことがありますが、coldfusionを使用することはオプションではありません。 – shylent

+0

ColdFusionがオプションでない場合、RailoまたはOpenBDも除外されますか? (それらはそれぞれLGPLとGPLv3である) –

1

多くのフレームワークでは、データベーステーブルをオブジェクトに変換するオブジェクトリレーショナルマッピング(ORM)が使用されています。

たとえば、Railsを使用すると、データベースと直接話すのではなく、モデルからデータをフェッチできます。クエリーまたは検索は、配列オブジェクトとして返されます。配列オブジェクトは、順番に照会されます。

3

私はpython、ruby、perl、phpでは使用できません。しかし、.NetにはLINQと呼ばれるものがあり、ステロイドでは本質的にQoQです。

+0

ああ、私は元の投稿にLINQを言及していたはずです。残念ながら、私はそれが私が働いている環境で使用されていないので、.NETでコード化することはありません。そのため、私はそれについて何も経験がありません。 – shylent

-14

この手法(ColdFusionのクエリクエリ)は、そこで最悪のアイデアの1つです。ビジネスロジックをデータベース内に保持するだけでなく、コードに残したビジネスロジックを取り除き、それをデータベースに送ります。

良い言語は、欠陥を補うための悪い方法ではありません。

PythonとRubyは、C#やHaskellなどあなたのリストにない他の言語と同様に、メモリ内オブジェクトに対して任意かつ強力なクエリを作成するための優れたサポートを備えています。これは、ColdFusionのクエリークエリーではなく、実際に必要なテクニックです。メモリ内オブジェクトに対してクエリを書く技術は、関数プログラミングと呼ばれる一般的なプログラミングスタイルの側面です。

+3

QofQはメモリオブジェクト(他のクエリ結果)に対して機能するので、まったく逆の意味を持ちます。 –

+0

これらはデータベースに送られます。 CFはメモリ内のQueryTableを取り出し、サブクエリとしてデータベースに送信します。ポイントは、アプリケーションのコアはリッチドメインモデルでなければならないということです。データベースであってはなりません。 – yfeldblum

+1

QofQはサブクエリとしてデータベースに送られません。 –

0

これは、.NETでLINQを使用して行うこともできます。 LINQを使用すると、オブジェクトだけでなくデータベースも照会できます。

0

クエリクエリのパフォーマンス分析では、実行時間が驚きました。実際のデータベースへのクエリが1ms以下で返されるテストでは、10ms未満で戻すことができませんでした。 CF MX 7では、これは便利な機能ですが、高度に最適化された機能ではありません。私は、クエリをクエリのループに置き換えるために条件付きロジックを手作業でやり直すのがはるかに高速であることを発見しました。

つまり、初期クエリが遅い場合は、データベースに行くよりも高速です。それぞれのQofQが瞬間からずっと離れているため、より創造的な並べ替えや初期クエリを実行するよりも、常に高速になると思って使用しないでください。

0

Javaの場合、見てみる価値のある3つのプロジェクトがあります。各プロジェクトはそれぞれ独自のポジティブとネガティブ、さらに他のものと比べてSQLがあります。 JoSQL JoSQL,JXPathおよびMetaModel

おそらく、今日のうちの1つでは、CFの下のJavaから直接QoQを呼び出す方法を理解することでしょう。 ;)

関連する問題