谷歌应用引擎,查询多个实体

2024-04-26 09:50:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下两个实体。你知道吗

class Photo(db.Model):
    name=db.StringProperty()
    registerdate=db.DateTimeProperty()
    iso=db.StringProperty()
    exposure=db.StringProperty()

class PhotoRatings(db.Model):
    ratings=db.IntegerProperty()

我需要做以下工作。 获取iso=800的所有照片(照片),按评级(照片评级)排序。 我不能在照片中添加评分,因为评分一直在变化,我每次都要写整个照片实体。这将花费我更多的时间和金钱,应用程序的性能将受到影响。 我读过这个, https://developers.google.com/appengine/articles/modeling 但从中得不到多少信息。你知道吗

编辑:我想避免获取太多的项目,并手动执行匹配。我需要快速有效的解决方案。你知道吗


Tags: name实体dbmodeliso评分照片class
2条回答

如果您查看billing docs,您会注意到一个实体写入是按更改的属性数收费的。你知道吗

因此,您试图做的不会降低写入成本,但肯定会增加读取成本,因为您将读取两倍的实体数。你知道吗

您正在尝试使用显式非关系数据存储执行关系数据库查询。你知道吗

你可以想象,这会带来问题。如果您希望数据存储为您排序结果,它必须能够索引您要排序的内容。索引不能跨越多个实体类型,因此不能有按PhotoRatings排序的Photo索引。你知道吗

对不起。你知道吗


但是,考虑一下——哪种情况会更经常发生?查询照片的排序,或者某人对照片进行评级?很有可能,您的视图远远多于操作,因此将评级存储为Photo实体的一部分可能不会像您担心的那么大。你知道吗

相关问题 更多 >