ComputedProperty的GAE NDB性能与相关模型计数的按需查找

时间:2013-02-02 19:59:25

标签: google-app-engine google-cloud-datastore app-engine-ndb

使用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快多少?
  3. 或者换句话说:

    1. 每个读写的渐近计算复杂度(big-O)是什么?
    2. Jay Leno以外的其他人(即每CarOwner个实例数少)的平均案例计算复杂度是多少?
    3. 等待读写多少是计算复杂性,以及数据库/内存缓存查找量是多少?

1 个答案:

答案 0 :(得分:6)

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