3

使用 Google App Engine,我只是好奇是否有人可以阐明使用ComputedProperty相关模型的计数与按需计算的性能特征(读取和写入)。

ComputedProperty 具有允许对属性进行索引的明显好处,但我只是对相比之下读取和写入的速度感到好奇。

例如,给定两个模型:

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. 什么是平均案例计算复杂度 - 对于Jay LenoCar以外的人(即每个实例的少量实例Owner)?
  3. 读写的等待有多少计算复杂度,数据库/memcache查找有多少?
4

1 回答 1

6

每次更新所有者实体时,都会重新计算查询。那可不好。查询的复杂性不是问题。但是,如果您真的想知道,则必须对其进行基准测试。

于 2013-02-03T16:27:04.887 回答