Google数据存储中的索引

问题描述:

默认情况下,对基于ndb的模型类中的所有字段启用索引。Google数据存储中的索引

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

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

+0

我发现一个很好的方法来发现这样的事情是为了实验。如果可以的话,你可以自己找出自己,而不是在互联网上随便问一个人。 – 2014-11-21 09:33:55

+0

感谢您的咨询!这是至少95%的问题在*上的有效答案。 – 2014-11-21 19:40:31

+0

这是事实。当你在你的应用程序本地运行查询时,它会生成一个index.yaml https://cloud.google.com/appengine/docs/python/config/indexconfig其中提到“你只需要手动编辑文件来删除索引不再使用,或者定义不是由开发Web服务器创建的索引“。所以它应该根据您的文件进行部署。 – 2014-11-21 20:00:18

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

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

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