将查询转换为投影查询以节省成本

时间:2016-04-13 18:45:06

标签: google-app-engine google-cloud-datastore

我对查询和投影查询之间的区别感到有点困惑(这与将于7月生效的新定价有关)。说我有这样的一种:

**POSTS:**
post_id -index
author -index
post_message -index
created -index

如果我想查询作者的所有帖子,我将检索N个帖子,N是作者撰写的帖子数量。因此,如果他写了100篇帖子,我会吃掉100个读取请求。我可以创建一个虚拟属性,然后将查询转换为投影查询。所以我添加了一个名为dummy的属性,然后我做了一个查询,但只选择了id,post_message和created(作者我已经知道如果我正在过滤它)。这样,获取所有这些实体只需1次读取。这可能吗?为什么不是每个人都这样做,以避免查询费用?

1 个答案:

答案 0 :(得分:2)

预测从索引返回值而不是实体本身,因此有here

在您的示例中,您需要在(post_id, post_message, created)上创建索引,但如果您想要检索TextBlob等属性,则需要获取实体作为那些属性无法编入索引。

您可能还会发现,如果添加属性或更改要投影的属性,则需要构建新索引。因此,虽然它可以为您节省一些实体读数,但您也做出了一些牺牲。