2009-07-24 11 views
0

エンティティAのインスタンスが他のインスタンスにどの程度強く関連付けられているか、またはエンティティAがグラフ内にあるかをランク付けしたいと思います。 私は、エンティティAの2つのインスタンス間の関係を別のエンティティBによって記述します。これは、それぞれの関係を記述する必要があるためです。オブジェクト間の接続を評価するためにコアデータを取得するプロパティ

することは、私はそうのようにフェッチされたプロパティを使用して検討していた:

ANY isSourceOfRelation.destinationThing == "$SOURCE_THING" 
OR ANY isDestinationOfRelation.sourceThing == "$SOURCE_THING" 

しかし、私はそれが関係を経由して網羅的検索を経由して、これを評価しないだろうので、私はそうすることを警戒しています。これはデスクトップ上ではあまり問題にならないだろうが、iPhoneでは自分のデータセットでは実用的ではないだろう。

フェッチされたプロパティは遅延評価され、その後キャッシュされますが、おそらくデスクトップ上のすべての単一オブジェクトのフェッチされたプロパティにアクセスできますが、このキャッシュはsqliteストアで管理されますか?

これに代わる方法として、すべてのエンティティBにアクセスして宛先エンティティAを取得し、その後これらを辞書に追加することでこれを動的に評価することができます。

グラフには10,000のエンティティAと約30,000の関係(エンティティB)があります。

私の優先度は、パフォーマンスです。

あなたはどう思いますか?

答えて

0

サウンドは、事前に計算し、オンデマンドで別々にロードすることをお勧めします。実際のデータが小さければ、それほど課税されず、ほとんどのiPhoneはこの種のもののために1つまたは2つの「ディスク」ストレージを確保することができます。

値が変更可能な場合は、変更後にバックグラウンドスレッドを実行して、事前計算テーブルが最新の状態に維持されるようにすることができます。 'ダーティ'フラグは、ユーザーが操作が完了する前に中断したかどうかを知らせるので、次にアプリケーションを実行したときに再度実行できます。

関連する問題