减少Google App Engine内置索引大小

时间:2013-09-01 11:20:24

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

我有一个拥有超过200万条目的Google App Engine实体,占用大约2GB。 根据数据存储统计,内置索引为13GB(7500万条目),复合索引为1GB(400万条目)。

我知道我的复合索引的大小与我在index.yaml文件中定义的索引数量有关。

但是,为什么我的内置索引比数据本身大得多,我该怎么做才能减少内置索引?

1 个答案:

答案 0 :(得分:3)

默认情况下,大多数模型属性都已建立索引,请参阅此处: https://developers.google.com/appengine/docs/python/ndb/properties picke,json,localstructured,blob&默认情况下,json属性未编入索引。这意味着如果你没有在任何其他属性上指定indexed = False,它将具有内置索引。

class User(ndb.Model):
    display_name = ndb.StringProperty(indexed=False)  # will not be indexed
    modified = ndb.DateTimePropert(indexed=False)  # will not be indexed

大多数时候,你有很多这些你永远不会查询的东西。但是现在你不能在已经报告的功能的非索引属性上使用复合索引。 https://code.google.com/p/googleappengine/issues/detail?id=4231

然后,一旦添加了indexed = False并想要删除所有现有的内置索引,您需要在所有现有实体上重新运行entity.put()。