ComputedProperty
Google 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)
質問は実際には次のようなものに分解されます。
Owner
?があるため、書き込みはどれくらい遅くなりcars_count_prop
ますか?- 読む
cars_count_prop
のは よりどれくらい速いcars_count
ですか?
または、言い換えれば:
- それぞれの読み取りと書き込みの漸近的な計算複雑性 (big-O) はどれくらいですか?
- 平均的なケースの計算の複雑さは? -ジェイ・レノ以外の人(つまり、
Car
あたりのインスタンス数が少ないOwner
) の場合? - 読み取りと書き込みの待機時間のうち、計算の複雑さはどれくらいで、データベース/memcache のルックアップはどのくらいですか?