我的 GAE 应用程序中有一个如下所示的查询:
datastore.NewQuery("item").Ancestor(fk).Order("-PubDate").Limit(10).Run(c)
为了让它工作,我需要一个由 PubDate 订购的项目的索引;自动生成的看起来像:
- kind: item
ancestor: yes
properties:
- name: PubDate
direction: desc
这个索引相当大(大约 4 GB),但由于 Limit() 调用,其中的大部分永远不会被触及。是否可以让索引为每个祖先只记住 10 个结果?
最佳答案
有可能有两个同类实体具有相同的属性,但一个实体具有此属性,而另一个没有索引。
Java 运行时中的低级数据存储 API 允许应用决定是否为每个单独实体的每个属性编制索引。我不知道其他运行时是否存在等效项。如果没有,您可以使用两个不同的属性名称来指示索引日期和未索引日期。
所以从技术上讲,是的,您只能在索引中保留少量实体。但是请注意,您必须重新保存具有未索引属性的实体才能将其从该索引中删除。重新保存所有实体会产生额外费用,因此如果您出于任何其他原因重新保存实体,此解决方案可能有意义。
关于google-app-engine - 创建有限的数据存储索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29661317/