Используя 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)
Вопрос действительно разбивается на что-то вроде следующего:
- насколько медленнее пишет
Owner
из-за наличияcars_count_prop
? - насколько быстрее читается
cars_count_prop
, чемcars_count
?
Или, другими словами:
- какова асимптотическая вычислительная сложность (big-O) чтения и записи каждого?
- какова средняя вычислительная сложность случая - для людей, отличных от Джея Лено (т.е. небольшое количество
Car
экземпляров наOwner
) ? - Насколько ожидание чтения и записи связано с вычислительной сложностью, а сколько — поиском в базе данных/memcache?
ComputedProperty
будет предпочтительнее в тех случаях, когда он редко пишется, но часто читается. 03.02.2013