拡張可能なクエリインターフェイスの優れた設計とは何ですか?

StackOverflow https://stackoverflow.com/questions/257040

  •  05-07-2019
  •  | 
  •  

質問

アプリケーションはWebサービスを介してクエリを公開しますが、クライアントは多くの場合、追加の条件を指定することによって返される結果をさらに制限するか、しないことを要求することにより、カスタムクエリを必要とします既に公開していません。

今、これらの新しいメソッドごとに新しいメソッドを作成するアプローチを取ることができますが、それはやや不便です。通常、クライアントサイトにアプリケーションを展開するには、数週間にわたる段階的な統合テストが必要です。アプリケーション管理者がパラメータ化された名前でクエリを定義する名前付きクエリメカニズムと、これらのパラメータを単純に呼び出す対応するWebサービスを提案しました。ただし、誰かがこの問題を以前に解決したことはないと思わずにはいられないので、SOコミュニティからの可能な設計についての意見をお願いします。

ありがとう!

更新

仕様パターンは良いものですが、アプリケーションは十分なデータを処理するため、クエリ作業の多くをRDBMSにプッシュします。これにより、クエリプランを最適化する作業をこれまで以上に行うことができます。に。さらに、3つのRDBMSバックエンドをサポートしているため、最も一般的な分母のアプローチを使用しています。機能が最小のデータベースが提供できる限りの機能を使用します。

役に立ちましたか?

解決

「仕様パターン」も検討することをお勧めします。このタイプのアプリケーションでは、バックエンドの設計決定として。 「仕様パターン」に関する次の投稿を確認してください:

http://www.mattberther。 com / 2005/03/25 / the-specification-pattern-a-primer /

http://devlicio.us /blogs/jeff_perrin/archive/2006/12/13/the-specification-pattern.aspx

他のヒント

  • Hibernates Criteria API を見て使用しますそれまたはいくつかの同様のビルド ユーザー向けの機能。
  • 努力する価値がある場合は、基準をグループ化するためのツリーのようなインターフェイスを提供します。 (「グループのすべての条件が一致する必要があります」/「1つの条件が一致する必要があります」" /「否定」)

利点:

  • 構築が簡単。
  • ユーザーパラメータが可能です。
  • 強力なクエリが可能です。
  • SELECT ... FROMテーブルWHERE someRestriction AND(ユーザー指定の条件)
  • などの制限を適用できます

ユーザーがどのようにインターフェースを使用するかはわからないので、"

scroll top