自分のシステムの一部を整理したいのですが、私のアプリケーションとのやり取りのためのデータ表現に便利なフォームを選択できません。弱く型付けされたオブジェクトのデータベース
Object1
{ id = TypeId, field1 = value1, otherObjectSpecifedField = value2 ... }
...
は(例えば50)多くの種類の(たとえば1000)多くのオブジェクトがあります。次のように は、だから私はdescripted、データオブジェクトのいくつかの地元の「リポジトリ」を持っています。各タイプには固有の固有IDと、独自の記述とフィールドがあります。
次のものは、のそれぞれです。オブジェクトは、このオブジェクトが現在実際に対応しているフィルタセットを持っています。
Filter
{ filterName1 = filterValue, filterName2 < filterValue }
Object // filter is applied for this object
{ ... }
この「リポジトリ」を使用してのプロセス::私のアプリでは
を私は上からフィルタを意味アプリケーションの状態を、持っていることは、このようになります。 例:アプリケーションのローカライズが可能(EN)(私のアプリケーションは、この値を知っていて、起動時にそれを変更することができます)と私たちはフィルタを持って、「ローカライズ」と命名し、私たちのリポジトリに私たちはこのようにそれを使用することができます:
Filter { localization = 'en'} Object1 { ... } // this object i should choose when localization is en
私のアプリケーションが現実のobectsのセットをチェックすることを決定したとき、それはリポジトリにcamesし、それに尋ねます: "ここでTypeIdとそれぞれのフィルタ+オブジェクトのペアを歩き、フィルタによって実際のオブジェクトが何であるかを言う。いくつかのフィルタ値を解決します(上記の例からのローカリゼーション)私はそれらをあなたのために解決します "。
次に、リポジトリは各オブジェクトを歩き、実際にはフィルタによって実際に比較されます。そこで、彼はすべてのオブジェクトのすべてのフィルタをチェックし、それらのすべてが実際に実行され、実行時に実行された場合にのみオブジェクトを提供します。現在の実装では
fiters +オブジェクトのこのセットは、アプリケーションからの読み取りに快適で、非常に特定のXML形式のXMLファイルに格納されているが、非常に硬いが、ヒトによって維持します。そして私は、すべてのプロセスを最適化する場所があると思います。私は、オブジェクトを歩き回り、それを他の人と比較することを委任できると思います。 今私はNoSQLのドキュメント指向のデータベースの側面にあると思います。各オブジェクトは独自の構造を持ち、選択ルーチンを使用しているため、必要なものを選択できます。
多分、そのタイプのデータベース構成に関する提案がありますか?そのタイプのデータの特定のデータ構造を知っているかもしれません。