Google Datastore中的索引

时间:2014-11-21 08:52:05

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

默认情况下,为基于ndb的模型类中的所有字段启用索引。

如果我更改字段的索引定义并重新部署应用程序,该怎么办?是否会根据模型类中的更改删除索引或为该字段重新创建索引?

或者它就像实体关系一旦定义就无法改变。我问这个是因为,我现在还不确定,在最终的应用程序中需要索引多少个字段?

1 个答案:

答案 0 :(得分:2)

您可以随时更改实体对象的定义,重要的是在put()时是否将属性设置为索引。假设我插入了一堆带有“name”属性的对象,未编入索引。后来我在这些实体上为未来的put()添加了一个索引。我的所有实体仍然在数据存储区中,只有被索引的实体可以查询。当我从语言本地模型属性(例如java @Entity类,使用objectify)中删除索引时,应用类似的逻辑,然后执行put()。

这就是拥有无模式数据存储区的意义。它们可以具有所有不同的属性组合,并为每个属性打开/关闭索引。真正将这些实体绑定在一起的唯一因素是它们的“种类”,它由您正在使用的框架设置为类名,或者如果您使用真正的低级API则手动设置。

Read more here更好地了解索引在无模式数据存储区中的工作原理。如果您阅读链接部分,这将完全回答您的问题。