google-app-engine - 创建有限的数据存储索引

标签 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 个结果?

最佳答案

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

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

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

关于google-app-engine - 创建有限的数据存储索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29661317/

相关文章:

java - 如何启用传输编码 :chunked in Java on AppEngine

google-app-engine - 错误 : invalid_client with Google Apps API OAuth2

java - 过滤传递 GAE 数据存储中其他对象的 Ref<?> 属性的对象

java - Go SHA-256 哈希不同于 Java SHA-256 哈希

java - 如何防止客户端更改 Google Cloud Endpoints 中的 objectify @ID

java - App Engine DataStore - 复合索引 - 数据存储索引 - 不起作用

java - 在一个查询中查询不同的EntitySubclass

java - 在 AppEngine (JDO) 中,如何查询需要按不属于不等式过滤器的属性进行排序的实体?

angularjs - 如果 URL 与 Go 中的任何模式都不匹配,如何提供文件?

post - 如何在 golang 中编码 POST 策略 - 基于浏览器的上传到 amazon S3?