3
Google App Engine을 사용하면 누구나 ComputedProperty
대 주문형 a를 사용하는 성능 특성 (읽기 & 쓰기)을 밝힐 수 있는지 궁금합니다. 관련 모델의 개수.ComputedProperty의 GAE NDB 성능과 관련 모델 수를 조회하는 것
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)
문제는 정말 뭔가로 분해 다음는 cars_count_prop
을 가지고 있기 때문에
- 가 얼마나 느린
Owner
을 쓰고있다? - 얼마나 빨리 읽을 수 있습니까
cars_count_prop
보다cars_count
입니까? 즉
또는 :
- 읽기 및 각 기록의 점근 적 복잡도 (큰-O)는 무엇인가?
- Jay Leno 이외의 사람들 (즉,
Owner
당 작은 수의Car
인스턴스)의 평균 계산 복잡도는 얼마입니까? - 읽기 및 쓰기 대기 시간은 계산상의 복잡성이 얼마나되며 데이터베이스/memcache 조회는 얼마입니까?
고마워, 귀도. 'ComputedProperty' 대안은 거의 작성되지는 않지만 자주 읽히는 경우에 바람직 할 것으로 추측됩니다. –
이러한 경우에도 계산 된 속성은 아무 것도 저장하지 않습니다. 값을 물을 때마다 여전히 쿼리가 실행됩니다! 계산 된 속성을 사용하는 지점은 계산 된 값을 색인화하려는 경우입니다. 하지만이 예제는 좋은 후보가 아닙니다. 왜냐하면 저장된 값이 주어진 소유자에게 자동차가 추가되거나 제거 될 때마다 오래된 값이되기 때문입니다. 그들이 자동차를 구입하거나 처분 할 때마다 소유자에게 읽기 + 쓰기주기를 추가하여이 문제를 해결할 수 있습니다.하지만 수동으로 카운트를 저장할 수도 있습니다. –
아, 그래요. 그것이 바로 [문서가 말하는 것] (https://developers.google.com/appengine/docs/python/ndb/properties#computed)이므로주의해야합니다. 귀하의 의견에 감사드립니다. 아주 도움이됩니다. –