我有以下两个实体。你知道吗
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 但从中得不到多少信息。你知道吗
编辑:我想避免获取太多的项目,并手动执行匹配。我需要快速有效的解决方案。你知道吗
如果您查看billing docs,您会注意到一个实体写入是按更改的属性数收费的。你知道吗
因此,您试图做的不会降低写入成本,但肯定会增加读取成本,因为您将读取两倍的实体数。你知道吗
您正在尝试使用显式非关系数据存储执行关系数据库查询。你知道吗
你可以想象,这会带来问题。如果您希望数据存储为您排序结果,它必须能够索引您要排序的内容。索引不能跨越多个实体类型,因此不能有按
PhotoRatings
排序的Photo
索引。你知道吗对不起。你知道吗
但是,考虑一下——哪种情况会更经常发生?查询照片的排序,或者某人对照片进行评级?很有可能,您的视图远远多于操作,因此将评级存储为
Photo
实体的一部分可能不会像您担心的那么大。你知道吗相关问题 更多 >
编程相关推荐