2009-03-14 14 views
2

私は、メモリ内の小さなデータベースと考えることができるメモリ内のオブジェクトにデータを格納するプログラムを持っています。 LINQ to Objectsを使用してメモリ内のオブジェクトに対して簡単なクエリを実行したいと思います。メモリ内のオブジェクトに使用する必要がある構造がありますか?私がこのプロジェクトに入る前に読んでおくべき良いリソースはありますか?linqがオブジェクトに最適なオブジェクト構造ですか?

編集: ここにアプリケーションに関する詳細情報があります。

これはサービスとしても実行できるwinformsアプリケーションです。最大約10kオブジェクトの状態を追跡します。各オブジェクトはかなり自己完結型なので、もしあれば私はたくさんの結合をする必要があるとは思わない。サービスとして実行できるので、オブジェクトに関する情報を照会できるインターフェースを追加しています。質問は質問をして、それらを変更しないオブジェクトをグループ化します。各オブジェクトは、製品オブジェクトというよりも顧客オブジェクトのように見えます。

+0

あなたが少しより多くの情報と例または2を与えた場合、それは役立つだろう。 –

答えて

4

レックス、最初のいくつかの質問:

  • このリサイズ/ですWPFアプリケーションまたはASP.NET?メモリ内の「小さな」フットプリントが各ユーザ/セション/その他のために複製されると「大」になる可能性があるため、関連性があります。

  • 「small db」 - ここで少し話していますか? 10kb、100kb、1Mb?実際には、サイズはあなたが選んだ構造(物理RAMなどの制限内)と同じくらい重要だとは思わないが、それは他の回答者には役立つかもしれない。

  • 「単純なクエリ」 - オブジェクトとクエリの外観についての詳細情報を提供できますか? にName,Address,Ageがありますか?Productsと複数のが複数ある場合は、Ordersと異なるPayment ...と書かれていますか、もっと複雑なものがありますか?

その後いくつかの考え:

  • は、階層フラット/オブジェクトグラフ/ツリーを保管してください(特に性質が照会したいです)。 Linqing on where Customer.Zipcode = 90210は、where Customer.Address.Zipcode = 90210と大きく異なるようには思えませんが、ネストされたオブジェクトを使用すると複雑になるほど、効率的なクエリを作成するためのフレームワークが難しくなります。

  • 事前にクエリを知っていて、それらがアプリケーションにとって重要な場合は、おそらくLinqに依存するのではなくクエリをサポートするためのデータ構造を構築する必要がありますか?例を挙げると、searcharoo.net検索エンジンはすべてのデータをオブジェクトとしてメモリに格納しますが(簡単に1-2Mb以上になることがありますが)、照会の仕組みは非常に速いカスタムの2種類です(Hashtablesref))。

    • Indexed Linqあなたがインデックスを指定できるようになっている:

    メモリのように小さなデシベルのコメント考えることを言えば、あなたのために有用かもしれないが、2つの「製品」はあります特定のクエリを高速化するために、オブジェクトコレクションにを追加してください。作業中ですが、あなたのニーズに役立つかもしれません。

  • ComponentOne LiveLinqのWebサイトでは、「LiveLinqはインデックス作成やその他の最適化を使用してメモリ内のLINQクエリを高速化しています」と述べています。 Indexed Linqとよく似ていますが、市販品になります。

HTH

関連する問題