2012-02-03 8 views
1

さらに効率的な方法はありますか?私のクラスをモデル化する最良の方法は?

または

をフィルタリングするために一つの特性を持つ大規模な種類を持っては、大規模なものを持って、別の種類のキーとのpropertylistを有し、第1の種類に属しているエンティティを回復するために、第二種を使用しています。 Aprox 6k個のリストをリストに入れる

オプション1 _ __ _ __

class customer() 
    propertyinteger 
    propertystriing 
    ... 
    propertyintegerID = use to be filtered and indexed 
    thousand of costumers 

オプション2 _ __ _ ____

class customer() 
    propertyinteger 
    propertystriing 

class CustomerGroup() 
    propertystring 
    propettycustomerList (repeated=True) (save a list with __key__ of customer class) 

そして私はCustomerGroup ListPropertyのみを取得するために使用cu私が興味を持っているstomer。リストには6k aproxがあります。

ありがとうございました。

答えて

1

オプション1はおそらく問題ありません。私が正しく理解すれば、各顧客はグループに属し、顧客は一度に1つのグループにしか所属できず、グループに属するすべての顧客を照会できるようにしたいと考えています。グループクエリは、顧客の種類の単一のプロパティ上の等価フィルタに過ぎません。

一貫性保証とクエリのニーズについては、他の考慮事項があります。 2つのカスタマーエンティティが別々のエンティティグループに属している必要があると仮定すると、グループIDプロパティのインデックスは最終的な一貫性で更新されるため、更新の直後までグループクエリの結果として新しい顧客またはグループIDの変更が表示されないことがあります。それがOKでない場合、オプション2、または同じエンティティグループ内の別々のカスタマーとグループのペアリングエンティティのセットは、グループクエリ(先祖フィルタ付き)を更新と強く一致させます。オプション1は、すべてのカスタマーエンティティを同じグループに配置することで強く一貫性を持たせることができますが、アプリのニーズに応じて不利な点があります。

関連する問題