正确使用GAE ndb.ComputedProperty

时间:2013-07-26 20:07:14

标签: python google-app-engine app-engine-ndb

我的GAE项目中有一类视频,我希望能够通过他们的分数进行搜索,这是赞成减去downvotes的upvotes。我希望能够查询此值,并希望以最有效的方式获取它。我认为获得带有计算属性是以下列方式的最佳方式:

class Video(ndb.Model):
    title = ndb.StringProperty(required = True)
    description = ndb.TextProperty()

    upvotes = ndb.IntegerProperty(required = True)
    downvotes = ndb.IntegerProperty(required = True)
    score = ndb.ComputedProperty(lambda self: self.upvotes - self.downvotes)

如果ComputedProperty有任何性能拖累,我很好奇吗?每次给出一个upvote或downvote时,只是加分或减去得分值会更有效吗?

1 个答案:

答案 0 :(得分:1)

对于简单的计算(如示例中的计算),应该没有太大的性能拖累。是的,每当您读取数据时都会运行计算,但是首先构造结果集涉及的逻辑要多得多;单个减法不会影响任何事情。

对于更复杂的计算,是的,可能会有性能损失。