3

ComputedPropertyGoogle App Engine を使用して、関連モデルのカウントをオンデマンドで計算する場合と比較して、誰かがパフォーマンス特性 (読み取りと書き込み) を明らかにできるかどうかに興味があります。

ComputedProperty には、プロパティのインデックス作成を許可するという明確な利点がありますが、比較して読み取りと書き込みがどれほど速いかについて興味があります。

たとえば、次の 2 つのモデルがあるとします。

class Car(ndb.Model):
  owner_key = ndb.KeyProperty(kind='Owner', indexed=True)

class Owner(ndb.Model)
   def cars_count(self):
       ndb.query(Car.owner_key == self.key).count()

   cars_count_prop = ndb.ComputedProperty(cars_count)

質問は実際には次のようなものに分解されます。

  1. Owner?があるため、書き込みはどれくらい遅くなりcars_count_propますか?
  2. 読むcars_count_propのは よりどれくらい速いcars_countですか?

または、言い換えれば:

  1. それぞれの読み取りと書き込みの漸近的な計算複雑性 (big-O) はどれくらいですか?
  2. 平均的なケースの計算の複雑さは? -ジェイ・レノ以外の人(つまり、Carあたりのインスタンス数が少ないOwner) の場合?
  3. 読み取りと書き込みの待機時間のうち、計算の複雑さはどれくらいで、データベース/memcache のルックアップはどのくらいですか?
4

1 に答える 1

6

所有者エンティティを更新するたびに、クエリが再計算されます。それは良くありません。クエリの複雑さは問題ではありません。しかし、本当に知りたい場合は、ベンチマークする必要があります。

于 2013-02-03T16:27:04.887 に答える