创建有限的数据存储区索引

时间:2015-04-15 21:32:08

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

我的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个结果?

1 个答案:

答案 0 :(得分:1)

可能有两个相同类型的实体具有相同的属性,但是一个实体具有索引的属性而另一个实体没有索引。

Java运行时中的低级数据存储区API允许应用程序决定是否为每个单独的实体编制索引。我不知道其他运行时是否存在等价物。如果没有,您可以使用两个不同的属性名称来指示索引日期和未编入索引的日期。

从技术上讲,是的,您只能在索引中保留少量实体。但请注意,您必须重新保存具有未编制索引的属性的实体才能将其从该索引中删除。重新保存所有实体将产生额外的成本,因此如果您出于任何其他原因无论如何重新保存实体,此解决方案可能是有意义的。