Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine Google数据存储中的索引_Google App Engine_Google Cloud Datastore_App Engine Ndb - Fatal编程技术网

Google app engine Google数据存储中的索引

Google app engine Google数据存储中的索引,google-app-engine,google-cloud-datastore,app-engine-ndb,Google App Engine,Google Cloud Datastore,App Engine Ndb,默认情况下,为基于ndb的模型类中的所有字段启用索引 如果我更改字段的索引定义并重新部署应用程序,该怎么办;它会根据模型类中的更改删除该字段的索引还是重新创建该字段的索引 或者,它就像实体关系一样,一旦定义就无法更改。我这样问是因为,我现在不确定在最终的应用程序中需要索引多少字段 您可以随时更改实体对象的定义,重要的是在放置()时是否将属性设置为索引。假设我已经插入了一组具有“name”属性的对象,没有索引。稍后,我将为这些实体的future put()添加一个索引。我的所有实体仍将在数据存储中

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

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


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

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

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


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

我发现发现这样的事情的一个好方法是实验。如果可以的话,你最好自己去发现,而不是在网上随便问一个人。谢谢你的建议!这是stackoverflow上至少95%问题的有效答案。这是真的。当您在本地应用程序上运行查询时,它会生成一个index.yaml,其中指出“您只需手动编辑该文件即可删除不再使用的索引,或定义不是由开发web服务器创建的索引”。因此,当您按照该文件进行部署时,它应该进行自我排序。