0

次の要件があります。ユーザーが式のような自由形式の「クエリ」を送信できるAPIを公開する必要があり、true/falseを返す必要があります。例:車のオブジェクトの場合、クエリが

" (make = 'FORD' AND year IN (1990,1991)) OR type = 'SUV') ".

ただし、「make」「year」または「type」は、外部から入力されたテーブルから取得されます。

TABLE CAR_PROPERTIES (
 propertyName VARCHAR2(40),
 propertyValue VARCHAR2(10)
)

プロパティをロードするために最初にトラバースする他の結合テーブルがあります。

したがって、新しいプロパティ(および対応する値)がある場合は、クエリでサポートする必要があります。

今のところ、これは私がしたことです:

  1. クラスに動的プロパティを追加する必要がない場合は、コレクションでJoSQLのようなものを使用できることを知っています。

  2. アプリケーションがJavaToolsAPIまたはjavaassistの使用を開始したら、クラスを動的に作成することを検討しました。

クライアントは、新しいプロパティの追加やコードのデプロイを必要としないソリューションを主張しています(ただし、このAPIの「呼び出し元」は、クエリで新しいプロパティを使用するためにコードを変更する必要があります)。

新しいクラスを動的に作成するのは好きではありません。ポインタや解決策を探しています。

4

1 に答える 1

2

Raj-あなたのデザインのためのほんの少しの推奨事項とインスピレーション:

  1. 完全なO/Rマッピングも行いません。ドメイン固有言語をSQLに翻訳することを検討します。私はPythonでそのようなことをしました。2つの簡単な言語(カスタムDSLとSQL)間で言語から言語への翻訳を行うため、はるかに簡単です。堅牢な正規表現を使用すると、この種の相互作用を処理するための非常に簡潔で強力なフレームワークを作成できます。(Regex Table Lexerおよびその他のパタ​​ーンを参照してください)

  2. 調べるべきいくつかの興味深いデザインがあります:

  3. 動的な関係とプロパティ式については、(埋め込まれた)グラフデータ構造を提案します。これは、rel-to-graphマッピングを示す便利なチュートリアル
    です
    。目的:
    http ://docs.neo4j.org/chunked/stable/tutorials.html

于 2012-08-02T01:30:53.050 に答える